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.57]) by mx.groups.io with SMTP id smtpd.web08.70.1636999159200243041 for ; Mon, 15 Nov 2021 09:59:20 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=JbsyR/0V; spf=pass (domain: arm.com, ip: 40.107.22.57, 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=WIG40QAvaVdGAXpfh/pGTLnjx2zFS1EAnAc4jgxhOJE=; b=JbsyR/0VfptBF4V3Ro3jsszieaNjhs4E6cJNpN8qkRUrh79wzEMx0UXUQ2N0uZRr2yffB2bzsl+i6NA/Hlu5fpTHrlVp1u3g+6WzP0D27eP2DDw15nIQr4zxTJsjFXAO68m4hgh6iBZZdNwgnCS+QrFHDwHG4Vav53kf1HQauCU= Received: from AM6P193CA0078.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:88::19) by VI1PR08MB4335.eurprd08.prod.outlook.com (2603:10a6:803:fc::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25; Mon, 15 Nov 2021 17:59:16 +0000 Received: from VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:88:cafe::9b) by AM6P193CA0078.outlook.office365.com (2603:10a6:209:88::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25 via Frontend Transport; Mon, 15 Nov 2021 17:59:15 +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=armh.onmicrosoft.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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT043.mail.protection.outlook.com (10.152.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.20 via Frontend Transport; Mon, 15 Nov 2021 17:59:15 +0000 Received: ("Tessian outbound f493ab4f1fb8:v110"); Mon, 15 Nov 2021 17:59:15 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 43790e803cc159f3 X-CR-MTA-TID: 64aa7808 Received: from 363c346c55a7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 07C51779-78E2-49B6-A3DB-3A7750060BDE.1; Mon, 15 Nov 2021 17:59:03 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 363c346c55a7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 15 Nov 2021 17:59:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VyI+HAtCEquMzZywzHSRpPUwU2FcNbmg2vI5LR8Npu4jwz4smwScXqvMnrQ56b3cd1cY+aijrfm9G2/Z6rZuYa0U7QUXcNc3XrMFjOzwZ0EzgiY2NQW4UD5JVivdZT3XGCMlMYg+2uPig4vWnZ5HONzT4PzYWjVqfYSmjGS7mzjP6VjLA3VY9lnM4xxzfCHauuQt9CHE7SmvrJukcMmS8RlQjT3WeBqbjUjsDAyRD8xtwIPz1W0QYTZ0HQ3Dos55NZMrJSStt9vsMdffyv0ZhQsVbczmaqGOPiaqkFtLzv3dy/45cSJH+MXEN9WYeE+hhXWmoSuwbOxznwiBCm8VbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WIG40QAvaVdGAXpfh/pGTLnjx2zFS1EAnAc4jgxhOJE=; b=aSbkT6DEbinosMA+Oag5aoMb2BUWLAT6x4fH0JF8VsX9Udz54Q+OQRrJjdmkh5PocYF2/CVdW3pwPV29nQFuEkweRJgeW4TdSx5kFV0DreWoSBZqICWYvVEFB4gjvnkW9FyI/QgsdlChUWRvxGr3ZQdhPW3QXfFnos6iue+b9H35OSg8RYDLlbRS7KoEnwi6oqs0mpdlTCqZ+hdOdOi2GDwSK5lvCRhd4gPuO7TkCg/ZUOh7ZT1Bzi1Lnp2ByVvtUlfr9oo75GxjQl1FU/wPQKsdn8LTe61h1m3+s33uTSDomEDdXgahc15WVRxyCxsqOqwLpaqmO/fiOp9N8gJ0Cw== 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=WIG40QAvaVdGAXpfh/pGTLnjx2zFS1EAnAc4jgxhOJE=; b=JbsyR/0VfptBF4V3Ro3jsszieaNjhs4E6cJNpN8qkRUrh79wzEMx0UXUQ2N0uZRr2yffB2bzsl+i6NA/Hlu5fpTHrlVp1u3g+6WzP0D27eP2DDw15nIQr4zxTJsjFXAO68m4hgh6iBZZdNwgnCS+QrFHDwHG4Vav53kf1HQauCU= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AM6PR08MB4787.eurprd08.prod.outlook.com (2603:10a6:20b:c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16; Mon, 15 Nov 2021 17:59:00 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::54b5:239d:9896:ee65]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::54b5:239d:9896:ee65%4]) with mapi id 15.20.4669.010; Mon, 15 Nov 2021 17:59:00 +0000 Subject: Re: [edk2-devel] [PATCH v1] ShellPkg/AcpiView: PrintFormatter for FADT Flags field To: Abdul Lateef Attar , devel@edk2.groups.io Cc: Ray Ni , Zhichao Gao , nd , Chris Jones References: <20211112132725.13810-1-abdattar@amd.com> From: "Sami Mujawar" Message-ID: <3837483b-cca3-8f37-a30e-018820a85520@arm.com> Date: Mon, 15 Nov 2021 17:59:09 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20211112132725.13810-1-abdattar@amd.com> X-ClientProxiedBy: LO4P123CA0317.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::16) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 Received: from [10.1.196.43] (217.140.106.52) by LO4P123CA0317.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.19 via Frontend Transport; Mon, 15 Nov 2021 17:59:00 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed38d2c7-497d-4d53-4484-08d9a861a361 X-MS-TrafficTypeDiagnostic: AM6PR08MB4787:|VI1PR08MB4335: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:2449;OLM:2449; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 6fK8vCQHfCsUDPm7XGnGcdTDG8dB4wuwc3WWEfOxnI+NJ8KeVseBF4SQSYcCkkpWMhEknFXQfyjDr25oyP43yh4rN0sRUW5CsMe3zoyvDMdJ5pqeU2lknWFCCrZWNNsOeHfyMvo8rNsOMv4vGolsdVr/yZ2Mk2bojBlfD8G5hRJPJdgkuyAF9+tt80Y+iUkVCX+YXPOI77wxYeLWRorXMXNkTn6ULP2STDpSZihAmyA2WkMtrPkd8+D19tQ8entl5d732od8j0AYZs77mV8qDTbfkvgHYSl0sHRbfckoWa8bcb2aI/NxfkbFsNZz7wZHC6GS2eLQTKEVF9cJusgC4U592W6TmsGt2B3bhhesi6XrFVRLsS4c+/MyGvLJ5hZvreIi/wAvX7uwz4iHFKnKJPZ+FYi9IioMYfQrOk5sEuGevD9vYcwFAJPfbM7vpWct0AJnxGsLWuT5EnilTOiPc9T0d2QVZ4FTMD3TOMXQZBIGwIwx1/SabVkKS4r6zusLJ1EzDY8sVLTm8JxBAebE8c5lKFYQrRBGRTQm7z7b0o6+vbMwLiswhvrA318++9xKVf8CldXbwEu5csa96iIdmZifXUhVjxGkdtNRnl2+n1OfEineKkqmIF5TV2U9xFaiiggD7qWwLGCH3b8pCdLzquF8Grobo7cYgHkhHZ1kxJocmASYgMgO7tf/n75O2pgRbu+XaeNEHUyBSp/webZwhMf+tVyUoWu4n7RBHn3ZXNRY9kgv4CKBnVPXeEViJMr7Dhcd5b1U12rie8VlAbPqlQ== 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)(366004)(83380400001)(52116002)(8676002)(508600001)(26005)(33964004)(66946007)(4326008)(44832011)(30864003)(186003)(2616005)(6486002)(38350700002)(86362001)(31696002)(956004)(53546011)(316002)(66476007)(54906003)(66556008)(8936002)(5660300002)(38100700002)(2906002)(16576012)(36756003)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4787 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 8315d711-955a-4445-abdb-08d9a8619a52 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2oQQNK4NZL2+RgWlj66u3QkXaEfVfaVaPWn1M1RFANovSzGHdhwDYdzh7+Z36plrMTXOhS6dulLvvSw+LLepem3Lfp2mTghCjyEOySo5x416ayRJSzHDKPf0P0SDc974qPO11v16HlhaQdgY1Qn+UPpYkI9DRRlYRfRNjnrY7mGZk/c1VIASndwhM90K9quDpe22vmLQsi8c3spTaNdfaHKp2DmJpJ2poqCinEKp9/vu86z7MYn6xCiT06I4PZlvW11YA2TbNmqdbg5fl817tS8gCclNVSCKlRRX71Cw/iDsx03bpQ8sah8l0DTfmy/EAulu3LourixfYmd3BO3Dzjww5S1UbOqtZB/qJx/qz609HrjkYyOved1T7vq/jomx6V6uQ7Gjjp7ohZXkvOdegneppXtr/Y8dXrZNRF6rcCbs5REO4NkMNADMbs9VaUm8VPY1UCCuxPuGhJxKzaT2diV5NPIpqH1Va/ba2KAWQkxBLlEIloiryXr67jmXTl/5gAtbZMECNSnNVS4gFLI26n3ujvGPUpq4dbcyymtNC4i5iieea6q/AtgT9gJJMXqKpz3DI9Rp2hjB8KHz8g8jdvYXgBHWleiShu7LY2c9u8AtTWRe/+Gw8GZFciiEb2rNT2xribhTHFlJyfJ+rYR3L700R50T525HA3QQeJgDKEA+sj57L2DY6UlXORNb47QKTVS61Oodqs9/bJpRXrSesbMSNyG4N++Lcee3iqiqtEU= 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)(46966006)(36840700001)(316002)(508600001)(336012)(956004)(47076005)(2906002)(16576012)(44832011)(83380400001)(70586007)(2616005)(8936002)(356005)(86362001)(70206006)(30864003)(36756003)(31686004)(54906003)(81166007)(31696002)(82310400003)(36860700001)(6486002)(53546011)(4326008)(8676002)(33964004)(186003)(26005)(5660300002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2021 17:59:15.4571 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed38d2c7-497d-4d53-4484-08d9a861a361 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: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4335 Content-Type: multipart/alternative; boundary="------------884D211B1B02EDE838C29F8F" Content-Language: en-GB --------------884D211B1B02EDE838C29F8F Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi Abdul, Thank you for contributing this patch. Is it possible to introduce a new functionParseAcpiFieldBits () that can trace the bit fields, please? It may also be possible to reuse the ACPI_PARSER structure to specify the Field bits. e.g. Keeping the meaning of the existing ACPI_PARSER field the same, the meaning of a few fields can be extended to also include the following. i.e. when ACPI_PARSER is used to describe a Bit Field, then the following would apply. ACPI_PARSER.Length => Length of the field bits in bits. ACPI_PARSER.Offset => Field bit start position. With this the FADT Flag bits can be described in an ACPI_PARSER array (similar to how the ACPI table fields are described). e.g. STATIC CONST ACPI_PARSER FadtFlagBitsParser[]= { {L"WBINVD", 1, 0, L"%d", NULL, NULL, NULL, NULL}, {L"WBINVD_FLUSH", 1, 1, L"%d", NULL, NULL, NULL, NULL}, {L"PROC_C1", 1, 2,L"%d", NULL, NULL, NULL, NULL}, ... }; The DumpFadtFlags() function could call ParseAcpiFieldBits (...,PARSER_PARAMS (FadtFlagBitsParser)). ParseAcpiFieldBits() could then extract (mask and shift) the bits and print using the print formatter. I think introducing ParseAcpiFieldBits() would allow the possibility of reusing the code as well as adding validations for the field bits. Please do let me know if you have any queries and I would be happy to help. Regards, Sami Mujawar On 12/11/2021 01:27 PM, Abdul Lateef Attar wrote: > Adds PrintFormatter function to the FADT flags field. > Prints indivisual flag name along with flag value. > > Cc: Ray Ni > Cc: Zhichao Gao > Cc: Sami Mujawar > Signed-off-by: Abdul Lateef Attar > --- > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 208 +++++++++++++++++++- > 1 file changed, 207 insertions(+), 1 deletion(-) > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > index d86718bab67d..7f01412f1a9b 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > @@ -2,6 +2,7 @@ > FADT table parser > > > > Copyright (c) 2016 - 2020, ARM Limited. All rights reserved. > > + Copyright (c) 2021, AMD Incorporated. All rights reserved.
> > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @par Reference(s): > > @@ -127,6 +128,211 @@ ValidateFlags ( > #endif > > } > > > > +/** > > + This function traces FADT Flags field. > > + > > + @param [in] Format Optional format string for tracing the data. > > + @param [in] Ptr Pointer to the start of the buffer. > > +**/ > > +VOID > > +EFIAPI > > +DumpFadtFlags ( > > + IN CONST CHAR16* Format OPTIONAL, > > + IN UINT8* Ptr > > + ) > > +{ > > + if (Format != NULL) { > > + Print (Format, *(UINT32*)Ptr); > > + return; > > + } > > + > > + Print (L"0x%X\n", *(UINT32*)Ptr); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"WBINVD", > > + *(UINT32*)Ptr & BIT0 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"WBINVD_FLUSH", > > + *(UINT32*)Ptr & BIT1 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"PROC_C1", > > + *(UINT32*)Ptr & BIT2 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"P_LVL2_UP", > > + *(UINT32*)Ptr & BIT3 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"PWR_BUTTON", > > + *(UINT32*)Ptr & BIT4 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"SLP_BUTTON", > > + *(UINT32*)Ptr & BIT5 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"FIX_RTC", > > + *(UINT32*)Ptr & BIT6 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"RTC_S4", > > + *(UINT32*)Ptr & BIT7 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"TMR_VAL_EXT", > > + *(UINT32*)Ptr & BIT8 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"DCK_CAP", > > + *(UINT32*)Ptr & BIT9 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"RESET_REG_SUP", > > + *(UINT32*)Ptr & BIT10 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"SEALED_CASE", > > + *(UINT32*)Ptr & BIT11 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"HEADLESS", > > + *(UINT32*)Ptr & BIT12 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"CPU_SW_SLP", > > + *(UINT32*)Ptr & BIT13 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"PCI_EXP_WAK", > > + *(UINT32*)Ptr & BIT14 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"USE_PLATFORM_CLOCK", > > + *(UINT32*)Ptr & BIT15 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"S4_RTC_STS_VALID", > > + *(UINT32*)Ptr & BIT16 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"REMOTE_POWER_ON_CAPABLE", > > + *(UINT32*)Ptr & BIT17 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"FORCE_APIC_CLUSTER_MODEL", > > + *(UINT32*)Ptr & BIT18 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"FORCE_APIC_PHYSICAL_DESTINATION_MODE", > > + *(UINT32*)Ptr & BIT19 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"HW_REDUCED_ACPI", > > + *(UINT32*)Ptr & BIT20 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"LOW_POWER_S0_IDLE_CAPABLE", > > + *(UINT32*)Ptr & BIT21 ? 1 : 0 > > + ); > > + Print ( > > + L"%*a%-*s : %d\n", > > + 4, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - 4), > > + L"Reserved", > > + *(UINT32*)Ptr & BIT22 ? 1 : 0 > > + ); > > +} > > + > > /** > > An ACPI_PARSER array describing the ACPI FADT Table. > > **/ > > @@ -170,7 +376,7 @@ STATIC CONST ACPI_PARSER FadtParser[] = { > {L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL}, > > {L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL}, > > {L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL}, > > - {L"Flags", 4, 112, L"0x%x", NULL, (VOID**)&Flags, ValidateFlags, NULL}, > > + {L"Flags", 4, 112, NULL, DumpFadtFlags, (VOID**)&Flags, ValidateFlags, NULL}, > > {L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL}, > > {L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL}, > > {L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL}, > --------------884D211B1B02EDE838C29F8F Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQogIDwvaGVhZD4NCiAgPGJvZHkgdGV4dD0iIzAwMDAw MCIgYmdjb2xvcj0iI0ZGRkZGRiI+DQogICAgPHA+SGkgQWJkdWwsPC9wPg0KICAgIDxwPlRoYW5r IHlvdSBmb3IgY29udHJpYnV0aW5nIHRoaXMgcGF0Y2guPC9wPg0KICAgIDxwPklzIGl0IHBvc3Np YmxlIHRvIGludHJvZHVjZSBhIG5ldyBmdW5jdGlvbjxzcGFuIHN0eWxlPSJjb2xvcjoNCiAgICAg ICAgIzAwMDAwMDsiPiBQYXJzZUFjcGlGaWVsZEJpdHMgKCkgdGhhdCBjYW4gdHJhY2UgdGhlIGJp dCBmaWVsZHMsDQogICAgICAgIHBsZWFzZT8gSXQgbWF5IGFsc28gYmUgcG9zc2libGUgdG8gcmV1 c2UgdGhlIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij5BQ1BJX1BBUlNFUiBz dHJ1Y3R1cmUgdG8gc3BlY2lmeSB0aGUNCiAgICAgICAgRmllbGQgYml0cy48L3NwYW4+PC9wPg0K ICAgIDxwPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPmUuZy4gS2VlcGluZyB0aGUgbWVh bmluZyBvZiB0aGUNCiAgICAgICAgZXhpc3RpbmcgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjog IzAwMDAwMDsiPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPkFDUElfUEFSU0VSIDwvc3Bh bj5maWVsZCB0aGUgc2FtZSwNCiAgICAgICAgdGhlIG1lYW5pbmcgb2YgYSBmZXcgZmllbGRzIGNh biBiZSBleHRlbmRlZCB0byBhbHNvIGluY2x1ZGUgdGhlDQogICAgICAgIGZvbGxvd2luZy48YnI+ DQogICAgICA8L3NwYW4+PC9wPg0KICAgIDxwPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsi PjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 ICMwMDAwMDA7Ij48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij5pLmUuDQogICAgICAgICAg ICB3aGVuIDwvc3Bhbj48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsi PjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAw MDsiPkFDUElfUEFSU0VSDQogICAgICAgICAgICBpcyB1c2VkIHRvIGRlc2NyaWJlIGEgQml0IEZp ZWxkLCB0aGVuIHRoZSBmb2xsb3dpbmcgd291bGQNCiAgICAgICAgICAgIGFwcGx5Ljxicj4NCiAg ICAgICAgICA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3A+DQogICAgPHA+PHNwYW4gc3R5bGU9ImNv bG9yOiAjMDAwMDAwOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PHNwYW4gc3R5bGU9 ImNvbG9yOiAjMDAwMDAwOyI+QUNQSV9QQVJTRVI8L3NwYW4+PC9zcGFuPi48L3NwYW4+PHNwYW4g c3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+TGVuZ3RoID0mZ3Q7IExlbmd0aCBvZiB0aGUgZmllbGQg Yml0cyBpbg0KICAgICAgICBiaXRzLjwvc3Bhbj48L3A+DQogICAgPHA+PHNwYW4gc3R5bGU9ImNv bG9yOiAjMDAwMDAwOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PC9zcGFuPjxzcGFu IHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPkFD UElfUEFSU0VSPC9zcGFuPjwvc3Bhbj4uPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAw MDsiPk9mZnNldCA9Jmd0OyBGaWVsZCBiaXQgc3RhcnQgcG9zaXRpb24uPGJyPg0KICAgICAgPC9z cGFuPjwvcD4NCiAgICA8cD48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij5XaXRoIHRoaXMg dGhlIEZBRFQgRmxhZyBiaXRzIGNhbiBiZQ0KICAgICAgICBkZXNjcmliZWQgaW4gYW4gQUNQSV9Q QVJTRVIgYXJyYXkgKHNpbWlsYXIgdG8gaG93IHRoZSBBQ1BJIHRhYmxlDQogICAgICAgIGZpZWxk cyBhcmUgZGVzY3JpYmVkKS48YnI+DQogICAgICA8L3NwYW4+PC9wPg0KICAgIDxwPjxzcGFuIHN0 eWxlPSJjb2xvcjogIzAwMDAwMDsiPmUuZy4gPGJyPg0KICAgICAgPC9zcGFuPjwvcD4NCiAgICA8 ZGl2IHN0eWxlPSJjb2xvcjogIzAwMDAwMDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO2ZvbnQt ZmFtaWx5OiBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO2ZvbnQtd2VpZ2h0OiBu b3JtYWw7Zm9udC1zaXplOiAxNnB4O2xpbmUtaGVpZ2h0OiAyMnB4O3doaXRlLXNwYWNlOiBwcmU7 Ij48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPlNUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBGYWR0RmxhZ0JpdHNQYXJzZXI8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMGZm OyI+W108L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+ID0gezwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPiZuYnNwOyB7TDwvc3Bhbj48c3Bh biBzdHlsZT0iY29sb3I6ICNhMzE1MTU7Ij4mcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9y OiAjYTMxNTE1OyI+V0JJTlZEPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2EzMTUxNTsiPjwv c3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNhMzE1MTU7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImNv bG9yOiAjYTMxNTE1OyI+JnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsi PiwgMTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij4sIDA8L3NwYW4+PHNwYW4g c3R5bGU9ImNvbG9yOiAjMDk4NjU4OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAw MDsiPiwgTDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNhMzE1MTU7Ij4mcXVvdDslZCZxdW90 Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij4sIDwvc3Bhbj48c3BhbiBzdHls ZT0iY29sb3I6ICMwMDAwZmY7Ij5OVUxMPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAw MDsiPiwgTlVMTCwgTlVMTCwgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBmZjsiPk5V TEw8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+fSwNCjwvc3Bhbj48ZGl2Pjxz cGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPiZuYnNwOyB7TDwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6ICNhMzE1MTU7Ij4mcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYTMxNTE1 OyI+V0JJTlZEX0ZMVVNIPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2EzMTUxNTsiPjwvc3Bh bj48c3BhbiBzdHlsZT0iY29sb3I6ICNhMzE1MTU7Ij4mcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9 ImNvbG9yOiAjMDAwMDAwOyI+LCA8L3NwYW4+MTxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsi PiwgMTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwOTg2NTg7Ij48L3NwYW4+PHNwYW4gc3R5 bGU9ImNvbG9yOiAjMDAwMDAwOyI+LCBMPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2EzMTUx NTsiPiZxdW90OyVkJnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPiwg PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBmZjsiPk5VTEw8L3NwYW4+PHNwYW4gc3R5 bGU9ImNvbG9yOiAjMDAwMDAwOyI+LCBOVUxMLCBOVUxMLCA8L3NwYW4+PHNwYW4gc3R5bGU9ImNv bG9yOiAjMDAwMGZmOyI+TlVMTDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij59 LA0KPC9zcGFuPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+Jm5ic3A7IHtMPC9z cGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2EzMTUxNTsiPiZxdW90Ozwvc3Bhbj48c3BhbiBzdHls ZT0iY29sb3I6ICNhMzE1MTU7Ij5QUk9DX0MxPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2Ez MTUxNTsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNhMzE1MTU7Ij4mcXVvdDs8L3NwYW4+ PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+LCAxPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xv cjogIzA5ODY1ODsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij4sIDIsPC9z cGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPiBMPC9zcGFuPjxzcGFuIHN0eWxlPSJj b2xvcjogI2EzMTUxNTsiPiZxdW90OyVkJnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjog IzAwMDAwMDsiPiwgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBmZjsiPk5VTEw8L3Nw YW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+LCBOVUxMLCBOVUxMLCA8L3NwYW4+PHNw YW4gc3R5bGU9ImNvbG9yOiAjMDAwMGZmOyI+TlVMTDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 ICMwMDAwMDA7Ij59LDwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48c3BhbiBzdHlsZT0iY29sb3I6 ICMwMDAwMDA7Ij4gIC4uLjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjwv c3Bhbj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPn07DQo8L3NwYW4+PC9kaXY+ PC9kaXY+DQogICAgPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+VGhlJm5ic3A7IDwv c3Bhbj5EdW1wRmFkdEZsYWdzKCkNCiAgICAgIGZ1bmN0aW9uIGNvdWxkIGNhbGwgPHNwYW4gc3R5 bGU9ImNvbG9yOiAjMDAwMDAwOyI+UGFyc2VBY3BpRmllbGRCaXRzDQogICAgICAgICguLi4sPC9z cGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBmZjsiPlBBUlNFUl9QQVJBTVMgKDwvc3Bhbj5G YWR0RmxhZ0JpdHNQYXJzZXIpKS48L3A+DQogICAgPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAw MDAwOyI+UGFyc2VBY3BpRmllbGRCaXRzKCkgY291bGQgdGhlbg0KICAgICAgICBleHRyYWN0ICht YXNrIGFuZCBzaGlmdCkgdGhlIGJpdHMgYW5kIHByaW50IHVzaW5nIHRoZSBwcmludA0KICAgICAg ICBmb3JtYXR0ZXIuPGJyPg0KICAgICAgPC9zcGFuPjwvcD4NCiAgICA8cD5JIHRoaW5rIGludHJv ZHVjaW5nIDxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPlBhcnNlQWNwaUZpZWxkQml0cygp DQogICAgICAgIHdvdWxkIDwvc3Bhbj5hbGxvdyB0aGUgcG9zc2liaWxpdHkgb2YgcmV1c2luZyB0 aGUgY29kZSBhcyB3ZWxsDQogICAgICBhcyBhZGRpbmcgdmFsaWRhdGlvbnMgZm9yIHRoZSBmaWVs ZCBiaXRzLjwvcD4NCiAgICA8cD5QbGVhc2UgZG8gbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55 IHF1ZXJpZXMgYW5kIEkgd291bGQgYmUNCiAgICAgIGhhcHB5IHRvIGhlbHAuPGJyPg0KICAgIDwv cD4NCiAgICBSZWdhcmRzLDxicj4NCiAgICA8YnI+DQogICAgU2FtaSBNdWphd2FyPGJyPg0KICAg IDxwPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjwvc3Bhbj48L3A+DQogICAgPGJyPg0K ICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+T24gMTIvMTEvMjAyMSAwMToyNyBQTSwg QWJkdWwgTGF0ZWVmDQogICAgICBBdHRhciB3cm90ZTo8YnI+DQogICAgPC9kaXY+DQogICAgPGJs b2NrcXVvdGUgdHlwZT0iY2l0ZSIgY2l0ZT0ibWlkOjIwMjExMTEyMTMyNzI1LjEzODEwLTEtYWJk YXR0YXJAYW1kLmNvbSI+DQogICAgICA8cHJlIHdyYXA9IiI+QWRkcyBQcmludEZvcm1hdHRlciBm dW5jdGlvbiB0byB0aGUgRkFEVCBmbGFncyBmaWVsZC4NClByaW50cyBpbmRpdmlzdWFsIGZsYWcg bmFtZSBhbG9uZyB3aXRoIGZsYWcgdmFsdWUuDQoNCkNjOiBSYXkgTmkgPGEgY2xhc3M9Im1vei10 eHQtbGluay1yZmMyMzk2RSIgaHJlZj0ibWFpbHRvOnJheS5uaUBpbnRlbC5jb20iPiZsdDtyYXku bmlAaW50ZWwuY29tJmd0OzwvYT4NCkNjOiBaaGljaGFvIEdhbyA8YSBjbGFzcz0ibW96LXR4dC1s aW5rLXJmYzIzOTZFIiBocmVmPSJtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tIj4mbHQ7emhp Y2hhby5nYW9AaW50ZWwuY29tJmd0OzwvYT4NCkNjOiBTYW1pIE11amF3YXIgPGEgY2xhc3M9Im1v ei10eHQtbGluay1yZmMyMzk2RSIgaHJlZj0ibWFpbHRvOnNhbWkubXVqYXdhckBhcm0uY29tIj4m bHQ7c2FtaS5tdWphd2FyQGFybS5jb20mZ3Q7PC9hPg0KU2lnbmVkLW9mZi1ieTogQWJkdWwgTGF0 ZWVmIEF0dGFyIDxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9Im1haWx0bzph YmRhdHRhckBhbWQuY29tIj4mbHQ7YWJkYXR0YXJAYW1kLmNvbSZndDs8L2E+DQotLS0NCiBTaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFk dFBhcnNlci5jIHwgMjA4ICsrKysrKysrKysrKysrKysrKystDQogMSBmaWxlIGNoYW5nZWQsIDIw NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNl ci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9GYWR0L0ZhZHRQYXJzZXIuYw0KaW5kZXggZDg2NzE4YmFiNjdkLi43ZjAxNDEyZjFhOWIgMTAw NjQ0DQotLS0gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQorKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQpAQCAtMiw2ICsy LDcgQEANCiAgIEZBRFQgdGFibGUgcGFyc2VyDQoNCiANCg0KICAgQ29weXJpZ2h0IChjKSAyMDE2 IC0gMjAyMCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNCisgIENvcHlyaWdo dCAoYykgMjAyMSwgQU1EIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4mbHQ7QlIm Z3Q7DQoNCiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoN CiANCg0KICAgQHBhciBSZWZlcmVuY2Uocyk6DQoNCkBAIC0xMjcsNiArMTI4LDIxMSBAQCBWYWxp ZGF0ZUZsYWdzICgNCiAjZW5kaWYNCg0KIH0NCg0KIA0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rp b24gdHJhY2VzIEZBRFQgRmxhZ3MgZmllbGQuDQoNCisNCg0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0 ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KDQorICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQoNCisq Ki8NCg0KK1ZPSUQNCg0KK0VGSUFQSQ0KDQorRHVtcEZhZHRGbGFncyAoDQoNCisgIElOIENPTlNU IENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KDQorICBJTiBVSU5UOCogICAgICAgIFB0cg0KDQor ICApDQoNCit7DQoNCisgIGlmIChGb3JtYXQgIT0gTlVMTCkgew0KDQorICAgIFByaW50IChGb3Jt YXQsICooVUlOVDMyKilQdHIpOw0KDQorICAgIHJldHVybjsNCg0KKyAgfQ0KDQorDQoNCisgIFBy aW50IChMJnF1b3Q7MHglWFxuJnF1b3Q7LCAqKFVJTlQzMiopUHRyKTsNCg0KKyAgUHJpbnQgKA0K DQorICAgIEwmcXVvdDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZx dW90OyZxdW90OywNCg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQor ICAgICBMJnF1b3Q7V0JJTlZEJnF1b3Q7LA0KDQorICAgICooVUlOVDMyKilQdHIgJmFtcDsgQklU MCA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmElLSpz IDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAgICAo T1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtXQklOVkRfRkxV U0gmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBCSVQxID8gMSA6IDANCg0KKyAg ICApOw0KDQorICBQcmludCAoDQoNCisgICAgTCZxdW90OyUqYSUtKnMgOiAlZFxuJnF1b3Q7LA0K DQorICAgIDQsDQoNCisgICAgJnF1b3Q7JnF1b3Q7LA0KDQorICAgIChPVVRQVVRfRklFTERfQ09M VU1OX1dJRFRIIC0gNCksDQoNCisgICAgTCZxdW90O1BST0NfQzEmcXVvdDssDQoNCisgICAgKihV SU5UMzIqKVB0ciAmYW1wOyBCSVQyID8gMSA6IDANCg0KKyAgICApOw0KDQorICBQcmludCAoDQoN CisgICAgTCZxdW90OyUqYSUtKnMgOiAlZFxuJnF1b3Q7LA0KDQorICAgIDQsDQoNCisgICAgJnF1 b3Q7JnF1b3Q7LA0KDQorICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gNCksDQoNCisg ICAgTCZxdW90O1BfTFZMMl9VUCZxdW90OywNCg0KKyAgICAqKFVJTlQzMiopUHRyICZhbXA7IEJJ VDMgPyAxIDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7JSphJS0q cyA6ICVkXG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoNCisgICAg KE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7UFdSX0JVVFRP TiZxdW90OywNCg0KKyAgICAqKFVJTlQzMiopUHRyICZhbXA7IEJJVDQgPyAxIDogMA0KDQorICAg ICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7JSphJS0qcyA6ICVkXG4mcXVvdDssDQoN CisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoNCisgICAgKE9VVFBVVF9GSUVMRF9DT0xV TU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7U0xQX0JVVFRPTiZxdW90OywNCg0KKyAgICAq KFVJTlQzMiopUHRyICZhbXA7IEJJVDUgPyAxIDogMA0KDQorICAgKTsNCg0KKyAgUHJpbnQgKA0K DQorICAgIEwmcXVvdDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZx dW90OyZxdW90OywNCg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQor ICAgIEwmcXVvdDtGSVhfUlRDJnF1b3Q7LA0KDQorICAgICooVUlOVDMyKilQdHIgJmFtcDsgQklU NiA/IDEgOiAwDQoNCisgICApOw0KDQorICBQcmludCAoDQoNCisgICAgTCZxdW90OyUqYSUtKnMg OiAlZFxuJnF1b3Q7LA0KDQorICAgIDQsDQoNCisgICAgJnF1b3Q7JnF1b3Q7LA0KDQorICAgIChP VVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gNCksDQoNCisgICAgTCZxdW90O1JUQ19TNCZxdW90 OywNCg0KKyAgICAqKFVJTlQzMiopUHRyICZhbXA7IEJJVDcgPyAxIDogMA0KDQorICAgKTsNCg0K KyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0 LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURU SCAtIDQpLA0KDQorICAgIEwmcXVvdDtUTVJfVkFMX0VYVCZxdW90OywNCg0KKyAgICAqKFVJTlQz MiopUHRyICZhbXA7IEJJVDggPyAxIDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAg ICBMJnF1b3Q7JSphJS0qcyA6ICVkXG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsm cXVvdDssDQoNCisgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBM JnF1b3Q7RENLX0NBUCZxdW90OywNCg0KKyAgICAqKFVJTlQzMiopUHRyICZhbXA7IEJJVDkgPyAx IDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7JSphJS0qcyA6ICVk XG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoNCisgICAgKE9VVFBV VF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7UkVTRVRfUkVHX1NVUCZx dW90OywNCg0KKyAgICAqKFVJTlQzMiopUHRyICZhbXA7IEJJVDEwID8gMSA6IDANCg0KKyAgICAp Ow0KDQorICBQcmludCAoDQoNCisgICAgTCZxdW90OyUqYSUtKnMgOiAlZFxuJnF1b3Q7LA0KDQor ICAgIDQsDQoNCisgICAgJnF1b3Q7JnF1b3Q7LA0KDQorICAgIChPVVRQVVRfRklFTERfQ09MVU1O X1dJRFRIIC0gNCksDQoNCisgICAgTCZxdW90O1NFQUxFRF9DQVNFJnF1b3Q7LA0KDQorICAgICoo VUlOVDMyKilQdHIgJmFtcDsgQklUMTEgPyAxIDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgN Cg0KKyAgICBMJnF1b3Q7JSphJS0qcyA6ICVkXG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAm cXVvdDsmcXVvdDssDQoNCisgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0K KyAgICBMJnF1b3Q7SEVBRExFU1MmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBC SVQxMiA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmEl LSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAg ICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtDUFVfU1df U0xQJnF1b3Q7LA0KDQorICAgICooVUlOVDMyKilQdHIgJmFtcDsgQklUMTMgPyAxIDogMA0KDQor ICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7JSphJS0qcyA6ICVkXG4mcXVvdDss DQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoNCisgICAgKE9VVFBVVF9GSUVMRF9D T0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7UENJX0VYUF9XQUsmcXVvdDssDQoNCisg ICAgKihVSU5UMzIqKVB0ciAmYW1wOyBCSVQxNCA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJp bnQgKA0KDQorICAgIEwmcXVvdDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQor ICAgICZxdW90OyZxdW90OywNCg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQp LA0KDQorICAgIEwmcXVvdDtVU0VfUExBVEZPUk1fQ0xPQ0smcXVvdDssDQoNCisgICAgKihVSU5U MzIqKVB0ciAmYW1wOyBCSVQxNSA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQor ICAgIEwmcXVvdDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90 OyZxdW90OywNCg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAg IEwmcXVvdDtTNF9SVENfU1RTX1ZBTElEJnF1b3Q7LA0KDQorICAgICooVUlOVDMyKilQdHIgJmFt cDsgQklUMTYgPyAxIDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7 JSphJS0qcyA6ICVkXG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoN CisgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7UkVN T1RFX1BPV0VSX09OX0NBUEFCTEUmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBC SVQxNyA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmEl LSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAg ICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtGT1JDRV9B UElDX0NMVVNURVJfTU9ERUwmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBCSVQx OCA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmElLSpz IDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAgICAo T1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtGT1JDRV9BUElD X1BIWVNJQ0FMX0RFU1RJTkFUSU9OX01PREUmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAm YW1wOyBCSVQxOSA/IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVv dDslKmElLSpzIDogJWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywN Cg0KKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtI V19SRURVQ0VEX0FDUEkmcXVvdDssDQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBCSVQyMCA/ IDEgOiAwDQoNCisgICAgKTsNCg0KKyAgUHJpbnQgKA0KDQorICAgIEwmcXVvdDslKmElLSpzIDog JWRcbiZxdW90OywNCg0KKyAgICA0LA0KDQorICAgICZxdW90OyZxdW90OywNCg0KKyAgICAoT1VU UFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIDQpLA0KDQorICAgIEwmcXVvdDtMT1dfUE9XRVJfUzBf SURMRV9DQVBBQkxFJnF1b3Q7LA0KDQorICAgICooVUlOVDMyKilQdHIgJmFtcDsgQklUMjEgPyAx IDogMA0KDQorICAgICk7DQoNCisgIFByaW50ICgNCg0KKyAgICBMJnF1b3Q7JSphJS0qcyA6ICVk XG4mcXVvdDssDQoNCisgICAgNCwNCg0KKyAgICAmcXVvdDsmcXVvdDssDQoNCisgICAgKE9VVFBV VF9GSUVMRF9DT0xVTU5fV0lEVEggLSA0KSwNCg0KKyAgICBMJnF1b3Q7UmVzZXJ2ZWQmcXVvdDss DQoNCisgICAgKihVSU5UMzIqKVB0ciAmYW1wOyBCSVQyMiA/IDEgOiAwDQoNCisgICAgKTsNCg0K K30NCg0KKw0KDQogLyoqDQoNCiAgIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEFDUEkgRkFEVCBUYWJsZS4NCg0KICoqLw0KDQpAQCAtMTcwLDcgKzM3Niw3IEBAIFNUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBGYWR0UGFyc2VyW10gPSB7DQogICB7TCZxdW90O0NFTlRVUlkmcXVv dDssIDEsIDEwOCwgTCZxdW90OzB4JXgmcXVvdDssIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K DQogICB7TCZxdW90O0lBUENfQk9PVF9BUkNIJnF1b3Q7LCAyLCAxMDksIEwmcXVvdDsweCV4JnF1 b3Q7LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCg0KICAge0wmcXVvdDtSZXNlcnZlZCZxdW90 OywgMSwgMTExLCBMJnF1b3Q7MHgleCZxdW90OywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQoN Ci0gIHtMJnF1b3Q7RmxhZ3MmcXVvdDssIDQsIDExMiwgTCZxdW90OzB4JXgmcXVvdDssIE5VTEws IChWT0lEKiopJmFtcDtGbGFncywgVmFsaWRhdGVGbGFncywgTlVMTH0sDQoNCisgIHtMJnF1b3Q7 RmxhZ3MmcXVvdDssIDQsIDExMiwgTlVMTCwgRHVtcEZhZHRGbGFncywgKFZPSUQqKikmYW1wO0Zs YWdzLCBWYWxpZGF0ZUZsYWdzLCBOVUxMfSwNCg0KICAge0wmcXVvdDtSRVNFVF9SRUcmcXVvdDss IDEyLCAxMTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KDQogICB7TCZxdW90 O1JFU0VUX1ZBTFVFJnF1b3Q7LCAxLCAxMjgsIEwmcXVvdDsweCV4JnF1b3Q7LCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCg0KICAge0wmcXVvdDtBUk1fQk9PVF9BUkNIJnF1b3Q7LCAyLCAxMjks IEwmcXVvdDsweCV4JnF1b3Q7LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCg0KPC9wcmU+DQog ICAgPC9ibG9ja3F1b3RlPg0KICAgIDxicj4NCiAgPC9ib2R5Pg0KPC9odG1sPg0K --------------884D211B1B02EDE838C29F8F--