From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (EUR05-AM6-obe.outbound.protection.outlook.com [40.107.22.80]) by mx.groups.io with SMTP id smtpd.web12.9711.1625736326891653932 for ; Thu, 08 Jul 2021 02:25:27 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=iE9MgkUw; spf=pass (domain: arm.com, ip: 40.107.22.80, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P6ynfrc7vqCoy/514Vwv3uXPuYWQctuNTjKLc4N8HDI=; b=iE9MgkUwlI/AIK/5Va5t82hvw/cSltdklj/LOl0iB+U+8GB9CdxuDe/2Bv8ULL3enoezWsos17p1E9wh/zpQ/3ggjrUmtRhuXlUC6MxbXsrz59WdMxWyYbMCiPEj84drtY4IQkEmmQ5nuNxoAxQS7pPvx+pccBXqpQH3wKN3DIY= Received: from DB9PR06CA0002.eurprd06.prod.outlook.com (2603:10a6:10:1db::7) by DBBPR08MB6121.eurprd08.prod.outlook.com (2603:10a6:10:204::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.26; Thu, 8 Jul 2021 09:25:24 +0000 Received: from DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:1db:cafe::25) by DB9PR06CA0002.outlook.office365.com (2603:10a6:10:1db::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.20 via Frontend Transport; Thu, 8 Jul 2021 09:25:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT005.mail.protection.outlook.com (10.152.20.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.20 via Frontend Transport; Thu, 8 Jul 2021 09:25:24 +0000 Received: ("Tessian outbound 257aba444440:v98"); Thu, 08 Jul 2021 09:25:24 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8c6dc0f35a59dcc1 X-CR-MTA-TID: 64aa7808 Received: from 05e1a48a0cf2.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D5F13F74-4D04-48EC-918F-F17E75D44134.1; Thu, 08 Jul 2021 09:25:16 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 05e1a48a0cf2.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 08 Jul 2021 09:25:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dgASNkqWC3aY2FVNK8PDY1y99QRdUuiueJkUiNPzpLgUGMeKQmz3OtR6+K1zVEd0NPDodHDOFkI3IROcK0CKfYtRGLfadbfSLLo5hXsZ2bYgnKvdJO3DykMauj6WY/j+pw5afBNjDDq4lzLFM7F3DILioU88sdZdP96CNFsgyhQIcziHUMprsAkicRW8B+UbzZa+rZbRZF6yEsT79M1v4Oo1tQTY1kchwbRHiL98Gu6QDtmwgQ+dnsTR7kmMcM0dQKoRgOwf5LZsSbSw8360a/DZMpL9JChwcYDUkZnHTYjtz/gop0p2r7v7YJ/uiS13OsRTReNhvt7CZqF9pUUhnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P6ynfrc7vqCoy/514Vwv3uXPuYWQctuNTjKLc4N8HDI=; b=mLFA0pCNztBgb7298AcGd3goE9dbq+D/aP8LbL86L46nCjS9d7z+LhoVcLNKvMapl28EcZSa7gdQuF9GO0gu2zRJIj1zOaf7jHeVBaMBg3XgHG14yA8iPHiliRd+DHWoVjD2upZyQsf+FL1/pPIz1UpYiC57XOuw1c3a6PXwS9VSY5tiaGg22LFSlyRghPMLLwc9qCbT+hv8o2OduYjKnnr4EFyUgM+l6HSoEvHby74nNX5cE0GdTrd4gj2EHvJ6XaIMYQY+VcL+kS55/Th7P4FUhdk/HenakvOjFIBuMoijVXlJiXe7GVJyDQP3jZIfsmdcF/fYas1WFbQUv8LQPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P6ynfrc7vqCoy/514Vwv3uXPuYWQctuNTjKLc4N8HDI=; b=iE9MgkUwlI/AIK/5Va5t82hvw/cSltdklj/LOl0iB+U+8GB9CdxuDe/2Bv8ULL3enoezWsos17p1E9wh/zpQ/3ggjrUmtRhuXlUC6MxbXsrz59WdMxWyYbMCiPEj84drtY4IQkEmmQ5nuNxoAxQS7pPvx+pccBXqpQH3wKN3DIY= Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB4215.eurprd08.prod.outlook.com (2603:10a6:20b:90::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.26; Thu, 8 Jul 2021 09:25:15 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::ca6:6171:e2f1:3d40]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::ca6:6171:e2f1:3d40%4]) with mapi id 15.20.4308.022; Thu, 8 Jul 2021 09:25:15 +0000 From: "Sami Mujawar" To: Jianyong Wu , "devel@edk2.groups.io" CC: "lersek@redhat.com" , "ardb+tianocore@kernel.org" , Justin He , nd Subject: Re: [PATCH v4 2/3] Acpi: Install Acpi tables for Cloud hypervisor Thread-Topic: [PATCH v4 2/3] Acpi: Install Acpi tables for Cloud hypervisor Thread-Index: AQHXcYWJRGteEfo5Y0+uTkqS/QIv66s1tiqAgAEJngCAAQ5SgA== Date: Thu, 8 Jul 2021 09:25:15 +0000 Message-ID: <737CF58D-DDD4-4523-A5EC-676C856AA149@arm.com> References: <20210705100641.97166-1-jianyong.wu@arm.com> <20210705100641.97166-3-jianyong.wu@arm.com> <00AEC620-08E8-401A-AF92-31A4C3728E47@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.50.21061301 Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 59c8c948-16a9-404e-398d-08d941f250b7 x-ms-traffictypediagnostic: AM6PR08MB4215:|DBBPR08MB6121: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:107;OLM:107; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 1M4lZd9xUWu8OxpITvyx49NtAKeGceQ3WhFmVi3Fwo9qGxNvLxPimMgrM+zKSWafMWoTSLhKc6AOTf3ZRWxviARqeEOcyQhD2NJIf7SH+JJnylqFOTrpOKVGhuv8Y0OMBKKv/9ZUwrrH61jOYVqJ6vuHu6U3KZk6tsY7Rc15iyzyAt6ZNaoJX1gyjqCK4ashw9IywpQjErNGY27GG6rYuc/Ct9/EbtZFYkgKttcZOKjHiozr2y36YPSKKH7zqkOHMrQK9/s8NOh68C9ZlFSBV8n5DjEay3GqOkKw7BEIo0epYGX5FLiK+x0GOgvKsqi+qHn9CmkR7F2wlIvpB7x4vsSP+HogdyxnLe7HIdxiE1LCOI+kOEr4ZSDDpTTi/fM6iIWSygaPStxxkTISGWas7yrKF3CBLc99hbuFGcjh8DE3CdcfqisMH8794OJeqGis4+nZ4K7fKNoJcJHE93KTYezMvC8/16phri6KEMeZpUJ+oBsMtzljceGn8nKZzI31tI0D4iMDxMxuEFe+b5X4T7EFDV4f4V3uALRD7x970WNkXwSzrt0lBMd0TnDQN6lTmMz2AQoX90NTjSdZe8REqERnB77AvGWClUMIKzbRe/me5Zr4NL7q8M81lV0dFIWLbd/fH3QbR/SLLwBBDIDpOlcQ6j7UqDbdlPNBPz94He+Z3ZH6pklPH3eqOOfhVR6tUqlc15nUuHoh6MDQG6oKRw== 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:(4636009)(396003)(136003)(346002)(39850400004)(376002)(366004)(36756003)(38100700002)(54906003)(5660300002)(110136005)(186003)(33656002)(122000001)(4326008)(478600001)(6512007)(53546011)(6506007)(6486002)(66446008)(2616005)(26005)(66946007)(66476007)(2906002)(86362001)(64756008)(8676002)(66556008)(83380400001)(71200400001)(91956017)(76116006)(8936002)(316002)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZmNRUVBtdUdhVThMNktjczBLcXVTVzR6UFhDbHpLZ2VzUjJKVTFaY1lUVXZL?= =?utf-8?B?RVpnM1IwSUVTdjd4R1dyaVROUm5DSTBwdzNBaHJCZW5rcHVWdTFGdVNScGNM?= =?utf-8?B?enVHWkFpUHpRZHZsWGNLTGc2azJmMmdiZzZKMStWTEE5V0xXZDN6aDNneUxy?= =?utf-8?B?VFVPT1pRbjFMdnRGbVJjUEN1OE13dzFqditkMGxIMG9SUFdGQ1pKa1dCdDhL?= =?utf-8?B?Y1dzcW45bTBOajBpU2o4bnpJKzlHZHdDNUcwNVRmOGtvemtmQURuTHBYVm0w?= =?utf-8?B?RXYwWkk0QWhqcmc2Vnl3ZDdRWThDVmZsT1h0WExyeDZpaW84Y08reGh0a0Zp?= =?utf-8?B?R05UT29wWERKc2pmY0xxR0dDSXZsVmw3Y3ZzdXVNSmdPV0l2d2xEcTlrVVFW?= =?utf-8?B?RkFCRVpjNjNRemFQTW4rT0EzSkJQOVd0QTZOdDl4eGJRdnYvUldOM1lpTXI2?= =?utf-8?B?ZG5hOGJJYnQxWkdDS08rRzZBb0Y5VEpqVVpKY1ZGYW5weDhrVUgycXd4UCtI?= =?utf-8?B?M1BBNXY3RkxXYkNpb2RnVzI4S1ZxRXFmQXNPczY4bVZibTJvWUNPa0ZUKzA4?= =?utf-8?B?VHJIdU9GUnZkbmpqeEM3WEM0Q1ZBbVhJc09sM0FyVi9SaE0zZkx1elBGSzNr?= =?utf-8?B?anlXbVdiaVk2SFRoWk5lZkNVVnNEV3lnS2RQamlpNUdWRVc3VWIvanVhQzY3?= =?utf-8?B?bnZtVXo4NTRnNGw5Vytkc0FEdXdXWUdvQ1k5dWJvU2JwcHlQclFTbUUvdG04?= =?utf-8?B?N1M4aHQ2bjBwSFlISlE1QjhHWWhhc1RBbU1KYjhSZTdjSE5NcTBhOTNidkFi?= =?utf-8?B?bDZrb1Q0OFVpREZtMFB5YWc5RHBTc3lzcnZGTDA5SXBad3NnWWJ4ajZjT3JS?= =?utf-8?B?QVlkTUNSdldkMGUwenN6WUswREZwTnVVYUFPaHpaMTVQdloxTHdvWFJtWEp1?= =?utf-8?B?aUJpeGVWbkg5VUR0SkhOVDh6bmtQS1BaS1hqKzB6em9ycXp6dkcwNWFIczVF?= =?utf-8?B?dWg0WERqRWo0aHd5eFdFenBUUVRMVnBiV1A2K01BNGk2VXA5Z01ZR1IzU2pj?= =?utf-8?B?ZHZnQTNkek8zMVF4N2VSQVB1ZjErWmZLUWduZmhTTGZMbUVlWlJuV1JIaTJq?= =?utf-8?B?T29COFloUitRRmJzYzhpaEorelVFOHpDZDRKK2EvTnJoWW1sdDlYdmZGTnhE?= =?utf-8?B?dU1TdTdFMHU0TlliNy9COHVsdXZLc1ZqSGdUMEpWOUd6U1VkMGxPRDM3M284?= =?utf-8?B?Wi9kSVRBQ3lVUWNEeXJGSC9EVUdFc0U4T3hLYU5vdThQUThCR1gyaldrU1cx?= =?utf-8?B?Uit1VDYra2d5anhlZ3E5aXM4bjhqeS9tOHpweU1KcDdRaU9OV0hORERscTFj?= =?utf-8?B?UlZxSHAvSDR5aGxvT0FkOWE5MnVNUTJRcXZHenAzdUg1UVBRRHVFWDhYeEZx?= =?utf-8?B?M3BaWmIvNWljY0JMMWxrOCtUaHBFWWl3YStMMWpvSFBsek9XaE5CV2R5VStU?= =?utf-8?B?VkNEeVJ3ZDQ3QS9qV08yNXpZMS9ndFIyTEpPUU5MTTF0VTJRR1pHUHAxaEhN?= =?utf-8?B?SmQ1WWZIZjVESWIrcnJWRkJnQkZ1VGp4QmxBRGUwQm5ROEkwVWtnYmRBRmlZ?= =?utf-8?B?Yllxd3lac3I5b3pvYnVRTzQzTUNMa1U1TmY3RUE2UFZ6RjFvWjhOMTVvV1M5?= =?utf-8?B?MDJEeEIrSXRld054bGd5cm5lRHgyaW9uRVpLZjIvaXJzYWJrdElYOWxVR2JT?= =?utf-8?Q?QAChAIe2ifNHYwnC24Oc6dOv/XSs2C88o+tb8Q1?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4215 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 024f4387-c61f-4219-f744-08d941f24b59 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RbGjxqOKb3CUYrXKfJAKopu2/m2RL+aGcSp6u9nL1tPx6Ml2HZ49sOJC8syrQ4tmVdyluhjQZysvIdgVdx1KmCqihLlUR8tb+40hUnXDIV4P50Fg3BaTOUE5QE6jnailxnhNjeQjsa8iJMTHOIwTkrclEpmg8zQh2O97r1Qd/igT+cPl8GL7aMExV0ri6tS4EzuijuebfOzlkTcI2yCZyC77xxI3iZZfEknjucnl5RSA93vXhhlaadXR0RoZlwEZt12Tmgm1xNSRr/GTmIe+j8MX6+HmIrkrG/8CpCW2b8667Upnht/xSZx1PjnJSUKQfZoVzol0rXOVuCniJnJ4e62lPGlb8J0RslhUxi2KM0WFA1107UWnPgmYJAXkkQw9uTOM7VtZywosT0XHC9Pajtvo8yXeL8n2tKv+9BjkWgIvhwRcIwVZX7042rI1Ajyq+d3NTGK2lRQ0enE/kPV/3A3fdhask1zEHymVS8RC0waE8gdTnWvj6QphyHmnuiFHjgRQ72ViqFpqPQRO47vK4PPgIQxrKidEqD0xXLJ0OD2m/8NXq4lqjybigtm3GpnAABmy92O/9Fz1ddUSuoScRMNdvYacOkqto31mjFgZkhfit3UGbN2RgmC+5ZxsaS0d9pk0fb+K+4qN97ssWNXRRn/9pXaVewZRqgUiVplLMxr+czgY4VVqBaqY9llN8ekw8KDeyBC7IYuzZAHWibRZbA== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(396003)(136003)(39850400004)(346002)(376002)(46966006)(36840700001)(70206006)(82740400003)(81166007)(26005)(70586007)(6506007)(6512007)(356005)(47076005)(83380400001)(82310400003)(8936002)(186003)(8676002)(33656002)(110136005)(6486002)(36860700001)(53546011)(336012)(5660300002)(478600001)(2906002)(2616005)(316002)(4326008)(36756003)(86362001)(54906003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2021 09:25:24.1632 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 59c8c948-16a9-404e-398d-08d941f250b7 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: DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6121 Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: <627A60F08D9577458AAB21B29A1215E4@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 TWVyZ2VkIGFzIDRjMDUxYzJjNjVhOC4uMGUzYjZiZDBlZTc1DQoNClRoYW5rcy4NCg0KUmVnYXJk cywNCg0KU2FtaSBNdWphd2FyDQoNCu+7v09uIDA3LzA3LzIwMjEsIDAyOjQzLCAiSmlhbnlvbmcg V3UiIDxKaWFueW9uZy5XdUBhcm0uY29tPiB3cm90ZToNCg0KICAgIEhpIFNhbWksDQoNCiAgICBU aGFua3MgZm9yIHlvdXIgcmV3b3JrIG9uIG15IHBhdGNoLiBJIHRyaWVkIHRoZSBjaGFuZ2UgYW5k IGl0IHdvcmtzIHdlbGwuIFlvdSBjYW4gZG8gd2hhdCB5b3UgbGlrZSBvbiB0aGUgcGF0Y2ggc2V0 Lg0KDQogICAgVGhhbmtzDQogICAgSmlhbnlvbmcNCg0KICAgID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCiAgICA+IEZyb206IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5jb20+ DQogICAgPiBTZW50OiBUdWVzZGF5LCBKdWx5IDYsIDIwMjEgNDo1MiBQTQ0KICAgID4gVG86IEpp YW55b25nIFd1IDxKaWFueW9uZy5XdUBhcm0uY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCiAg ICA+IENjOiBsZXJzZWtAcmVkaGF0LmNvbTsgYXJkYit0aWFub2NvcmVAa2VybmVsLm9yZzsgSnVz dGluIEhlDQogICAgPiA8SnVzdGluLkhlQGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT4NCiAgICA+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgMi8zXSBBY3BpOiBJbnN0YWxsIEFjcGkgdGFibGVzIGZv ciBDbG91ZCBoeXBlcnZpc29yDQogICAgPiANCiAgICA+IEhpIEppYW55b25nLA0KICAgID4gDQog ICAgPiBJIHNob3VsZCBoYXZlIGNhdWdodCB0aGlzIGVhcmxpZXIgaW4gbXkgcmV2aWV3LiAgSG93 ZXZlciwgaWYgeW91IGFncmVlLCBJIHdpbGwNCiAgICA+IGRvIHRoZSBmb2xsb3dpbmcgY2hhbmdl cyBiZWZvcmUgcHVzaGluZyB0aGUgcGF0Y2guDQogICAgPiANCiAgICA+IDEuCVRoZSBzdWJqZWN0 IGxpbmUgb2YgdGhlIGNvbW1pdCBtZXNzYWdlIGRvZXMgbm90IGNvbmZpcm0gdG8gdGhlIGVkazIN CiAgICA+IGNvZGluZyBzdGFuZGFyZC4gSXQgc2hvdWxkIGhhdmUg4oCYQXJtVmlydFBrZzogPHN1 YmplY3QgbGluZSBmb3IgdGhlIHBhdGNoPuKAmQ0KICAgID4gMi4JVGhlIEFDUEkgdGFibGUgc2ln bmF0dXJlIGNhbiBiZSBzaW1wbGlmaWVkIGZ1cnRoZXIuIENhbiB5b3UgdHJ5IHRoZQ0KICAgID4g Zm9sbG93aW5nIGFuZCBsZXQgbWUga25vdyBpZiBpdCB3b3JrcywgcGxlYXNlPw0KICAgID4gDQog ICAgPiBkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlL0Nsb3Vk SHZBY3BpLmMNCiAgICA+IGIvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlL0Nsb3Vk SHZBY3BpLmMNCiAgICA+IGluZGV4IGY1YTQ3YWE3ZjNjZC4uNTFiMDEyNjc2ZTdkIDEwMDY0NA0K ICAgID4gLS0tIGEvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlL0Nsb3VkSHZBY3Bp LmMNCiAgICA+ICsrKyBiL0FybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS9DbG91ZEh2 QWNwaS5jDQogICAgPiBAQCAtNTIsOCArNTIsOCBAQCBGaW5kQWNwaVRhYmxlUHJvdG9jb2wgKCAg RUZJX1NUQVRVUyAgRUZJQVBJDQogICAgPiBJbnN0YWxsQ2xvdWRIdkFjcGlUYWJsZXMgKA0KICAg ID4gLSBJTiAgICAgRUZJX0FDUElfVEFCTEVfUFJPVE9DT0wgICAgICAgKkFjcGlQcm90b2NvbA0K ICAgID4gLSApDQogICAgPiArICBJTiAgICAgRUZJX0FDUElfVEFCTEVfUFJPVE9DT0wgICAgICAg KkFjcGlQcm90b2NvbA0KICAgID4gKyAgKQ0KICAgID4gIHsNCiAgICA+ICAgIFVJTlROICAgICAg ICAgIEluc3RhbGxlZEtleTsNCiAgICA+ICAgIFVJTlROICAgICAgICAgIFRhYmxlU2l6ZTsNCiAg ICA+IEBAIC05NywxMSArOTcsMTIgQEAgSW5zdGFsbENsb3VkSHZBY3BpVGFibGVzICgNCiAgICA+ ICAgICAgLy8NCiAgICA+ICAgICAgLy8gR2V0IERTRFQgZnJvbSBGQURUDQogICAgPiAgICAgIC8v DQogICAgPiAtICAgIGlmIChEc2R0UHRyID09IE5VTEwNCiAgICA+IC0gICAgICAmJiAhQXNjaWlT dHJuQ21wICgoQ0hBUjggKikmKChFRklfQUNQSV9DT01NT05fSEVBREVSDQogICAgPiAqKUFjcGlU YWJsZVB0ciktPlNpZ25hdHVyZSwgIkZBQ1AiLCA0KSkgew0KICAgID4gKyAgICBpZiAoKERzZHRQ dHIgPT0gTlVMTCkNCiAgICA+ICsgICAgICAmJiAoRUZJX0FDUElfNl8zX0ZJWEVEX0FDUElfREVT Q1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFID09DQogICAgPiArICAgICAgICAgICgoRUZJX0FDUElf Q09NTU9OX0hFQURFUiAqKUFjcGlUYWJsZVB0ciktPlNpZ25hdHVyZSkpIHsNCiAgICA+ICAgICAg ICBEc2R0UHRyID0gKFVJTlQ2NCAqKSgoKEVGSV9BQ1BJXzZfM19GSVhFRF9BQ1BJX0RFU0NSSVBU SU9OX1RBQkxFDQogICAgPiAqKUFjcGlUYWJsZVB0ciktPlhEc2R0KTsNCiAgICA+ICAgICAgfQ0K ICAgID4gLSAgfQ0KICAgID4gKyAgfSAvLyB3aGlsZQ0KICAgID4gDQogICAgPiAgICBpZiAoRHNk dFB0ciA9PSBOVUxMKSB7DQogICAgPiAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogbm8g RFNEVCBmb3VuZFxuIiwgX19GVU5DVElPTl9fKSk7DQogICAgPiANCiAgICA+IFJlZ2FyZHMsDQog ICAgPiANCiAgICA+IFNhbWkgTXVqYXdhcg0KICAgID4gDQogICAgPiBPbiAwNS8wNy8yMDIxLCAx MTowNywgIkppYW55b25nIFd1IiA8amlhbnlvbmcud3VAYXJtLmNvbT4gd3JvdGU6DQogICAgPiAN CiAgICA+ICAgICBUaGVyZSBpcyBubyBkZXZpY2UgbGlrZSBGdy1jZmcgaW4gUWVtdSBpbiBDbG91 ZCBIeXBlcnZpc29yLCBzbyBhIHNwZWNpZmljDQogICAgPiAgICAgQWNwaSBoYW5kbGVyIGlzIGlu dHJvZHVjZWQgaGVyZS4NCiAgICA+IA0KICAgID4gICAgIFRoZSBoYW5kbGVyIGltcGxlbWVudGVk IGhlcmUgaXMgaW4gYSB2ZXJ5IHNpbXBsZSB3YXk6DQogICAgPiAgICAgMS4gYWNxdWlyZSB0aGUg UlNEUCBmcm9tIHRoZSBQQ0QgdmFyaWFibGUgaW4gdGhlIHRvcCAiLmRzYyI7DQogICAgPiAgICAg Mi4gZ2V0IHRoZSBYU0RUIGFkZHJlc3MgZnJvbSBSU0RQIHN0cnVjdHVyZTsNCiAgICA+ICAgICAz LiBnZXQgdGhlIEFDUEkgdGFibGVzIGZvbGxvd2luZyB0aGUgWFNEVCBzdHJ1Y3R1cmUgYW5kIGlu c3RhbGwgdGhlbQ0KICAgID4gICAgIG9uZSBieSBvbmU7DQogICAgPiAgICAgNC4gZ2V0IERTRFQg YWRkcmVzcyBmcm9tIEZBRFQgYW5kIGluc3RhbGwgRFNEVCB0YWJsZS4NCiAgICA+IA0KICAgID4g ICAgIENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KICAgID4gICAgIENjOiBT YW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KICAgID4gDQogICAgPiAgICAgU2ln bmVkLW9mZi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+DQogICAgPiAgICAg LS0tDQogICAgPiAgICAgIEFybVZpcnRQa2cvQXJtVmlydFBrZy5kZWMgICAgICAgICAgICAgICAg ICAgICB8ICAgNiArDQogICAgPiAgICAgIC4uLi9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlLmluZiAg ICAgICAgICAgICAgICB8ICA0NyArKysrKysNCiAgICA+ICAgICAgLi4uL0Nsb3VkSHZBY3BpUGxh dGZvcm1EeGUvQ2xvdWRIdkFjcGkuYyAgICAgIHwgMTU1DQogICAgPiArKysrKysrKysrKysrKysr KysNCiAgICA+ICAgICAgMyBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKQ0KICAgID4g ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQNCiAgICA+IEFybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0 Zm9ybUR4ZS9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlLmluZg0KICAgID4gICAgICBjcmVhdGUgbW9k ZSAxMDA2NDQgQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlL0Nsb3VkSHZBY3BpLmMN CiAgICA+IA0KICAgID4gICAgIGRpZmYgLS1naXQgYS9Bcm1WaXJ0UGtnL0FybVZpcnRQa2cuZGVj IGIvQXJtVmlydFBrZy9Bcm1WaXJ0UGtnLmRlYw0KICAgID4gICAgIGluZGV4IGJmODJmN2YxZjNm Mi4uNGU0ZDc1ODAxNWJjIDEwMDY0NA0KICAgID4gICAgIC0tLSBhL0FybVZpcnRQa2cvQXJtVmly dFBrZy5kZWMNCiAgICA+ICAgICArKysgYi9Bcm1WaXJ0UGtnL0FybVZpcnRQa2cuZGVjDQogICAg PiAgICAgQEAgLTY2LDYgKzY2LDEyIEBAIFtQY2RzRml4ZWRBdEJ1aWxkLCBQY2RzUGF0Y2hhYmxl SW5Nb2R1bGVdDQogICAgPiAgICAgICAgIw0KICAgID4gICAgICAgIGdBcm1WaXJ0VG9rZW5TcGFj ZUd1aWQuUGNkVGVybWluYWxUeXBlR3VpZEJ1ZmZlcnx7MHg2NSwgMHg2MCwgMHhBNiwNCiAgICA+ IDB4REYsIDB4MTksIDB4QjQsIDB4RDMsIDB4MTEsIDB4OUEsIDB4MkQsIDB4MDAsIDB4OTAsIDB4 MjcsIDB4M0YsIDB4QzEsDQogICAgPiAweDREfXxWT0lEKnwweDAwMDAwMDA3DQogICAgPiANCiAg ICA+ICAgICArICAjIw0KICAgID4gICAgICsgICMgVGhpcyBpcyB0aGUgcGh5c2ljYWwgYWRkcmVz cyBvZiBSc2RwIHdoaWNoIGlzIHRoZSBjb3JlIHN0cnVjdCBvZiBBY3BpLg0KICAgID4gICAgICsg ICMgQ2xvdWQgSHlwZXJ2aXNvciBoYXMgbm8gb3RoZXIgd2F5IHRvIHBhc3MgUnNkcCBhZGRyZXNz IHRvIHRoZSBndWVzdA0KICAgID4gZXhjZXB0IHVzZSBhIFBDRC4NCiAgICA+ICAgICArICAjDQog ICAgPiAgICAgKw0KICAgID4gZ0FybVZpcnRUb2tlblNwYWNlR3VpZC5QY2RDbG91ZEh2QWNwaVJz ZHBCYXNlQWRkcmVzc3wweDB8VUlOVDY0fDANCiAgICA+IHgwMDAwMDAwNQ0KICAgID4gICAgICsN CiAgICA+ICAgICAgW1BjZHNEeW5hbWljXQ0KICAgID4gICAgICAgICMNCiAgICA+ICAgICAgICAj IFdoZXRoZXIgdG8gZm9yY2UgZGlzYWJsZSBBQ1BJLCByZWdhcmRsZXNzIG9mIHRoZSBmd19jZmcg c2V0dGluZ3MNCiAgICA+ICAgICBkaWZmIC0tZ2l0DQogICAgPiBhL0FybVZpcnRQa2cvQ2xvdWRI dkFjcGlQbGF0Zm9ybUR4ZS9DbG91ZEh2QWNwaVBsYXRmb3JtRHhlLmluZg0KICAgID4gYi9Bcm1W aXJ0UGtnL0Nsb3VkSHZBY3BpUGxhdGZvcm1EeGUvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS5pbmYN CiAgICA+ICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gICAgIGluZGV4IDAwMDAwMDAw MDAwMC4uMDFkZTc2NDg2Njg2DQogICAgPiAgICAgLS0tIC9kZXYvbnVsbA0KICAgID4gICAgICsr KyBiL0FybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS9DbG91ZEh2QWNwaVBsYXRmb3Jt RHhlLmluZg0KICAgID4gICAgIEBAIC0wLDAgKzEsNDcgQEANCiAgICA+ICAgICArIyMgQGZpbGUN CiAgICA+ICAgICArIyAgQUNQSSBQbGF0Zm9ybSBEcml2ZXIgZm9yIENsb3VkIEh5cGVydmlzb3IN CiAgICA+ICAgICArIw0KICAgID4gICAgICsjICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiAgICA+ICAgICArIyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAgICA+ICAgICArIw0KICAgID4gICAg ICsjIw0KICAgID4gICAgICsNCiAgICA+ICAgICArW0RlZmluZXNdDQogICAgPiAgICAgKyAgSU5G X1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KICAgID4gICAgICsgIEJB U0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IENsb3VkSHZnQWNwaVBsYXRmb3JtDQogICAg PiAgICAgKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNmM3NmU0MDctNzNmMi1k YzFjLTkzOGYtNWQ2YzQ2OTFlYTkzDQogICAgPiAgICAgKyAgTU9EVUxFX1RZUEUgICAgICAgICAg ICAgICAgICAgID0gRFhFX0RSSVZFUg0KICAgID4gICAgICsgIFZFUlNJT05fU1RSSU5HICAgICAg ICAgICAgICAgICA9IDEuMA0KICAgID4gICAgICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAg ICAgICA9IENsb3VkSHZBY3BpUGxhdGZvcm1FbnRyeVBvaW50DQogICAgPiAgICAgKw0KICAgID4g ICAgICsjDQogICAgPiAgICAgKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVm ZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUNCiAgICA+IGJ1aWxkIHRvb2xzLg0K ICAgID4gICAgICsjDQogICAgPiAgICAgKyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAg PSBBQVJDSDY0DQogICAgPiAgICAgKyMNCiAgICA+ICAgICArDQogICAgPiAgICAgK1tTb3VyY2Vz XQ0KICAgID4gICAgICsgIENsb3VkSHZBY3BpLmMNCiAgICA+ICAgICArDQogICAgPiAgICAgK1tQ YWNrYWdlc10NCiAgICA+ICAgICArICBNZGVQa2cvTWRlUGtnLmRlYw0KICAgID4gICAgICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQogICAgPiAgICAgKyAgT3ZtZlBrZy9Pdm1mUGtn LmRlYw0KICAgID4gICAgICsgIEFybVZpcnRQa2cvQXJtVmlydFBrZy5kZWMNCiAgICA+ICAgICAr DQogICAgPiAgICAgK1tMaWJyYXJ5Q2xhc3Nlc10NCiAgICA+ICAgICArICBCYXNlTGliDQogICAg PiAgICAgKyAgRGVidWdMaWINCiAgICA+ICAgICArICBNZW1vcnlBbGxvY2F0aW9uTGliDQogICAg PiAgICAgKyAgT3JkZXJlZENvbGxlY3Rpb25MaWINCiAgICA+ICAgICArICBVZWZpQm9vdFNlcnZp Y2VzVGFibGVMaWINCiAgICA+ICAgICArICBVZWZpRHJpdmVyRW50cnlQb2ludA0KICAgID4gICAg ICsNCiAgICA+ICAgICArW1Byb3RvY29sc10NCiAgICA+ICAgICArICBnRWZpQWNwaVRhYmxlUHJv dG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBBTFdBWVNfQ09OU1VNRUQN CiAgICA+ICAgICArDQogICAgPiAgICAgK1tQY2RdDQogICAgPiAgICAgKyAgZ0FybVZpcnRUb2tl blNwYWNlR3VpZC5QY2RDbG91ZEh2QWNwaVJzZHBCYXNlQWRkcmVzcw0KICAgID4gICAgICsNCiAg ICA+ICAgICArW0RlcGV4XQ0KICAgID4gICAgICsgIGdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQN CiAgICA+ICAgICBkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhl L0Nsb3VkSHZBY3BpLmMNCiAgICA+IGIvQXJtVmlydFBrZy9DbG91ZEh2QWNwaVBsYXRmb3JtRHhl L0Nsb3VkSHZBY3BpLmMNCiAgICA+ICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gICAg IGluZGV4IDAwMDAwMDAwMDAwMC4uZjVhNDdhYTdmM2NkDQogICAgPiAgICAgLS0tIC9kZXYvbnVs bA0KICAgID4gICAgICsrKyBiL0FybVZpcnRQa2cvQ2xvdWRIdkFjcGlQbGF0Zm9ybUR4ZS9DbG91 ZEh2QWNwaS5jDQogICAgPiAgICAgQEAgLTAsMCArMSwxNTUgQEANCiAgICA+ICAgICArLyoqIEBm aWxlDQogICAgPiAgICAgKyAgSW5zdGFsbCBBY3BpIHRhYmxlcyBmb3IgQ2xvdWQgSHlwZXJ2aXNv cg0KICAgID4gICAgICsNCiAgICA+ICAgICArICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFybSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiAgICA+ICAgICArDQogICAgPiAgICAgKyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAgICA+ICAgICAr KiovDQogICAgPiAgICAgKw0KICAgID4gICAgICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+ DQogICAgPiAgICAgKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCiAg ICA+ICAgICArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaTYzLmg+DQogICAgPiAgICAg KyNpbmNsdWRlIDxQcm90b2NvbC9BY3BpVGFibGUuaD4NCiAgICA+ICAgICArI2luY2x1ZGUgPExp YnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQogICAgPiAgICAgKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlEcml2ZXJFbnRyeVBvaW50Lmg+DQogICAgPiAgICAgKyNpbmNsdWRlIDxMaWJy YXJ5L0RlYnVnTGliLmg+DQogICAgPiAgICAgKw0KICAgID4gICAgICsvKioNCiAgICA+ICAgICAr ICAgRmluZCBBY3BpIHRhYmxlIFByb3RvY29sIGFuZCByZXR1cm4gaXQNCiAgICA+ICAgICArDQog ICAgPiAgICAgKyAgIEByZXR1cm4gQWNwaVRhYmxlICBQcm90b2NvbCwgd2hpY2ggaXMgdXNlZCB0 byBoYW5kbGUgQWNwaSBUYWJsZSwgb24NCiAgICA+IFNVQ0NFU1Mgb3IgTlVMTCBvbiBGQUlMVVJF Lg0KICAgID4gICAgICsNCiAgICA+ICAgICArKiovDQogICAgPiAgICAgK1NUQVRJQw0KICAgID4g ICAgICtFRklfQUNQSV9UQUJMRV9QUk9UT0NPTCAqDQogICAgPiAgICAgK0ZpbmRBY3BpVGFibGVQ cm90b2NvbCAoDQogICAgPiAgICAgKyAgVk9JRA0KICAgID4gICAgICsgICkNCiAgICA+ICAgICAr ew0KICAgID4gICAgICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsNCiAgICA+ICAg ICArICBFRklfQUNQSV9UQUJMRV9QUk9UT0NPTCAqQWNwaVRhYmxlOw0KICAgID4gICAgICsNCiAg ICA+ICAgICArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCiAgICA+ICAgICArICAg ICAgICAgICAgICAgICAgJmdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQsDQogICAgPiAgICAgKyAg ICAgICAgICAgICAgICAgIE5VTEwsDQogICAgPiAgICAgKyAgICAgICAgICAgICAgICAgIChWT0lE KiopJkFjcGlUYWJsZQ0KICAgID4gICAgICsgICAgICAgICAgICAgICAgICApOw0KICAgID4gICAg ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQogICAgPiAgICAgKyAgcmV0dXJuIEFjcGlU YWJsZTsNCiAgICA+ICAgICArfQ0KICAgID4gICAgICsNCiAgICA+ICAgICArLyoqIEluc3RhbGwg QWNwaSB0YWJsZXMgZm9yIENsb3VkIEh5cGVydmlzb3INCiAgICA+ICAgICArDQogICAgPiAgICAg KyAgQHBhcmFtIFtpbl0gIEFjcGlQcm90b2NvbCAgQWNwaSBQcm90b2NvbCB3aGljaCBpcyB1c2Vk IHRvIGluc3RhbGwgQWNwaQ0KICAgID4gdGFsYmxlcw0KICAgID4gICAgICsNCiAgICA+ICAgICAr ICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIHRhYmxlIHdhcyBzdWNjZXNzZnVs bHkgaW5zZXJ0ZWQuDQogICAgPiAgICAgKyAgQHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVIg IEVpdGhlciBBY3BpUHJvdG9jb2wsIEFjcGlUYWJsZVB0ciBvcg0KICAgID4gRHNkdFB0ciBpcyBO VUxMDQogICAgPiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUg c2l6ZSBmaWVsZCBlbWJlZGRlZCBpbiB0aGUgQUNQSSB0YWJsZSBwb2ludGVkDQogICAgPiAgICAg KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IEFjcGlUYWJsZVB0ciBvciBEc2R0 UHRyIGFyZSBub3QgaW4gc3luYy4NCiAgICA+ICAgICArICBAcmV0dXJuIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgSW5zdWZmaWNpZW50IHJlc291cmNlcyBleGlzdCB0bw0KICAgID4gY29tcGxldGUg dGhlIHJlcXVlc3QuDQogICAgPiAgICAgKyAgQHJldHVybiBFRklfTk9UX0ZPVU5EICAgICAgICAg IERTRFQgdGFibGUgbm90IGZvdW5kLg0KICAgID4gICAgICsqKi8NCiAgICA+ICAgICArRUZJX1NU QVRVUw0KICAgID4gICAgICtFRklBUEkNCiAgICA+ICAgICArSW5zdGFsbENsb3VkSHZBY3BpVGFi bGVzICgNCiAgICA+ICAgICArIElOICAgICBFRklfQUNQSV9UQUJMRV9QUk9UT0NPTCAgICAgICAq QWNwaVByb3RvY29sDQogICAgPiAgICAgKyApDQogICAgPiAgICAgK3sNCiAgICA+ICAgICArICBV SU5UTiAgICAgICAgICBJbnN0YWxsZWRLZXk7DQogICAgPiAgICAgKyAgVUlOVE4gICAgICAgICAg VGFibGVTaXplOw0KICAgID4gICAgICsgIFVJTlROICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aDsN CiAgICA+ICAgICArICBVSU5UNjQgICAgICAgICBSc2RwUHRyOw0KICAgID4gICAgICsgIFVJTlQ2 NCAgICAgICAgIFhzZHRQdHI7DQogICAgPiAgICAgKyAgVUlOVDY0ICAgICAgICAgVGFibGVPZmZz ZXQ7DQogICAgPiAgICAgKyAgVUlOVDY0ICAgICAgICAgQWNwaVRhYmxlUHRyOw0KICAgID4gICAg ICsgIFVJTlQ2NCAgICAgICAgICpEc2R0UHRyID0gTlVMTDsNCiAgICA+ICAgICArICBFRklfU1RB VFVTICAgICBTdGF0dXM7DQogICAgPiAgICAgKw0KICAgID4gICAgICsgIGlmIChBY3BpUHJvdG9j b2wgPT0gTlVMTCkgew0KICAgID4gICAgICsgICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1F VEVSOw0KICAgID4gICAgICsgIH0NCiAgICA+ICAgICArDQogICAgPiAgICAgKyAgUnNkcFB0ciA9 IFBjZEdldDY0IChQY2RDbG91ZEh2QWNwaVJzZHBCYXNlQWRkcmVzcyk7DQogICAgPiAgICAgKyAg WHNkdFB0ciA9ICgoRUZJX0FDUElfNl8zX1JPT1RfU1lTVEVNX0RFU0NSSVBUSU9OX1BPSU5URVIN CiAgICA+ICopUnNkcFB0ciktPlhzZHRBZGRyZXNzOw0KICAgID4gICAgICsgIEFjcGlUYWJsZUxl bmd0aCA9ICgoRUZJX0FDUElfQ09NTU9OX0hFQURFUiAqKVhzZHRQdHIpLT5MZW5ndGg7DQogICAg PiAgICAgKyAgVGFibGVPZmZzZXQgPSBzaXplb2YgKEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURF Uik7DQogICAgPiAgICAgKw0KICAgID4gICAgICsgIHdoaWxlIChUYWJsZU9mZnNldCA8IEFjcGlU YWJsZUxlbmd0aCkgew0KICAgID4gICAgICsgICAgQWNwaVRhYmxlUHRyID0gKihVSU5UNjQgKiko WHNkdFB0ciArIFRhYmxlT2Zmc2V0KTsNCiAgICA+ICAgICArICAgIFRhYmxlU2l6ZSA9ICgoRUZJ X0FDUElfQ09NTU9OX0hFQURFUiAqKUFjcGlUYWJsZVB0ciktPkxlbmd0aDsNCiAgICA+ICAgICAr DQogICAgPiAgICAgKyAgICAvLw0KICAgID4gICAgICsgICAgLy8gSW5zdGFsbCBBQ1BJIHRhYmxl cyBmcm9tIFhTRFQNCiAgICA+ICAgICArICAgIC8vDQogICAgPiAgICAgKyAgICBTdGF0dXMgPSBB Y3BpUHJvdG9jb2wtPkluc3RhbGxBY3BpVGFibGUgKA0KICAgID4gICAgICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFjcGlQcm90b2NvbCwNCiAgICA+ICAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoVk9JRCAqKUFjcGlUYWJsZVB0ciwNCiAgICA+ICAgICArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZVNpemUsDQogICAgPiAgICAgKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJkluc3RhbGxlZEtleQ0KICAgID4gICAgICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQogICAgPiAgICAgKw0KICAgID4gICAgICsgICAgaWYgKEVGSV9FUlJP UihTdGF0dXMpKSB7DQogICAgPiAgICAgKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCiAgICA+ICAg ICArICAgIH0NCiAgICA+ICAgICArDQogICAgPiAgICAgKyAgICBUYWJsZU9mZnNldCArPSBzaXpl b2YgKFVJTlQ2NCk7DQogICAgPiAgICAgKw0KICAgID4gICAgICsgICAgLy8NCiAgICA+ICAgICAr ICAgIC8vIEdldCBEU0RUIGZyb20gRkFEVA0KICAgID4gICAgICsgICAgLy8NCiAgICA+ICAgICAr ICAgIGlmIChEc2R0UHRyID09IE5VTEwNCiAgICA+ICAgICArICAgICAgJiYgIUFzY2lpU3RybkNt cCAoKENIQVI4ICopJigoRUZJX0FDUElfQ09NTU9OX0hFQURFUg0KICAgID4gKilBY3BpVGFibGVQ dHIpLT5TaWduYXR1cmUsICJGQUNQIiwgNCkpIHsNCiAgICA+ICAgICArICAgICAgRHNkdFB0ciA9 IChVSU5UNjQNCiAgICA+ICopKCgoRUZJX0FDUElfNl8zX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05f VEFCTEUgKilBY3BpVGFibGVQdHIpLQ0KICAgID4gPlhEc2R0KTsNCiAgICA+ICAgICArICAgIH0N CiAgICA+ICAgICArICB9DQogICAgPiAgICAgKw0KICAgID4gICAgICsgIGlmIChEc2R0UHRyID09 IE5VTEwpIHsNCiAgICA+ICAgICArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogbm8gRFNE VCBmb3VuZFxuIiwgX19GVU5DVElPTl9fKSk7DQogICAgPiAgICAgKyAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCiAgICA+ICAgICArICB9DQogICAgPiAgICAgKw0KICAgID4gICAgICsgIC8vDQog ICAgPiAgICAgKyAgLy8gSW5zdGFsbCBEU0RUIHRhYmxlDQogICAgPiAgICAgKyAgLy8NCiAgICA+ ICAgICArICBUYWJsZVNpemUgPSAoKEVGSV9BQ1BJX0NPTU1PTl9IRUFERVIgKilEc2R0UHRyKS0+ TGVuZ3RoOw0KICAgID4gICAgICsgIFN0YXR1cyA9IEFjcGlQcm90b2NvbC0+SW5zdGFsbEFjcGlU YWJsZSAoDQogICAgPiAgICAgKyAgICAgICAgICAgICBBY3BpUHJvdG9jb2wsDQogICAgPiAgICAg KyAgICAgICAgICAgICBEc2R0UHRyLA0KICAgID4gICAgICsgICAgICAgICAgICAgVGFibGVTaXpl LA0KICAgID4gICAgICsgICAgICAgICAgICAgJkluc3RhbGxlZEtleQ0KICAgID4gICAgICsgICAg ICAgICAgICAgKTsNCiAgICA+ICAgICArDQogICAgPiAgICAgKyAgcmV0dXJuIFN0YXR1czsNCiAg ICA+ICAgICArfQ0KICAgID4gICAgICsNCiAgICA+ICAgICArLyoqIEVudHJ5IHBvaW50IGZvciBD bG91ZCBIeXBlcnZpc29yIFBsYXRmb3JtIER4ZQ0KICAgID4gICAgICsNCiAgICA+ICAgICArICBA cGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIEhhbmRsZSBmb3IgdGhpcyBpbWFnZS4NCiAgICA+ICAg ICArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIEVGSSBzeXN0ZW0g dGFibGUuDQogICAgPiAgICAgKw0KICAgID4gICAgICsgIEByZXR1cm4gRUZJX1NVQ0NFU1MgICAg ICAgICAgICBUaGUgdGFibGUgd2FzIHN1Y2Nlc3NmdWxseSBpbnNlcnRlZC4NCiAgICA+ICAgICAr ICBAcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRWl0aGVyIEFjcGlQcm90b2NvbCwgQWNw aVRhYmxlUHRyIG9yDQogICAgPiBEc2R0UHRyIGlzIE5VTEwNCiAgICA+ICAgICArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBzaXplIGZpZWxkIGVtYmVkZGVkIGluIHRo ZSBBQ1BJIHRhYmxlIHBvaW50ZWQgdG8NCiAgICA+ICAgICArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnkgQWNwaVRhYmxlUHRyIG9yIERzZHRQdHIgYXJlIG5vdCBpbiBzeW5jLg0K ICAgID4gICAgICsgIEByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVMgICBJbnN1ZmZpY2llbnQg cmVzb3VyY2VzIGV4aXN0IHRvDQogICAgPiBjb21wbGV0ZSB0aGUgcmVxdWVzdC4NCiAgICA+ICAg ICArICBAcmV0dXJuIEVGSV9OT1RfRk9VTkQgICAgICAgICAgRFNEVCB0YWJsZSBub3QgZm91bmQN CiAgICA+ICAgICArKiovDQogICAgPiAgICAgK0VGSV9TVEFUVVMNCiAgICA+ICAgICArRUZJQVBJ DQogICAgPiAgICAgK0Nsb3VkSHZBY3BpUGxhdGZvcm1FbnRyeVBvaW50ICgNCiAgICA+ICAgICAr ICBJTiBFRklfSEFORExFICAgICAgICAgSW1hZ2VIYW5kbGUsDQogICAgPiAgICAgKyAgSU4gRUZJ X1NZU1RFTV9UQUJMRSAgICpTeXN0ZW1UYWJsZQ0KICAgID4gICAgICsgICkNCiAgICA+ICAgICAr ew0KICAgID4gICAgICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KICAgID4gICAgICsNCiAgICA+ICAgICArICBTdGF0dXMgPSBJbnN0YWxsQ2xvdWRIdkFjcGlU YWJsZXMgKEZpbmRBY3BpVGFibGVQcm90b2NvbCAoKSk7DQogICAgPiAgICAgKw0KICAgID4gICAg ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KICAgID4gICAgICsgICAgIERFQlVHICgoREVC VUdfRVJST1IsICIlYTogRmFpbCB0byBpbnN0YWxsIEFjcGkgdGFibGU6ICVyXG4iLA0KICAgID4g X19GVU5DVElPTl9fLA0KICAgID4gICAgICsgICAgICAgU3RhdHVzKSk7DQogICAgPiAgICAgKyAg ICAgQ3B1RGVhZExvb3AgKCk7DQogICAgPiAgICAgKyAgfQ0KICAgID4gICAgICsNCiAgICA+ICAg ICArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQogICAgPiAgICAgK30NCiAgICA+ICAgICAtLQ0KICAg ID4gICAgIDIuMTcuMQ0KICAgID4gDQogICAgPiANCg0KDQo=