From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 200A14596C;
	Thu, 12 Sep 2024 13:17:34 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 521E740E5A;
	Thu, 12 Sep 2024 13:17:30 +0200 (CEST)
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on2068.outbound.protection.outlook.com [40.107.95.68])
 by mails.dpdk.org (Postfix) with ESMTP id D9B4840B9F
 for <dev@dpdk.org>; Thu, 12 Sep 2024 13:17:27 +0200 (CEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Apny01DV0BhRuvfpytVvE8eN8un3+V9TWSQ3RtM4owu+n/aBi9iAwrYaEdYb4IQULVZ3HUf3kUa7f4357e9EKLgmbEfh2sPgBp2Z0rwt5lYHtI4IhbbT+RNXkhGXV2sjuG/N9agfLF3dG4acZWri+EC5m412J6JNf163Zrqwiauzeu5UPkQSC8PW02UnrBZVM6cwPhohTcExjrq/9pYwlBLMDcc0fqiAbYrrJF2bTIUvWGHyK9E1FmQBJm7nJGQKRuYJ3zLwHr9sX5FaYLViI7OEusvZywPKpBfTVMhyTG+ID+17s+TmHn/SIhG9NJMV4TXIdOVc5B/i0MMFztbo8w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 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=dKRPjEOvMsFjkEEzHKBbdsFHtwQqJGLs/u61wG4bfyc=;
 b=UpaPhgsSBoTjVfw32+HsYaZGaPXpdhHF98eo8eSPAZhbhrLocnTNMunrTAuSu0QKBYsduOoN0EeEwYHM2TaRZ9MRhz0uGP/LILM9yMDiy+re9zutBjeiKid7vcyZDPP30lzmbsCyj5xzPtu3/V5cMgZ3O/WjyUFLeY16JqnhaBWRQQ+1UtNpRnBnR9tkDDzw5ZAcVz8tV5ozQm0oxgYXNKKY8O0RzbFPfd6+R2qKmEZ6UQDaN/5qpZc9BUGeR40nI/uPyDFvm9126+RL9XOqCnUvVS4wRAsS5UbUKDqmnkmvcYdlQpIDxPAIcNSoEcw1ALtVK3RDplGMvIrKhNofCA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; 
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dKRPjEOvMsFjkEEzHKBbdsFHtwQqJGLs/u61wG4bfyc=;
 b=dCPqMDajgsASbLKbf3LibAj7PJRe3AmIgfuQTqGIHIobGkbekAgrLC++A2+wbD5iKpk2Ce6cbW7mrB3zMfHcKxXElgFwgZpW9Bab0zmVt4eUUbIoGVSXqELQjofwZUcNU+CF1EfjjS1Fy/D/FGg4m5q+SR/rH4dpdAzjSKdBYG0=
Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15)
 by MN0PR12MB6103.namprd12.prod.outlook.com (2603:10b6:208:3c9::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.27; Thu, 12 Sep
 2024 11:17:24 +0000
Received: from CH3PR12MB8233.namprd12.prod.outlook.com
 ([fe80::278f:5cc5:549c:3515]) by CH3PR12MB8233.namprd12.prod.outlook.com
 ([fe80::278f:5cc5:549c:3515%5]) with mapi id 15.20.7918.024; Thu, 12 Sep 2024
 11:17:24 +0000
From: "Tummala, Sivaprasad" <Sivaprasad.Tummala@amd.com>
To: "lihuisong (C)" <lihuisong@huawei.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "david.hunt@intel.com"
 <david.hunt@intel.com>, "anatoly.burakov@intel.com"
 <anatoly.burakov@intel.com>, "radu.nicolau@intel.com"
 <radu.nicolau@intel.com>, "cristian.dumitrescu@intel.com"
 <cristian.dumitrescu@intel.com>, "jerinj@marvell.com" <jerinj@marvell.com>,
 "konstantin.ananyev@huawei.com" <konstantin.ananyev@huawei.com>, "Yigit,
 Ferruh" <Ferruh.Yigit@amd.com>, "gakhil@marvell.com" <gakhil@marvell.com>
Subject: RE: [PATCH v2 1/4] power: refactor core power management library
Thread-Topic: [PATCH v2 1/4] power: refactor core power management library
Thread-Index: AQHa97jruE4/5FJoc0KdhklxB9GDGbI6xL2AgBlP7KA=
Date: Thu, 12 Sep 2024 11:17:23 +0000
Message-ID: <CH3PR12MB823307C0D1E3A2D7EA7C392786642@CH3PR12MB8233.namprd12.prod.outlook.com>
References: <20240720165030.246294-1-sivaprasad.tummala@amd.com>
 <20240826130650.320130-1-sivaprasad.tummala@amd.com>
 <20240826130650.320130-2-sivaprasad.tummala@amd.com>
 <375e3ab9-bf84-1844-787d-ec89230ae739@huawei.com>
In-Reply-To: <375e3ab9-bf84-1844-787d-ec89230ae739@huawei.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=fadd395c-37af-42cd-a2b7-a0b5fbb805d4;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ContentBits=0;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Enabled=true;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Method=Standard;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Name=AMD
 Internal Distribution Only;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SetDate=2024-09-12T10:53:51Z;
 MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH3PR12MB8233:EE_|MN0PR12MB6103:EE_
x-ms-office365-filtering-correlation-id: e9830af0-a75f-4f97-6268-08dcd31c7a05
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018;
x-microsoft-antispam-message-info: =?utf-8?B?MmtJN2FvQi84WkVocDB4bHNWU09wOTQwVy9OLzRQYmxmSDNZOXVlMjNsdTN3?=
 =?utf-8?B?QUw2T2s3UklnUjQ1Y2lBUHhCNGYvYkhGdWNkTlZSTXNSVW90SGdWVUovRXhk?=
 =?utf-8?B?UnMzVFdqb3p3SW9wNW94dllHMFpXbXhZUHdIbHd6NURYVTVrUGFQR3cvL2JH?=
 =?utf-8?B?NnV6SzRraWhRL2NNdVAxUTBHc1VrZTgzb3RmbVZnc0ozTkdZTTdCOXVudGNS?=
 =?utf-8?B?Qm10c245Y3VBandBMStjcmN6bk9qOGxUaGpQTStPbkpFKzkrQ0d2OEFUbk5o?=
 =?utf-8?B?dW5iWW5JSklxUkdRczcycDRvRW5oVkhtdHRUR0lGNjI1ZEZQb1B5YVFrMHlp?=
 =?utf-8?B?blhCdEFPVzBhTzVRQlBETXF4VzEwK29zWHFqWTdPZ1c2cW05OFBPc1V0OWI4?=
 =?utf-8?B?dTFSa014ck1aU0F5eXJLbngvZk5BalNsQndJQnhYekhRYXRPWEgwZUhMaUdC?=
 =?utf-8?B?Z1p1ekF6ZjhDc1crdU5ZQVpIY3lPcnJ2aVpVazVhQmgvN0wzYnh2NTlJZGhB?=
 =?utf-8?B?ZlRQdjBKTGc0eTZFaWEvZ3EvWmFEVldZck9qQTNaTmgvRlVTTnZUamNPVjJl?=
 =?utf-8?B?R080RmN0aDc0dk04dHRPcUtoZksrWmd4d2MwNDJMQmwwaHlxeklOOXlpNDR1?=
 =?utf-8?B?R2JRb2FMeHJMYWVrTzlnZjdpM3VLOHJSNEhUbWhVOENzY1hXbEMzeHBNUE4r?=
 =?utf-8?B?T0hSRFkwWTM1RjJmT3BUK0t2ZTRJMCt2M1MydGxKY1YwODhvcVJoNERLMXZZ?=
 =?utf-8?B?bTR1ZUVQK0xoU1NDazFST2JFUC9qczArQThlck0yM3ozYW5ZSlc5Sm1CQnp3?=
 =?utf-8?B?NDdjaUFMemF3ZE5Lbi9hcDl2eFFSeEh2M0VRdzZqWEpianFDS0d2cE9seS83?=
 =?utf-8?B?VGRJSG9QTmJCN3ZGcUlsWVBRMVFsT25XaWd2aDJKdFI1b1RLVWp6T2dMVmk0?=
 =?utf-8?B?TW1QZ3ptVERBVkJVY25oSHkycXIrajZQVCs1bVBnT2sxMjU5VStEZCs2Y2ZK?=
 =?utf-8?B?UXVHOWphbHlKbEhqWDQ1dmtnYTY4TW9XdklUZzhLYkNLaGVKUDdiU2daZlJv?=
 =?utf-8?B?NlBjb2JleWdpbFduQUJ6TzBlbW5MTFo2b1JQWkdLQThrL0F2UDZ3K3l3V0JS?=
 =?utf-8?B?L2E4bFBLaXVCWnFqalpDUTVEUWJZR0JHM0R2OWRKMEl6enl1bTVRV0lGY3Jh?=
 =?utf-8?B?SndZV2tRS1QrWnlZK3FNZTc0Um1xUlZDbTFpMzZMMEZwenovUnFxd0dSdDJP?=
 =?utf-8?B?c2pPS0lXekNQUENsTWtNQzdQUEJFdTFjOURSbjdIZm1WMUZUcnZrL1FtVlBi?=
 =?utf-8?B?RUxyTmM2VVJWTXloMW5GYVlkUUVoYTdrRlFLQXp2RTdkUkJnNC8vU3hFSE1J?=
 =?utf-8?B?TGpqelB2RWYxbkRtTkVMd3pUQkJjTlE5RXRmTXdOS21PdWtiNWg5S0UzOHBL?=
 =?utf-8?B?aExzTnJhK3RMWXpuV21hZmRTYjBVc3lETHVsbU5sMFk0dndMZFlWNExCVjIx?=
 =?utf-8?B?SGZaMzZSYUFkU1dzL3Q4Wnk3UitKZEo2Z0pxVElHU1ZicU1xSDQ4RkljV3dE?=
 =?utf-8?B?RlduVWxVUnovcFB0d2ZOc28wWGNocWpqYnFmOVlMZWR1SStrV2RNa3hNQ0pV?=
 =?utf-8?B?bHVRd25qWHAvbkt6Z09zaUFBSngrZnVRYUxVK0ZJek1UTlAzeGNFdWZHU3Ba?=
 =?utf-8?B?YU9pUmg2ZmROZmhrTmh1N3ZOaHZ3T3IzQjQxMjRNcExNTWNQV2h5dExSamw1?=
 =?utf-8?B?NFk0NS9RWWJzTXNyZTNieTdUSytTM0VJSjlkK2RVZ3ovZVVkMFhmaUg4N2VZ?=
 =?utf-8?B?bEErQms5eHF4a1pWMXQ2WlNYbEI1Z05RdVBTUnoyY0VHWEJYWmErREpBMEgv?=
 =?utf-8?B?TnhyV2NhbTU2eUpPM0w5WEtiaUduQ1N1cWIvT08wQy9Kc3c9PQ==?=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:CH3PR12MB8233.namprd12.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SEZBdVRTRVZGNXNXMmZCWFJmQURRYkV1QkVLSzF1YUlGQ0NVQ0VQWTVXL01Z?=
 =?utf-8?B?bitsRnFsanRDWmVUSjNKb0syd1pRMksvL21iQlhBMUt2RWR0RWZrdWlUZ3Ro?=
 =?utf-8?B?NVlFeklPcjB3VytqZ1BpUk0yTWxsd05aUVFOMWVxbWFjbmpBS2MxeUJ3RG1r?=
 =?utf-8?B?RlFmTVlwSExyWDFMajB4c2dKVjliM253YXJtaDQ2Z3V0STN5alVKanoyYnVQ?=
 =?utf-8?B?elUrb0F4QTlJU1VkeTkxM1JVWjIxTjNjSitGTjdrekl3TEwrbUVibEZSS3Ux?=
 =?utf-8?B?QXBFMWltWmNvUmJkZEFrYlVVelVROFNndVlpQ0JNdkx5MUhFcElSdFloM05t?=
 =?utf-8?B?eStNUTVIYnNhUTRCeEZ2RWw3aWVod2dWdGpGWk9EOFRsUG1pM1dwSGN4bWZw?=
 =?utf-8?B?b2ozV2d0MWVUaEdKMjNvWTFWNTFRMEtEdVhJcGZvK09RMUswWUlDU0NaSEJX?=
 =?utf-8?B?RUFQUlI0Qm1oQVRsMUxxVituc3BocVNBbDUzbzJCekpiTmxSd3NaS0ZZcW16?=
 =?utf-8?B?NHhmcER3cWtzVlV6UldPZEVlMVRsVU0wdVNaTnF0ZXB1Zm4vRUJvc01CMG94?=
 =?utf-8?B?TjN5QVVpVkFWMmdYTVFINTJZOUNUQjN0RVlvenhvNnNZUUdzc1NXUUI0bUhV?=
 =?utf-8?B?Sk8yVCt6aXU3eHhtODdJblpjVjAzTEYzVzNoM3hqR09tSmhBOHJOMURuT05V?=
 =?utf-8?B?LzdPYURiajFyYnhQSEZPcFlPL1dBZmhWOUk1OTFmbWhKRi8zaVNrTGZPNzV5?=
 =?utf-8?B?bU5TeUM1cFcwaUZHWVliVzgvNGM1N3NpVkFwVHplbzdEQ3llajdNTkNDb3N1?=
 =?utf-8?B?VS9pM211YlVwT1JIZkJVL3JwWDgwVUpZWWN6U1B6UGtXaEh5OXhPQVlCYTdw?=
 =?utf-8?B?aXYyWm5GRVJlVXYwd3l4d0NMVUJ5ZEhZZUJTUWpCN3FOdHI5UDd2ZFFaNGh4?=
 =?utf-8?B?cC8zV1daaHYyeW9PQ2U4MlQyZlFIOVRKZThaNUlXSkVIZFJESkYrMW0zL1dx?=
 =?utf-8?B?Rm5wSzEwcDAwNHB4TFNHUGtCd0ZZdzdaaVZMVk8vTUcwYWxFZklpM29BVmI1?=
 =?utf-8?B?bzVvM1JiZ1FtcWJUdzVXZXNCTFZXMVBJM2JrallhQ1ZFVGZ3R1l4UmZ5Vlkr?=
 =?utf-8?B?c1ZaMThzUGE4SVpjWGlRenpvUklpZmJ3bmcxMXBoeWpKS2R1WVRJZml0Z0Fu?=
 =?utf-8?B?TUFWQy9vcm5kaStZNTAxQmQwN2hRVTl1eng4OXJjWmx6ejdkdzlqTitaNVZU?=
 =?utf-8?B?ZUp4NkxicmVWMkplZU9RbDVvaE90ZGRKdC82bHhqbXd2M1RIYUdiWmxwWWRl?=
 =?utf-8?B?bHlqbWFhZTZtWGZYK0tkTUw4N1B4emIweVQ3QnVrV2pXT2JuanJia0F5Q0Uv?=
 =?utf-8?B?Mm9GNDdMcHR3NkVCNDlsc0NyZDhSM0lMWExIOWgvcWNGUGZJYlNvd1dLRjdo?=
 =?utf-8?B?SUMxYkYrdTNabFhYdjRYQUROd3N6bzB1bVhONlpkenhNRHA2dGg3R3Zvd3Qw?=
 =?utf-8?B?RjRtbzdVNnJQdjJvVDIvbFRlbWRpczQwUFJuVER5dVk2aFpKVFpJZ0gyNmFi?=
 =?utf-8?B?S1ppZkE0ckg4VElvS2xDQzkvZzR4MEZzVnBBMFJzMGNsY1IxNkN5QUpoSVhp?=
 =?utf-8?B?alJWUFh6OTM3Q0dLT2lXTmdWWUtkdmM0ZSt1dGlnL0hOb3pmNjUzVHpFZUF1?=
 =?utf-8?B?Q0pHeEM3Q0F3YUxzZjFwRWl6Q1IzOWZkdnJTSGtoeittWE9DSUxMWG1wRkhK?=
 =?utf-8?B?VW1qOWFQdk9lRC9sVndiWUQvdW1SMkhUdFI4QzVVdm5JMkNBNmhjZjZOdHp2?=
 =?utf-8?B?d3hlYlFYODMvaU8xaDA5NGRpZEJLMVdpKzdQN3hOTlpISS8yNHB0eVkrSmFM?=
 =?utf-8?B?dFZqNnZtTmJoVVlPVTljc1NXbFdNdkkxV2lFbzhoWW00eXdNbTRsZnRWRDlp?=
 =?utf-8?B?NWsxaUowZFgvV1h5elVkYnpnWHUwQytqckZ4b28vTFlna0F5QzFTTE5ub0s2?=
 =?utf-8?B?SlplVlhJUm4rblg5dHA0YWcvbHMwaVZ3dWltcUZxZ3RvNDVLRlFEUTJQZTcw?=
 =?utf-8?B?QzFKd3ZxVEJxakc5VS81S3ZFaTNrOXozakVzd2phcWZXdS9wejdKTUFnU3Ry?=
 =?utf-8?Q?LD9M=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8233.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e9830af0-a75f-4f97-6268-08dcd31c7a05
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2024 11:17:23.8903 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: XWWlVp4ZIo8tZRLIo7z7U5MXcldfjkCoC8puZqCKaVCudF8h9nFtejqAyVADH1D5LC1HxAeNJhYUKSk1Jfz9pA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6103
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEFNRCBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0N
Cg0KSGkgSHVpc29uZywNCg0KUGxlYXNlIGZpbmQgbXkgcmVzcG9uc2UgaW5saW5lLg0KDQo+IC0t
LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGxpaHVpc29uZyAoQykgPGxpaHVpc29u
Z0BodWF3ZWkuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjcsIDIwMjQgMTo1MSBQTQ0K
PiBUbzogVHVtbWFsYSwgU2l2YXByYXNhZCA8U2l2YXByYXNhZC5UdW1tYWxhQGFtZC5jb20+DQo+
IENjOiBkZXZAZHBkay5vcmc7IGRhdmlkLmh1bnRAaW50ZWwuY29tOyBhbmF0b2x5LmJ1cmFrb3ZA
aW50ZWwuY29tOw0KPiByYWR1Lm5pY29sYXVAaW50ZWwuY29tOyBjcmlzdGlhbi5kdW1pdHJlc2N1
QGludGVsLmNvbTsgamVyaW5qQG1hcnZlbGwuY29tOw0KPiBrb25zdGFudGluLmFuYW55ZXZAaHVh
d2VpLmNvbTsgWWlnaXQsIEZlcnJ1aCA8RmVycnVoLllpZ2l0QGFtZC5jb20+Ow0KPiBnYWtoaWxA
bWFydmVsbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzRdIHBvd2VyOiByZWZhY3Rv
ciBjb3JlIHBvd2VyIG1hbmFnZW1lbnQgbGlicmFyeQ0KPg0KPiBDYXV0aW9uOiBUaGlzIG1lc3Nh
Z2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3BlciBjYXV0aW9u
DQo+IHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRp
bmcuDQo+DQo+DQo+IEhpIFNpdmFwcmFzYSwNCj4NCj4gU29tZSBjb21tZW50cyBpbmxpbmUuDQo+
DQo+IC9IdWlzb25nDQo+DQo+IOWcqCAyMDI0LzgvMjYgMjE6MDYsIFNpdmFwcmFzYWQgVHVtbWFs
YSDlhpnpgZM6DQo+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY29tcHJlaGVuc2l2ZSByZWZh
Y3RvciB0byB0aGUgY29yZSBwb3dlcg0KPiA+IG1hbmFnZW1lbnQgbGlicmFyeS4gVGhlIHByaW1h
cnkgZm9jdXMgaXMgb24gaW1wcm92aW5nIG1vZHVsYXJpdHkgYW5kDQo+ID4gb3JnYW5pemF0aW9u
IGJ5IHJlbG9jYXRpbmcgc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBmcm9tIHRoZQ0K
PiA+ICdsaWIvcG93ZXInIGRpcmVjdG9yeSB0byBkZWRpY2F0ZWQgZGlyZWN0b3JpZXMgd2l0aGlu
DQo+ID4gJ2RyaXZlcnMvcG93ZXIvY29yZS8qJy4gVGhlIGFkanVzdG1lbnQgb2YgbWVzb24uYnVp
bGQgZmlsZXMgZW5hYmxlcw0KPiA+IHRoZSBzZWxlY3RpdmUgYWN0aXZhdGlvbiBvZiBpbmRpdmlk
dWFsIGRyaXZlcnMuDQo+ID4gVGhlc2UgY2hhbmdlcyBjb250cmlidXRlIHRvIGEgc2lnbmlmaWNh
bnQgZW5oYW5jZW1lbnQgaW4gY29kZQ0KPiA+IG9yZ2FuaXphdGlvbiwgcHJvdmlkaW5nIGEgY2xl
YXJlciBzdHJ1Y3R1cmUgZm9yIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuDQo+ID4gVGhlIHJlZmFj
dG9yIGFpbXMgdG8gaW1wcm92ZSBvdmVyYWxsIGNvZGUgY2xhcml0eSBhbmQgYm9vc3QNCj4gPiBt
YWludGFpbmFiaWxpdHkuIEFkZGl0aW9uYWxseSwgaXQgZXN0YWJsaXNoZXMgYSBmb3VuZGF0aW9u
IGZvciBmdXR1cmUNCj4gPiBkZXZlbG9wbWVudCwgYWxsb3dpbmcgZm9yIG1vcmUgZm9jdXNlZCB3
b3JrIG9uIGluZGl2aWR1YWwgZHJpdmVycyBhbmQNCj4gPiBzZWFtbGVzcyBpbnRlZ3JhdGlvbiBv
ZiBmb3J0aGNvbWluZyBlbmhhbmNlbWVudHMuDQo+ID4NCj4gPiB2MjoNCj4gPiAgIC0gYWRkZWQg
TlVMTCBjaGVjayBmb3IgZ2xvYmFsX2NvcmVfb3BzIGluIHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMN
Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNpdmFwcmFzYWQgVHVtbWFsYSA8c2l2YXByYXNhZC50
dW1tYWxhQGFtZC5jb20+DQo+ID4gLS0tDQo+ID4gICBkcml2ZXJzL21lc29uLmJ1aWxkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgLi4uL3Bvd2VyL2FjcGkvYWNwaV9j
cHVmcmVxLmMgICAgICAgICAgICAgICAgIHwgIDIyICstDQo+ID4gICAuLi4vcG93ZXIvYWNwaS9h
Y3BpX2NwdWZyZXEuaCAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4gPiAgIGRyaXZlcnMvcG93
ZXIvYWNwaS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAxMCArDQo+ID4gICAuLi4vcG93
ZXIvYW1kX3BzdGF0ZS9hbWRfcHN0YXRlX2NwdWZyZXEuYyAgICAgfCAgMjQgKy0NCj4gPiAgIC4u
Li9wb3dlci9hbWRfcHN0YXRlL2FtZF9wc3RhdGVfY3B1ZnJlcS5oICAgICB8ICAgOCArLQ0KPiA+
ICAgZHJpdmVycy9wb3dlci9hbWRfcHN0YXRlL21lc29uLmJ1aWxkICAgICAgICAgIHwgIDEwICsN
Cj4gPiAgIC4uLi9wb3dlci9jcHBjL2NwcGNfY3B1ZnJlcS5jICAgICAgICAgICAgICAgICB8ICAy
MiArLQ0KPiA+ICAgLi4uL3Bvd2VyL2NwcGMvY3BwY19jcHVmcmVxLmggICAgICAgICAgICAgICAg
IHwgICA4ICstDQo+ID4gICBkcml2ZXJzL3Bvd2VyL2NwcGMvbWVzb24uYnVpbGQgICAgICAgICAg
ICAgICAgfCAgMTAgKw0KPiA+ICAgLi4uL3Bvd2VyL2t2bV92bX0vZ3Vlc3RfY2hhbm5lbC5jICAg
ICAgICAgICAgIHwgICAwDQo+ID4gICAuLi4vcG93ZXIva3ZtX3ZtfS9ndWVzdF9jaGFubmVsLmgg
ICAgICAgICAgICAgfCAgIDANCj4gPiAgIC4uLi9wb3dlci9rdm1fdm0va3ZtX3ZtLmMgICAgICAg
ICAgICAgICAgICAgICB8ICAyMiArLQ0KPiA+ICAgLi4uL3Bvd2VyL2t2bV92bS9rdm1fdm0uaCAg
ICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQo+ID4gICBkcml2ZXJzL3Bvd2VyL2t2bV92bS9t
ZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgMTYgKw0KPiA+ICAgZHJpdmVycy9wb3dlci9tZXNv
bi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gPiAgIGRyaXZlcnMvcG93ZXIv
cHN0YXRlL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAxMCArDQo+ID4gICAuLi4vcG93ZXIv
cHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMgICAgICAgICAgICAgfCAgMjIgKy0NCj4gPiAgIC4uLi9w
b3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEuaCAgICAgICAgICAgICB8ICAgNiArLQ0KPiA+ICAg
bGliL3Bvd2VyL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstDQo+
ID4gICBsaWIvcG93ZXIvcG93ZXJfY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg
Ky0NCj4gPiAgIGxpYi9wb3dlci9wb3dlcl9jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICB8
ICAxNiArLQ0KPiA+ICAgbGliL3Bvd2VyL3J0ZV9wb3dlci5jICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgMjkxICsrKysrKy0tLS0tLS0tLS0tLQ0KPiA+ICAgbGliL3Bvd2VyL3J0ZV9wb3dlci5o
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTM5ICsrKysrKy0tLQ0KPiA+ICAgbGliL3Bvd2Vy
L3J0ZV9wb3dlcl9jb3JlX29wcy5oICAgICAgICAgICAgICAgIHwgMjA4ICsrKysrKysrKysrKysN
Cj4gPiAgIGxpYi9wb3dlci92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx
NCArDQo+ID4gICAyNiBmaWxlcyBjaGFuZ2VkLCA2MjEgaW5zZXJ0aW9ucygrKSwgMjcxIGRlbGV0
aW9ucygtKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuYyA9PiBk
cml2ZXJzL3Bvd2VyL2FjcGkvYWNwaV9jcHVmcmVxLmMNCj4gKDk1JSkNCj4gPiAgIHJlbmFtZSBs
aWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmggPT4gZHJpdmVycy9wb3dlci9hY3BpL2FjcGlf
Y3B1ZnJlcS5oDQo+ICg5OCUpDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wb3dl
ci9hY3BpL21lc29uLmJ1aWxkDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3Rh
dGVfY3B1ZnJlcS5jID0+DQo+IGRyaXZlcnMvcG93ZXIvYW1kX3BzdGF0ZS9hbWRfcHN0YXRlX2Nw
dWZyZXEuYyAoOTUlKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9hbWRfcHN0YXRlX2Nw
dWZyZXEuaCA9Pg0KPiBkcml2ZXJzL3Bvd2VyL2FtZF9wc3RhdGUvYW1kX3BzdGF0ZV9jcHVmcmVx
LmggKDk3JSkNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL2FtZF9wc3Rh
dGUvbWVzb24uYnVpbGQNCj4gPiAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfY3BwY19jcHVmcmVx
LmMgPT4gZHJpdmVycy9wb3dlci9jcHBjL2NwcGNfY3B1ZnJlcS5jDQo+ICg5NSUpDQo+ID4gICBy
ZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2NwcGNfY3B1ZnJlcS5oID0+IGRyaXZlcnMvcG93ZXIvY3Bw
Yy9jcHBjX2NwdWZyZXEuaA0KPiAoOTclKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl
cnMvcG93ZXIvY3BwYy9tZXNvbi5idWlsZA0KPiA+ICAgcmVuYW1lIHtsaWIvcG93ZXIgPT4gZHJp
dmVycy9wb3dlci9rdm1fdm19L2d1ZXN0X2NoYW5uZWwuYyAoMTAwJSkNCj4gPiAgIHJlbmFtZSB7
bGliL3Bvd2VyID0+IGRyaXZlcnMvcG93ZXIva3ZtX3ZtfS9ndWVzdF9jaGFubmVsLmggKDEwMCUp
DQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2t2bV92bS5jID0+IGRyaXZlcnMvcG93ZXIv
a3ZtX3ZtL2t2bV92bS5jICg4MiUpDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2t2bV92
bS5oID0+IGRyaXZlcnMvcG93ZXIva3ZtX3ZtL2t2bV92bS5oICg5OCUpDQo+ID4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgZHJpdmVycy9wb3dlci9rdm1fdm0vbWVzb24uYnVpbGQNCj4gPiAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL21lc29uLmJ1aWxkDQo+ID4gICBjcmVhdGUgbW9k
ZSAxMDA2NDQgZHJpdmVycy9wb3dlci9wc3RhdGUvbWVzb24uYnVpbGQNCj4gPiAgIHJlbmFtZSBs
aWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYyA9Pg0KPiBkcml2ZXJzL3Bvd2VyL3BzdGF0
ZS9wc3RhdGVfY3B1ZnJlcS5jICg5NiUpDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX3Bz
dGF0ZV9jcHVmcmVxLmggPT4NCj4gZHJpdmVycy9wb3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEu
aCAoOTglKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9wb3dlci9ydGVfcG93ZXJfY29y
ZV9vcHMuaA0KPiBIb3cgYWJvdXQgdXNlIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5IHN0cnVjdHVy
ZT8NCj4gKkZvciBwb3dlciBsaWJzKg0KPiBsaWIvcG93ZXIvcG93ZXJfY29tbW9uLioNCj4gbGli
L3Bvd2VyL3J0ZV9wb3dlcl9wbWRfbWdtdC4qDQo+IGxpYi9wb3dlci9ydGVfcG93ZXJfY3B1ZnJl
cV9hcGkuKiDvvIhyZXBsYWNpbmcgcnRlX3Bvd2VyLmMgZmlsZSBtYXliZSBzaW1wbGUgZm9yIHVz
Lg0KPiBidXQgSSdtIG5vdCBzdXJlIGlmIHdlIGNhbiBwdXQgdGhlIGluaXQgb2YgY29yZSwgdW5j
b3JlIGFuZCBwbWQgbWdtdCB0bw0KPiBydGVfcG93ZXJfaW5pdC5jIGluIHJ0ZV9wb3dlci5jLikN
Cj4gbGliL3Bvd2VyL3J0ZV9wb3dlcl91bmNvcmVfZnJlcV9hcGkuKg0KWWVzLCByZW5hbWluZyBy
dGVfcG93ZXIuYyBpcyBkZWZpbml0ZWx5IGEgcG9zc2libGUgaW5jcmVtZW50YWwgY2hhbmdlIHRo
YXQgY291bGQgYmUgY29uc2lkZXJlZCBsYXRlci4NCkhvd2V2ZXIsIGZvciB0aGUgdGltZSBiZWlu
Zywgb3VyIGZvY3VzIHdpbGwgYmUgb24gcmVmYWN0b3JpbmcgdGhlIGNwdWZyZXEgZHJpdmVycyBv
bmx5Lg0KPg0KPiAqQW5kIGhhcyBkaXJlY3RvcmllcyB1bmRlciBkcml2ZXJzL3Bvd2VyOioNCj4g
MT4gRm9yIGNvcmUgZHZmcyBkcml2ZXI6DQo+IGRyaXZlcnMvcG93ZXIvY3B1ZnJlcS9hY3BpX2Nw
dWZyZXEuYw0KPiBkcml2ZXJzL3Bvd2VyL2NwdWZyZXEvY3BwY19jcHVmcmVxLmMNCj4gZHJpdmVy
cy9wb3dlci9jcHVmcmVxL2FtZF9wc3RhdGVfY3B1ZnJlcS5jDQo+IGRyaXZlcnMvcG93ZXIvY3B1
ZnJlcS9pbnRlbF9wc3RhdGVfY3B1ZnJlcS5jDQo+IGRyaXZlcnMvcG93ZXIvY3B1ZnJlcS9rdm1f
Y3B1ZnJlcS5jDQo+IFRoZSBjb2RlIG9mIGVhY2ggY3B1ZnJlcSBkcml2ZXIgaXMgbm90IHRvbyBt
dWNoIGFuZCBkb2Vzbid0IHByb2JhYmx5IGluY3JlYXNlLiBTbw0KPiBkb24ndCBuZWVkIHRvIHVz
ZSBhIGRpcmVjdG9yeSBmb3IgaXQuDQo+DQo+IDI+IEZvciB1bmNvcmUgZHZmcyBkcml2ZXI6DQo+
IGRyaXZlcnMvcG93ZXIvdW5jb3JlZnJlcS9pbnRlbF91bmNvcmUuKg0KPiA+IGRpZmYgLS1naXQg
YS9kcml2ZXJzL21lc29uLmJ1aWxkIGIvZHJpdmVycy9tZXNvbi5idWlsZCBpbmRleA0KPiA+IDY2
OTMxZDQyNDEuLjlkNzdlMGRlYWIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZXNvbi5idWls
ZA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVzb24uYnVpbGQNCj4gPiBAQCAtMjksNiArMjksNyBAQCBz
dWJkaXJzID0gWw0KPiA+ICAgICAgICAgICAnZXZlbnQnLCAgICAgICAgICAjIGRlcGVuZHMgb24g
Y29tbW9uLCBidXMsIG1lbXBvb2wgYW5kIG5ldC4NCj4gPiAgICAgICAgICAgJ2Jhc2ViYW5kJywg
ICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiBhbmQgYnVzLg0KPiA+ICAgICAgICAgICAnZ3B1Jywg
ICAgICAgICAgICAjIGRlcGVuZHMgb24gY29tbW9uIGFuZCBidXMuDQo+ID4gKyAgICAgICAgJ3Bv
d2VyJywgICAgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiAoaW4gZnV0dXJlKS4NCj4gPiAgIF0N
Cj4gPg0KPiA+ICAgaWYgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQ0KPiA+IGRpZmYgLS1naXQgYS9s
aWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmMNCj4gPiBiL2RyaXZlcnMvcG93ZXIvYWNwaS9h
Y3BpX2NwdWZyZXEuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTUlDQo+ID4gcmVuYW1lIGZyb20g
bGliL3Bvd2VyL3Bvd2VyX2FjcGlfY3B1ZnJlcS5jIHJlbmFtZSB0bw0KPiA+IGRyaXZlcnMvcG93
ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiBkbyBub3Qgc3VnZ2VzdCB0byBjcmVhdGUgb25lIGRp
cmVjdG9yeSBmb3IgZWFjaCBjcHVmcmVxIGRyaXZlci4NCj4gQmVjYXVzZSBwc3RhdGUgZHJpdmVy
cyBhbHNvIGNvbXBseSB3aXRoIEFDUEkgc3BlYywgcmlnaHTvvJ8NCj4gSW4gYWRkaXRpb24sIHRo
ZSBjb2RlIG9mIGVhY2ggY3B1ZnJlcSBkcml2ZXJzIGFyZSBub3QgdG9vIG11Y2guDQo+IFRoZXJl
IGlzIGp1c3Qgb25lIGZpbGUgdW5kZXIgb25lIGRpcmVjdG9yeSB3aGljaCBpcyBub3QgZ29vZC4N
Ck9uZSBvZiBvdXIgb2JqZWN0aXZlcyBmb3IgdGhlIHJlZmFjdG9yaW5nIGlzIHRvIHNlbGVjdGl2
ZWx5IGRpc2FibGUgbm9uLWVzc2VudGlhbCBkcml2ZXJzIHVzaW5nIE1lc29uIGJ1aWxkIG9wdGlv
bnMuDQpIb3dldmVyLCBieSByZWFycmFuZ2luZyB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgd2Ugcmlz
ayBkaXNydXB0aW5nIHRoaXMgY2FwYWJpbGl0eS4NCj4gPiBpbmRleCA4MTk5NmUxYzEzLi44NjM3
YzY5NzAzIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuYw0K
PiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+IEBAIC0xMCw3
ICsxMCw3IEBADQo+ID4gICAjaW5jbHVkZSA8cnRlX3N0ZGF0b21pYy5oPg0KPiA+ICAgI2luY2x1
ZGUgPHJ0ZV9zdHJpbmdfZm5zLmg+DQo+ID4NCj4gPiAtI2luY2x1ZGUgInBvd2VyX2FjcGlfY3B1
ZnJlcS5oIg0KPiA+ICsjaW5jbHVkZSAiYWNwaV9jcHVmcmVxLmgiDQo+ID4gICAjaW5jbHVkZSAi
cG93ZXJfY29tbW9uLmgiDQo+ID4NCj4gPC4uLj4NCj4gPiAraWYgbm90IGlzX2xpbnV4DQo+ID4g
KyAgICBidWlsZCA9IGZhbHNlDQo+ID4gKyAgICByZWFzb24gPSAnb25seSBzdXBwb3J0ZWQgb24g
TGludXgnDQo+ID4gK2VuZGlmDQo+ID4gK3NvdXJjZXMgPSBmaWxlcygncHN0YXRlX2NwdWZyZXEu
YycpDQo+ID4gKw0KPiA+ICtkZXBzICs9IFsncG93ZXInXQ0KPiA+IGRpZmYgLS1naXQgYS9saWIv
cG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYw0KPiA+IGIvZHJpdmVycy9wb3dlci9wc3RhdGUv
cHN0YXRlX2NwdWZyZXEuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTYlDQo+ID4gcmVuYW1lIGZy
b20gbGliL3Bvd2VyL3Bvd2VyX3BzdGF0ZV9jcHVmcmVxLmMgcmVuYW1lIHRvDQo+ID4gZHJpdmVy
cy9wb3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEuYw0KPiBwc3RhdGVfY3B1ZnJlcS5jIGlzIGFj
dHVhbGx5IGludGVsX3BzdGF0ZSBjcHVmcmVxIGRyaXZlciwgcmlnaHQ/DQo+IFNvIGhvdyBhYm91
dCBtb2RpZnkgdGhpcyBmaWxlIG5hbWUgdG8gaW50ZWxfcHN0YXRlX2NwdWZyZXEuYz8NClllcywg
d2lsbCBmaXggdGhpcyBpbiBuZXh0IHZlcnNpb24uDQo+ID4gaW5kZXggMjM0MzEyMTYyMS4uYzMy
YjFhZGFiYyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEu
Yw0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiBA
QCAtMTUsNyArMTUsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9zdGRhdG9taWMuaD4NCj4gPg0K
PiA+ICAgI2luY2x1ZGUgInJ0ZV9wb3dlcl9wbWRfbWdtdC5oIg0KPiA+IC0jaW5jbHVkZSAicG93
ZXJfcHN0YXRlX2NwdWZyZXEuaCINCj4gPiArI2luY2x1ZGUgInBzdGF0ZV9jcHVmcmVxLmgiDQo+
ID4gICAjaW5jbHVkZSAicG93ZXJfY29tbW9uLmgiDQo+ID4NCj4gPiAgIC8qIG1hY3JvcyB1c2Vk
IGZvciByb3VuZGluZyBmcmVxdWVuY3kgdG8gbmVhcmVzdCAxMDAwMDAgKi8gQEAgLTg4OCwzDQo+
ID4gKzg4OCwyMyBAQCBpbnQgcG93ZXJfcHN0YXRlX2dldF9jYXBhYmlsaXRpZXModW5zaWduZWQg
aW50IGxjb3JlX2lkLA0KPiA+DQo+ID4gICAgICAgcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4gKw0K
PiA8Li4uPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJfY29tbW9uLmMgYi9saWIv
cG93ZXIvcG93ZXJfY29tbW9uLmMgaW5kZXgNCj4gPiA1OTA5ODZkNWVmLi42YzA2NDExZThiIDEw
MDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9jb21tb24uYw0KPiA+ICsrKyBiL2xpYi9w
b3dlci9wb3dlcl9jb21tb24uYw0KPiA+IEBAIC0xMiw3ICsxMiw3IEBADQo+ID4NCj4gPiAgICNp
bmNsdWRlICJwb3dlcl9jb21tb24uaCINCj4gPg0KPiA+IC1SVEVfTE9HX1JFR0lTVEVSX0RFRkFV
TFQocG93ZXJfbG9ndHlwZSwgSU5GTyk7DQo+ID4gK1JURV9MT0dfUkVHSVNURVJfREVGQVVMVChy
dGVfcG93ZXJfbG9ndHlwZSwgSU5GTyk7DQo+ID4NCj4gPiAgICNkZWZpbmUgUE9XRVJfU1lTRklM
RV9TQ0FMSU5HX0RSSVZFUiAgIFwNCj4gPiAgICAgICAgICAgICAgICIvc3lzL2RldmljZXMvc3lz
dGVtL2NwdS9jcHUldS9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyIg0KPiA+IGRpZmYgLS1naXQgYS9s
aWIvcG93ZXIvcG93ZXJfY29tbW9uLmggYi9saWIvcG93ZXIvcG93ZXJfY29tbW9uLmggaW5kZXgN
Cj4gPiA4M2Y3NDJmNDJhLi43Njc2ODZlZTEyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9w
b3dlcl9jb21tb24uaA0KPiA+ICsrKyBiL2xpYi9wb3dlci9wb3dlcl9jb21tb24uaA0KPiA+IEBA
IC02LDEyICs2LDEzIEBADQo+ID4gICAjZGVmaW5lIF9QT1dFUl9DT01NT05fSF8NCj4gPg0KPiA+
ICAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4N
Cj4gPiAgICNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ID4NCj4gPiAgICNkZWZpbmUgUlRFX1BPV0VS
X0lOVkFMSURfRlJFUV9JTkRFWCAofjApDQo+ID4NCj4gPiAtZXh0ZXJuIGludCBwb3dlcl9sb2d0
eXBlOw0KPiA+IC0jZGVmaW5lIFJURV9MT0dUWVBFX1BPV0VSIHBvd2VyX2xvZ3R5cGUNCj4gPiAr
ZXh0ZXJuIGludCBydGVfcG93ZXJfbG9ndHlwZTsNCj4gPiArI2RlZmluZSBSVEVfTE9HVFlQRV9Q
T1dFUiBydGVfcG93ZXJfbG9ndHlwZQ0KPiA+ICAgI2RlZmluZSBQT1dFUl9MT0cobGV2ZWwsIC4u
LikgXA0KPiA+ICAgICAgIFJURV9MT0dfTElORShsZXZlbCwgUE9XRVIsICIiIF9fVkFfQVJHU19f
KQ0KPiA+DQo+ID4gQEAgLTIzLDEzICsyNCwyNCBAQCBleHRlcm4gaW50IHBvd2VyX2xvZ3R5cGU7
DQo+ID4gICAjZW5kaWYNCj4gPg0KPiA+ICAgLyogY2hlY2sgaWYgc2NhbGluZyBkcml2ZXIgbWF0
Y2hlcyBvbmUgd2Ugd2FudCAqLw0KPiA+ICtfX3J0ZV9pbnRlcm5hbA0KPiA+ICAgaW50IGNwdWZy
ZXFfY2hlY2tfc2NhbGluZ19kcml2ZXIoY29uc3QgY2hhciAqZHJpdmVyKTsNCj4gPiArDQo+ID4g
K19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcG93ZXJfc2V0X2dvdmVybm9yKHVuc2lnbmVkIGlu
dCBsY29yZV9pZCwgY29uc3QgY2hhciAqbmV3X2dvdmVybm9yLA0KPiA+ICAgICAgICAgICAgICAg
Y2hhciAqb3JpZ19nb3Zlcm5vciwgc2l6ZV90IG9yaWdfZ292ZXJub3JfbGVuKTsNCj4gc3VnZ2Vz
dCB0aGF0IG1vdmUgY3B1ZnJlcSBpbnRlcmZhY2VzIGxpa2UgdGhpcyB0byB0aGUNCj4gcnRlX3Bv
d2VyX2NwdWZyZXFfYXBpLiogSSBwcm9wb3NlZCBhYm92ZS4NClRoaXMgaXMgYW4gaW50ZXJuYWwg
QVBJIGFuZCBpc27igJl0IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IGFwcGxpY2F0aW9ucy4N
CkJ5IG1vdmluZyBpdCB0byBydGVfcG93ZXJfKiwgd2UgcmlzayBleHBvc2luZyBpdCBpbmFkdmVy
dGVudGx5Lg0KDQo+IFRoZSBpbnRlcmZhY2VzIGluIHBvd2VyX2NvbW0uKiBjYW4gYmUgdXNlZCBi
eSBhbGwgcG93ZXIgbW9kdWxlcywgbGlrZQ0KPiBjb3JlL3VuY29yZS9wbWQgbWdtdC4NCj4gPiAr
DQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgb3Blbl9jb3JlX3N5c2ZzX2ZpbGUoRklM
RSAqKmYsIGNvbnN0IGNoYXIgKm1vZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KPiA+ICAg
ICAgICAgICAgICAgX19ydGVfZm9ybWF0X3ByaW50ZigzLCA0KTsNCj4gPiArDQo+ID4gK19fcnRl
X2ludGVybmFsDQo+ID4gICBpbnQgcmVhZF9jb3JlX3N5c2ZzX3UzMihGSUxFICpmLCB1aW50MzJf
dCAqdmFsKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcmVhZF9jb3Jl
X3N5c2ZzX3MoRklMRSAqZiwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuKTsNCj4gPiArDQo+
ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgd3JpdGVfY29yZV9zeXNmc19zKEZJTEUgKmYs
IGNvbnN0IGNoYXIgKnN0cik7DQo+ID4NCj4gPiAgICNlbmRpZiAvKiBfUE9XRVJfQ09NTU9OX0hf
ICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93ZXIuYyBiL2xpYi9wb3dlci9y
dGVfcG93ZXIuYw0KPiBUaGUgbmFtZSBvZiB0aGUgcnRlX3Bvd2VyLmMgZmlsZSBpcyBpbXByb3By
aWF0ZSBub3cuIFRoZSBjb250ZXh0IGluIHRoaXMgZmlsZSBpcyBqdXN0IGZvcg0KPiBjcHVmcmVx
LCByaWdodD8NCj4gU28gSSBzdWdnZXN0IHRoYXQgd2UgbmVlZCB0byByZW5hbWUgdGhpcyBmaWxl
IGFzIHRoZSBydGVfcG93ZXJfY3B1ZnJlcV9hcGkuYw0KWWVzLCByZW5hbWluZyBydGVfcG93ZXIu
YyB0byBydGVfcG93ZXJfY3B1ZnJlcS5jIGlzIGRlZmluaXRlbHkgYSBwb3NzaWJsZSBpbmNyZW1l
bnRhbCBjaGFuZ2UNCmFuZCB3aWxsIGZpeCB0aGlzIGFzIGEgc2VwYXJhdGUgcGF0Y2guDQouDQoN
Cj4gPiBpbmRleCAzNmMzZjNkYTk4Li4yYmY2ZDQwNTE3IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9w
b3dlci9ydGVfcG93ZXIuYw0KPiA+ICsrKyBiL2xpYi9wb3dlci9ydGVfcG93ZXIuYw0KPiA+IEBA
IC04LDE1MyArOCw4NiBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiA+DQo+
ID4gICAjaW5jbHVkZSAicnRlX3Bvd2VyLmgiDQo+ID4gLSNpbmNsdWRlICJwb3dlcl9hY3BpX2Nw
dWZyZXEuaCINCj4gPiAtI2luY2x1ZGUgInBvd2VyX2NwcGNfY3B1ZnJlcS5oIg0KPiA+ICAgI2lu
Y2x1ZGUgInBvd2VyX2NvbW1vbi5oIg0KPiA+IC0jaW5jbHVkZSAicG93ZXJfa3ZtX3ZtLmgiDQo+
ID4gLSNpbmNsdWRlICJwb3dlcl9wc3RhdGVfY3B1ZnJlcS5oIg0KPiA+IC0jaW5jbHVkZSAicG93
ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxLmgiDQo+ID4NCj4gPiAtZW51bSBwb3dlcl9tYW5hZ2VtZW50
X2VudiBnbG9iYWxfZGVmYXVsdF9lbnYgPSBQTV9FTlZfTk9UX1NFVDsNCj4gPiArc3RhdGljIGVu
dW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgZ2xvYmFsX2RlZmF1bHRfZW52ID0NCj4gUE1fRU5WX05P
VF9TRVQ7DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpnbG9iYWxfcG93
ZXJfY29yZV9vcHM7DQo+ID4NCj4gPiAgIHN0YXRpYyBydGVfc3BpbmxvY2tfdCBnbG9iYWxfZW52
X2NmZ19sb2NrID0NCj4gPiBSVEVfU1BJTkxPQ0tfSU5JVElBTElaRVI7DQo+ID4gK3N0YXRpYyBS
VEVfVEFJTFFfSEVBRCgsIHJ0ZV9wb3dlcl9jb3JlX29wcykgY29yZV9vcHNfbGlzdCA9DQo+ID4g
KyAgICAgICAgICAgICAgICAgICAgIFRBSUxRX0hFQURfSU5JVElBTElaRVIoY29yZV9vcHNfbGlz
dCk7DQo+ID4NCj4gPiAtLyogZnVuY3Rpb24gcG9pbnRlcnMgKi8NCj4gPiAtcnRlX3Bvd2VyX2Zy
ZXFzX3QgcnRlX3Bvd2VyX2ZyZXFzICA9IE5VTEw7IC1ydGVfcG93ZXJfZ2V0X2ZyZXFfdA0KPiA+
IHJ0ZV9wb3dlcl9nZXRfZnJlcSA9IE5VTEw7IC1ydGVfcG93ZXJfc2V0X2ZyZXFfdCBydGVfcG93
ZXJfc2V0X2ZyZXEgPQ0KPiA+IE5VTEw7IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93
ZXJfZnJlcV91cCA9IE5VTEw7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dl
cl9mcmVxX2Rvd24gPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93
ZXJfZnJlcV9tYXggPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93
ZXJfZnJlcV9taW4gPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93
ZXJfdHVyYm9fc3RhdHVzOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJf
ZnJlcV9lbmFibGVfdHVyYm87DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dl
cl9mcmVxX2Rpc2FibGVfdHVyYm87DQo+ID4gLXJ0ZV9wb3dlcl9nZXRfY2FwYWJpbGl0aWVzX3Qg
cnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXM7DQo+ID4gLQ0KPiA+IC1zdGF0aWMgdm9pZA0KPiA+
IC1yZXNldF9wb3dlcl9mdW5jdGlvbl9wdHJzKHZvaWQpDQo+ID4gKw0KPiA+ICtjb25zdCBjaGFy
ICpwb3dlcl9lbnZfc3RyW10gPSB7DQo+ID4gKyAgICAgIm5vdCBzZXQiLA0KPiA+ICsgICAgICJh
Y3BpIiwNCj4gPiArICAgICAia3ZtLXZtIiwNCj4gPiArICAgICAicHN0YXRlIiwNCj4gPiArICAg
ICAiY3BwYyIsDQo+ID4gKyAgICAgImFtZC1wc3RhdGUiDQo+ID4gK307DQo+ID4gKw0KPiA+ICsv
KiByZWdpc3RlciB0aGUgb3BzIHN0cnVjdCBpbiBydGVfcG93ZXJfY29yZV9vcHMsIHJldHVybiAw
IG9uDQo+ID4gK3N1Y2Nlc3MuICovIGludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKHN0cnVjdCBy
dGVfcG93ZXJfY29yZV9vcHMNCj4gPiArKmRyaXZlcl9vcHMpDQo+ID4gICB7DQo+ID4gLSAgICAg
cnRlX3Bvd2VyX2ZyZXFzICA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX2dldF9mcmVxID0g
TlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfc2V0X2ZyZXEgPSBOVUxMOw0KPiA+IC0gICAgIHJ0
ZV9wb3dlcl9mcmVxX3VwID0gTlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9kb3duID0g
TlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9tYXggPSBOVUxMOw0KPiA+IC0gICAgIHJ0
ZV9wb3dlcl9mcmVxX21pbiA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX3R1cmJvX3N0YXR1
cyA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX2ZyZXFfZW5hYmxlX3R1cmJvID0gTlVMTDsN
Cj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9kaXNhYmxlX3R1cmJvID0gTlVMTDsNCj4gPiAtICAg
ICBydGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGllcyA9IE5VTEw7DQo+ID4gKyAgICAgaWYgKCFkcml2
ZXJfb3BzLT5pbml0IHx8ICFkcml2ZXJfb3BzLT5leGl0IHx8DQo+ID4gKyAgICAgICAgICAgICAh
ZHJpdmVyX29wcy0+Y2hlY2tfZW52X3N1cHBvcnQgfHwgIWRyaXZlcl9vcHMtPmdldF9hdmFpbF9m
cmVxcyB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmdldF9mcmVxIHx8ICFkcml2
ZXJfb3BzLT5zZXRfZnJlcSB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmZyZXFf
dXAgfHwgIWRyaXZlcl9vcHMtPmZyZXFfZG93biB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZl
cl9vcHMtPmZyZXFfbWF4IHx8ICFkcml2ZXJfb3BzLT5mcmVxX21pbiB8fA0KPiA+ICsgICAgICAg
ICAgICAgIWRyaXZlcl9vcHMtPnR1cmJvX3N0YXR1cyB8fCAhZHJpdmVyX29wcy0+ZW5hYmxlX3R1
cmJvIHx8DQo+ID4gKyAgICAgICAgICAgICAhZHJpdmVyX29wcy0+ZGlzYWJsZV90dXJibyB8fCAh
ZHJpdmVyX29wcy0+Z2V0X2NhcHMpIHsNCj4gPiArICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIs
ICJNaXNzaW5nIGNhbGxiYWNrcyB3aGlsZSByZWdpc3RlcmluZw0KPiA+ICsgcG93ZXIgb3BzIik7
DQo+IHR1cmJvX3N0YXR1cygpLCBlbmFibGVfdHVyYm8oKSBhbmQgZGlzYWJsZSB0dXJibygpIGFy
ZSBub3QgbmVjZXNzYXJ5LCByaWdodD8NCk5vcGUsIHRoaXMgaXMgcmVxdWlyZWQgdG8gZ2V0IHRo
ZSBjdXJyZW50IHN0YXR1cyB1bmxpa2UgdGhlIGNhcGFiaWxpdHkgQVBJIChnZXRfY2FwcygpKS4N
Cj4gVGhlc2UgZGVwYW5kIG9uIHRoZSBjYXBhYmlsaXRpZXMgZnJvbSBnZXRfY2FwcygpLg0KPiA+
ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr
ICAgICBUQUlMUV9JTlNFUlRfVEFJTCgmY29yZV9vcHNfbGlzdCwgZHJpdmVyX29wcywgbmV4dCk7
DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4g
PiAgIHJ0ZV9wb3dlcl9jaGVja19lbnZfc3VwcG9ydGVkKGVudW0gcG93ZXJfbWFuYWdlbWVudF9l
bnYgZW52KQ0KPiA+ICAgew0KPiA+IC0gICAgIHN3aXRjaCAoZW52KSB7DQo+ID4gLSAgICAgY2Fz
ZSBQTV9FTlZfQUNQSV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2Fj
cGlfY3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9QU1RB
VEVfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9wc3RhdGVfY3B1ZnJl
cV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+ID4g
LSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfa3ZtX3ZtX2NoZWNrX3N1cHBvcnRlZCgpOw0KPiA+
IC0gICAgIGNhc2UgUE1fRU5WX0NQUENfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVy
biBwb3dlcl9jcHBjX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVkKCk7DQo+ID4gLSAgICAgY2FzZSBQ
TV9FTlZfQU1EX1BTVEFURV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2Vy
X2FtZF9wc3RhdGVfY3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBkZWZhdWx0
Og0KPiA+IC0gICAgICAgICAgICAgcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+IC0gICAgICAgICAg
ICAgcmV0dXJuIC0xOw0KPiA+IC0gICAgIH0NCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2Nv
cmVfb3BzICpvcHM7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChlbnYgPj0gUlRFX0RJTShwb3dlcl9l
bnZfc3RyKSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArICAgICBS
VEVfVEFJTFFfRk9SRUFDSChvcHMsICZjb3JlX29wc19saXN0LCBuZXh0KQ0KPiA+ICsgICAgICAg
ICAgICAgaWYgKHN0cm5jbXAob3BzLT5uYW1lLCBwb3dlcl9lbnZfc3RyW2Vudl0sDQo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX1BPV0VSX0RSSVZFUl9OQU1FU1opID09IDAp
DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHMtPmNoZWNrX2Vudl9zdXBwb3J0
KCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQN
Cj4gPiAgIHJ0ZV9wb3dlcl9zZXRfZW52KGVudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgZW52KQ0K
PiA+ICAgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wczsNCj4gPiAr
ICAgICBpbnQgcmV0ID0gLTE7DQo+ID4gKw0KPiA+ICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZn
bG9iYWxfZW52X2NmZ19sb2NrKTsNCj4gPg0KPiA+ICAgICAgIGlmIChnbG9iYWxfZGVmYXVsdF9l
bnYgIT0gUE1fRU5WX05PVF9TRVQpIHsNCj4gPiAgICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIs
ICJQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50IGFscmVhZHkgc2V0LiIpOw0KPiA+IC0gICAg
ICAgICAgICAgcnRlX3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4g
LSAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gLSAgICAgfQ0KPiA+IC0NCj4gPC4uLj4NCj4g
PiAtICAgICBpZiAocmV0ID09IDApDQo+ID4gLSAgICAgICAgICAgICBnbG9iYWxfZGVmYXVsdF9l
bnYgPSBlbnY7DQo+ID4gLSAgICAgZWxzZSB7DQo+ID4gLSAgICAgICAgICAgICBnbG9iYWxfZGVm
YXVsdF9lbnYgPSBQTV9FTlZfTk9UX1NFVDsNCj4gPiAtICAgICAgICAgICAgIHJlc2V0X3Bvd2Vy
X2Z1bmN0aW9uX3B0cnMoKTsNCj4gPiAtICAgICB9DQo+ID4gKyAgICAgUlRFX1RBSUxRX0ZPUkVB
Q0gob3BzLCAmY29yZV9vcHNfbGlzdCwgbmV4dCkNCj4gPiArICAgICAgICAgICAgIGlmIChzdHJu
Y21wKG9wcy0+bmFtZSwgcG93ZXJfZW52X3N0cltlbnZdLA0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJURV9QT1dFUl9EUklWRVJfTkFNRVNaKSA9PSAwKSB7DQo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgIGdsb2JhbF9wb3dlcl9jb3JlX29wcyA9IG9wczsNCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsX2RlZmF1bHRfZW52ID0gZW52Ow0KPiA+ICsgICAgICAgICAg
ICAgICAgICAgICByZXQgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsN
Cj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICBQT1dFUl9MT0coRVJSLCAiSW52YWxpZCBQ
b3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50KCVkKSBzZXQiLA0KPiA+ICsgICAgICAgICAgICAg
ICAgICAgICBlbnYpOw0KPiA+DQo+ID4gK291dDoNCj4gPiAgICAgICBydGVfc3BpbmxvY2tfdW5s
b2NrKCZnbG9iYWxfZW52X2NmZ19sb2NrKTsNCj4gPiAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICAg
fQ0KPiA+IEBAIC0xNjQsOTQgKzk3LDY2IEBAIHJ0ZV9wb3dlcl91bnNldF9lbnYodm9pZCkNCj4g
PiAgIHsNCj4gPiAgICAgICBydGVfc3BpbmxvY2tfbG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7
DQo+ID4gICAgICAgZ2xvYmFsX2RlZmF1bHRfZW52ID0gUE1fRU5WX05PVF9TRVQ7DQo+ID4gLSAg
ICAgcmVzZXRfcG93ZXJfZnVuY3Rpb25fcHRycygpOw0KPiA+ICsgICAgIGdsb2JhbF9wb3dlcl9j
b3JlX29wcyA9IE5VTEw7DQo+ID4gICAgICAgcnRlX3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vu
dl9jZmdfbG9jayk7DQo+ID4gICB9DQo+ID4NCj4gPiAgIGVudW0gcG93ZXJfbWFuYWdlbWVudF9l
bnYNCj4gPiAtcnRlX3Bvd2VyX2dldF9lbnYodm9pZCkgew0KPiA+ICtydGVfcG93ZXJfZ2V0X2Vu
dih2b2lkKQ0KPiA+ICt7DQo+ID4gICAgICAgcmV0dXJuIGdsb2JhbF9kZWZhdWx0X2VudjsNCj4g
PiAgIH0NCj4gPg0KPiA+IC1pbnQNCj4gPiAtcnRlX3Bvd2VyX2luaXQodW5zaWduZWQgaW50IGxj
b3JlX2lkKQ0KPiA+ICtzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICoNCj4gPiArcnRlX3Bvd2Vy
X2dldF9jb3JlX29wcyh2b2lkKQ0KPiA+ICAgew0KPiA+IC0gICAgIGludCByZXQgPSAtMTsNCj4g
PiArICAgICBSVEVfQVNTRVJUKGdsb2JhbF9wb3dlcl9jb3JlX29wcyAhPSBOVUxMKTsNCj4gPg0K
PiA+IC0gICAgIHN3aXRjaCAoZ2xvYmFsX2RlZmF1bHRfZW52KSB7DQo+ID4gLSAgICAgY2FzZSBQ
TV9FTlZfQUNQSV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FjcGlf
Y3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+
ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfa3ZtX3ZtX2luaXQobGNvcmVfaWQpOw0KPiA+
IC0gICAgIGNhc2UgUE1fRU5WX1BTVEFURV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0
dXJuIHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0gICAgIGNhc2Ug
UE1fRU5WX0NQUENfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9jcHBj
X2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfQU1EX1BTVEFU
RV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FtZF9wc3RhdGVfY3B1
ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBkZWZhdWx0Og0KPiA+IC0gICAgICAgICAg
ICAgUE9XRVJfTE9HKElORk8sICJFbnYgaXNuJ3Qgc2V0IHlldCEiKTsNCj4gPiAtICAgICB9DQo+
ID4gKyAgICAgcmV0dXJuIGdsb2JhbF9wb3dlcl9jb3JlX29wczsNCj4gPiArfQ0KPiA+DQo+ID4g
LSAgICAgLyogQXV0byBkZXRlY3QgRW52aXJvbm1lbnQgKi8NCj4gPiAtICAgICBQT1dFUl9MT0co
SU5GTywgIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBBQ1BJIGNwdWZyZXEgcG93ZXINCj4gbWFu
YWdlbWVudC4uLiIpOw0KPiA+IC0gICAgIHJldCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9pbml0KGxj
b3JlX2lkKTsNCj4gPiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPiAtICAgICAgICAgICAgIHJ0
ZV9wb3dlcl9zZXRfZW52KFBNX0VOVl9BQ1BJX0NQVUZSRVEpOw0KPiA+IC0gICAgICAgICAgICAg
Z290byBvdXQ7DQo+ID4gLSAgICAgfQ0KPiA+ICtpbnQNCj4gPiArcnRlX3Bvd2VyX2luaXQodW5z
aWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29w
cyAqb3BzOw0KPiA+ICsgICAgIHVpbnQ4X3QgZW52Ow0KPiA+DQo+ID4gLSAgICAgUE9XRVJfTE9H
KElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgUFNUQVQgcG93ZXIgbWFuYWdlbWVudC4u
LiIpOw0KPiA+IC0gICAgIHJldCA9IHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQp
Ow0KPiA+IC0gICAgIGlmIChyZXQgPT0gMCkgew0KPiA+IC0gICAgICAgICAgICAgcnRlX3Bvd2Vy
X3NldF9lbnYoUE1fRU5WX1BTVEFURV9DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8g
b3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICBpZiAoZ2xvYmFsX2RlZmF1bHRfZW52ICE9IFBN
X0VOVl9OT1RfU0VUKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbF9wb3dlcl9jb3Jl
X29wcy0+aW5pdChsY29yZV9pZCk7DQo+ID4NCj4gPiAtICAgICBQT1dFUl9MT0coSU5GTywgIkF0
dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBBTUQgUFNUQVRFIHBvd2VyDQo+IG1hbmFnZW1lbnQuLi4i
KTsNCj4gPiAtICAgICByZXQgPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29yZV9p
ZCk7DQo+ID4gLSAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93
ZXJfc2V0X2VudihQTV9FTlZfQU1EX1BTVEFURV9DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAg
IGdvdG8gb3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICBQT1dFUl9MT0coSU5GTywgIkVudiBp
c24ndCBzZXQgeWV0ISIpOw0KPiByZW1vdmUgdGhpcyBsb2c/DQo+ID4NCj4gPiAtICAgICBQT1dF
Ul9MT0coSU5GTywgIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBDUFBDIHBvd2VyIG1hbmFnZW1l
bnQuLi4iKTsNCj4gPiAtICAgICByZXQgPSBwb3dlcl9jcHBjX2NwdWZyZXFfaW5pdChsY29yZV9p
ZCk7DQo+ID4gLSAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93
ZXJfc2V0X2VudihQTV9FTlZfQ1BQQ19DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8g
b3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICAvKiBBdXRvIGRldGVjdCBFbnZpcm9ubWVudCAq
Lw0KPiA+ICsgICAgIFJURV9UQUlMUV9GT1JFQUNIKG9wcywgJmNvcmVfb3BzX2xpc3QsIG5leHQp
DQo+ID4gKyAgICAgICAgICAgICBpZiAob3BzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg
IFBPV0VSX0xPRyhJTkZPLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdHRl
bXB0aW5nIHRvIGluaXRpYWxpc2UgJXMgY3B1ZnJlcSBwb3dlciBtYW5hZ2VtZW50Li4uIiwNCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHMtPm5hbWUpOw0KPiA+ICsgICAgICAg
ICAgICAgICAgICAgICBpZiAob3BzLT5pbml0KGxjb3JlX2lkKSA9PSAwKSB7DQo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlbnYgPSAwOyBlbnYgPCBSVEVfRElNKHBvd2Vy
X2Vudl9zdHIpOyBlbnYrKykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzdHJuY21wKG9wcy0+bmFtZSwgcG93ZXJfZW52X3N0cltlbnZdLA0KPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9QT1dF
Ul9EUklWRVJfTkFNRVNaKSA9PSAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0ZV9wb3dlcl9zZXRfZW52KGVudik7DQo+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICB9DQo+ID4gKyAgICAgICAgICAgICB9DQo+IENhbiB3ZSBjaGFuZ2UgdGhlIGxvZ2ljIG9m
IHJ0ZV9wb3dlcl9zZXRfZW52KCk/IGxpa2U6DQo+ICAgICAgUlRFX1RBSUxRX0ZPUkVBQ0gob3Bz
LCAmY29yZV9vcHNfbGlzdCwgbmV4dCkgew0KPiAgICAgICAgICBmb3IgKGVudiA9IDA7IGVudiA8
IFJURV9ESU0ocG93ZXJfZW52X3N0cik7IGVudisrKSB7DQo+ICAgICAgICAgICAgICAgICAgaWYg
KHN0cm5jbXAob3BzLT5uYW1lLCBwb3dlcl9lbnZfc3RyW2Vudl0sDQo+IFJURV9QT1dFUl9EUklW
RVJfTkFNRVNaKSA9PSAwICYmDQo+ICAgICAgICAgICAgICAgICAgICAgIG9wcy0+aW5pdChsY29y
ZV9pZCkgPT0gMCkgew0KPiAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfcG93ZXJfY29yZV9v
cHMgPSBvcHM7DQo+ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kZWZhdWx0X2VudiA9IGVu
djsNCj4gICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgIH0NCj4gICAgICB9DQo+IFRoYXQg
aXMgZWFzaWVyIHRvIGZvbGxvdyBjb2RlLg0KWWVzLCB3aWxsIGZpeCBpbiBuZXh0IHZlcnNpb24u
DQoNCj4gPiArDQo+ID4gKyAgICAgUE9XRVJfTE9HKEVSUiwNCj4gPiArICAgICAgICAgICAgICJV
bmFibGUgdG8gc2V0IFBvd2VyIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgZm9yIGxjb3JlICV1IiwN
Cj4gPiArICAgICAgICAgICAgIGxjb3JlX2lkKTsNCj4gPg0KPiA+IC0gICAgIFBPV0VSX0xPRyhJ
TkZPLCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIFZNIHBvd2VyIG1hbmFnZW1lbnQuLi4iKTsN
Cj4gPiAtICAgICByZXQgPSBwb3dlcl9rdm1fdm1faW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAg
aWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9F
TlZfS1ZNX1ZNKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+IC0gICAgIH0NCj4g
PiAtICAgICBQT1dFUl9MT0coRVJSLCAiVW5hYmxlIHRvIHNldCBQb3dlciBNYW5hZ2VtZW50IEVu
dmlyb25tZW50IGZvciBsY29yZQ0KPiAiDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICIldSIs
IGxjb3JlX2lkKTsNCj4gPiAtb3V0Og0KPiA+IC0gICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAg
cmV0dXJuIC0xOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4gPiAgIHJ0ZV9wb3dlcl9leGl0
KHVuc2lnbmVkIGludCBsY29yZV9pZCkNCj4gPiAgIHsNCj4gPiAtICAgICBzd2l0Y2ggKGdsb2Jh
bF9kZWZhdWx0X2Vudikgew0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FDUElfQ1BVRlJFUToNCj4g
PiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9hY3BpX2NwdWZyZXFfZXhpdChsY29yZV9pZCk7
DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfS1ZNX1ZNOg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJu
IHBvd2VyX2t2bV92bV9leGl0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9QU1RB
VEVfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9wc3RhdGVfY3B1ZnJl
cV9leGl0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9DUFBDX0NQVUZSRVE6DQo+
ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfY3BwY19jcHVmcmVxX2V4aXQobGNvcmVfaWQp
Ow0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FNRF9QU1RBVEVfQ1BVRlJFUToNCj4gPiAtICAgICAg
ICAgICAgIHJldHVybiBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfZXhpdChsY29yZV9pZCk7DQo+
ID4gLSAgICAgZGVmYXVsdDoNCj4gPiAtICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIsICJFbnZp
cm9ubWVudCBoYXMgbm90IGJlZW4gc2V0LCB1bmFibGUgdG8gZXhpdA0KPiBncmFjZWZ1bGx5Iik7
DQo+ID4gKyAgICAgaWYgKGdsb2JhbF9kZWZhdWx0X2VudiAhPSBQTV9FTlZfTk9UX1NFVCkNCj4g
PiArICAgICAgICAgICAgIHJldHVybiBnbG9iYWxfcG93ZXJfY29yZV9vcHMtPmV4aXQobGNvcmVf
aWQpOw0KPiA+DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIHJldHVybiAtMTsNCj4gPiArICAgICBQ
T1dFUl9MT0coRVJSLA0KPiA+ICsgICAgICAgICAgICAgIkVudmlyb25tZW50IGhhcyBub3QgYmVl
biBzZXQsIHVuYWJsZSB0byBleGl0DQo+ID4gKyBncmFjZWZ1bGx5Iik7DQo+ID4NCj4gPiArICAg
ICByZXR1cm4gLTE7DQo+ID4gICB9DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93
ZXIuaCBiL2xpYi9wb3dlci9ydGVfcG93ZXIuaCBpbmRleA0KPiA+IDRmYTRhZmUzOTkuLjVlNGFh
Y2YwOGIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4gKysrIGIv
bGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4gQEAgLTEsNSArMSw2IEBADQo+ID4gICAvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gICAgKiBDb3B5cmlnaHQoYykg
MjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDI0IEFk
dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gPiAgICAqLw0KPiA+DQo+ID4gICAjaWZuZGVm
IF9SVEVfUE9XRVJfSA0KPiA+IEBAIC0xNCwxNCArMTUsMjEgQEANCj4gPiAgICNpbmNsdWRlIDxy
dGVfbG9nLmg+DQo+ID4gICAjaW5jbHVkZSA8cnRlX3Bvd2VyX2d1ZXN0X2NoYW5uZWwuaD4NCj4g
Pg0KPiA+ICsjaW5jbHVkZSAicnRlX3Bvd2VyX2NvcmVfb3BzLmgiDQo+ID4gKw0KPiA+ICAgI2lm
ZGVmIF9fY3BsdXNwbHVzDQo+ID4gICBleHRlcm4gIkMiIHsNCj4gPiAgICNlbmRpZg0KPiA+DQo+
ID4gICAvKiBQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50IFN0YXRlICovIC1lbnVtIHBvd2Vy
X21hbmFnZW1lbnRfZW52DQo+ID4ge1BNX0VOVl9OT1RfU0VULCBQTV9FTlZfQUNQSV9DUFVGUkVR
LCBQTV9FTlZfS1ZNX1ZNLA0KPiA+IC0gICAgICAgICAgICAgUE1fRU5WX1BTVEFURV9DUFVGUkVR
LCBQTV9FTlZfQ1BQQ19DUFVGUkVRLA0KPiA+IC0gICAgICAgICAgICAgUE1fRU5WX0FNRF9QU1RB
VEVfQ1BVRlJFUX07DQo+ID4gK2VudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgew0KPiA+ICsgICAg
IFBNX0VOVl9OT1RfU0VUID0gMCwNCj4gPiArICAgICBQTV9FTlZfQUNQSV9DUFVGUkVRLA0KPiA+
ICsgICAgIFBNX0VOVl9LVk1fVk0sDQo+ID4gKyAgICAgUE1fRU5WX1BTVEFURV9DUFVGUkVRLA0K
PiA+ICsgICAgIFBNX0VOVl9DUFBDX0NQVUZSRVEsDQo+ID4gKyAgICAgUE1fRU5WX0FNRF9QU1RB
VEVfQ1BVRlJFUQ0KPiA+ICt9Ow0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIENoZWNrIGlmIGEg
c3BlY2lmaWMgcG93ZXIgbWFuYWdlbWVudCBlbnZpcm9ubWVudCB0eXBlIGlzDQo+ID4gc3VwcG9y
dGVkIG9uIGEgQEAgLTY2LDYgKzc0LDE1IEBAIHZvaWQgcnRlX3Bvd2VyX3Vuc2V0X2Vudih2b2lk
KTsNCj4gPiAgICAqLw0KPiA+ICAgZW51bSBwb3dlcl9tYW5hZ2VtZW50X2VudiBydGVfcG93ZXJf
Z2V0X2Vudih2b2lkKTsNCj4NCj4gSSdkIGxpa2UgdG8gbGV0IHVzZXIgbm90IGtub3cgdXNlZCB3
aGljaCBjcHVmcmVxIGRyaXZlciwgd2hpY2ggaXMgZnJpZW5kbHkgdG8gdXNlci4NCj4NCj4gU28g
d2UgY2FuIHJldGhpbmsgaWYgdGhpcyBBUEkgaXMgbmVjZXNzYXJ5Lg0KRm9yIGFueSBBUEkgY2hh
bmdlcywgY291bGQgd2UgaGFuZGxlIHRoaXMgYXMgYSBzZXBhcmF0ZSBSRkMgZm9yIGRpc2N1c3Np
b24/DQpJdOKAmXMgaW1wb3J0YW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgbm90IGluY2x1ZGVk
IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4NCj4NCj4gPg0KPiA+ICsvKioNCj4gPiAr
ICogQGludGVybmFsIEdldCB0aGUgcG93ZXIgb3BzIHN0cnVjdCBmcm9tIGl0cyBpbmRleC4NCj4g
PiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBvcHMg
c3RydWN0IGluIHRoZSB0YWJsZSBpZiByZWdpc3RlcmVkLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0
IHJ0ZV9wb3dlcl9jb3JlX29wcyAqDQo+ID4gK3J0ZV9wb3dlcl9nZXRfY29yZV9vcHModm9pZCk7
DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBJbml0aWFsaXplIHBvd2VyIG1hbmFnZW1lbnQg
Zm9yIGEgc3BlY2lmaWMgbGNvcmUuIElmIHJ0ZV9wb3dlcl9zZXRfZW52KCkgaGFzDQo+ID4gICAg
KiBub3QgYmVlbiBjYWxsZWQgdGhlbiBhbiBhdXRvLWRldGVjdCBvZiB0aGUgZW52aXJvbm1lbnQg
d2lsbCBzdGFydA0KPiA+IGFuZCBAQCAtMTA4LDEwICsxMjUsMTMgQEAgaW50IHJ0ZV9wb3dlcl9l
eGl0KHVuc2lnbmVkIGludCBsY29yZV9pZCk7DQo+ID4gICAgKiBAcmV0dXJuDQo+ID4gICAgKiAg
VGhlIG51bWJlciBvZiBhdmFpbGFibGUgZnJlcXVlbmNpZXMuDQo+ID4gICAgKi8NCj4gPiAtdHlw
ZWRlZiB1aW50MzJfdCAoKnJ0ZV9wb3dlcl9mcmVxc190KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQs
IHVpbnQzMl90ICpmcmVxcywNCj4gPiAtICAgICAgICAgICAgIHVpbnQzMl90IG51bSk7DQo+ID4g
K3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gPiArcnRlX3Bvd2VyX2ZyZXFzKHVuc2lnbmVkIGlu
dCBsY29yZV9pZCwgdWludDMyX3QgKmZyZXFzLCB1aW50MzJfdCBuKSB7DQo+ID4gKyAgICAgc3Ry
dWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0K
PiA+DQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcXNfdCBydGVfcG93ZXJfZnJlcXM7DQo+ID4g
KyAgICAgcmV0dXJuIG9wcy0+Z2V0X2F2YWlsX2ZyZXFzKGxjb3JlX2lkLCBmcmVxcywgbik7IH0N
Cj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgaW5kZXggb2YgYXZh
aWxhYmxlIGZyZXF1ZW5jaWVzIG9mIGEgc3BlY2lmaWMgbGNvcmUuDQo+ID4gQEAgLTEyNCw5ICsx
NDQsMTMgQEAgZXh0ZXJuIHJ0ZV9wb3dlcl9mcmVxc190IHJ0ZV9wb3dlcl9mcmVxczsNCj4gPiAg
ICAqIEByZXR1cm4NCj4gPiAgICAqICBUaGUgY3VycmVudCBpbmRleCBvZiBhdmFpbGFibGUgZnJl
cXVlbmNpZXMuDQo+ID4gICAgKi8NCj4gPiAtdHlwZWRlZiB1aW50MzJfdCAoKnJ0ZV9wb3dlcl9n
ZXRfZnJlcV90KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVp
bnQzMl90DQo+ID4gK3J0ZV9wb3dlcl9nZXRfZnJlcSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpIHsN
Cj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVfcG93ZXJfZ2V0
X2NvcmVfb3BzKCk7DQo+ID4NCj4gPiAtZXh0ZXJuIHJ0ZV9wb3dlcl9nZXRfZnJlcV90IHJ0ZV9w
b3dlcl9nZXRfZnJlcTsNCj4gPiArICAgICByZXR1cm4gb3BzLT5nZXRfZnJlcShsY29yZV9pZCk7
DQo+ID4gK30NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTZXQgdGhlIG5ldyBmcmVxdWVuY3kg
Zm9yIGEgc3BlY2lmaWMgbGNvcmUgYnkgaW5kaWNhdGluZyB0aGUNCj4gPiBpbmRleCBvZiBAQCAt
MTQ0LDgyICsxNjgsMTAxIEBAIGV4dGVybiBydGVfcG93ZXJfZ2V0X2ZyZXFfdA0KPiBydGVfcG93
ZXJfZ2V0X2ZyZXE7DQo+ID4gICAgKiAgLSAwIG9uIHN1Y2Nlc3Mgd2l0aG91dCBmcmVxdWVuY3kg
Y2hhbmdlZC4NCj4gPiAgICAqICAtIE5lZ2F0aXZlIG9uIGVycm9yLg0KPiA+ICAgICovDQo+ID4g
LXR5cGVkZWYgaW50ICgqcnRlX3Bvd2VyX3NldF9mcmVxX3QpKHVuc2lnbmVkIGludCBsY29yZV9p
ZCwgdWludDMyX3QNCj4gPiBpbmRleCk7DQo+ID4gLQ0KPiA+IC1leHRlcm4gcnRlX3Bvd2VyX3Nl
dF9mcmVxX3QgcnRlX3Bvd2VyX3NldF9mcmVxOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90
DQo+ID4gK3J0ZV9wb3dlcl9zZXRfZnJlcSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsIHVpbnQzMl90
IGluZGV4KSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRl
X3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBGdW5jdGlvbiBw
b2ludGVyIGRlZmluaXRpb24gZm9yIGdlbmVyaWMgZnJlcXVlbmN5IGNoYW5nZQ0KPiA+IGZ1bmN0
aW9ucy4gUmV2aWV3DQo+ID4gLSAqIGVhY2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50
YXRpb24gZm9yIHVzYWdlLg0KPiA+IC0gKg0KPiA+IC0gKiBAcGFyYW0gbGNvcmVfaWQNCj4gPiAt
ICogIGxjb3JlIGlkLg0KPiA+IC0gKg0KPiA+IC0gKiBAcmV0dXJuDQo+ID4gLSAqICAtIDEgb24g
c3VjY2VzcyB3aXRoIGZyZXF1ZW5jeSBjaGFuZ2VkLg0KPiA+IC0gKiAgLSAwIG9uIHN1Y2Nlc3Mg
d2l0aG91dCBmcmVxdWVuY3kgY2hhbmdlZC4NCj4gPiAtICogIC0gTmVnYXRpdmUgb24gZXJyb3Iu
DQo+ID4gLSAqLw0KPiA+IC10eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90KSh1
bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICsgICAgIHJldHVybiBvcHMtPnNldF9mcmVxKGxj
b3JlX2lkLCBpbmRleCk7IH0NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTY2FsZSB1cCB0aGUg
ZnJlcXVlbmN5IG9mIGEgc3BlY2lmaWMgbGNvcmUgYWNjb3JkaW5nIHRvIHRoZSBhdmFpbGFibGUN
Cj4gPiAgICAqIGZyZXF1ZW5jaWVzLg0KPiA+ICAgICogUmV2aWV3IGVhY2ggZW52aXJvbm1lbnRz
IHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLg0KPiA+ICAgICovDQo+ID4gLWV4dGVy
biBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV91cDsNCj4gPiArc3RhdGlj
IGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfdXAodW5zaWduZWQgaW50IGxjb3JlX2lk
KSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2Vy
X2dldF9jb3JlX29wcygpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gb3BzLT5mcmVxX3VwKGxj
b3JlX2lkKTsNCj4gPiArfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIFNjYWxlIGRvd24gdGhl
IGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3JlIGFjY29yZGluZyB0byB0aGUgYXZhaWxhYmxl
DQo+ID4gICAgKiBmcmVxdWVuY2llcy4NCj4gPiAgICAqIFJldmlldyBlYWNoIGVudmlyb25tZW50
cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4NCj4gPiAgICAqLw0KPiA+IC1leHRl
cm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bvd2VyX2ZyZXFfZG93bjsNCj4gPiArc3Rh
dGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfZG93bih1bnNpZ25lZCBpbnQgbGNv
cmVfaWQpIHsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVf
cG93ZXJfZ2V0X2NvcmVfb3BzKCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBvcHMtPmZyZXFf
ZG93bihsY29yZV9pZCk7IH0NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTY2FsZSB1cCB0aGUg
ZnJlcXVlbmN5IG9mIGEgc3BlY2lmaWMgbGNvcmUgdG8gdGhlIGhpZ2hlc3QgYWNjb3JkaW5nIHRv
IHRoZQ0KPiA+ICAgICogYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+ICAgICogUmV2aWV3IGVh
Y2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLg0KPiA+ICAg
ICovDQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV9t
YXg7DQo+ID4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4gK3J0ZV9wb3dlcl9mcmVxX21heCh1bnNp
Z25lZCBpbnQgbGNvcmVfaWQpIHsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3Bz
ICpvcHMgPSBydGVfcG93ZXJfZ2V0X2NvcmVfb3BzKCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVy
biBvcHMtPmZyZXFfbWF4KGxjb3JlX2lkKTsNCj4gPiArfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAg
ICAqIFNjYWxlIGRvd24gdGhlIGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3JlIHRvIHRoZSBs
b3dlc3QgYWNjb3JkaW5nIHRvIHRoZQ0KPiA+ICAgICogYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0K
PiA+ICAgICogUmV2aWV3IGVhY2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24g
Zm9yIHVzYWdlLi4NCj4gPiAgICAqLw0KPiA+IC1leHRlcm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdl
X3QgcnRlX3Bvd2VyX2ZyZXFfbWluOw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICtydGVf
cG93ZXJfZnJlcV9taW4odW5zaWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4gKyAgICAgc3RydWN0
IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+
ICsNCj4gPiArICAgICByZXR1cm4gb3BzLT5mcmVxX21pbihsY29yZV9pZCk7DQo+ID4gK30NCj4g
Pg0KPiA+ICAgLyoqDQo+ID4gICAgKiBRdWVyeSB0aGUgVHVyYm8gQm9vc3Qgc3RhdHVzIG9mIGEg
c3BlY2lmaWMgbGNvcmUuDQo+ID4gICAgKiBSZXZpZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lm
aWMgZG9jdW1lbnRhdGlvbiBmb3IgdXNhZ2UuLg0KPiA+ICAgICovDQo+ID4gLWV4dGVybiBydGVf
cG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfdHVyYm9fc3RhdHVzOw0KPiA+ICtzdGF0aWMg
aW5saW5lIGludA0KPiA+ICtydGVfcG93ZXJfdHVyYm9fc3RhdHVzKHVuc2lnbmVkIGludCBsY29y
ZV9pZCkgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9w
b3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIG9wcy0+dHVyYm9f
c3RhdHVzKGxjb3JlX2lkKTsgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIEVuYWJsZSBUdXJi
byBCb29zdCBmb3IgdGhpcyBsY29yZS4NCj4gPiAgICAqIFJldmlldyBlYWNoIGVudmlyb25tZW50
cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4uDQo+ID4gICAgKi8NCj4gPiAtZXh0
ZXJuIHJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9mcmVxX2VuYWJsZV90dXJibzsN
Cj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfZW5hYmxlX3R1cmJv
KHVuc2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29y
ZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPiArDQo+ID4gKyAgICAg
cmV0dXJuIG9wcy0+ZW5hYmxlX3R1cmJvKGxjb3JlX2lkKTsgfQ0KPiA+DQo+ID4gICAvKioNCj4g
PiAgICAqIERpc2FibGUgVHVyYm8gQm9vc3QgZm9yIHRoaXMgbGNvcmUuDQo+ID4gICAgKiBSZXZp
ZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdXNhZ2UuLg0K
PiA+ICAgICovDQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJf
ZnJlcV9kaXNhYmxlX3R1cmJvOw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICtydGVfcG93
ZXJfZnJlcV9kaXNhYmxlX3R1cmJvKHVuc2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+ICsgICAg
IHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMo
KTsNCj4gPg0KPiA+IC0vKioNCj4gPiAtICogUG93ZXIgY2FwYWJpbGl0aWVzIHN1bW1hcnkuDQo+
ID4gLSAqLw0KPiA+IC1zdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfY2FwYWJpbGl0aWVzIHsNCj4gPiAt
ICAgICB1bmlvbiB7DQo+ID4gLSAgICAgICAgICAgICB1aW50NjRfdCBjYXBhYmlsaXRpZXM7DQo+
ID4gLSAgICAgICAgICAgICBzdHJ1Y3Qgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICB1aW50
NjRfdCB0dXJibzoxOyAgICAgICAvKio8IFR1cmJvIGNhbiBiZSBlbmFibGVkLiAqLw0KPiA+IC0g
ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBwcmlvcml0eToxOyAgICAvKio8IFNTVC1CRiBo
aWdoIGZyZXEgY29yZSAqLw0KPiA+IC0gICAgICAgICAgICAgfTsNCj4gPiAtICAgICB9Ow0KPiA+
IC19Ow0KPiA+ICsgICAgIHJldHVybiBvcHMtPmRpc2FibGVfdHVyYm8obGNvcmVfaWQpOyB9DQo+
ID4NCj4gPiAgIC8qKg0KPiA+ICAgICogUmV0dXJucyBwb3dlciBjYXBhYmlsaXRpZXMgZm9yIGEg
c3BlY2lmaWMgbGNvcmUuDQo+ID4gQEAgLTIzNSwxMCArMjc4LDE0IEBAIHN0cnVjdCBydGVfcG93
ZXJfY29yZV9jYXBhYmlsaXRpZXMgew0KPiA+ICAgICogIC0gMCBvbiBzdWNjZXNzLg0KPiA+ICAg
ICogIC0gTmVnYXRpdmUgb24gZXJyb3IuDQo+ID4gICAgKi8NCj4gPiAtdHlwZWRlZiBpbnQgKCpy
dGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGllc190KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsDQo+ID4g
LSAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfY2FwYWJpbGl0aWVzICpjYXBzKTsN
Cj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXMo
dW5zaWduZWQgaW50IGxjb3JlX2lkLA0KPiA+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3dl
cl9jb3JlX2NhcGFiaWxpdGllcyAqY2Fwcykgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJf
Y29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPg0KPiA+IC1leHRl
cm4gcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXNfdCBydGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGll
czsNCj4gPiArICAgICByZXR1cm4gb3BzLT5nZXRfY2FwcyhsY29yZV9pZCwgY2Fwcyk7IH0NCj4g
Pg0KPiA+ICAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gICB9DQo+ID4gZGlmZiAtLWdpdCBhL2xp
Yi9wb3dlci9ydGVfcG93ZXJfY29yZV9vcHMuaA0KPiA+IGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9j
b3JlX29wcy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uMzU2
YTY0ZGY3OQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9saWIvcG93ZXIvcnRlX3Bvd2Vy
X2NvcmVfb3BzLmgNCj4gPiBAQCAtMCwwICsxLDIwOCBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQg
SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMjQgQWR2YW5jZWQgTWlj
cm8gRGV2aWNlcywgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX1JURV9QT1dF
Ul9DT1JFX09QU19IDQo+ID4gKyNkZWZpbmUgX1JURV9QT1dFUl9DT1JFX09QU19IDQo+ID4gKw0K
PiBzdWdnZXN0IHJlbmFtZSB0aGUgZmlsZSBhcyBydGVfcG93ZXJfY3B1ZnJlcV9hcGkuaC4NCj4g
SWYgc28sIHRoZSByb2xlIG9mIHRoaXMgZmlsZSBpcyBtb3JlIGNsZWFybHkuDQo+ID4gK19fcnRl
X2ludGVybmFsDQo+ID4gK2ludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKHN0cnVjdCBydGVfcG93
ZXJfY29yZV9vcHMgKm9wcyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogTWFjcm8gdG8gc3Rh
dGljYWxseSByZWdpc3RlciB0aGUgb3BzIG9mIGEgY3B1ZnJlcSBkcml2ZXIuDQo+ID4gKyAqLw0K
PiA+ICsjZGVmaW5lIFJURV9QT1dFUl9SRUdJU1RFUl9PUFMob3BzKSAgICAgICAgICBcDQo+ID4g
KyAgICAgUlRFX0lOSVQocG93ZXJfaGRscl9pbml0XyMjb3BzKSAgICAgICAgIFwNCj4gPiArICAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICAg
ICAgICAgcnRlX3Bvd2VyX3JlZ2lzdGVyX29wcygmb3BzKTsgICBcDQo+ID4gKyAgICAgfQ0KPiA+
ICsNCj4gPiArLyoqDQo+ID4gKyAqIEBpbnRlcm5hbCBHZXQgdGhlIHBvd2VyIG9wcyBzdHJ1Y3Qg
ZnJvbSBpdHMgaW5kZXguDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUg
cG9pbnRlciB0byB0aGUgb3BzIHN0cnVjdCBpbiB0aGUgdGFibGUgaWYgcmVnaXN0ZXJlZC4NCj4g
PiArICovDQo+ID4gK3N0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKg0KPiA+ICtydGVfcG93ZXJf
Z2V0X2NvcmVfb3BzKHZvaWQpOw0KPiA+ICsNCj4gPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4g
K30NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvbGli
L3Bvd2VyL3ZlcnNpb24ubWFwIGIvbGliL3Bvd2VyL3ZlcnNpb24ubWFwIGluZGV4DQo+ID4gYzlh
MjI2NjE0ZS4uYmQ2NGUwODI4ZiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvcG93ZXIvdmVyc2lvbi5t
YXANCj4gPiArKysgYi9saWIvcG93ZXIvdmVyc2lvbi5tYXANCj4gPiBAQCAtNTEsNCArNTEsMTgg
QEAgRVhQRVJJTUVOVEFMIHsNCj4gPiAgICAgICBydGVfcG93ZXJfc2V0X3VuY29yZV9lbnY7DQo+
ID4gICAgICAgcnRlX3Bvd2VyX3VuY29yZV9mcmVxczsNCj4gPiAgICAgICBydGVfcG93ZXJfdW5z
ZXRfdW5jb3JlX2VudjsNCj4gPiArICAgICAjIGFkZGVkIGluIDI0LjA3DQo+IDI0LjA3LS0+MjQu
MTE/DQo+ID4gKyAgICAgcnRlX3Bvd2VyX2xvZ3R5cGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtJ
TlRFUk5BTCB7DQo+ID4gKyAgICAgZ2xvYmFsOg0KPiA+ICsNCj4gPiArICAgICBydGVfcG93ZXJf
cmVnaXN0ZXJfb3BzOw0KPiA+ICsgICAgIGNwdWZyZXFfY2hlY2tfc2NhbGluZ19kcml2ZXI7DQo+
ID4gKyAgICAgcG93ZXJfc2V0X2dvdmVybm9yOw0KPiA+ICsgICAgIG9wZW5fY29yZV9zeXNmc19m
aWxlOw0KPiA+ICsgICAgIHJlYWRfY29yZV9zeXNmc191MzI7DQo+ID4gKyAgICAgcmVhZF9jb3Jl
X3N5c2ZzX3M7DQo+ID4gKyAgICAgd3JpdGVfY29yZV9zeXNmc19zOw0KPiA+ICAgfTsNCg==