From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 450A394195D for ; Thu, 2 May 2024 14:53:12 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=OhsO79f2XKHc1DO+YN0uYmNZZPoIseIh0PGhx9rVR+w=; c=relaxed/simple; d=groups.io; h=Received-SPF:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:user-agent:Authentication-Results-Original:nodisclaimer:MIME-Version:Original-Authentication-Results:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-ID:Content-Transfer-Encoding; s=20240206; t=1714661590; v=1; b=5NDem9ZYF7iU3Ac1smjS7dp6qEqabIxQLVIAsYL6FqyKAYP6BUDjSZwj/D8Hjsuf06DnVtol CTEIVrX70g060KH/EskJfOnAQaWMi+6WY8IqELfiCT3VZub8HOrhMQDNy3SjdYe4G2KoEYpQwrA I2Yd4hl2ZdrOhQsPvKR6bZe1hM7CWRo7A8LMdUhiYoO3OkPCOKmT1C5ViA1XHI/rNAn0zcLuGKl AIoMrZjrPsDaZ/wXChrd/o1eeDEouvtkmz0BiP0ZmnGzErPICHdlwGL17UgasPO6XesNn/W8DwU MpP9LGVWDxurG9s2igtjRtlBrHn1hegakeoHumxzPi3uw== X-Received: by 127.0.0.2 with SMTP id XYOzYY7687511x2FH3MSk4ah; Thu, 02 May 2024 07:53:10 -0700 X-Received: from EUR03-AM7-obe.outbound.protection.outlook.com (EUR03-AM7-obe.outbound.protection.outlook.com [40.107.105.59]) by mx.groups.io with SMTP id smtpd.web10.7546.1714661589339051215 for ; Thu, 02 May 2024 07:53:09 -0700 X-Received: from DB9PR06CA0006.eurprd06.prod.outlook.com (2603:10a6:10:1db::11) by AS8PR08MB6502.eurprd08.prod.outlook.com (2603:10a6:20b:335::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36; Thu, 2 May 2024 14:53:06 +0000 X-Received: from DU6PEPF00009528.eurprd02.prod.outlook.com (2603:10a6:10:1db:cafe::e5) by DB9PR06CA0006.outlook.office365.com (2603:10a6:10:1db::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.25 via Frontend Transport; Thu, 2 May 2024 14:53:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C X-Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DU6PEPF00009528.mail.protection.outlook.com (10.167.8.9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7544.18 via Frontend Transport; Thu, 2 May 2024 14:53:05 +0000 X-Received: ("Tessian outbound 85e363419cbe:v315"); Thu, 02 May 2024 14:53:05 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 60a856579402d4bb X-CR-MTA-TID: 64aa7808 X-Received: from cb39b72d4511.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D9B6DDE9-6EC7-401E-BBE5-D9186D8A335B.1; Thu, 02 May 2024 14:52:59 +0000 X-Received: from EUR02-AM0-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cb39b72d4511.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 02 May 2024 14:52:59 +0000 X-Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by PA4PR08MB5904.eurprd08.prod.outlook.com (2603:10a6:102:e5::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.36; Thu, 2 May 2024 14:52:57 +0000 X-Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::1e13:dc65:224e:219c]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::1e13:dc65:224e:219c%5]) with mapi id 15.20.7519.035; Thu, 2 May 2024 14:52:57 +0000 From: "Sami Mujawar" To: Oliver Smith-Denny , "devel@edk2.groups.io" , "nhiphambka@gmail.com" , Yeo Reum Yun CC: Ard Biesheuvel , Ray Ni , Kun Qin Subject: Re: [edk2-devel] [PATCH v1 1/1] StandaloneMmPkg/StandaloneMmHobLib: Remove HOB creation Thread-Topic: [edk2-devel] [PATCH v1 1/1] StandaloneMmPkg/StandaloneMmHobLib: Remove HOB creation Thread-Index: AQHaJ4Id4HtX0GdgtUu4WmUj0IZkU7GDzu8AgAEzpoA= Date: Thu, 2 May 2024 14:52:57 +0000 Message-ID: <81C8FF71-D500-480D-A0A1-EC57039B1083@arm.com> References: <20231205134757.14692-1-nhiphambka@gmail.com> <0d99c3c9-9dd0-494a-93b1-e9270914162b@linux.microsoft.com> In-Reply-To: <0d99c3c9-9dd0-494a-93b1-e9270914162b@linux.microsoft.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.84.24041420 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AS8PR08MB6806:EE_|PA4PR08MB5904:EE_|DU6PEPF00009528:EE_|AS8PR08MB6502:EE_ X-MS-Office365-Filtering-Correlation-Id: 7bf37683-47fd-4bb0-63ed-08dc6ab79304 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230031|376005|1800799015|366007|38070700009; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?c2h6K0ZyNGJjK0ZCU25ZeE1VSExRd2xsS1p1SDJXTW1hRFQ0eURIRTJ6UUND?= =?utf-8?B?cldzNUZ1YXdYeFQzb1duVVpyYlBPbnlRdjNUczh3UHNkREhUeHRiemtQRWQ1?= =?utf-8?B?cXh3VkhIWUtmbVpuMGxKeGEyemhxaEIvbEZleGtMZDk0dUVaS3JYVjJmZE1K?= =?utf-8?B?MDh6WnJ5OGhlRE9WM3FNTzVCSHdRSGZSZDBWWHZiVEJ0Q2lIYXB5OUJhQmNO?= =?utf-8?B?bU0zMnFOekVMa1k1WUxUTTNXL1BvcHJXTnRua294QUw1bnMvWm1TeUVMMjdl?= =?utf-8?B?ajUyZFJGSUxScTE2eU1WTHRPamxkRmN0eVNwSzNIemNpRnAxT2ZIZGhreFZz?= =?utf-8?B?V2lwYVhvUC9PdlBEaVpNaEt5T2JNc1grSFVTSTZFTW9oK2ltaVRsNTVJQm9C?= =?utf-8?B?VGpRbkJIK3k0ODdUZzIrWm1uWm4vbjhsM0FuTzNycjJqcEZFUnFnV0h6ZW9u?= =?utf-8?B?ZGJIVXByRGdCRnR3K29VZ1JLTmprTUpRblNpVWlBbFJ3MDNmOEcyQjR2OGNO?= =?utf-8?B?M2lFbGRpU3hIV0NNRU0vT3dhcS9sVG9UOGZpMFRaNHgxQW1QTDF6MjExMHlZ?= =?utf-8?B?Tm1FcWw0OTc5c2pGU1M3dlcraFBRK05vNHV3dE0zSFF0OVJQU3RzVG9pMVVR?= =?utf-8?B?Qll5eTFMbnpGVVlkNlEzejJSTEtvNmJsRGZ6cWFMcjBtSnJVSVUvUUE1VDFP?= =?utf-8?B?aElBMTEyZ3h0MEpuaGlsSkZYOXBObTY3cXJ6bmhSMWpWVVhKOG14dStUclVX?= =?utf-8?B?REI2Y2t1NGsxSWwySkNTTEFNRGxlSnNrWWx1UDgwV3lzTmtmNGtkVjVFQktr?= =?utf-8?B?RUorcGlyMTlnMndndzg2TndhTzA2TThkcTloYXo0TlMzbGRadGk3OGpwT3B3?= =?utf-8?B?dVc4RlBaY0cxVCtQVjN5T0dWbS9WckhlQ0x4VGdFUnIrUWJNcHI4ci8wQmkr?= =?utf-8?B?c2JKamFleWdvRk5lTXEwZkFZRVhXTTBPNEJRL0xLbVBPbTB2YVNMTXJhMTFh?= =?utf-8?B?K2ZMOXB5dEluS2RkeDBpVFloLzNoMjJXRVY3NkdnNHNJaDhZU0JDbFRqNVF6?= =?utf-8?B?anVXdEFpUlFGWkM2S0dQV2o1ME41SU95QjgvTUxwQTlySmhXd2E3SC9KNmZH?= =?utf-8?B?M1VOaHk2Y2FpMm5WU3l6dGxmN0Y0ZzdvWDFYVWtJckR5UjBHMnE3SHZmZ29h?= =?utf-8?B?NVpXY2FETi8wZUs5cFlPWDR0QWJObUdvbUVSNHVwRzFPTHpha0RrTlhJMW51?= =?utf-8?B?V1F5UEI0ZmxZQ3ZPditpSHNOSFhicmlnMW9HeW4ra296aS9yZ0s5VEJNNU83?= =?utf-8?B?UEVvK2U3U1RENmpsRWh6dFpaNy9OU2lmeUFEUUREcWFRaHZ4Tm5XeW5URUxx?= =?utf-8?B?ZWlvQ01QdldVcGFpWGRGaGorUE9wcERJQWM5OWp5eUtjMGpaNnJPTjg2K2tD?= =?utf-8?B?VW13TVZoeEorSVBWZWV5aHBuYm1BWVpWY1RXcDVxSExCNVN2aE9XcHFDM2ww?= =?utf-8?B?MGZQZFpjNWRqQ1VsUHlHU3hhaWRLd214ZW15ZlRINzk2NUw1TEJFZldXcVZw?= =?utf-8?B?akZHYWowOTNQYUtkM0VJWkNzT1NhZGIrNjRCUlRrL2pnN1A3TXhEdWlycnBZ?= =?utf-8?B?dnR0TUtxTlR0OG1XbTAwT3VQcU5ja0JCOThXRGNNV2pMRGhiTXNvdkVKWFBN?= =?utf-8?B?ck1keFRtM2hYTDhJOEVFNks3V0lFSUhjUStJczZ4WndtbHBhRVh5cU9zRzhD?= =?utf-8?Q?JlVO+yc8QSl2ko+IUQ=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(1800799015)(366007)(38070700009);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB5904 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF00009528.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4e963416-60e3-47cf-5997-08dc6ab78dfc X-Microsoft-Antispam-Message-Info: =?utf-8?B?alF1S1p4NThleFREN1NBRGlWemRqbEVrVjlDdEZtWEg1MTM0U3lGckt6bVEw?= =?utf-8?B?ekZTL2NCM1NUSjlRRnBLbkZ6Ti9VcXl1N2tjNTZ2MDI5emMzdE94dWdheDll?= =?utf-8?B?eGlqUHRtY0ZkeXY4OHJIRGhVa0V0cDc3dDh0cUVDZDFwSXRWMEJIV1Z6YkdB?= =?utf-8?B?Qyt4Qmd3RHJ6RUNzY2pkaFRYaWdMV0VsS0JnbFdiVWtvRkJzUk1tNmkxbmhT?= =?utf-8?B?YXBBQjUxK3NGWndnUWhlMkQ5UHpnYVk4SS9PYkZnMmVpdk4vUzNtblNtU3l3?= =?utf-8?B?V2pVN3BOck91QnU4OVhkQndPckJOdkRIaXR3RTNPMGVCbjZsRmhOVUJ5enB1?= =?utf-8?B?cjA5N2pKNWxHc3JYc09NeU1MZ2NHTCtVbWJSSys5MjVETk1Ca0hBUVhZT2wr?= =?utf-8?B?UFg1R1d3a0pGYm52UXVwTk15NWcwOE16THdWd2RHQ3JDUTJBMkhjZ0hDNWtW?= =?utf-8?B?ZHpXUDBBSUNJM2N5TnUzdzg3M21mUjZJeWdFcWFFRFZFSFZ0NHNLRlJkdHBl?= =?utf-8?B?bXlkdVM2ZFRrVTFrcEI2REw2LzY2SGw4TWYyOFhrODhHTUt0VFR2dkFvRnRW?= =?utf-8?B?WEsyeFo5YkNWcmFoL3o3Nk42MVdZeVNGVHo1R0ZkV1EvOEVDT0pxeXh4bWQ0?= =?utf-8?B?c2Z3ZW5mU3haNW9HdTc0OFhkZG1WN0N2VEl2dTlITHgrRWs2aVpLNTVEVXB4?= =?utf-8?B?RUhqVk5Vaml0TGxTU1l4OEZjY2NWdFBON1lrWit1VnM3djNVdWNCSnZqbjZ5?= =?utf-8?B?cENIUnRROTBPVmN5SEF4UkMyWXE5SzYwSmR1VDVhVzl6bHN0TjNiU1Y5SEU0?= =?utf-8?B?NlRMU2d2ZGR2MjZyWjBlVGxCMENnZWFOZTVlakUxUHg1ejV2aHB0a1ljOTRD?= =?utf-8?B?d1kwSGwvMXlQeXBwVWZKazdJcStrSWxUb3dsZmQzWmUyUUdKb3BRaUhtTDkz?= =?utf-8?B?U0cxLzZxYjlhVVF5Nyt5SUVNclpwS0JEbGZHT1VOajcyMDUyRlRjRWtlc2RU?= =?utf-8?B?Sys2RnJsaXpzbU1EMnoxd1JNeHlVT29kZlh2S3kyR05Mb0dlVE9yQ2xhU0Jh?= =?utf-8?B?Q3AwUGlxRHVGZ3VYdnFPZHFqNFFTeDVGclZDK1RHK3plT2F0M2dVWitaNUpN?= =?utf-8?B?Z012dVVRM0ltMGxGUUpkRDRVdTBYWGplUHNPbi91N3VPaGdvUGVNVVJtQkhN?= =?utf-8?B?QnZnUjNYMks0alJDaWh1UGFmVmR3bm5MMjBpMy9WZnlIa09CRStiR2lnTS9F?= =?utf-8?B?ckFYU21NVWlJSjVaa1ZWY0ppWWVCVEF1N3VqOHN4YmFYNEFWdVUrOFQweXdH?= =?utf-8?B?QVg1MFNnRVdZRHlKTThOV0hudWZFN2JVa3dNd1FQMDh0VUcrR2I2Y2g2YW96?= =?utf-8?B?Z01aaGk3YVh0cUQ0aGZoUFJTbnZOTEViYzJqTkFWc1QvT0tla1FnKzAwdVJL?= =?utf-8?B?Snl2dFY0TWxKYWhZMU4zSnBoM1pGTy8wYmQ5WExScnlUN3ErNnBFQjd6UjE2?= =?utf-8?B?T3FxS2ZMdUF3TkRNbHB4NS9kWVY3WjRBRXNFK2lwdFl6bzVUM0prOVpTak41?= =?utf-8?B?Z1JtTkozWWVybk5FS3BxY05YZVgwdTRQcWw4QWM1eVh3SitWN1c0QW9YdjQ4?= =?utf-8?B?S0JFcWQ3ejBBRTNuUkZ6NzJ3R3Q5RWFTdDNTNnRaNmIxZ2lEblU4Y3lmYktv?= =?utf-8?B?dDVxblJpUmVuT0d4OGZwVm1mYS9CV0FLSHZHZ2hyNDhNYUxFeEo1QTE3cnc0?= =?utf-8?B?N21MMUc3dGNUazVvK0tCNDlFVXJaclp4SkNmcG5oRUNBckNHdzhjNXNZQmxW?= =?utf-8?B?K3h0UEdjcXJWYnFUOHRIdz09?= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 May 2024 14:53:05.7709 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7bf37683-47fd-4bb0-63ed-08dc6ab79304 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF00009528.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6502 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Thu, 02 May 2024 07:53:10 -0700 Resent-From: sami.mujawar@arm.com Reply-To: devel@edk2.groups.io,sami.mujawar@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: baBHVUB3z5m90vAcBBrXT6L2x7686176AA= Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=5NDem9ZY; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io SGkgT2xpdmVyLA0KDQpXZSBhcmUgd29ya2luZyBvbiBhIHNvbHV0aW9uIHRvIHJlbW92ZSB0aGUg SE9CIGNyZWF0aW9uIGxvZ2ljIGZyb20gU3RhbmRhbG9uZU1tIGZvciBBcm0sIGFuZCB0aGlzIGlu dm9sdmVzIGltcGxlbWVudGluZyB0aGUgRmlybXdhcmUgaGFuZG9mZiBzcGVjaWZpY2F0aW9uICho dHRwczovL2dpdGh1Yi5jb20vRmlybXdhcmVIYW5kb2ZmL2Zpcm13YXJlX2hhbmRvZmYvcmVsZWFz ZXMvZG93bmxvYWQvdjAuOS9maXJtd2FyZV9oYW5kb2ZmLnBkZikuDQoNCkFzIHlvdSByaWdodGx5 IG1lbnRpb25lZCB0aGlzIGFsc28gcmVxdWlyZXMgY2hhbmdlcyBpbiBURi1BLCBhbmQgdGhpcyB3 b3JrIGlzIGluIHByb2dyZXNzLg0KDQpMZXZpIChZZW8pIGlzIGN1cnJlbnRseSB3b3JraW5nIG9u IHRoaXMgZmVhdHVyZSBhbmQgd2lsbCBwb3N0IHRoZSBwYXRjaGVzIHRvIHRoZSBtYWlsaW5nIGxp c3Qgb25jZSB3ZSBoYXZlIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyByZWFkeS4NCg0KUmVnYXJk cywNCg0KU2FtaSBNdWphd2FyDQoNCu+7v09uIDAxLzA1LzIwMjQsIDIyOjMyLCAiT2xpdmVyIFNt aXRoLURlbm55IiA8b3NkZUBsaW51eC5taWNyb3NvZnQuY29tIDxtYWlsdG86b3NkZUBsaW51eC5t aWNyb3NvZnQuY29tPj4gd3JvdGU6DQoNCg0KSGkgZm9sa3MsIHJldHVybmluZyB0byB0aGlzIHRo cmVhZCBiZWNhdXNlIEkgbm90aWNlZCB0aGF0IEhPQg0KY3JlYXRpb24gc3RpbGwgZXhpc3RzIGlu IFN0YW5kYWxvbmVNbUNvcmUgZm9yIEFSTToNCg0KDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL2VkazIvYmxvYi81ZDRjNTI1M2U4YmJjMGJhYTg4MzdmY2Q4Njg5MjUyMTJkZjg1MjAxL1N0 YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9DcmVh dGVIb2JMaXN0LmMgPGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iLzVkNGM1 MjUzZThiYmMwYmFhODgzN2ZjZDg2ODkyNTIxMmRmODUyMDEvU3RhbmRhbG9uZU1tUGtnL0xpYnJh cnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQXJtL0NyZWF0ZUhvYkxpc3QuYz4NCg0KDQpB cyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhlcmUgaXMgb25seSB0aGlzIG9uZSBmaWxlIHRoYXQgY3Jl YXRlcyA2DQpIT0JzIGZyb20gU3RhbmRhbG9uZU1tQ29yZS4gUGVyIG91ciBlYXJsaWVyIGRpc2N1 c3Npb24gdGhhdCBsZWQgdG8NCmRpc2FibGluZyBIT0IgY3JlYXRpb24gaW4gU3RhbmRhbG9uZU1t LCBJIHRoaW5rIHRoYXQgdGhpcyBmYWxscyBpbnRvDQp0aGUgY2FzZSB3aGVyZSBTdGFuZGFsb25l TW0gaXMgYSBIT0IgY29uc3VtZXIgcGhhc2UsIG5vdCBhIHByb2R1Y2VyDQpwaGFzZSBhbmQgc28g aXQgc2hvdWxkIG5vdCBiZSBjcmVhdGluZyB0aGVzZSBIT0JzLiBPbiB0aGUgeDY0IHNpZGUsDQph bGwgb2YgdGhlIFN0YW5kYWxvbmVNbSBIT0IgY3JlYXRpb24gZnVuY3Rpb25zIEFTU0VSVCB3aXRo IHRoZQ0KY29tbWVudCB0aGF0IFN0YW5kYWxvbmVNbSBpcyBhIEhPQiBjb25zdW1lciBwaGFzZSBh bmQgc2hvdWxkIG5vdA0KYmUgY3JlYXRpbmcgSE9Ccy4NCg0KDQpPbiBBUk0gdGhpcyBpcyBtb3Jl IGNvbXBsaWNhdGVkLCBhcyBhbGwgb2YgdGhpcyBpbmZvcm1hdGlvbiB3b3VsZA0Kc2VlbSB0byBv cmlnaW5hdGUgZnJvbSBURi1BIGFuZCBzbyB3ZSB3b3VsZCBuZWVkIFRGLUEgdG8gcHJvZHVjZQ0K dGhlc2UgSE9CcyB0byB0ZWxsIFN0YW5kYWxvbmVNbSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMg dG8NCm9wZXJhdGUuIFRvZGF5IFRGLUEgYWxyZWFkeSBoYXMgdG8gY29tbXVuaWNhdGUgdGhpcyBp bmZvcm1hdGlvbiwgdGhlDQpIT0JzIGFyZSBqdXN0IGNyZWF0ZWQgaW4gU3RhbmRhbG9uZU1tQ29y ZSBpbnN0ZWFkIG9mIGluIFRGLUEuDQoNCg0KQ3VyaW91cyB0byBnZXQgb3RoZXIgZm9sa3MgdGhv dWdodHMgaGVyZSBvbiB0aGlzIHBhcmFkaWdtLg0KDQoNClRoYW5rcywNCk9saXZlcg0KDQoNCk9u IDEyLzUvMjAyMyA1OjQ3IEFNLCBOaGkgUGhhbSB3cm90ZToNCj4gQWNjb3JkaW5nIHRvIHRoZSBk aXNjdXNzaW9uIGluICJTdGFuZGFsb25lTW1Qa2c6IEZpeCBIT0Igc3BhY2UgYW5kDQo+IGhlYXAg c3BhY2UgY29uZmxpY3RlZCBpc3N1ZSIgWzFdLCBTdGFuZGFsb25lIE1NIG1vZHVsZXMgc2hvdWxk IGJlIEhPQg0KPiBjb25zdW1lcnMgd2hlcmUgSE9CIGlzIHJlYWQtb25seS4gVGhlcmVmb3JlLCB0 aGlzIHBhdGNoIHJlbW92ZXMgdGhlDQo+IHN1cHBvcnRlZCBmdW5jdGlvbnMgZm9yIEhPQiBjcmVh dGlvbiBpbiB0aGUgU3RhbmRhbG9uZU1tSG9iTGliLg0KPg0KPiBbMV0gaHR0cHM6Ly9lZGsyLmdy b3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA4MzMzIDxodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvbWVzc2FnZS8xMDgzMzM+DQo+DQo+IENjOiBBcmQgQmllc2hldXZlbCA8YXJkYit0aWFu b2NvcmVAa2VybmVsLm9yZyA8bWFpbHRvOmFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+Pg0KPiBD YzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tIDxtYWlsdG86cmF5Lm5pQGludGVsLmNvbT4+DQo+ IENjOiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tIDxtYWlsdG86c2FtaS5tdWph d2FyQGFybS5jb20+Pg0KPiBDYzogT2xpdmVyIFNtaXRoLURlbm55IDxvc2RlQGxpbnV4Lm1pY3Jv c29mdC5jb20gPG1haWx0bzpvc2RlQGxpbnV4Lm1pY3Jvc29mdC5jb20+Pg0KPiBTaWduZWQtb2Zm LWJ5OiBOaGkgUGhhbSA8bmhpcGhhbWJrYUBnbWFpbC5jb20gPG1haWx0bzpuaGlwaGFtYmthQGdt YWlsLmNvbT4+DQo+IC0tLQ0KPiBTdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1I b2JMaWIvU3RhbmRhbG9uZU1tSG9iTGliLmMgfCAxNzEgKysrKysrLS0tLS0tLS0tLS0tLS0NCj4g MSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMoLSkNCj4NCj4g ZGlmZiAtLWdpdCBhL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUhvYkxpYi9T dGFuZGFsb25lTW1Ib2JMaWIuYyBiL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVN bUhvYkxpYi9TdGFuZGFsb25lTW1Ib2JMaWIuYw0KPiBpbmRleCBlZTYxYmRkMjI3ZDAuLmJlZjY2 ZDE2NzQ5NCAxMDA2NDQNCj4gLS0tIGEvU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9u ZU1tSG9iTGliL1N0YW5kYWxvbmVNbUhvYkxpYi5jDQo+ICsrKyBiL1N0YW5kYWxvbmVNbVBrZy9M aWJyYXJ5L1N0YW5kYWxvbmVNbUhvYkxpYi9TdGFuZGFsb25lTW1Ib2JMaWIuYw0KPiBAQCAtMSw1 ICsxLDUgQEANCj4gLyoqIEBmaWxlDQo+DQo+IC0gSE9CIExpYnJhcnkgaW1wbGVtZW50YXRpb24g Zm9yIFN0YW5kYWxvbmUgTU0gQ29yZS4NCj4NCj4gKyBIT0IgTGlicmFyeSBpbXBsZW1lbnRhdGlv biBmb3IgU3RhbmRhbG9uZSBNTSBtb2R1bGVzLg0KPg0KPg0KPg0KPiBDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDE0LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ DQo+IENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4NCj4gQEAgLTI1MCw0OCArMjUwLDEzIEBAIEdldEJvb3RNb2RlSG9iICgN Cj4gcmV0dXJuIEhhbmRPZmZIb2ItPkJvb3RNb2RlOw0KPg0KPiB9DQo+DQo+DQo+DQo+IC1WT0lE ICoNCj4NCj4gLUNyZWF0ZUhvYiAoDQo+DQo+IC0gSU4gVUlOVDE2IEhvYlR5cGUsDQo+DQo+IC0g SU4gVUlOVDE2IEhvYkxlbmd0aA0KPg0KPiAtICkNCj4NCj4gLXsNCj4NCj4gLSBFRklfSE9CX0hB TkRPRkZfSU5GT19UQUJMRSAqSGFuZE9mZkhvYjsNCj4NCj4gLSBFRklfSE9CX0dFTkVSSUNfSEVB REVSICpIb2JFbmQ7DQo+DQo+IC0gRUZJX1BIWVNJQ0FMX0FERFJFU1MgRnJlZU1lbW9yeTsNCj4N Cj4gLSBWT0lEICpIb2I7DQo+DQo+IC0NCj4NCj4gLSBIYW5kT2ZmSG9iID0gR2V0SG9iTGlzdCAo KTsNCj4NCj4gLQ0KPg0KPiAtIEhvYkxlbmd0aCA9IChVSU5UMTYpKChIb2JMZW5ndGggKyAweDcp ICYgKH4weDcpKTsNCj4NCj4gLQ0KPg0KPiAtIEZyZWVNZW1vcnkgPSBIYW5kT2ZmSG9iLT5FZmlG cmVlTWVtb3J5VG9wIC0gSGFuZE9mZkhvYi0+RWZpRnJlZU1lbW9yeUJvdHRvbTsNCj4NCj4gLQ0K Pg0KPiAtIGlmIChGcmVlTWVtb3J5IDwgSG9iTGVuZ3RoKSB7DQo+DQo+IC0gcmV0dXJuIE5VTEw7 DQo+DQo+IC0gfQ0KPg0KPiAtDQo+DQo+IC0gSG9iID0gKFZPSUQgKikoVUlOVE4pSGFuZE9mZkhv Yi0+RWZpRW5kT2ZIb2JMaXN0Ow0KPg0KPiAtICgoRUZJX0hPQl9HRU5FUklDX0hFQURFUiAqKUhv YiktPkhvYlR5cGUgPSBIb2JUeXBlOw0KPg0KPiAtICgoRUZJX0hPQl9HRU5FUklDX0hFQURFUiAq KUhvYiktPkhvYkxlbmd0aCA9IEhvYkxlbmd0aDsNCj4NCj4gLSAoKEVGSV9IT0JfR0VORVJJQ19I RUFERVIgKilIb2IpLT5SZXNlcnZlZCA9IDA7DQo+DQo+IC0NCj4NCj4gLSBIb2JFbmQgPSAoRUZJ X0hPQl9HRU5FUklDX0hFQURFUiAqKSgoVUlOVE4pSG9iICsgSG9iTGVuZ3RoKTsNCj4NCj4gLSBI YW5kT2ZmSG9iLT5FZmlFbmRPZkhvYkxpc3QgPSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlRO KUhvYkVuZDsNCj4NCj4gLQ0KPg0KPiAtIEhvYkVuZC0+SG9iVHlwZSA9IEVGSV9IT0JfVFlQRV9F TkRfT0ZfSE9CX0xJU1Q7DQo+DQo+IC0gSG9iRW5kLT5Ib2JMZW5ndGggPSBzaXplb2YgKEVGSV9I T0JfR0VORVJJQ19IRUFERVIpOw0KPg0KPiAtIEhvYkVuZC0+UmVzZXJ2ZWQgPSAwOw0KPg0KPiAt IEhvYkVuZCsrOw0KPg0KPiAtIEhhbmRPZmZIb2ItPkVmaUZyZWVNZW1vcnlCb3R0b20gPSAoRUZJ X1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKUhvYkVuZDsNCj4NCj4gLQ0KPg0KPiAtIHJldHVybiBI b2I7DQo+DQo+IC19DQo+DQo+IC0NCj4NCj4gLyoqDQo+DQo+IEJ1aWxkcyBhIEhPQiBmb3IgYSBs b2FkZWQgUEUzMiBtb2R1bGUuDQo+DQo+DQo+DQo+IFRoaXMgZnVuY3Rpb24gYnVpbGRzIGEgSE9C IGZvciBhIGxvYWRlZCBQRTMyIG1vZHVsZS4NCj4NCj4gKyBJdCBjYW4gb25seSBiZSBpbnZva2Vk IGJ5IFN0YW5kYWxvbmUgTU0gQ29yZS4NCj4NCj4gKyBGb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJz LCBpdCB3aWxsIEFTU0VSVCgpIHNpbmNlIEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxvbmUg TU0gZHJpdmVycy4NCj4NCj4gKw0KPg0KPiBJZiBNb2R1bGVOYW1lIGlzIE5VTEwsIHRoZW4gQVNT RVJUKCkuDQo+DQo+IElmIHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwgc3BhY2UgZm9yIEhPQiBjcmVh dGlvbiwgdGhlbiBBU1NFUlQoKS4NCj4NCj4NCj4NCj4gQEAgLTMxMCwzMyArMjc1LDE5IEBAIEJ1 aWxkTW9kdWxlSG9iICgNCj4gSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgRW50cnlQb2ludA0KPg0K PiApDQo+DQo+IHsNCj4NCj4gLSBFRklfSE9CX01FTU9SWV9BTExPQ0FUSU9OX01PRFVMRSAqSG9i Ow0KPg0KPiAtDQo+DQo+IC0gQVNTRVJUICgNCj4NCj4gLSAoKE1lbW9yeUFsbG9jYXRpb25Nb2R1 bGUgJiAoRUZJX1BBR0VfU0laRSAtIDEpKSA9PSAwKSAmJg0KPg0KPiAtICgoTW9kdWxlTGVuZ3Ro ICYgKEVGSV9QQUdFX1NJWkUgLSAxKSkgPT0gMCkNCj4NCj4gLSApOw0KPg0KPiAtDQo+DQo+IC0g SG9iID0gQ3JlYXRlSG9iIChFRklfSE9CX1RZUEVfTUVNT1JZX0FMTE9DQVRJT04sIHNpemVvZiAo RUZJX0hPQl9NRU1PUllfQUxMT0NBVElPTl9NT0RVTEUpKTsNCj4NCj4gLQ0KPg0KPiAtIENvcHlH dWlkICgmKEhvYi0+TWVtb3J5QWxsb2NhdGlvbkhlYWRlci5OYW1lKSwgJmdFZmlIb2JNZW1vcnlB bGxvY01vZHVsZUd1aWQpOw0KPg0KPiAtIEhvYi0+TWVtb3J5QWxsb2NhdGlvbkhlYWRlci5NZW1v cnlCYXNlQWRkcmVzcyA9IE1lbW9yeUFsbG9jYXRpb25Nb2R1bGU7DQo+DQo+IC0gSG9iLT5NZW1v cnlBbGxvY2F0aW9uSGVhZGVyLk1lbW9yeUxlbmd0aCA9IE1vZHVsZUxlbmd0aDsNCj4NCj4gLSBI b2ItPk1lbW9yeUFsbG9jYXRpb25IZWFkZXIuTWVtb3J5VHlwZSA9IEVmaUJvb3RTZXJ2aWNlc0Nv ZGU7DQo+DQo+IC0NCj4NCj4gLy8NCj4NCj4gLSAvLyBaZXJvIHRoZSByZXNlcnZlZCBzcGFjZSB0 byBtYXRjaCBIT0Igc3BlYw0KPg0KPiArIC8vIEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxv bmUgTU0gZHJpdmVycw0KPg0KPiAvLw0KPg0KPiAtIFplcm9NZW0gKEhvYi0+TWVtb3J5QWxsb2Nh dGlvbkhlYWRlci5SZXNlcnZlZCwgc2l6ZW9mIChIb2ItPk1lbW9yeUFsbG9jYXRpb25IZWFkZXIu UmVzZXJ2ZWQpKTsNCj4NCj4gLQ0KPg0KPiAtIENvcHlHdWlkICgmSG9iLT5Nb2R1bGVOYW1lLCBN b2R1bGVOYW1lKTsNCj4NCj4gLSBIb2ItPkVudHJ5UG9pbnQgPSBFbnRyeVBvaW50Ow0KPg0KPiAr IEFTU0VSVCAoRkFMU0UpOw0KPg0KPiB9DQo+DQo+DQo+DQo+IC8qKg0KPg0KPiBCdWlsZHMgYSBI T0IgdGhhdCBkZXNjcmliZXMgYSBjaHVuayBvZiBzeXN0ZW0gbWVtb3J5Lg0KPg0KPg0KPg0KPiBU aGlzIGZ1bmN0aW9uIGJ1aWxkcyBhIEhPQiB0aGF0IGRlc2NyaWJlcyBhIGNodW5rIG9mIHN5c3Rl bSBtZW1vcnkuDQo+DQo+ICsgSXQgY2FuIG9ubHkgYmUgaW52b2tlZCBieSBTdGFuZGFsb25lIE1N IENvcmUuDQo+DQo+ICsgRm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycywgaXQgd2lsbCBBU1NFUlQo KSBzaW5jZSBIT0IgaXMgcmVhZCBvbmx5IGZvciBTdGFuZGFsb25lIE1NIGRyaXZlcnMuDQo+DQo+ ICsNCj4NCj4gSWYgdGhlcmUgaXMgbm8gYWRkaXRpb25hbCBzcGFjZSBmb3IgSE9CIGNyZWF0aW9u LCB0aGVuIEFTU0VSVCgpLg0KPg0KPg0KPg0KPiBAcGFyYW0gUmVzb3VyY2VUeXBlIFRoZSB0eXBl IG9mIHJlc291cmNlIGRlc2NyaWJlZCBieSB0aGlzIEhPQi4NCj4NCj4gQEAgLTM1NCwxNSArMzA1 LDEwIEBAIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4gSU4gVUlOVDY0IE51bWJlck9m Qnl0ZXMNCj4NCj4gKQ0KPg0KPiB7DQo+DQo+IC0gRUZJX0hPQl9SRVNPVVJDRV9ERVNDUklQVE9S ICpIb2I7DQo+DQo+IC0NCj4NCj4gLSBIb2IgPSBDcmVhdGVIb2IgKEVGSV9IT0JfVFlQRV9SRVNP VVJDRV9ERVNDUklQVE9SLCBzaXplb2YgKEVGSV9IT0JfUkVTT1VSQ0VfREVTQ1JJUFRPUikpOw0K Pg0KPiAtIEFTU0VSVCAoSG9iICE9IE5VTEwpOw0KPg0KPiAtDQo+DQo+IC0gSG9iLT5SZXNvdXJj ZVR5cGUgPSBSZXNvdXJjZVR5cGU7DQo+DQo+IC0gSG9iLT5SZXNvdXJjZUF0dHJpYnV0ZSA9IFJl c291cmNlQXR0cmlidXRlOw0KPg0KPiAtIEhvYi0+UGh5c2ljYWxTdGFydCA9IFBoeXNpY2FsU3Rh cnQ7DQo+DQo+IC0gSG9iLT5SZXNvdXJjZUxlbmd0aCA9IE51bWJlck9mQnl0ZXM7DQo+DQo+ICsg Ly8NCj4NCj4gKyAvLyBIT0IgaXMgcmVhZCBvbmx5IGZvciBTdGFuZGFsb25lIE1NIGRyaXZlcnMN Cj4NCj4gKyAvLw0KPg0KPiArIEFTU0VSVCAoRkFMU0UpOw0KPg0KPiB9DQo+DQo+DQo+DQo+IC8q Kg0KPg0KPiBAQCAtMzcxLDYgKzMxNyw5IEBAIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgN Cj4gVGhpcyBmdW5jdGlvbiBidWlsZHMgYSBjdXN0b21pemVkIEhPQiB0YWdnZWQgd2l0aCBhIEdV SUQgZm9yIGlkZW50aWZpY2F0aW9uDQo+DQo+IGFuZCByZXR1cm5zIHRoZSBzdGFydCBhZGRyZXNz IG9mIEdVSUQgSE9CIGRhdGEgc28gdGhhdCBjYWxsZXIgY2FuIGZpbGwgdGhlIGN1c3RvbWl6ZWQg ZGF0YS4NCj4NCj4gVGhlIEhPQiBIZWFkZXIgYW5kIE5hbWUgZmllbGQgaXMgYWxyZWFkeSBzdHJp cHBlZC4NCj4NCj4gKyBJdCBjYW4gb25seSBiZSBpbnZva2VkIGJ5IFN0YW5kYWxvbmUgTU0gQ29y ZS4NCj4NCj4gKyBGb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJzLCBpdCB3aWxsIEFTU0VSVCgpIHNp bmNlIEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycy4NCj4NCj4gKw0K Pg0KPiBJZiBHdWlkIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+DQo+IElmIHRoZXJlIGlzIG5v IGFkZGl0aW9uYWwgc3BhY2UgZm9yIEhPQiBjcmVhdGlvbiwgdGhlbiBBU1NFUlQoKS4NCj4NCj4g SWYgRGF0YUxlbmd0aCA+PSAoMHgxMDAwMCAtIHNpemVvZiAoRUZJX0hPQl9HVUlEX1RZUEUpKSwg dGhlbiBBU1NFUlQoKS4NCj4NCj4gQEAgLTM4OCwxNiArMzM3LDExIEBAIEJ1aWxkR3VpZEhvYiAo DQo+IElOIFVJTlROIERhdGFMZW5ndGgNCj4NCj4gKQ0KPg0KPiB7DQo+DQo+IC0gRUZJX0hPQl9H VUlEX1RZUEUgKkhvYjsNCj4NCj4gLQ0KPg0KPiAvLw0KPg0KPiAtIC8vIE1ha2Ugc3VyZSB0aGF0 IGRhdGEgbGVuZ3RoIGlzIG5vdCB0b28gbG9uZy4NCj4NCj4gKyAvLyBIT0IgaXMgcmVhZCBvbmx5 IGZvciBTdGFuZGFsb25lIE1NIGRyaXZlcnMNCj4NCj4gLy8NCj4NCj4gLSBBU1NFUlQgKERhdGFM ZW5ndGggPD0gKDB4ZmZmZiAtIHNpemVvZiAoRUZJX0hPQl9HVUlEX1RZUEUpKSk7DQo+DQo+IC0N Cj4NCj4gLSBIb2IgPSBDcmVhdGVIb2IgKEVGSV9IT0JfVFlQRV9HVUlEX0VYVEVOU0lPTiwgKFVJ TlQxNikoc2l6ZW9mIChFRklfSE9CX0dVSURfVFlQRSkgKyBEYXRhTGVuZ3RoKSk7DQo+DQo+IC0g Q29weUd1aWQgKCZIb2ItPk5hbWUsIEd1aWQpOw0KPg0KPiAtIHJldHVybiBIb2IgKyAxOw0KPg0K PiArIEFTU0VSVCAoRkFMU0UpOw0KPg0KPiArIHJldHVybiBOVUxMOw0KPg0KPiB9DQo+DQo+DQo+ DQo+IC8qKg0KPg0KPiBAQCAtNDA2LDYgKzM1MCw5IEBAIEJ1aWxkR3VpZEhvYiAoDQo+IFRoaXMg ZnVuY3Rpb24gYnVpbGRzIGEgY3VzdG9taXplZCBIT0IgdGFnZ2VkIHdpdGggYSBHVUlEIGZvciBp ZGVudGlmaWNhdGlvbiwNCj4NCj4gY29waWVzIHRoZSBpbnB1dCBkYXRhIHRvIHRoZSBIT0IgZGF0 YSBmaWVsZCBhbmQgcmV0dXJucyB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUgR1VJRCBIT0IgZGF0 YS4NCj4NCj4gVGhlIEhPQiBIZWFkZXIgYW5kIE5hbWUgZmllbGQgaXMgYWxyZWFkeSBzdHJpcHBl ZC4NCj4NCj4gKyBJdCBjYW4gb25seSBiZSBpbnZva2VkIGJ5IFN0YW5kYWxvbmUgTU0gQ29yZS4N Cj4NCj4gKyBGb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJzLCBpdCB3aWxsIEFTU0VSVCgpIHNpbmNl IEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycy4NCj4NCj4gKw0KPg0K PiBJZiBHdWlkIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+DQo+IElmIERhdGEgaXMgTlVMTCBh bmQgRGF0YUxlbmd0aCA+IDAsIHRoZW4gQVNTRVJUKCkuDQo+DQo+IElmIHRoZXJlIGlzIG5vIGFk ZGl0aW9uYWwgc3BhY2UgZm9yIEhPQiBjcmVhdGlvbiwgdGhlbiBBU1NFUlQoKS4NCj4NCj4gQEAg LTQyNiwxOSArMzczLDIwIEBAIEJ1aWxkR3VpZERhdGFIb2IgKA0KPiBJTiBVSU5UTiBEYXRhTGVu Z3RoDQo+DQo+ICkNCj4NCj4gew0KPg0KPiAtIFZPSUQgKkhvYkRhdGE7DQo+DQo+IC0NCj4NCj4g LSBBU1NFUlQgKERhdGEgIT0gTlVMTCB8fCBEYXRhTGVuZ3RoID09IDApOw0KPg0KPiAtDQo+DQo+ IC0gSG9iRGF0YSA9IEJ1aWxkR3VpZEhvYiAoR3VpZCwgRGF0YUxlbmd0aCk7DQo+DQo+IC0NCj4N Cj4gLSByZXR1cm4gQ29weU1lbSAoSG9iRGF0YSwgRGF0YSwgRGF0YUxlbmd0aCk7DQo+DQo+ICsg Ly8NCj4NCj4gKyAvLyBIT0IgaXMgcmVhZCBvbmx5IGZvciBTdGFuZGFsb25lIE1NIGRyaXZlcnMN Cj4NCj4gKyAvLw0KPg0KPiArIEFTU0VSVCAoRkFMU0UpOw0KPg0KPiArIHJldHVybiBOVUxMOw0K Pg0KPiB9DQo+DQo+DQo+DQo+IC8qKg0KPg0KPiBCdWlsZHMgYSBGaXJtd2FyZSBWb2x1bWUgSE9C Lg0KPg0KPg0KPg0KPiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBhIEZpcm13YXJlIFZvbHVtZSBIT0Iu DQo+DQo+ICsgSXQgY2FuIG9ubHkgYmUgaW52b2tlZCBieSBTdGFuZGFsb25lIE1NIENvcmUuDQo+ DQo+ICsgRm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycywgaXQgd2lsbCBBU1NFUlQoKSBzaW5jZSBI T0IgaXMgcmVhZCBvbmx5IGZvciBTdGFuZGFsb25lIE1NIGRyaXZlcnMuDQo+DQo+ICsNCj4NCj4g SWYgdGhlcmUgaXMgbm8gYWRkaXRpb25hbCBzcGFjZSBmb3IgSE9CIGNyZWF0aW9uLCB0aGVuIEFT U0VSVCgpLg0KPg0KPg0KPg0KPiBAcGFyYW0gQmFzZUFkZHJlc3MgVGhlIGJhc2UgYWRkcmVzcyBv ZiB0aGUgRmlybXdhcmUgVm9sdW1lLg0KPg0KPiBAQCAtNDUyLDE4ICs0MDAsMTkgQEAgQnVpbGRG dkhvYiAoDQo+IElOIFVJTlQ2NCBMZW5ndGgNCj4NCj4gKQ0KPg0KPiB7DQo+DQo+IC0gRUZJX0hP Ql9GSVJNV0FSRV9WT0xVTUUgKkhvYjsNCj4NCj4gLQ0KPg0KPiAtIEhvYiA9IENyZWF0ZUhvYiAo RUZJX0hPQl9UWVBFX0ZWLCBzaXplb2YgKEVGSV9IT0JfRklSTVdBUkVfVk9MVU1FKSk7DQo+DQo+ IC0NCj4NCj4gLSBIb2ItPkJhc2VBZGRyZXNzID0gQmFzZUFkZHJlc3M7DQo+DQo+IC0gSG9iLT5M ZW5ndGggPSBMZW5ndGg7DQo+DQo+ICsgLy8NCj4NCj4gKyAvLyBIT0IgaXMgcmVhZCBvbmx5IGZv ciBTdGFuZGFsb25lIE1NIGRyaXZlcnMNCj4NCj4gKyAvLw0KPg0KPiArIEFTU0VSVCAoRkFMU0Up Ow0KPg0KPiB9DQo+DQo+DQo+DQo+IC8qKg0KPg0KPiBCdWlsZHMgYSBFRklfSE9CX1RZUEVfRlYy IEhPQi4NCj4NCj4NCj4NCj4gVGhpcyBmdW5jdGlvbiBidWlsZHMgYSBFRklfSE9CX1RZUEVfRlYy IEhPQi4NCj4NCj4gKyBJdCBjYW4gb25seSBiZSBpbnZva2VkIGJ5IFN0YW5kYWxvbmUgTU0gQ29y ZS4NCj4NCj4gKyBGb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJzLCBpdCB3aWxsIEFTU0VSVCgpIHNp bmNlIEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycy4NCj4NCj4gKw0K Pg0KPiBJZiB0aGVyZSBpcyBubyBhZGRpdGlvbmFsIHNwYWNlIGZvciBIT0IgY3JlYXRpb24sIHRo ZW4gQVNTRVJUKCkuDQo+DQo+DQo+DQo+IEBwYXJhbSBCYXNlQWRkcmVzcyBUaGUgYmFzZSBhZGRy ZXNzIG9mIHRoZSBGaXJtd2FyZSBWb2x1bWUuDQo+DQo+IEBAIC00ODEsMjAgKzQzMCwxOSBAQCBC dWlsZEZ2MkhvYiAoDQo+IElOIENPTlNUIEVGSV9HVUlEICpGaWxlTmFtZQ0KPg0KPiApDQo+DQo+ IHsNCj4NCj4gLSBFRklfSE9CX0ZJUk1XQVJFX1ZPTFVNRTIgKkhvYjsNCj4NCj4gLQ0KPg0KPiAt IEhvYiA9IENyZWF0ZUhvYiAoRUZJX0hPQl9UWVBFX0ZWMiwgc2l6ZW9mIChFRklfSE9CX0ZJUk1X QVJFX1ZPTFVNRTIpKTsNCj4NCj4gLQ0KPg0KPiAtIEhvYi0+QmFzZUFkZHJlc3MgPSBCYXNlQWRk cmVzczsNCj4NCj4gLSBIb2ItPkxlbmd0aCA9IExlbmd0aDsNCj4NCj4gLSBDb3B5R3VpZCAoJkhv Yi0+RnZOYW1lLCBGdk5hbWUpOw0KPg0KPiAtIENvcHlHdWlkICgmSG9iLT5GaWxlTmFtZSwgRmls ZU5hbWUpOw0KPg0KPiArIC8vDQo+DQo+ICsgLy8gSE9CIGlzIHJlYWQgb25seSBmb3IgU3RhbmRh bG9uZSBNTSBkcml2ZXJzDQo+DQo+ICsgLy8NCj4NCj4gKyBBU1NFUlQgKEZBTFNFKTsNCj4NCj4g fQ0KPg0KPg0KPg0KPiAvKioNCj4NCj4gQnVpbGRzIGEgSE9CIGZvciB0aGUgQ1BVLg0KPg0KPg0K Pg0KPiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBhIEhPQiBmb3IgdGhlIENQVS4NCj4NCj4gKyBJdCBj YW4gb25seSBiZSBpbnZva2VkIGJ5IFN0YW5kYWxvbmUgTU0gQ29yZS4NCj4NCj4gKyBGb3IgU3Rh bmRhbG9uZSBNTSBkcml2ZXJzLCBpdCB3aWxsIEFTU0VSVCgpIHNpbmNlIEhPQiBpcyByZWFkIG9u bHkgZm9yIFN0YW5kYWxvbmUgTU0gZHJpdmVycy4NCj4NCj4gKw0KPg0KPiBJZiB0aGVyZSBpcyBu byBhZGRpdGlvbmFsIHNwYWNlIGZvciBIT0IgY3JlYXRpb24sIHRoZW4gQVNTRVJUKCkuDQo+DQo+ DQo+DQo+IEBwYXJhbSBTaXplT2ZNZW1vcnlTcGFjZSBUaGUgbWF4aW11bSBwaHlzaWNhbCBtZW1v cnkgYWRkcmVzc2FiaWxpdHkgb2YgdGhlIHByb2Nlc3Nvci4NCj4NCj4gQEAgLTUwOCwyMyArNDU2 LDE5IEBAIEJ1aWxkQ3B1SG9iICgNCj4gSU4gVUlOVDggU2l6ZU9mSW9TcGFjZQ0KPg0KPiApDQo+ DQo+IHsNCj4NCj4gLSBFRklfSE9CX0NQVSAqSG9iOw0KPg0KPiAtDQo+DQo+IC0gSG9iID0gQ3Jl YXRlSG9iIChFRklfSE9CX1RZUEVfQ1BVLCBzaXplb2YgKEVGSV9IT0JfQ1BVKSk7DQo+DQo+IC0N Cj4NCj4gLSBIb2ItPlNpemVPZk1lbW9yeVNwYWNlID0gU2l6ZU9mTWVtb3J5U3BhY2U7DQo+DQo+ IC0gSG9iLT5TaXplT2ZJb1NwYWNlID0gU2l6ZU9mSW9TcGFjZTsNCj4NCj4gLQ0KPg0KPiAvLw0K Pg0KPiAtIC8vIFplcm8gdGhlIHJlc2VydmVkIHNwYWNlIHRvIG1hdGNoIEhPQiBzcGVjDQo+DQo+ ICsgLy8gSE9CIGlzIHJlYWQgb25seSBmb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJzDQo+DQo+IC8v DQo+DQo+IC0gWmVyb01lbSAoSG9iLT5SZXNlcnZlZCwgc2l6ZW9mIChIb2ItPlJlc2VydmVkKSk7 DQo+DQo+ICsgQVNTRVJUIChGQUxTRSk7DQo+DQo+IH0NCj4NCj4NCj4NCj4gLyoqDQo+DQo+IEJ1 aWxkcyBhIEhPQiBmb3IgdGhlIG1lbW9yeSBhbGxvY2F0aW9uLg0KPg0KPg0KPg0KPiBUaGlzIGZ1 bmN0aW9uIGJ1aWxkcyBhIEhPQiBmb3IgdGhlIG1lbW9yeSBhbGxvY2F0aW9uLg0KPg0KPiArIEl0 IGNhbiBvbmx5IGJlIGludm9rZWQgYnkgU3RhbmRhbG9uZSBNTSBDb3JlLg0KPg0KPiArIEZvciBT dGFuZGFsb25lIE1NIGRyaXZlcnMsIGl0IHdpbGwgQVNTRVJUKCkgc2luY2UgSE9CIGlzIHJlYWQg b25seSBmb3IgU3RhbmRhbG9uZSBNTSBkcml2ZXJzLg0KPg0KPiArDQo+DQo+IElmIHRoZXJlIGlz IG5vIGFkZGl0aW9uYWwgc3BhY2UgZm9yIEhPQiBjcmVhdGlvbiwgdGhlbiBBU1NFUlQoKS4NCj4N Cj4NCj4NCj4gQHBhcmFtIEJhc2VBZGRyZXNzIFRoZSA2NCBiaXQgcGh5c2ljYWwgYWRkcmVzcyBv ZiB0aGUgbWVtb3J5Lg0KPg0KPiBAQCAtNTQwLDIzICs0ODQsMTAgQEAgQnVpbGRNZW1vcnlBbGxv Y2F0aW9uSG9iICgNCj4gSU4gRUZJX01FTU9SWV9UWVBFIE1lbW9yeVR5cGUNCj4NCj4gKQ0KPg0K PiB7DQo+DQo+IC0gRUZJX0hPQl9NRU1PUllfQUxMT0NBVElPTiAqSG9iOw0KPg0KPiAtDQo+DQo+ IC0gQVNTRVJUICgNCj4NCj4gLSAoKEJhc2VBZGRyZXNzICYgKEVGSV9QQUdFX1NJWkUgLSAxKSkg PT0gMCkgJiYNCj4NCj4gLSAoKExlbmd0aCAmIChFRklfUEFHRV9TSVpFIC0gMSkpID09IDApDQo+ DQo+IC0gKTsNCj4NCj4gLQ0KPg0KPiAtIEhvYiA9IENyZWF0ZUhvYiAoRUZJX0hPQl9UWVBFX01F TU9SWV9BTExPQ0FUSU9OLCBzaXplb2YgKEVGSV9IT0JfTUVNT1JZX0FMTE9DQVRJT04pKTsNCj4N Cj4gLQ0KPg0KPiAtIFplcm9NZW0gKCYoSG9iLT5BbGxvY0Rlc2NyaXB0b3IuTmFtZSksIHNpemVv ZiAoRUZJX0dVSUQpKTsNCj4NCj4gLSBIb2ItPkFsbG9jRGVzY3JpcHRvci5NZW1vcnlCYXNlQWRk cmVzcyA9IEJhc2VBZGRyZXNzOw0KPg0KPiAtIEhvYi0+QWxsb2NEZXNjcmlwdG9yLk1lbW9yeUxl bmd0aCA9IExlbmd0aDsNCj4NCj4gLSBIb2ItPkFsbG9jRGVzY3JpcHRvci5NZW1vcnlUeXBlID0g TWVtb3J5VHlwZTsNCj4NCj4gLy8NCj4NCj4gLSAvLyBaZXJvIHRoZSByZXNlcnZlZCBzcGFjZSB0 byBtYXRjaCBIT0Igc3BlYw0KPg0KPiArIC8vIEhPQiBpcyByZWFkIG9ubHkgZm9yIFN0YW5kYWxv bmUgTU0gZHJpdmVycw0KPg0KPiAvLw0KPg0KPiAtIFplcm9NZW0gKEhvYi0+QWxsb2NEZXNjcmlw dG9yLlJlc2VydmVkLCBzaXplb2YgKEhvYi0+QWxsb2NEZXNjcmlwdG9yLlJlc2VydmVkKSk7DQo+ DQo+ICsgQVNTRVJUIChGQUxTRSk7DQo+DQo+IH0NCj4NCj4NCj4NCj4gLyoqDQo+DQoNCg0KDQpJ TVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFj aG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlv dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3Ro ZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQoNCgotPS09LT0tPS09LT0tPS09 LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRv IHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTE4NTE5KTogaHR0cHM6Ly9lZGsyLmdy b3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTE4NTE5Ck11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9n cm91cHMuaW8vbXQvMTAzMDE4ODY5Lzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVk azIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwv dW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=