* [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers @ 2020-03-25 2:43 Heng Luo 2020-03-25 3:53 ` [edk2-devel] " Ni, Ray 0 siblings, 1 reply; 6+ messages in thread From: Heng Luo @ 2020-03-25 2:43 UTC (permalink / raw) To: devel; +Cc: Dandan Bi, Liming Gao, Eric Dong REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 1. LogoDxe.inf includes a BMP logo in the EFI file, the driver decodes the BMP file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. Cc: Dandan Bi <dandan.bi@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Heng Luo <heng.luo@intel.com> --- Notes: v2: - Add Cc and Remove Change-Id in commit message Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 4 +++- Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc | 6 +++++- Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | 6 +++++- Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | 6 +++++- Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | 13 +++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf | 8 ++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | 10 ++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | Bin 0 -> 183366 bytes Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 ++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin 0 -> 11944 bytes Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 31 +++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 37 +++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 17 files changed, 620 insertions(+), 4 deletions(-) diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc index 23e7c6474a..ea879680ba 100644 --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc @@ -7,7 +7,7 @@ # 1. Present a consolidated and simplified view of all available advanced features to board packages. # 2. Provide a simple, single package build for all available advanced features. # -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -46,6 +46,8 @@ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable |TRUE gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable |TRUE gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE # # This package builds all advanced features. diff --git a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc index 649774edf7..c1bd791525 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc @@ -4,7 +4,7 @@ # This file is intended to be included into another package so advanced features # can be conditionally built by enabling the respective feature via its FeaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -54,3 +54,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE !include UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc +!endif diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf index 57b29a42b9..56f6143650 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf @@ -5,7 +5,7 @@ # can be conditionally included in the flash image by enabling the respective # feature via its FeaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf +!endif diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf index 20d25dd173..7a76b0efc3 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf @@ -5,7 +5,7 @@ # can be conditionally included in the flash image by enabling the respective # feature via its FeaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf +!endif diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc new file mode 100644 index 0000000000..3fd1c3372e --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc @@ -0,0 +1,107 @@ +## @file +# This is a build description file for the Logo advanced feature. +# This file should be included into another package DSC file to build this feature. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] +!ifndef $(PEI_ARCH) + !error "PEI_ARCH must be specified to build this feature!" +!endif +!ifndef $(DXE_ARCH) + !error "DXE_ARCH must be specified to build this feature!" +!endif + +################################################################################ +# +# Packages Section - Make sure PCD can be directly used in a conditional statement +# in a DSC which includes this DSC file. +# +################################################################################ +[Packages] + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec + +################################################################################ +# +# Library Class section - list of all Library Classes needed by this feature. +# +################################################################################ +[LibraryClasses] + ####################################### + # Edk2 Packages + ####################################### + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf + +[LibraryClasses.common.DXE_DRIVER] + ####################################### + # Edk2 Packages + ####################################### + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + +################################################################################ +# +# Component section - list of all components that need built for this feature. +# +# Note: The EDK II DSC file is not used to specify how compiled binary images get placed +# into firmware volume images. This section is just a list of modules to compile from +# source into UEFI-compliant binaries. +# It is the FDF file that contains information on combining binary files into firmware +# volume images, whose concept is beyond UEFI and is described in PI specification. +# There may also be modules listed in this section that are not required in the FDF file, +# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be +# generated for it, but the binary will not be put into any firmware volume. +# +################################################################################ + +# +# Feature DXE Components +# + +# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308 +# is completed. +[Components.X64] + ##################################### + # Logo Feature Package + ##################################### + + # Add library instances here that are not included in package components and should be tested + # in the package build. + + # Add components here that should be included in the package build. +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf +!else + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf +!endif + +################################################################################################### +# +# BuildOptions Section - Define the module specific tool chain flags that should be used as +# the default flags for a module. These flags are appended to any +# standard flags that are defined by the build process. They can be +# applied for any modules or only those modules with the specific +# module style (EDK or EDKII) specified in [Components] section. +# +# For advanced features, it is recommended to enable [BuildOptions] in +# the applicable INF file so it does not affect the whole board package +# build when this DSC file is active. +# +################################################################################################### +[BuildOptions] diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf new file mode 100644 index 0000000000..53c85da716 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf @@ -0,0 +1,13 @@ +## @file +# FDF file for post-memory Logo modules. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf +!else + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf +!endif diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf new file mode 100644 index 0000000000..91cd1c6ec6 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf @@ -0,0 +1,8 @@ +## @file +# FDF file for pre-memory Logo modules. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf new file mode 100644 index 0000000000..a39500e043 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf @@ -0,0 +1,10 @@ +// /** @file +// Platform Logo image definition file. +// +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#image IMG_LOGO Logo.jpg diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf new file mode 100644 index 0000000000..47f1672a4c --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf @@ -0,0 +1,52 @@ +## @file +# The default logo JPEG picture shown on setup screen. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = JpegLogoDxe + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = InitializeLogo +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Logo.jpg + Logo.c + JpegLogo.idf + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + UefiBootServicesTableLib + UefiDriverEntryPoint + DebugLib + +[Protocols] + gEfiHiiDatabaseProtocolGuid ## CONSUMES + gEfiHiiImageExProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES + gEdkiiPlatformLogoProtocolGuid ## PRODUCES + +[Depex] + gEfiHiiDatabaseProtocolGuid AND + gEfiHiiImageExProtocolGuid diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7ec1aa6a852564e262df59929655f7a0f3d5445f GIT binary patch literal 183366 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 Q9t=$LltI8CkSzrM7XaWYkpKVy literal 0 HcmV?d00001 diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c new file mode 100644 index 0000000000..a636b086ca --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c @@ -0,0 +1,153 @@ +/** @file + Logo DXE Driver, install Edkii Platform Logo protocol. + +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include <Uefi.h> +#include <Protocol/HiiDatabase.h> +#include <Protocol/GraphicsOutput.h> +#include <Protocol/HiiImageEx.h> +#include <Protocol/PlatformLogo.h> +#include <Protocol/HiiPackageList.h> +#include <Library/UefiBootServicesTableLib.h> +#include <Library/DebugLib.h> + +typedef struct { + EFI_IMAGE_ID ImageId; + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; + INTN OffsetX; + INTN OffsetY; +} LOGO_ENTRY; + +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; +EFI_HII_HANDLE mHiiHandle; +LOGO_ENTRY mLogos[] = { + { + IMAGE_TOKEN (IMG_LOGO), + EdkiiPlatformLogoDisplayAttributeCenter, + 0, + 0 + } +}; + +/** + Load a platform logo image and return its data and attributes. + + @param This The pointer to this protocol instance. + @param Instance The visible image instance is found. + @param Image Points to the image. + @param Attribute The display attributes of the image returned. + @param OffsetX The X offset of the image regarding the Attribute. + @param OffsetY The Y offset of the image regarding the Attribute. + + @retval EFI_SUCCESS The image was fetched successfully. + @retval EFI_NOT_FOUND The specified image could not be found. +**/ +EFI_STATUS +EFIAPI +GetImage ( + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, + IN OUT UINT32 *Instance, + OUT EFI_IMAGE_INPUT *Image, + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, + OUT INTN *OffsetX, + OUT INTN *OffsetY + ) +{ + UINT32 Current; + if (Instance == NULL || Image == NULL || + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { + return EFI_INVALID_PARAMETER; + } + + Current = *Instance; + if (Current >= ARRAY_SIZE (mLogos)) { + return EFI_NOT_FOUND; + } + + (*Instance)++; + *Attribute = mLogos[Current].Attribute; + *OffsetX = mLogos[Current].OffsetX; + *OffsetY = mLogos[Current].OffsetY; + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current].ImageId, Image); +} + +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { + GetImage +}; + +/** + Entrypoint of this module. + + This function is the entrypoint of this module. It installs the Edkii + Platform Logo protocol. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +InitializeLogo ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; + EFI_HANDLE Handle; + + Status = gBS->LocateProtocol ( + &gEfiHiiDatabaseProtocolGuid, + NULL, + (VOID **) &HiiDatabase + ); + ASSERT_EFI_ERROR (Status); + + Status = gBS->LocateProtocol ( + &gEfiHiiImageExProtocolGuid, + NULL, + (VOID **) &mHiiImageEx + ); + ASSERT_EFI_ERROR (Status); + + // + // Retrieve HII package list from ImageHandle + // + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF resource section\n")); + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status = HiiDatabase->NewPackageList ( + HiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (!EFI_ERROR (Status)) { + Handle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, + NULL + ); + } + return Status; +} diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf new file mode 100644 index 0000000000..fd9c489815 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf @@ -0,0 +1,10 @@ +// /** @file +// Platform Logo image definition file. +// +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#image IMG_LOGO Logo.bmp diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1d099789fa794648b86c046f0320a553954764e GIT binary patch literal 11944 zcmbt)1yozzwr+6OVns`fYjKxAi#rsGl~SZwaQ7xSMH;L{gF|r*PAO2VloTiy0>$0k zA3gV;|D1Erd-skz-pU>sd+dzt`RzUD`sO$1T6a@-zX7CbN~%f#G&D4T%KZm$hXg1B zFwoKe9QOnB{=mY;!otMF!pFhE#wEljBqYEmARr<pCnX{#BPJjqr6MJJKtV}KNk~FX zLq$PDPC-fW=O$<v_y57f!o$MCqaY$6qWE8ryDtDTT)+U@Qw%gR06G~O1{vC24}cMX z20+IEVBF*V`@qG+#=*abiT>yJ*Q5Y642*m1*w}c4#JD&B02(?5CIAZ?hYS~woLK<) zKwQ_-t)Akspn~^1N-8luBd-s&V-KGQy>a&dLsN2V>Zoa0L=^R{AjzqD`Cms_MGXv- z3cJRIUxan{{M^5{K=Dte{}aNWt7QKG^!KYX078s=v}71$06D<t&sga1<Y77-6!?Fg zkmOqR@l8Kl{#s|UYF@;>+y`NB5f6%1VS@y`ZtL(3A7^4K^G=(4UE49w?T_0SDkG($ zN1<Fzi-#BCZuBd*+s^07kU*dt{v81Q>)gk~AQ&^pb*wNQgm&5Qja9BOcG>LPphMn9 z?<LSCzG-E!dB<m>vN(4)gekvjlgi*B7D+O@84|?4X;VNd+d{aB!>#pj!RbY@V{-0M zPKO!E5zd!e2f}z9zFqo?RzF^@dVZHH#ahPeGa{TZpU_*TS1M}tX|w?EK$R@^LkRGw z!2NJxRO`lH|1I4eAlB_T*bxj_KwZ3X{pDi~+h}#8{=KYTznUxyJMG)ThL|nWX9zRy zjlcdeRPG?hqS!3Fs64*K%@X8ETgA5=WaAe}8M~Q$o<KY<;?t0OTsCev^Aip)xZ-&7 zEnwj2m76xl$_MdV+x{H|P#S4>kN+4mZvm5zF6{kGTDNoQ`j$h0&=;2p+-Mm#r;q9a zs>e7`0_!VEV8!}BIp8l(V4*`i?MARK`>JfxT(4<Y*rs-S%vWL0!r{>*Qllw5>&m(( zI+~jN%Lzeg%hnEzdBDc}>Pl=WN<Bm6{2?g>c}Qq3kngxNWsM~L?XtNCxd(st+&s!y zI*EgOrXSDx282+Z^`WkNLp5%?Z5T!MlIZj?Z;RlQ`kXhU046A8Ah5sU<#$$%HnW8p z%i@k_8@M(#J9<$Rv@YyRIr0Kn;u#U;OMJW?y=?POH6LAyzUFU)7%XSboO{-I1(G~! zv&NF8LJDonPp@=)(heT{7*k(r$#v`!oGxJ)Oxu5Xb))L#NmJ3CE%K@T7NbCa*<Y3{ zSkVIUwM1Y;`p{X;$6MH+8+5bvi99ug<GoxS<aAQHwEI+(F1~ZtI!5~r5Mw8E9(Xvd zUrJtY`3-q7^p>6A$y5?)h$gnjn>G8wL;vS%m_wlDvulFiweq(@6$qzti;NKBX@X(6 z;F*7)|CQu!YNVQ8kWB*T9bgj@^m|rs1G~^qc*#HIz1h6Sa<Arafr{L!p+et*ooI{! zMIsQB5uqH1voeu*r4H(0{WgJb5FYpS-5#cI4DNinbgL(w@pbDN{bLdE=I-+BLH<6@ zJDE)m`9pQthFm2ursEo$*$4&bDm7)9a5WK%-_c`s`B)nR5h-@4#bnHT`3_b!JBHow zxyGDgImnY#bM@V-uG(2(e5mx8F$Jwj7So#v1GxWhp>ow^hy!(aeiO^a{iey<$mjMM zx06lB1|z#Qq?(cCl;i<WuAU%C)-koQcf??CdqKwly`#s}-)2PTm^a{pEuoxR=C#gC zs@TJ8#4zz8InTL)<1nfss&!dP`@^_Ya$?Og(x{@I4dURS)bN{D0#kL^gFy7@Ppuue z>&J*p*N`Na;KD0%B22CEY}XdL$O}WaZ+p$(3wB9c1NkA!>=W=o3Y>Cg12TO*zh4fT zSA%uomW@1Gl5o6W|JkMiZ5ZTo2JJN0fGl5hX(@{54lqcN{n;X4wBsu(cO0n?&$k<J zsY3z_`2DcPSkp_>0+NTydjm@!SeX7`a!6K%9sd(~(LGQ<j~Pc%LnEupS5FcO*+U>o zsre5rS}aW)s}@)gnlg{qR7-r<5@SomE6N08vY@4nCv<_`8+xJm_R8a=2_UR+*Mq*) zgafvZ2Ljj8qM30Bw7#k!fg(zOI?QC5TacQR&pROVy2xtX{vDwB8fX<$yY_KhYTFe` z6V!988l(NgW_i1Dq<Y(X2h&?ef9)ZCl@KwL)yUv}nzilJ1F5Dx^?+I4;WOwVxu_e! zrzuo)hf7U<4or;rr^mo2%+RXu<Nno_E-MqUbaW^+bO&JL!B!hoy7_Fpt8o9V3-J8_ zw4D`mw~0ZLxk!!$nvP_poz__f6yn{K9eSf)fm1_~&V59f2MJ6{;xb(dWT$mSzWWSY zCQm-AL8Vn?b<aePPdE_Ih@94d?-qAua5UXMO_vw!e(-22`4Zj<hC-p6eI<pRAWZsS zb8l&H%4Ch-r4mX`tuFn3S!aPU6@1f@eFyM^e+Ki-R(kLYWoNjiUT;*DRZNqc>Boy# zsU_#B%Fd9O{MYP)g>yon?|`q$sUrm@?xDp?`?@DAql@r!<Mk7UpO6q~4Sy#3d1$Mo zTo{ex<xTRjqhMQ<LFSm60Y<O<I#Yc?bNQnTO2}AiAPws`T^iO`IV->R0o83OvX&P$ zoGji5r%^OavL<0l$alF^vw$Ac>|(o{QnE^3Ry`M*a?wj&)+Y_xz4E&rZKb(WmB;aw zz2WL)HB+aw{~%q=@s*V?B2}?&z5{|z(O0%Y)*qu1Oe@xz@Kb9;+uQQs>ULA{b14sy zaP1(hq~*)$ZVP@VRo_`kBo7p+qT5%FOI`_0#d(u0b>c-f3!lIVm8Bphu<-l3=^cEW z5u62#D^7jk95y&DxXZ`h>b@AM7?6OO@AkWH9*FHe`{NFfJvY~84R4JAdIy}U!X?xb z58KO(*<D`X^!;n1{tGhU-gB>3{)H<UNZNvr5pSAGpABrc$VQ~|o6WLIEux|oxV!xb zjD{B6#&qBk=jK*4&@lte0NvuLi)GNxZo1R;cyqG1Yx2L*Yj5>_w5=ykbO6-OoIGc@ z(%$_%q49Wzrf=8f*!ro}6KlofhCpLZjOE->Z=+CSrX^7{Q-i;x1D%xidFpr^$Jo}7 zhmkhq2W29QI%yJysC4Kd7#(ofy_73OyiC@y7PKyszt_yV#^~28xfR208mp_9oae)m zG^dHP_;2xo{tkF$lg1()k*<*C)r*;nOIP~r6ad&0X7agWw6Qp|J-7|syRK*C6c<&+ zm#Ss4Iy0oPXLXj`W+zW(@qwy&V@v`MIHYUdw2LY_DccN?H2Ld{sdDKhz|dyw<cRAV z&Gem_HJhM%1tm_vV=`caujL}+9iW@4YWm2Lc4A9|zke3g6~vK6_RLS|#lj5s277P{ zEBjYSK0StH-KO&ct09341)J0(vgR5_<Qr2HAev&AVpIG+5T^w)kZI{1r_^2bvi*|F zcDnL_KAbl^aCHKjRI~pisA~@sU8+Q)Zt{k)*^a7a<t5S2=hIZiF*eN%GP363fJSp< zcSQrUsjo`|cIV$*k0&&gqjq3!yO`Y-yXx&-)rd!0)UwT<X+mDe9L|a3$;n<F8nDj0 zbt2XTx~4+j0mf`@)4?nrk_$M>$6^uZ(~Lx6J$-xXozJ66o%(}%sgjYss?*LK-pR$? zU%@5+mRbI$3$X*b?*OPJ&08okXrqNVeO-9(A*20F*RkHp?htHs72I{MQs4c}4ZeLk z!TU2Oso2@(aJR1V5X3wDaphN2Mg8&AeG*o(hZS5rss?Xn>Vc!QRV*{#nC_en6@50g zVKc}m%KkiBa%Kt{QGrG>syls$f6@-UE+Ri1de4jMS5)7SA)p|w1fwqa9J?pC#kfXe zGxL@vL}J@>8?yRiHd`zdLL4I1D0c!8#&K9GN42A(py^jwrB9cRGct&$orzhT2;!WU zFfR@C;7Yd<N$aq3lY40;{xgnx$m>jpcgp*rllkD@(_Pi`@^5xz<3~fgiuUvMmtO!- zG@_JmlSGZTlwMjxkgjGKpTrDI<GM9TNySk!(_9<8ixLJ-fOl4;Jxe-K_~6?SQ|fCA z*E1W01uG`y8tZBT$%ZihW`T|#(O)VXN3Df2Vv6Y}gN)k{Lqi{RJTkfP^AqcmkHfpF zGZ67BmA;S*tg0KL&I>z<z?M+HBmf=Y@D3o3@UQ>-JQJE@y4|C7IZj3HX(Bu)fyKW4 zM_Lmkd1?IK<~U-)bUB*haUKu4-dY+nq$>gA`eTk+_~zY3uflwPv_xjVj~sG_Rm17j z!yD==(psSU;~lX5Eeo<UUX#XWbxQEc5$m_VHv<-gC`E&MorI0!o88rPSJXA3VSq4J zW;H2F4k)cZSl4}IWHQt(BebeK3Lg2YPDSNn;WRn5Z+zYE#()7sM==;A4t5VF6vUfT z5#Nbe!Cs!XU6E>gQj+ky-{@C6772nwu!48=I>ERODa#OzoOJI%F%nh}29ST4E3B{( z!Be@Pp{|$+i%1ePIs17uNjh1LQa7t+TJ~;tvm!lzBUU@Qtk!-IOLF7X@!35lin4ES z$q5#7%y*~Dyzc-tsrB`-LA8RNHe{w;>-xn(E#n4-q*6GB-9d2Xq8+iaaIgcL$=X2U zcX?*P$I?ZafVe1pRh)XApuO$7%#e8=$c645;9^~d?uQq2*|kT#QPHdAIX(fQX8KnD zCf&BbL7v!-Oh*ez<X_bjaLgGJ)a|*ozS4@yfc;pPuxt$pvc0|T{2|O(@yGv8-t%Ao z(A(QKxtlrR`3+w9Tn22T5~6kRVKu9q={eu4?G|EZyZcH2dw2o7ypkWS$&rrWGJR-X zYRS2$b8c#yQ0^V%$-s+H-j&OZo~7OFwssk_)$i;vp}qqU;Yd+16{VZ*<`yLu)0=?x z!iWZ=cLBcX1S=~eT~4wz$HN&nm*iRn%L1b-y^{bgc&)ddW&TgNrHAuL9Gn>s7Tz}F z+btRUDT}eU=)~&faeUd>cG=?hCic4iQ=i;ygmP?_c@7yHxTS>kEsut1SGJp9yz!wU z1N?El)P3f9=N&a$L{-pdtjgPjuX;~yQbbtecL0Z?=v$m>rjs|+>m|&cBEv*uaWV_` zt(Dxx=Z!+1V&_iRq9ZnOWVhhRmZXUp^cJmdw+<8-oLRy<nXDAOF<0P<gqj`B63`4f zYueOWi3y&(O%PZXX71K;;_cxG3+GiX4ub2-vVmRhZKXyB<G9}2B3UnCn#s+Rd-omV z#t3rBMY48UydL@618@g;@%uIgGS=+skt=2xm~kl+#w`1Bg62E-VPjZ2ZedRXJ4)`m zQyrg))>f0D%8bF1;Q&eVV-%;U3qox$b%4EDJ~^T77)y3lJZMe(Fr!H9gK2jC+)l!0 z;U+!oA^V=JC|OKjuoxyO@DU==pE$#lZkMjuLYa4N8-?uyEKB>^7}M0iX##x5sV0>| zZ%f8<2UyTC#1X&Y@Ae#F8C|WuR_l!s6J+hu)3t7_Bb3!^lvL|h)z+oUg73~=+Hq%t zzxax+s3$tU$fL3<^<cAX%8XBYWBSmJ;QeWWokbt!Q^;?F6i&r@7IX>)gm5baMD=rm zR!gARP?RN?S&k%wUL!e(eMn}!rZWnY<OMd8$`>!pGD^2c@fIMQ!+vev2pgBI=}L{= zGI$P8+BnG?P*YWN7Cn{4;$?)a7;oqzJ8j5i3@BN@-2r&ZW5d^ftTcV^I~<nMZ|74r z4Nz}%_Et$GmoxyYppA!$ZF6dEY~q>&v+u?7neSLgLF2r?Go+}6Na~w%x_5ODMRP#y zx<vDz<VIHo4)mJMj}3YfHuik+J(QxC`AJArckW5fYjx`!9oYIQSnTLwYu-SYR%yp# zx8+cP?mJo5X<kvB$w}ad3|81-;(|z={y3gw1@t+IRa0g%+$nz3=UG{5m*v~hhpK9) zS0|0Z_7qfdef;D^``z8BBewWOC1tVO_ce``s8#V4&ng$v89g}hO(cvYlS2ZT!nsjv z{(<>dC-X`gy;m<Krvtltp0+*9=^k(i_A#?4@T4ZB_l(5b9P3aASm~B+2fBF@evzP~ zyMi@-XmIp$F!<Bp8IACRTd=TW-_tCXg%KT#ZXujK-nmcl<0)*EZEf?45YKDpTx0`w z8~yxw085D1veo42qdUL|@R8?(m^i`3SD4c@*ea-B=Td=u1jBsNMQFQv880yl&b)}m zI&H5IpmhACHRHVM9SLH}&!XoWHdoc=>6`WJua_!{D<#JR4Rlw?Rrl>NzJjaQB|!+6 zCg-dmdU!yc=R*`GM@Ys9$<KMW!omJaq^|1BXh0WoZ~c*+kQVP#My{%lgyodT*a~AS z4F`*9+-&)9@uC>X0IfR!vjLM!iX1L!!-x)>1C<e}T92CqQIW8iZma$-omU~(K8KxW zh3Wyf6GNX4vv)FWhDB4+*sF&Xgu^55Y&#<ZYANJXUkQ#_LGy^w0Pp#_Qd1Vj6MWnn zx-8jP8E*|Af%h}glpO2}v5^$VmxGvK?^EX>g9kz?CrQMUW`d$GAoEY=%SWK#EvZ7M zCIBm(6h<-gZOO9)qXwr50!%Rnx$dP7cyGNod@G+iI`x580UhbpfS$svDicPk^61h| zVtFY)!p60(YSPS>-Sp%5F+t&nU%T2}W_qC@<zCHFE}+aZE7$fWY*PAvB5EwKyX|OX zZT6!*zwU#Wim8fHQ2hl%bQ=3fJs`x7TnsrXBTTIdL~9<}#CSPR*qCX<2NGiG5X@ok zKxsTpk!%Q3Kg2jUpy-O9;(KTdbgDJ6;scGYaF)0|5j)KC>kVVZm@tsPT$fZ|sC%|^ zEp3;|{SJ9aFWMBU4t)pzYQw+Ou~%#(UI^-R_g4<b()Ng$eE#<G1_J=Tcu`CcLw=|i z%(W()+_Z3V3}4pYWDZUOqS;YAc#u4j-N=95v2ZWoI@EAQeh3W{br!gG3T)y_!&<V{ zvK=34k4d~*!Ul&RbhX7?q+6>NeVKlx<C+46{hpgGe_7%i?Itd5ESh1jz65TYU<B)6 zT(gY^e<qlOg<h|JRBYp%qRMT_7|P>h|JkMrxdWKsYr{6+z>b9$uVZ)A?l9u5Cw(=l zv!gB~*kX;A#1N8Cj4fPR!MLEUwXGm%r4>Ad`r*4Vt)%f`C2ewpa|`$M5%B`BMUZ=2 z!-A=K?rk|78$~${rNUm}Z3H(kw1*-*fEAZr!IN2f{X*~K6>^$T)|@?!FIt||O3~Rc zhA~UA1c=ELq!ZGDoet9`@h%;Ej_FmkN(~8r7Jh+t84f&)Korw>l60WBT&6aT@d-v? zm2;jmw!>$N0vgjF7mNsl_nDja8A@YW8@!wYl~e4q;8#l<QsMfp{}Z#xX$m(J|JS5U z9NrwVzrIEkC^l8@BmPxZ*HgE3F7n5-Ncj!BoI_AyJsD~|g=`+k!oi7?aoWJH>kCbY zQt*{>`kIUDupw3OJ)m&1U$!7ZNBJGdfC(e{^h1bs2hWa=ACI4@?GrNOP@&>tS}U!k zECP-JIm-w7Q<wFa`47u(Ng%${2+TsSB3DJjQaEnpX^G#QC`x_$O#30(=IHDJKU{*E znq2D!Ym%bl!@bUtk=L=Jz{iXJS8YqX_HZ>~epKAz;|Ug{j=46gw#fV9jm#=H2vBaF zqc{VeZ9aJ*O|m(R$qV~<UD$Ra(Af(o@p*x@kC3nQm~)`gF07H6Fvnuk@kGMrT~U&k z63%C~>q0HWFP-P-jXOK}kK%AvQFuPwVJ|_q1I**~ISx@6mv)jFu@9ScjpGp;_667o z830i@PHE!H*EWW9DXClZ>WyakQp5)Cd5K$mk8<r%EMzSPO1~jUAY-R~K*W3(sPjhD zVxxqqw7uKqcjNqR2LJImlNHHtF`z49(d37vOCS8{fQJ5OB_6b&I7-v>eAGhq3z#f1 zbzEj}>%N~(@nsTk>Um>1<za^9C_g)2z5|Hf0aC&7O(9op_MM}qF70B#F>~y!r6<Eu zFJ)uQ+NV9~XYboORJ?;};8GLFN8p5X3yu=2jc?@ut%6*~108P?KmgK4(KXNvKy*pL z!KVf>JP@j!sH8hKV);=S15yWfJ;N=NdgwugYx!YmrXm{I%&fK#TU~qH|A#I-+EImk zpotaM0qAm*kA9VSUPJliV6>b$R`a29w=RLI$OA5((38Q_U-gp8_RqXAGDr*$6Yc<C z!A1waJ_hCOLq4C$cd|81&4q@?@0Us`sWP_DQP8j6WB&i42!RWAzfG%<SZBuF&jbsw zcV=sC<2*U)Zvx6&@HPHB7N9WZj^zAA#F%FC(v2MfoYnCX0cE0ops1{ry$ggR6NA(M z2^+ABiz4||_DBnt_g`NOAgys$^T??YrTCx*9#P7gsj_0wsgw%}Xqr<N{rdWWS!Zg- z4H3qP8xIrMG3{_HBo`K3$qL!mbiXxmITj}Q)l(geS7|Y%c^d&SIuIL<81BIiw@DA8 z(|T*1(_W3_%-s1!Tv(Zw;o%;NU=NOK?F+(uv~UO5Jt(>ZsDe6<Q8=2Ov_9_>gm+$F za=PD_ejXn3u=GHz!=3g65%;*%m5TnFjrTr2{7yPIC{>vXfpr&Gg{;#;sWSJ(HnZR^ zP%n=w&xEgrDM*LrnO*hLBj!dEc|0|899IAuaAz?2JI#nH^vG?g7Q7VS0!wCo<ZO@^ z0KlkE0xHh-H6e^BOp;Ma3_*%o2XMn!Ke~iklAM@k2SzZC`s>rM-2nW4G!i@hv}9Ct ztTN_#K~bl5i+0oZfV#D4EkU_y8{zv-hX`i~&TkhTx_KAAlZMXguacb$Fjxx~I@r=Z z!;NFfic&3^+z5R!85}UuWhO;Z!ZZL394B?me49=eqOuTdHBR9N^pZ}Io)F9_a&P}e zgn0*m<z+k1`T1D%?8}u2lQx2_4pWcD?*${(tPIM4x*LezJmObkESuVMX6#Av2{@)q z;%=G&^S5WtA0KNPuIXV?5iorWd9CAqQc9CGggH)_z|f}T&hTT}HJByBTw4uV&jUGO zfaCO#+6fF2N1bE*vTX<ntB`4Z$oawb9h#`$Qkhrb`F#0x2$B;|F}n}#0G7yKJ)3G~ zGmb;+#!8?Nu^=B8B}~6_koDD8@oQ0;8LxY8$1bzP8AJ7)q+0q1`mE7ui}P`G@`CKS zAGrqxc(``};NHt^BcAj<@?US^gDtZwO|%L454il+QUjo2Eadr{=wMYx3%+4fL<M8r zCgthu_mBMfm0Q^Ou~pM>xd%f#Q$S4T0w{R^-Y(1I8*G={I$F4+ZH`)EHImR;^vulo zqEsVwKrT_obLqcU^i)YhN2z>b>5DYGpEo^I_fD@eR5KjES*2j(i^*^&SAK0jogZLd zJoBPN*F*ocb9&zRk?eQZ`|ljO8R|Sr@l&A2#1FN4$?-j*0040pa7_;kWC_KwXa5Q= z@Jl<Qi2U@Wd4o7@R+h}pWQh7Yf;)%&B@-7nJ`-pAtx4aT(+#=;D6HH83+wW*((szd ze*aj?o#`ShhNSL$KGT)e?==07c$=nVR+_2@j7p|_53UWk4-p<q_m!^m9KMJoar}XP z@k8^U2UL?(EBk)#6yEAQ9WzT6y-e+D=3KHcJ4s13@F)e80xE{-LyIf+zYrt;J=3($ zy=b|?FcP<^U*a1C4!G9G8Z`A<(0`-5rbNgd!!PF>3VpnFG+GFsh#+<(#y@RjrT!NG zp)J9QOI}6gdzgjC&|T5<0AA*gpSSj)kj608I{nqe!>FkP(W0L0QjS{FPf<*qrf95| z_3?R<@yIi0yQi;SnprC>bm|r@Hait6ce$t0sY6q%CU(YfdKEX1ndOgp&H>?!J+uTv z_T$ns^dNh;hR}ivc2`(HlrR%NR}YWhuXxS0Cw20jCM<E;@7&)<6E?4-2r%#G9248& z#6snQt3jV<3;8Q9F3vYgB1LC%%ZPn>#)=Zr%GCX>A`>>euKfT$31(FegZ>YC))nll zr7O;hktJmggtyk>XEX`D$=&X6I>LpwNFMPLGb`G#{)Z?&L+Dfq#-WXYFemoj*{|FR zMK>|)y<Hq8Z!o5pqA0FvVtx%x9oUp-@-IL<YZ|4GW-gvK2CXJjg~uP4Fm%B-0wOEy z>)o*On|^rNdNqi6#-ylP;?MR%u}1`}NOh`nx9G^GfUxsGYrkSgoS*7xt$dJ-bmG`1 zq9e&siyn=8E`=eRJG>G$8U>^t54w<Ui>jz>eUS9XZA3_8ueBvjk&Ce;0@%PgzU!-T zawecNLK5|`Rw}A9eW5D8-SMIPpk6%f0G_g*2NN~bGLK4GxM%KLEp3cipF)r%cziR- z?UR<B-y@PA%#hZ@A2C_#4_!xqUu`zx(HRI2ad)pAN1Y+fGTf7M52ef0<c;ddaZhzT zC_Nho>dXp}tMw&EkEI(K?akLs4D<?eUOtNX+rmaoFky3z#;CL{D$Jp<#aTH)9whMF z;t@rqr(q}>k$5;MgM#vFBOM(KP}+30(<^IfD|;N$Hf|BeE)O=ovxGX=<<B$AZ}a;V z$Rib^)uXhoC;=+7-e-sx3|KJt_9b@ZCSL^Itwf1LXy2Y-tvxli6`j+7j0P8v(r8DK zv5C^AeOHat^{btzSvH)_T-UyHP3=R5`=uffP`~Y4LlViPGn@0nS46(lLl})yAAUYn z@{5}YBdtMfl2&#vHI9=-fYsgieqAdo`od~$n%ifM1<v=21h=~xCNB*e4U&l?5(^my zFsgM-jsErSWEYukS^0s${WHgJ)r9>Pdrr%`#S#>zw#pkeJSqxl<3}9YZ!+bPL018- zL|CSXw=Jxd5|Jdv$2^^QEnG;igadkzVrjG{IsPX<y6t*y%clEIIPN1-s<Qm+b>YoB zfK&XpJgYP(y?wH}QBYiTwPEg@vYnUI+3|6iONY#|7#;n%?^~~e3KQ@Vm(03(%x{&` z?JlMf;H&F#-^{UKR{l#LcCA`Ui|P7r>9f6Dgi&*<TD;JAb;J2(uHil|C?pWGgiRTb ze%K2mqAW1b`G|haSJ9L;HgFoN`KkVT`~m(nT?j;nbDKeiF6-;S@mRVGNqQv1JATd( zk|y!Q7bMIPOXfH|e%4qG7lty)bmsKdc4~{CFkU`QoZ1(g>I&)M-n`$WKrOne+1*Iy z;;on-O@4eBKt|r*U5j$PL{sy}X;8agm%wWJxJLJ3H8H2w9xL}+lAx5+`^J-~*;PlD zNEBK$y?ueKFmDfMaRHk75QLT0UkDYe`a4bYajq@*yEZMA>7vy15*(sgpxX9xkS<_b zli3orj;~h#tF-9v&gQ8OqxW6T-}sAa$hxxEK+qQ{^ikk0P6<&7J5_;)$Crkr$hJMw zmW9b{54MgeThpmSd|T^BNAFAVP;&)5ME!RFY;V}-76P%Ziwdh5qHZcQ$ifuzLe|Eq z4o+(j8-K8KU`}`H9o%%l_{ft)VHlHXa*k7kJvw&G<LG-dGM13zGiyy)gypmOYg5(j zdFLMu&UsSfb|TOJ^g`<^RV2aPVlrA?^8xn!4dh2;6<4F+Mhm%={$r|k;4|rQ-vCM8 zo^s?#hlC^jFnEtFMrq(#Wkn%;XG_OpoKa;T7V%d@{JvxQSAYHAPp~h3JDPsF*KE<- zLY&zbZ~B|@;pUVb0~$u7rh30NfgB#!D4gd5IwlHGpeh|$+D_Po=KASOQ~A$;RBrYG zrH;Ni8|ZS)y=)#*k&(Jz^kl1Pp^^$9zH(09rr)<|%9_U<sPsL#ojdt_;*{7_yU?$# zHsi+rhU7NPo2-T*0<wIsr~lswS&aw-o4l-|F{svG2NhZV*siLZEK1JdNzm|?qS`CD zHel+6UA6W4DtDhN1!$IkY(3f)+|{w^bZ<6eK)IVKAn~U0ra4qL4Zjdw1*o;IGxz@I zE1+&2B8Z8)yvlVG$SAKk(vXONX(+~^-1FXzG0GpvQOe-U6qnNFq;jyCV+yTeeIe?M zF=ax^az!;(Xu=y1W4lajzkVj4Jw0rrkhO|zT`pTp)T0PWUl7}o804c_)wWNu>M)(< zRfP!DM$#G8^^nzII^#Y91Lq)%_wBs@>jOjPYF}0w^Nz~Y{&Y$4YU(#qe7f+oINR%0 zSneZe5EyK0r_Bkn`6XthG59f|Xo6i-FRL}URYdisz<{CaM6zg|r!KO?%wM2;ud7(O z`aPW0(IzOpA8gG_a9lqzr&*EUhPTNSXva#4rR?$b4p1fe;=IM@q(aB=Z!vd|icTm} zGpPUE{#SsKM;tGA5@~9og4;6@QNhN;_xvtc09-i{RkcWm=QxV#4=QOo$!Oo&57%&p z;5H6xtC#a6@RIH0BwLOrK<kt47gWVC$?4D`N^VkJ9hnEFR?h+(XG<oVhLeH)yvt&O zVhP%YJ>qd!{#3X-ES^d2SW*WfLq3MSUMYN@0anc&jB{JhPy4^7n#vy}enEjqrAEFf z@2o#g`S$=uhs@SZJ4+CCl~9$CS9)YiiBZvUdHu?fR|B$d!jfs957AjP*l4u1Y43<m zts;j9&7Sr%wK)}cqIR}m87;s8E6l#@u=eLem3~gSwJGQm@6g$9IrZTBv5fVlb(^rv zbfa98pghse(AQ1jWwfsgSo@fj(bhtD5970DT`wo{?1cW51NqGhA(L5L*XB}}6D8b_ z|Ey&EaWnSu0)OoHzOeFb^KHJ2@Q63ij7Hh3FaeR8MX5^$752g}VhlYLP$>0JnDq14 z*J`h~t*11n9~e(RHlxPXC?WpP3H56~Q)@kyDK$hEd_V&0I4H=5%>9Dx(nv}Aa{_zG z-ge40o9{8bjAT`l*?b9TT<mmOqzLjP6*7|GTs4f$PAYy_Sob(`rl6~XS*MW2mxUJ% zRDL;<#P}IEu9TkKF*}*FJJCMtL?GirpZDi26FrHl8@Rq8Km|4meIi42QhTLtxjLeT zbYtaGJthq(k@oyY@Djp_N9nh8#y`Ybe!^BB_s0I^7_4$#qDn!xhP(2i$JV(qITOp9 zqiioJFug}7!O_NMq#pugIX;83J?9^g%5->9J0*p`IQ6=jC&wtovz|OC2p^U-<2a}; z@A|y{W&-ImypnJAD=1qL_$m>JR{vqs$Y>JCwI3wdBm852pI(`|Zt3YMpw1pVYh5-` z85W<vB~$-U<WG>COBDIVZS+QOO}q$(TQ#Nzn+;_qKSjuf7Lql~0=#qZ@edc3Gqc6w zuDOQuCqf!yLs3jl)SkQ_Ib>6(x83F)+CJVOU}ZPflTLdUhY58TyUP5Jnph|V8JT&$ z0i}|KN97gmPgsbqeyl>!|HIdR%nl1D7z;7re_vb?e}4Epe!tJsl-+wy=_(ZkJg<DT zEvEL4A@nTNj`u2D%c+U6GRm7sMUgfrmEU$uppRs#)bXY)X6JQIyX*1oY*GW}k<IF| zaHNTenY}%}0>Ve_-3}%b8Sv`foIqQrrT`Jps((eiB8}y(b9QWd`zJ*gt7u_b3)YqS z?rft8TYK|738T20zTZ3BgyQdj<yF!!-+<;)C1L4!1c_^;4;S94pF!2d`qPc;WZ|Gm z$=p?mdTXZi?WlOrNz?}Hn0kO+BcXq!w&!+3;C?@ulaBw^a$IrbvICn|4oZOjp7J@Q z6PsD=TOH?YVJq7Ch;FwGx#V1npTHz!^HV!(nfI})F4E_bl>$(?srMvD2piEk-D}A% z<j~7KBcje7v9yRgz`2d^!wHF@gh+a`g5J?Brxf-zvx0$7o%Pb2kw-cp4adkG{%$o& z%dt$oANAhhUA5or11|lcp*|;ww*x8)3VP^z*kA6OpErN=0m))ADYTF@`CT)6la8{? z+f|ZWf991XRNc$TvQ|@weV=#ElM<i8=Qsn6Rr;}-n7EUSp2iVM<FUbMZw_i`22q@? zs6kr|WS5Gg3(NEg_h1YzK}k#5M~9UYqs%eZ=H<yJ9V4^WrSohg!wRa?csHNr89x&m z{(ZLpi2xlAu@RCsm(4Sx`08)mNv&L8r%^9&=KXXiq!o0uc3c)s_3#dasg&~qSB{bV z8g?eJR!y(dC;=%y-V>f<o<nsoO6GqeD%xHE#XYZHRHI(j7p+CCP-Ui*0n$KF#F=ub zCA%k+Ua0Ux^ZzjSk7Pm<?^iY@oAz8#h_IvYeFI$QirdveGUY0{RKDaglnu=1pe(wB z*40*Kn2|Lvni|*l96DD3|Fz|IIHPh>T($*^maO<uC)t6MZ+}Z|-}}*ULjzg&Ifvb) zLrpme#6GUjiz)KUncK_9RK5TE3Hpgo)b5S<asRor(EVPDhSB*eVcNWZeHDMh2Hc(A z^P%@%9RB)C_C;*~yZ4HspGFI0Lk$XKdV!fb#%D{fU>^&ro^xH*#G(uFur6owzMXtg zH^0Zh(t-EmiaBl>`Tcls+HJnZoyQ30vFByCb0O*`%L)nX5D4}#VfMp)J~NWKw40M$ z46D6ToGO~*lIx|Qb75H3?+#X*QJ4HgOgj?bLnD}%eB&%k9(+&PNM-6vy1)%G5g&Xm zBX`D*Z}!UP+%JV68h}7!&Cyuz&u9V}7g4K{@atIECE=zaGy5se=l;E2KAxQQ7dY`s zr3-FihZjNNS)Jd^rnQehLso_+hXq2zxeW8)=t8qkWCCMC<+zh+vXF5M*tI8tPmHQp zcIF<>JxmNil^W1!9({@=N~PdvE&Wi)<0FQR5(FAm=R)N;VG|Ne61+HdUTm1sjn}z{ z8d8p$uq*YdNAFH_9Oyf<DX1=yz4b+kSJ%<hu`MRZnK2M|$Wjau(<cw;r1U#JF<VIN z;&6741o<3%PP@Ksaa4OB3)64J7cnWLei+@k8LxE27ubX-qS4?UH?hja^lyZXxwA;| lp0r(+`K^)Y&AL5T(>;a;tp795|91lNzXsubc7WVX{~rvVe^USe literal 0 HcmV?d00001 diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf new file mode 100644 index 0000000000..5ef93461ee --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf @@ -0,0 +1,52 @@ +## @file +# The default logo bitmap picture shown on setup screen. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = LogoDxe + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = InitializeLogo +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Logo.bmp + Logo.c + Logo.idf + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + UefiBootServicesTableLib + UefiDriverEntryPoint + DebugLib + +[Protocols] + gEfiHiiDatabaseProtocolGuid ## CONSUMES + gEfiHiiImageExProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES + gEdkiiPlatformLogoProtocolGuid ## PRODUCES + +[Depex] + gEfiHiiDatabaseProtocolGuid AND + gEfiHiiImageExProtocolGuid diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec new file mode 100644 index 0000000000..1418eb2137 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec @@ -0,0 +1,31 @@ +## @file +# This package provides advanced feature functionality for LOGO. +# This package should only depend on EDK II Core packages. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x00010017 + PACKAGE_NAME = LogoFeaturePkg + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 + PACKAGE_VERSION = 0.1 + +[Includes] + Include + +[LibraryClasses] + +[Guids] + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, {0x99, 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} + +[PcdsFeatureFlag] + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0xA0000001 + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA0000002 diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc new file mode 100644 index 0000000000..717e074c69 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc @@ -0,0 +1,37 @@ +## @file +# This package provides advanced feature functionality for LOGO. +# This package should only depend on EDK II Core packages. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME = LogoFeaturePkg + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7-1F43D74736CF + PLATFORM_VERSION = 0.1 + DSC_SPECIFICATION = 0x00010005 + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) + SUPPORTED_ARCHITECTURES = IA32|X64 + BUILD_TARGETS = DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER = DEFAULT + +[LibraryClasses] + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf + +[LibraryClasses.common.DXE_DRIVER] + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + +[Components] + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md new file mode 100644 index 0000000000..092a055a2c --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md @@ -0,0 +1,129 @@ +# Overview +* **Feature Name:** Logo +* **PI Phase(s) Supported:** DXE +* **SMM Required?** No + +## Purpose +This feature provides the Logo image and driver that produces EDKII_PLATFORM_LOGO_PROTOCOL: + +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides the image via EDKII_PLATFORM_LOGO_PROTOCOL. +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. + +# High-Level Theory of Operation + +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a logo picture shown on setup screen. + +The Logo file is built in HII package list as EFI resource, the driver uses EFI_HII_DATABASE_PROTOCOL +to the publish HII package list to HII Database and get images via EFI_HII_IMAGE_EX_PROTOCOL. + +## Firmware Volumes + +* PostMemory + +## Modules + +A bulleted list of the modules that make up the feature. + +* LogoDxe +* JpegLogoDxe + +## LogoDxe + +This driver provides a bitmap image via EDKII_PLATFORM_LOGO_PROTOCOL. + +## JpegLogoDxe + +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg data and provide a bitmap image via +EDKII_PLATFORM_LOGO_PROTOCOL. + +## Key Functions + +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which could be used by consumer such as Edk2\MdeModulePkg\Library\BootLogoLib. + +## Configuration + +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable + TRUE: Enable logo feature + FALSE: Disable logo feature +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable + TRUE: Use jpeg logo + FALSE: Use bitmap logo + +## Data Flows + +Architecturally defined data structures and flows for the feature. + +### Data flows of LogoDxe + +```txt +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| +------------ ------------------ ---------------- + | | | + | |--bitmap image data->| + |<---bitmap data--|<-return bitmap data-| +``` + +### Data flows of JpegLogoDxe + +```txt +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | EFI_HII_IMAGE_DECODER_PROTOCOL | +------------ ------------------ ---------------- ---------------------------------- + | | | | + | |---Jpeg Image data-->|---------decode Jpeg------->| + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data----| +``` + +## Control Flows + +Consumer gets image from the logo driver via EDKII_PLATFORM_LOGO_PROTOCOL. + +## Build Flows + +No any special build flows is needed. + +## Test Point Results + +Not available. + +## Functional Exit Criteria + +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a default Intel logo. +* If using jpeg logo, a dex driver which produces EFI_HII_IMAGE_DECODER_PROTOCOL(name is +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode Jpeg data. + +## Feature Enabling Checklist + +### Option 1 + +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to enable the feature. + +```dsc + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE + !include Include/AdvancedFeatures.dsc +``` + +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file + +```fdf +!include Include/PreMemory.fdf +!include Include/PostMemory.fdf +``` + +### Option 2 + +* To use bitmap logo, include "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc file, and include +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf file. + +* To use jpeg logo, include "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform dsc file, and include +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform fdf file. + +## Performance Impact + +* LogoDxe + * EFI size: 180 KB + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 18 milliseconds + +* JpegLogoDxe + * EFI size: 13.6 KB + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 80 milliseconds -- 2.24.0.windows.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers 2020-03-25 2:43 [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers Heng Luo @ 2020-03-25 3:53 ` Ni, Ray 2020-03-25 7:01 ` Heng Luo 0 siblings, 1 reply; 6+ messages in thread From: Ni, Ray @ 2020-03-25 3:53 UTC (permalink / raw) To: devel@edk2.groups.io, Luo, Heng; +Cc: Bi, Dandan, Gao, Liming, Dong, Eric Heng, Can you please remove the <feature-domain> prefix from all paths inside DSC/FDF/INF? We expect PACKAGES_PATH is set to include "edk2-platforms/Features/Intel" and all sub folders inside "edk2-platforms/Features/Intel/". Thanks, Ray > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Heng Luo > Sent: Wednesday, March 25, 2020 10:44 AM > To: devel@edk2.groups.io > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > Subject: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 > > 1. LogoDxe.inf includes a BMP logo in the EFI file, > the driver decodes the BMP file and provide the image > via EDKII_PLATFORM_LOGO_PROTOCOL. > 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, > the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg > file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > Cc: Dandan Bi <dandan.bi@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Eric Dong <eric.dong@intel.com> > Signed-off-by: Heng Luo <heng.luo@intel.com> > --- > > Notes: > v2: > - Add Cc and Remove Change-Id in commit message > > Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 4 +++- > Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc | 6 +++++- > Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | 6 +++++- > Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | 6 +++++- > Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | 107 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++ > Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | 13 +++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf | 8 ++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | 10 ++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | 52 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | Bin 0 -> 183366 bytes > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 153 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++++++++++++++++++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 ++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin 0 -> 11944 bytes > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | 52 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 31 +++++++++++++++++++++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 37 +++++++++++++++++++++++++++++++++++++ > Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | 129 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++++ > 17 files changed, 620 insertions(+), 4 deletions(-) > > diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > index 23e7c6474a..ea879680ba 100644 > --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > @@ -7,7 +7,7 @@ > # 1. Present a consolidated and simplified view of all available advanced features to board packages. > > # 2. Provide a simple, single package build for all available advanced features. > > # > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> > > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > # > > @@ -46,6 +46,8 @@ > gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable |TRUE > > gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable |TRUE > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable |TRUE > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable |TRUE > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > > > # > > # This package builds all advanced features. > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > index 649774edf7..c1bd791525 100644 > --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > @@ -4,7 +4,7 @@ > # This file is intended to be included into another package so advanced features > > # can be conditionally built by enabling the respective feature via its FeaturePCD. > > # > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > # > > @@ -54,3 +54,7 @@ > !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE > > !include UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc > > !endif > > + > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > +!endif > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > index 57b29a42b9..56f6143650 100644 > --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > @@ -5,7 +5,7 @@ > # can be conditionally included in the flash image by enabling the respective > > # feature via its FeaturePCD. > > # > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > # > > @@ -55,3 +55,7 @@ > !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE > > !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf > > !endif > > + > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > +!endif > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > index 20d25dd173..7a76b0efc3 100644 > --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > @@ -5,7 +5,7 @@ > # can be conditionally included in the flash image by enabling the respective > > # feature via its FeaturePCD. > > # > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > # > > @@ -55,3 +55,7 @@ > !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable == TRUE > > !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf > > !endif > > + > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > +!endif > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > new file mode 100644 > index 0000000000..3fd1c3372e > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > @@ -0,0 +1,107 @@ > +## @file > > +# This is a build description file for the Logo advanced feature. > > +# This file should be included into another package DSC file to build this feature. > > +# > > +# The DEC files are used by the utilities that parse DSC and > > +# INF files to generate AutoGen.c and AutoGen.h files > > +# for the build infrastructure. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +################################################################################ > > +# > > +# Defines Section - statements that will be processed to create a Makefile. > > +# > > +################################################################################ > > +[Defines] > > +!ifndef $(PEI_ARCH) > > + !error "PEI_ARCH must be specified to build this feature!" > > +!endif > > +!ifndef $(DXE_ARCH) > > + !error "DXE_ARCH must be specified to build this feature!" > > +!endif > > + > > +################################################################################ > > +# > > +# Packages Section - Make sure PCD can be directly used in a conditional statement > > +# in a DSC which includes this DSC file. > > +# > > +################################################################################ > > +[Packages] > > + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > + > > +################################################################################ > > +# > > +# Library Class section - list of all Library Classes needed by this feature. > > +# > > +################################################################################ > > +[LibraryClasses] > > + ####################################### > > + # Edk2 Packages > > + ####################################### > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf > > + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf > > + > > +[LibraryClasses.common.DXE_DRIVER] > > + ####################################### > > + # Edk2 Packages > > + ####################################### > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > + > > +################################################################################ > > +# > > +# Component section - list of all components that need built for this feature. > > +# > > +# Note: The EDK II DSC file is not used to specify how compiled binary images get placed > > +# into firmware volume images. This section is just a list of modules to compile from > > +# source into UEFI-compliant binaries. > > +# It is the FDF file that contains information on combining binary files into firmware > > +# volume images, whose concept is beyond UEFI and is described in PI specification. > > +# There may also be modules listed in this section that are not required in the FDF file, > > +# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be > > +# generated for it, but the binary will not be put into any firmware volume. > > +# > > +################################################################################ > > + > > +# > > +# Feature DXE Components > > +# > > + > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308 > > +# is completed. > > +[Components.X64] > > + ##################################### > > + # Logo Feature Package > > + ##################################### > > + > > + # Add library instances here that are not included in package components and should be tested > > + # in the package build. > > + > > + # Add components here that should be included in the package build. > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > +!else > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > +!endif > > + > > +################################################################################################### > > +# > > +# BuildOptions Section - Define the module specific tool chain flags that should be used as > > +# the default flags for a module. These flags are appended to any > > +# standard flags that are defined by the build process. They can be > > +# applied for any modules or only those modules with the specific > > +# module style (EDK or EDKII) specified in [Components] section. > > +# > > +# For advanced features, it is recommended to enable [BuildOptions] in > > +# the applicable INF file so it does not affect the whole board package > > +# build when this DSC file is active. > > +# > > +################################################################################################### > > +[BuildOptions] > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > new file mode 100644 > index 0000000000..53c85da716 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > @@ -0,0 +1,13 @@ > +## @file > > +# FDF file for post-memory Logo modules. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > +!else > > + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > +!endif > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > new file mode 100644 > index 0000000000..91cd1c6ec6 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > @@ -0,0 +1,8 @@ > +## @file > > +# FDF file for pre-memory Logo modules. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > new file mode 100644 > index 0000000000..a39500e043 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > @@ -0,0 +1,10 @@ > +// /** @file > > +// Platform Logo image definition file. > > +// > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +// > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > +// > > +// **/ > > + > > +#image IMG_LOGO Logo.jpg > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > new file mode 100644 > index 0000000000..47f1672a4c > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > @@ -0,0 +1,52 @@ > +## @file > > +# The default logo JPEG picture shown on setup screen. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +# > > +## > > + > > +[Defines] > > + INF_VERSION = 0x00010005 > > + BASE_NAME = JpegLogoDxe > > + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF > > + MODULE_TYPE = DXE_DRIVER > > + VERSION_STRING = 1.0 > > + > > + ENTRY_POINT = InitializeLogo > > +# > > +# This flag specifies whether HII resource section is generated into PE image. > > +# > > + UEFI_HII_RESOURCE_SECTION = TRUE > > + > > +# > > +# The following information is for reference only and not required by the build tools. > > +# > > +# VALID_ARCHITECTURES = IA32 X64 > > +# > > + > > +[Sources] > > + Logo.jpg > > + Logo.c > > + JpegLogo.idf > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + > > +[LibraryClasses] > > + UefiBootServicesTableLib > > + UefiDriverEntryPoint > > + DebugLib > > + > > +[Protocols] > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > + > > +[Depex] > > + gEfiHiiDatabaseProtocolGuid AND > > + gEfiHiiImageExProtocolGuid > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > new file mode 100644 > index 0000000000000000000000000000000000000000..7ec1aa6a852564e262df59929655f7a0f3d5445f > GIT binary patch > literal 183366 > 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 > Q9t=$LltI8CkSzrM7XaWYkpKVy > > literal 0 > HcmV?d00001 > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > new file mode 100644 > index 0000000000..a636b086ca > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > @@ -0,0 +1,153 @@ > +/** @file > > + Logo DXE Driver, install Edkii Platform Logo protocol. > > + > > +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > +#include <Uefi.h> > > +#include <Protocol/HiiDatabase.h> > > +#include <Protocol/GraphicsOutput.h> > > +#include <Protocol/HiiImageEx.h> > > +#include <Protocol/PlatformLogo.h> > > +#include <Protocol/HiiPackageList.h> > > +#include <Library/UefiBootServicesTableLib.h> > > +#include <Library/DebugLib.h> > > + > > +typedef struct { > > + EFI_IMAGE_ID ImageId; > > + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; > > + INTN OffsetX; > > + INTN OffsetY; > > +} LOGO_ENTRY; > > + > > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > > +EFI_HII_HANDLE mHiiHandle; > > +LOGO_ENTRY mLogos[] = { > > + { > > + IMAGE_TOKEN (IMG_LOGO), > > + EdkiiPlatformLogoDisplayAttributeCenter, > > + 0, > > + 0 > > + } > > +}; > > + > > +/** > > + Load a platform logo image and return its data and attributes. > > + > > + @param This The pointer to this protocol instance. > > + @param Instance The visible image instance is found. > > + @param Image Points to the image. > > + @param Attribute The display attributes of the image returned. > > + @param OffsetX The X offset of the image regarding the Attribute. > > + @param OffsetY The Y offset of the image regarding the Attribute. > > + > > + @retval EFI_SUCCESS The image was fetched successfully. > > + @retval EFI_NOT_FOUND The specified image could not be found. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +GetImage ( > > + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, > > + IN OUT UINT32 *Instance, > > + OUT EFI_IMAGE_INPUT *Image, > > + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, > > + OUT INTN *OffsetX, > > + OUT INTN *OffsetY > > + ) > > +{ > > + UINT32 Current; > > + if (Instance == NULL || Image == NULL || > > + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + Current = *Instance; > > + if (Current >= ARRAY_SIZE (mLogos)) { > > + return EFI_NOT_FOUND; > > + } > > + > > + (*Instance)++; > > + *Attribute = mLogos[Current].Attribute; > > + *OffsetX = mLogos[Current].OffsetX; > > + *OffsetY = mLogos[Current].OffsetY; > > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current].ImageId, Image); > > +} > > + > > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { > > + GetImage > > +}; > > + > > +/** > > + Entrypoint of this module. > > + > > + This function is the entrypoint of this module. It installs the Edkii > > + Platform Logo protocol. > > + > > + @param ImageHandle The firmware allocated handle for the EFI image. > > + @param SystemTable A pointer to the EFI System Table. > > + > > + @retval EFI_SUCCESS The entry point is executed successfully. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +InitializeLogo ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_SYSTEM_TABLE *SystemTable > > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_HII_PACKAGE_LIST_HEADER *PackageList; > > + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; > > + EFI_HANDLE Handle; > > + > > + Status = gBS->LocateProtocol ( > > + &gEfiHiiDatabaseProtocolGuid, > > + NULL, > > + (VOID **) &HiiDatabase > > + ); > > + ASSERT_EFI_ERROR (Status); > > + > > + Status = gBS->LocateProtocol ( > > + &gEfiHiiImageExProtocolGuid, > > + NULL, > > + (VOID **) &mHiiImageEx > > + ); > > + ASSERT_EFI_ERROR (Status); > > + > > + // > > + // Retrieve HII package list from ImageHandle > > + // > > + Status = gBS->OpenProtocol ( > > + ImageHandle, > > + &gEfiHiiPackageListProtocolGuid, > > + (VOID **) &PackageList, > > + ImageHandle, > > + NULL, > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > + ); > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF resource section\n")); > > + return Status; > > + } > > + > > + // > > + // Publish HII package list to HII Database. > > + // > > + Status = HiiDatabase->NewPackageList ( > > + HiiDatabase, > > + PackageList, > > + NULL, > > + &mHiiHandle > > + ); > > + if (!EFI_ERROR (Status)) { > > + Handle = NULL; > > + Status = gBS->InstallMultipleProtocolInterfaces ( > > + &Handle, > > + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, > > + NULL > > + ); > > + } > > + return Status; > > +} > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > new file mode 100644 > index 0000000000..fd9c489815 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > @@ -0,0 +1,10 @@ > +// /** @file > > +// Platform Logo image definition file. > > +// > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +// > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > +// > > +// **/ > > + > > +#image IMG_LOGO Logo.bmp > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > new file mode 100644 > index 0000000000000000000000000000000000000000..d1d099789fa794648b86c046f0320a553954764e > GIT binary patch > literal 11944 > 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 > > literal 0 > HcmV?d00001 > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > new file mode 100644 > index 0000000000..5ef93461ee > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > @@ -0,0 +1,52 @@ > +## @file > > +# The default logo bitmap picture shown on setup screen. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +# > > +## > > + > > +[Defines] > > + INF_VERSION = 0x00010005 > > + BASE_NAME = LogoDxe > > + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 > > + MODULE_TYPE = DXE_DRIVER > > + VERSION_STRING = 1.0 > > + > > + ENTRY_POINT = InitializeLogo > > +# > > +# This flag specifies whether HII resource section is generated into PE image. > > +# > > + UEFI_HII_RESOURCE_SECTION = TRUE > > + > > +# > > +# The following information is for reference only and not required by the build tools. > > +# > > +# VALID_ARCHITECTURES = IA32 X64 > > +# > > + > > +[Sources] > > + Logo.bmp > > + Logo.c > > + Logo.idf > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + > > +[LibraryClasses] > > + UefiBootServicesTableLib > > + UefiDriverEntryPoint > > + DebugLib > > + > > +[Protocols] > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > + > > +[Depex] > > + gEfiHiiDatabaseProtocolGuid AND > > + gEfiHiiImageExProtocolGuid > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > new file mode 100644 > index 0000000000..1418eb2137 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > @@ -0,0 +1,31 @@ > +## @file > > +# This package provides advanced feature functionality for LOGO. > > +# This package should only depend on EDK II Core packages. > > +# > > +# The DEC files are used by the utilities that parse DSC and > > +# INF files to generate AutoGen.c and AutoGen.h files > > +# for the build infrastructure. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +[Defines] > > + DEC_SPECIFICATION = 0x00010017 > > + PACKAGE_NAME = LogoFeaturePkg > > + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 > > + PACKAGE_VERSION = 0.1 > > + > > +[Includes] > > + Include > > + > > +[LibraryClasses] > > + > > +[Guids] > > + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, {0x99, 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} > > + > > +[PcdsFeatureFlag] > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0xA0000001 > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA0000002 > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > new file mode 100644 > index 0000000000..717e074c69 > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > @@ -0,0 +1,37 @@ > +## @file > > +# This package provides advanced feature functionality for LOGO. > > +# This package should only depend on EDK II Core packages. > > +# > > +# The DEC files are used by the utilities that parse DSC and > > +# INF files to generate AutoGen.c and AutoGen.h files > > +# for the build infrastructure. > > +# > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +[Defines] > > + PLATFORM_NAME = LogoFeaturePkg > > + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7-1F43D74736CF > > + PLATFORM_VERSION = 0.1 > > + DSC_SPECIFICATION = 0x00010005 > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) > > + SUPPORTED_ARCHITECTURES = IA32|X64 > > + BUILD_TARGETS = DEBUG|RELEASE|NOOPT > > + SKUID_IDENTIFIER = DEFAULT > > + > > +[LibraryClasses] > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf > > + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf > > + > > +[LibraryClasses.common.DXE_DRIVER] > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > + > > +[Components] > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > new file mode 100644 > index 0000000000..092a055a2c > --- /dev/null > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > @@ -0,0 +1,129 @@ > +# Overview > > +* **Feature Name:** Logo > > +* **PI Phase(s) Supported:** DXE > > +* **SMM Required?** No > > + > > +## Purpose > > +This feature provides the Logo image and driver that produces EDKII_PLATFORM_LOGO_PROTOCOL: > > + > > +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > + > > +# High-Level Theory of Operation > > + > > +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a logo picture shown on setup screen. > > + > > +The Logo file is built in HII package list as EFI resource, the driver uses EFI_HII_DATABASE_PROTOCOL > > +to the publish HII package list to HII Database and get images via EFI_HII_IMAGE_EX_PROTOCOL. > > + > > +## Firmware Volumes > > + > > +* PostMemory > > + > > +## Modules > > + > > +A bulleted list of the modules that make up the feature. > > + > > +* LogoDxe > > +* JpegLogoDxe > > + > > +## LogoDxe > > + > > +This driver provides a bitmap image via EDKII_PLATFORM_LOGO_PROTOCOL. > > + > > +## JpegLogoDxe > > + > > +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg data and provide a bitmap image via > > +EDKII_PLATFORM_LOGO_PROTOCOL. > > + > > +## Key Functions > > + > > +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which could be used by consumer such as > Edk2\MdeModulePkg\Library\BootLogoLib. > > + > > +## Configuration > > + > > +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > + TRUE: Enable logo feature > > + FALSE: Disable logo feature > > +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > + TRUE: Use jpeg logo > > + FALSE: Use bitmap logo > > + > > +## Data Flows > > + > > +Architecturally defined data structures and flows for the feature. > > + > > +### Data flows of LogoDxe > > + > > +```txt > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| > > +------------ ------------------ ---------------- > > + | | | > > + | |--bitmap image data->| > > + |<---bitmap data--|<-return bitmap data-| > > +``` > > + > > +### Data flows of JpegLogoDxe > > + > > +```txt > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | EFI_HII_IMAGE_DECODER_PROTOCOL | > > +------------ ------------------ ---------------- ---------------------------------- > > + | | | | > > + | |---Jpeg Image data-->|---------decode Jpeg------->| > > + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data----| > > +``` > > + > > +## Control Flows > > + > > +Consumer gets image from the logo driver via EDKII_PLATFORM_LOGO_PROTOCOL. > > + > > +## Build Flows > > + > > +No any special build flows is needed. > > + > > +## Test Point Results > > + > > +Not available. > > + > > +## Functional Exit Criteria > > + > > +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a default Intel logo. > > +* If using jpeg logo, a dex driver which produces EFI_HII_IMAGE_DECODER_PROTOCOL(name is > > +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode Jpeg data. > > + > > +## Feature Enabling Checklist > > + > > +### Option 1 > > + > > +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to enable the feature. > > + > > +```dsc > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable |TRUE > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > + !include Include/AdvancedFeatures.dsc > > +``` > > + > > +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file > > + > > +```fdf > > +!include Include/PreMemory.fdf > > +!include Include/PostMemory.fdf > > +``` > > + > > +### Option 2 > > + > > +* To use bitmap logo, include "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc file, and include > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf file. > > + > > +* To use jpeg logo, include "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform dsc file, and include > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform fdf file. > > + > > +## Performance Impact > > + > > +* LogoDxe > > + * EFI size: 180 KB > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 18 milliseconds > > + > > +* JpegLogoDxe > > + * EFI size: 13.6 KB > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 80 milliseconds > > -- > 2.24.0.windows.2 > > > -=-=-=-=-=-= > Groups.io Links: You receive all messages sent to this group. > > View/Reply Online (#56238): https://edk2.groups.io/g/devel/message/56238 > Mute This Topic: https://groups.io/mt/72533665/1712937 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] > -=-=-=-=-=-= ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers 2020-03-25 3:53 ` [edk2-devel] " Ni, Ray @ 2020-03-25 7:01 ` Heng Luo 2020-03-25 7:17 ` Ni, Ray 0 siblings, 1 reply; 6+ messages in thread From: Heng Luo @ 2020-03-25 7:01 UTC (permalink / raw) To: Ni, Ray, devel@edk2.groups.io; +Cc: Bi, Dandan, Gao, Liming, Dong, Eric Hi Ray, It fails to build with GCC in ubuntu if removing the <feature-domain> prefix from all paths insideDSC/FDF/INF. No problem in windows Active Platform = /home/ilabuser/code/hengluo/edk2-platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc build.py... /home/ilabuser/code/hengluo/edk2-platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc(36): error 000E: File/directory not found in workspace LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf is not found in packages path: /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Platform/Intel /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Silicon/Intel /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Features/Intel - Failed - Build end time: 14:57:21, Mar.25 2020 Build total time: 00:00:00 Best Regards Heng > -----Original Message----- > From: Ni, Ray <ray.ni@intel.com> > Sent: Wednesday, March 25, 2020 11:53 AM > To: devel@edk2.groups.io; Luo, Heng <heng.luo@intel.com> > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; > Dong, Eric <eric.dong@intel.com> > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > provide logo images and drivers > > Heng, > Can you please remove the <feature-domain> prefix from all paths inside > DSC/FDF/INF? > > We expect PACKAGES_PATH is set to include "edk2-platforms/Features/Intel" > and all sub folders inside "edk2-platforms/Features/Intel/". > > Thanks, > Ray > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Heng > Luo > > Sent: Wednesday, March 25, 2020 10:44 AM > > To: devel@edk2.groups.io > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > Subject: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > provide logo images and drivers > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 > > > > 1. LogoDxe.inf includes a BMP logo in the EFI file, > > the driver decodes the BMP file and provide the image > > via EDKII_PLATFORM_LOGO_PROTOCOL. > > 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, > > the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg > > file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > Cc: Dandan Bi <dandan.bi@intel.com> > > Cc: Liming Gao <liming.gao@intel.com> > > Cc: Eric Dong <eric.dong@intel.com> > > Signed-off-by: Heng Luo <heng.luo@intel.com> > > --- > > > > Notes: > > v2: > > - Add Cc and Remove Change-Id in commit message > > > > Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 4 > +++- > > Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc | > 6 +++++- > > Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | 6 > +++++- > > Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | 6 > +++++- > > Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | > 107 > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > +++++++++++++++++++++++++++++++++++++++ > > ++++ > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | > 13 +++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf | > 8 ++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | > 10 ++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | > 52 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | > Bin 0 -> 183366 bytes > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 153 > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > +++++++++++++++++++++++++++++++++++++++ > > ++++++++++++++++++++++++++++++++++++++++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 > ++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin > 0 -> 11944 bytes > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | > 52 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 31 > +++++++++++++++++++++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 37 > +++++++++++++++++++++++++++++++++++++ > > Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | 129 > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > +++++++++++++++++++++++++++++++++++++++ > > ++++++++++++++++++++++++++ > > 17 files changed, 620 insertions(+), 4 deletions(-) > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > index 23e7c6474a..ea879680ba 100644 > > --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > @@ -7,7 +7,7 @@ > > # 1. Present a consolidated and simplified view of all available advanced > features to board packages. > > > > # 2. Provide a simple, single package build for all available advanced > features. > > > > # > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> > > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -46,6 +46,8 @@ > > gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > |TRUE > > > > gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > |TRUE > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > |TRUE > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > |TRUE > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > > > > > > > # > > > > # This package builds all advanced features. > > > > diff --git > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > index 649774edf7..c1bd791525 100644 > > --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > @@ -4,7 +4,7 @@ > > # This file is intended to be included into another package so advanced > features > > > > # can be conditionally built by enabling the respective feature via its > FeaturePCD. > > > > # > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -54,3 +54,7 @@ > > !if > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > == TRUE > > > > !include > UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc > > > > !endif > > > > + > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > +!endif > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > index 57b29a42b9..56f6143650 100644 > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > @@ -5,7 +5,7 @@ > > # can be conditionally included in the flash image by enabling the > respective > > > > # feature via its FeaturePCD. > > > > # > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -55,3 +55,7 @@ > > !if > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > == TRUE > > > > !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf > > > > !endif > > > > + > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > +!endif > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > index 20d25dd173..7a76b0efc3 100644 > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > @@ -5,7 +5,7 @@ > > # can be conditionally included in the flash image by enabling the > respective > > > > # feature via its FeaturePCD. > > > > # > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > # > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > # > > > > @@ -55,3 +55,7 @@ > > !if > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > == TRUE > > > > !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf > > > > !endif > > > > + > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > +!endif > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > new file mode 100644 > > index 0000000000..3fd1c3372e > > --- /dev/null > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > @@ -0,0 +1,107 @@ > > +## @file > > > > +# This is a build description file for the Logo advanced feature. > > > > +# This file should be included into another package DSC file to build this > feature. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > > +############################################################### > ################# > > > > +# > > > > +# Defines Section - statements that will be processed to create a Makefile. > > > > +# > > > > > +############################################################### > ################# > > > > +[Defines] > > > > +!ifndef $(PEI_ARCH) > > > > + !error "PEI_ARCH must be specified to build this feature!" > > > > +!endif > > > > +!ifndef $(DXE_ARCH) > > > > + !error "DXE_ARCH must be specified to build this feature!" > > > > +!endif > > > > + > > > > > +############################################################### > ################# > > > > +# > > > > +# Packages Section - Make sure PCD can be directly used in a conditional > statement > > > > +# in a DSC which includes this DSC file. > > > > +# > > > > > +############################################################### > ################# > > > > +[Packages] > > > > + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > + > > > > > +############################################################### > ################# > > > > +# > > > > +# Library Class section - list of all Library Classes needed by this feature. > > > > +# > > > > > +############################################################### > ################# > > > > +[LibraryClasses] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > + > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > pStr.inf > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > + > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > tServicesTableLib.inf > > > > + > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > oint.inf > > > > + > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > + ####################################### > > > > + # Edk2 Packages > > > > + ####################################### > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > + > > > > > +############################################################### > ################# > > > > +# > > > > +# Component section - list of all components that need built for this > feature. > > > > +# > > > > +# Note: The EDK II DSC file is not used to specify how compiled binary > images get placed > > > > +# into firmware volume images. This section is just a list of modules to > compile from > > > > +# source into UEFI-compliant binaries. > > > > +# It is the FDF file that contains information on combining binary files > into firmware > > > > +# volume images, whose concept is beyond UEFI and is described in PI > specification. > > > > +# There may also be modules listed in this section that are not required > in the FDF file, > > > > +# When a module listed here is excluded from FDF file, then UEFI- > compliant binary will be > > > > +# generated for it, but the binary will not be put into any firmware > volume. > > > > +# > > > > > +############################################################### > ################# > > > > + > > > > +# > > > > +# Feature DXE Components > > > > +# > > > > + > > > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after > https://bugzilla.tianocore.org/show_bug.cgi?id=2308 > > > > +# is completed. > > > > +[Components.X64] > > > > + ##################################### > > > > + # Logo Feature Package > > > > + ##################################### > > > > + > > > > + # Add library instances here that are not included in package > components and should be tested > > > > + # in the package build. > > > > + > > > > + # Add components here that should be included in the package build. > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > +!else > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > +!endif > > > > + > > > > > +############################################################### > #################################### > > > > +# > > > > +# BuildOptions Section - Define the module specific tool chain flags that > should be used as > > > > +# the default flags for a module. These flags are appended to > any > > > > +# standard flags that are defined by the build process. They > can be > > > > +# applied for any modules or only those modules with the > specific > > > > +# module style (EDK or EDKII) specified in [Components] > section. > > > > +# > > > > +# For advanced features, it is recommended to enable > [BuildOptions] in > > > > +# the applicable INF file so it does not affect the whole board > package > > > > +# build when this DSC file is active. > > > > +# > > > > > +############################################################### > #################################### > > > > +[BuildOptions] > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > new file mode 100644 > > index 0000000000..53c85da716 > > --- /dev/null > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > @@ -0,0 +1,13 @@ > > +## @file > > > > +# FDF file for post-memory Logo modules. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > +!else > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > +!endif > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > new file mode 100644 > > index 0000000000..91cd1c6ec6 > > --- /dev/null > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > @@ -0,0 +1,8 @@ > > +## @file > > > > +# FDF file for pre-memory Logo modules. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > new file mode 100644 > > index 0000000000..a39500e043 > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > @@ -0,0 +1,10 @@ > > +// /** @file > > > > +// Platform Logo image definition file. > > > > +// > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +// > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +// > > > > +// **/ > > > > + > > > > +#image IMG_LOGO Logo.jpg > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > new file mode 100644 > > index 0000000000..47f1672a4c > > --- /dev/null > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > @@ -0,0 +1,52 @@ > > +## @file > > > > +# The default logo JPEG picture shown on setup screen. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION = 0x00010005 > > > > + BASE_NAME = JpegLogoDxe > > > > + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF > > > > + MODULE_TYPE = DXE_DRIVER > > > > + VERSION_STRING = 1.0 > > > > + > > > > + ENTRY_POINT = InitializeLogo > > > > +# > > > > +# This flag specifies whether HII resource section is generated into PE > image. > > > > +# > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > + > > > > +# > > > > +# The following information is for reference only and not required by the > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > +# > > > > + > > > > +[Sources] > > > > + Logo.jpg > > > > + Logo.c > > > > + JpegLogo.idf > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + > > > > +[LibraryClasses] > > > > + UefiBootServicesTableLib > > > > + UefiDriverEntryPoint > > > > + DebugLib > > > > + > > > > +[Protocols] > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > + > > > > +[Depex] > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > + gEfiHiiImageExProtocolGuid > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > new file mode 100644 > > index > 0000000000000000000000000000000000000000..7ec1aa6a852564e262df599 > 29655f7a0f3d5445f > > GIT binary patch > > literal 183366 > > zcmeI53HVo2{>L- > Jm@&3csA!XsrHq!LrXr$}sH8=bnxa%BMny_PD@D^Xt&}NI5uvfP > > zOj2oNv@nuXBQ#^OWNI42{Qs~2|31%s?sM+<o_o&SzW3hm`94p-?sD!~- > skha_bi{K > > z=~b7%^@B41_p8spv- > o%ZVP(p^$^VCyIfcJv${f%A6MtIf|Ns5}1@p%sU=T0}WEX+M > > z4?q0mlTSY9oO7BqY0|D;yDnY2bno8%mRoM=- > @pHzciuT<$dKW~hmRaN@}Y+wdi2pp > > zr%s(ZYu2nMo_J#3ym^m3_So-!_d70*8#nHO2ObzYbm*^t{p;IqyRCQc- > sEuo_19l} > > z?X|62w{F&~*##F|P`PsDqmMp1yC|8O8w4Uj;D{rRs8ORv^XAQa^yqQ-- > FL$sc(ios > > > z(sk?BZQs8A%P+tD?|=XMKS})#9Xj;MC!cKIym`fn6$=+Ggw7Coz<>c=yLP?u$}4~I > > > zi(gc&T9pb%(r}ZBL7=z@@Byk_yLQ{QZST74E=2vc*IwJXbLV&8eU}v5qABP5@4 > w%( > > zXU`jNyz%6dPmUfvny+okmM!^wA9Ktx#f8_DZV- > ?l@S`97sBYc53@m5PoQd@Q?QegJ > > > zh7T#u<%=)A`17CtykyCeF=NKuc;k)r>eVx2V2Om7Td^X*K<?*1|9Q`zJ^A*%_10 > Ve > > z{`bFAOr3<P#$bE*?%m6lEqnOkhZ&GxbkRk}9d}%;y<jpgWdu$+<&+z4xMA|- > $#1^- > > zCX=s(q&(xrFhza!)mK?)>ej6r1Kl6|z*?g(WjQi!4~_ueL6$m4jT*(+EXl=|jI+?Q > > > z`rmx>&8k(a#*Q7^zJ2>DRjLH<81rN)A%Lhb8Dw&_fB$|@*)lgmBk=dX|NX@m > Ut|-9 > > > zWukKB%9WCcnYQ{P(4awsM;>|P{rBGwEodf#APDT*wd<*;p6b)5&)H|6?cZA_ > MNSc@ > > > zUcEZ6=np^qFo+D9XW~JCHR`9Ie%f#|r<^O$tg>axGALzxA|8P<xkiQn!&)>JZoTz > Z > > zR)h{a3^h&j%MSwV6<%}AHH#N7Hk%ZY5hlTmY;K- > ;=9&2s%93meAH;j_y_XJ6P<%{L > > zF(UB62Oo?dKmL+SE- > `w2*&_65r=3Q}vDhA?aG0!%hrm}~eZ@i$yTd1*cw)9Bv(#$K > > zjAPE6Ip2Q!ZSjP~l$;y_DBP}Dvu4nsLG*j6iF(T0`^#Vc64ME@iJu%9QdSZQ{J;I} > > zZ!s~$iY?``n(yk>s#OacqLfL8sZP- > lVCw{8qEDM|u}@*^PB`I&Ns}gJ&aA0ul3HQ~ > > z@7S>e8_$|GYo<_ib5<o3mDx=E$3Om2Vj^am8w3Hgk+DmyRH;(VSdfzDG- > }icgoAX9 > > > zd8ULBU~K{Ac8uoO2uq11XT2H~DpZ(1e}2|wisgE=^)_tSfU?l))vH&oT!}w{mtTJQ > > zrI%h}NeZ=gv=>kwTd-gOu5#wior{+b44<b>n>J<26lO- > ~++uQw(F8y2F|p;x2yyM& > > > zweP+69_CI54jjljK5^F{%@9DwkBU+L3G+fg&1T=eeQ|eI`21N<SigQfG=VjP2M_ > Mm > > > zs~3JeFymrP9`98Nto~618*`}X;>@aP)240Ow7Kb~n{L1T_F=<@O_(rY_UzfuJoC) > * > > z<;yp2+{g^;U;p}7_$FsG2i}Tz+;NBbT<Ws&$3Olt>o#fYbo31vHY3~cu5aJIc!k1F > > z;i#jI(rsOF)ANnsErCC)>#n;FCw16gV-mG>>(<iIrZ{-;Aj1#*KNPnkvQqk4XPvca > > z)21|#kq_S={_qE^l@VPW$K`&s!$+1cEFX8=&|&hA;s4&fd(+SnG1Y- > Ff9KAfQFzV@ > > zHIlC<- > b9NyA^P;wPnpW01k1ONscZ7hPhpAJ5i<tH*DK!?JemCSpZ|=B9mUF)w=TOR > > > zs9dHH{32HA*kg}n3YL7QFhzxf82gxgE0x}7kWj5!wX3hbnzt4@rK~CCV>_5uFc > WFm > > > zu%QYFxldEEV#RmgeK#>OGFM`4bKt;%Od^a6rjXKg<dH|>4U!Ki^!)haj}z;}m<nR) > > z8&%AZm}L6#GtM{zUBsB+b!N+_ko^KyJ`-5;%yf^0sXPO}4jno${ruCP{`8;!{KtuZ > > zhK@^?m3aA%d(nUiDI?)lty&o~x- > diw@GOhZy#3e%dj9$6v#48DYOG|qPE?DSUYop} > > > zS;;5X%ujzxR4(%?J_4BhvoVU!L$++jON5mzTC|91DHW|1cGgZh>7?R|ps7J21Xv > Ve > > > zV+AutRF$&gRwdu8WJfO!BVzWoag=R#lnRj`rPmm}FqN1%apJaZ+hQ6iMVKwo > Oj3$t > > zh- > zJY@x_sokvA<)cXPjG9|H9ZJWAwB)V~)kS`^<bCL}k}G0p&vI#oo`B|@!K95}Gd > > > zPVgz6DwwosN8pD){2}(mXhz}EDkOuVeLQD;#Gp7rgi#l%Q>RYaWy{nr90It5xc~ > n9 > > zliZ$`P&iL~WV<0MKN~EbGq5qE({PfWv8Pd>LMiB-cixfkCGJ~!;v))>;o-u_bo%t^ > > z#_wOoxD;u1Q6M24Jo*OV#Ys1Z-0%_q3A$}}rzbRO{rdGI?OT&sh7n- > >2YW`$G~A*R > > z)0KSi5o<dZUcx|xx-VObM%OgM<cYKDd@-@nNI- > iw2Yh7OxMj<hFl0oX1CyUP`_tr| > > z2LyOs<CFu>C-LbR<baPuhYk%xMy3hIHZ2cqNw5tp<M- > >=FAg7QS?42bVuubL3e3k@ > > > zvu0t=lVDGpqH=`*_H;M|i*Ua?(|lw<f@llD$jFf6=9_QMm2jBG6bS)d>F8(TdL?{x > > > ziA?j6=(oYhh`q3})Gm_n=DFCP{p@FW(G25ZFS~ri<bVJE{Q>w0T!j3~vsjq66%~Q > < > > > z<;#y4F(Q~fW_J0A7vBJ6#AxxVtF9_)cbURV0s(BL8NcC?RZB`U%10Ks0yrXLkFryz > > zP9-4?rjhADfGv`C?b@wdw@#6j8Rg@B_uZ%1KxZ<ufRhd(EyY^k!- > |*!z6(BC<l|3% > > > z@{<4#8BnMzML95SP7?ww_~1@N!pbc25nraxub#>=D&lGC7E_m!Mu1&Qq8 > $~K+syG1 > > > zOVW=%`lw)Aye^Xd=%bG=X$dfmPagu8UV16^3xd#Qj*lHXb`+W*KV=Q4apT7 > 6>kU&Q > > > zgFqP+T99Yw8f@nH_{uA<$O$OiC03N_c!NNi5x^jVaAt)0Ky<Uk$K#GWPRmgh( > H{sc > > zm*&1Obu$Q92r#7@K79C$88b2j2)l>E=TCCV*1z#Xm7&fxRRsZ- > M>2#1uHGaB6mFrj > > zl%b}Xsu~2cg#ccN)fHC1_~Hw*rkbt(HMPwa0{H(IzJQX`2OoSeTdgy- > H3(!20YbS+ > > z2<W_pg)$-Rv(-9NTZ2Hh5Fm<;lXQ|}qm7fTo;9`290Ej{mk`i- > 3k3k;j%BWarosk+ > > > z3?YDyjgxeeW1_TYs9mP227xRhfT@&(gU(wQUU*>^8))im5XcY$#EW;5&g&RQ > tQl&Q > > > zsj5LBqX;Oftr~6BjP|docD4{ubk)utWwF|Yy25$qork(Uj^zoKtym4zYt?^&m8tL= > > > zp<W6pGac9q?~54Y4<0;t{`~p)U?gZDAqep<h5jUeQE6VaY85`lCr_R{Y}l~gy?bAF > > > z*=1;SEB2R31_H+%bBxyj)p;G4ssyJ_7%`j`;CmBS3{D^N*IaXrVl|xg_dOmoXpmyI > > > zLNZ+=wJKGr2ss2eML()dn>LJC;KlOg%L%af`RAX1<?(yrg%<)8;e4cCy?P@@j(q*~ > > > z*8}*+rczHn`DBL<9gaQrSZAKG9`lkUEQqhGLqg!8XP&BnYe4NQt0dsP7b}25<~R` > J > > > zQ&>=iuax=7w}!>HS6_YA`GWH8zQBFQnBm%MuYKc<H++jwNkE;KEn9ZujW<F > Tp}V6x > > zMVN7oh$ZsDg9oY7`|rOm&)M>$i1)S$6DCxuR7svVnY- > Yl0_HvU+>=awD1|rw?%lh+ > > > zYE`m)#FyIk?c2Rzkz5bJN8X162M*k|YnLS3z_*Ca(Wp_Q2*rs}G%+RJ!MhdtXf*_ > 5 > > z!`ZWEpLNz*5mqcfR-;FcRsoi%a{)3B@Q81$$r9va*|KFBl&W- > 7!8E#jJonsl6NoU5 > > > zb#NrHmYAZtnP}ml#YgKAG+q`jUd(qkfapf@$aBv<SFjVE7r*@S%fQPWT9srx?< > }|A > > > zajEeUp$*9nEk53I%PnDi@)ztfuZsr`9AMlPX81a8+&HhyxgLOzc5bh|_8RXcE$NL > U > > > zF?F`<;B~Nc>C#Bbl4pW%bFT_Gua^`bS^QC4{dPhm94qqi_~VaXv}lp=YyzjO*D* > Yn > > > z%ZB?dEJl@DUcE4UBxfeP41>eGF5K1jy&{>Z*^MRamv25H6R^hh*=L{GB}xuTh > mVX& > > zB3VmO;UkRLuwjD)_E>KbC- > jt4PSFw}m3dZ3K3Ywt3u@G;p;fmqiU0c7zxqPWTOv#m > > zD$hcB-)dM1N{5du#VcYWPv*- > <J^{}@`>Z^ZxbN~^P#+&Mzx(dH?|iEi2_GqiaWzh{ > > zlG!*`84g{4{q-uG3Y><W&9A@y+816cL5c9OTD58_BBuhHFCWK`AFq;6+- > Z=3+O=!@ > > zN)f!+ym_-qWuoGvRTeYKNEV>v4OFpwY|^BOJd==jd- > Uj`0<V>(MEIzvRIGxVoR5J6 > > > zeX10#m1geTxhl(s&6+h+%r;s+QYdeXZr!?tly>>!pMLtOZ|ka8uP)Cd<X!fCeCuE* > > > zC<Q*Uv_e>0yU8IBBz(lXepFxKkd?$kh2nq^qdBIl!3E?W}BfD0+}UXSnHyVtj > M > > > zXkB_e9?5kC#<vc3f>Pk)O*h?Sw>SKOgpa7wh0i~H4(g@~Om)?DlVai{?cKU{YlR9 > G > > zA`yNe6U%k81XA>bg-0SkRasNAYgh_=oHJ*R- > Co@Tw7&#BRxkZktXXw4x6|W?f6}B$ > > zty{OQRjbyir=E(!KkBJft5#*DrFrw_L}hyM#TOO#G4H?seszheT)DDc2j7GE_(;)2 > > > zu3?U^UUS8izR~60dFLI)tb!#&*$JfxUu^9JrNGAkifU{fUVQPzTCT>>gSAmrKR~N > o > > zF=z{WC=hndnl+Nlbt4s`A}+~IxD_iODT}$D`kJsJJA6a2gTG={!IBZSPk>Q=ntML7 > > z6)Q);eYbn}?z- > T!M(55)euZWK_U+s27DW0kUAnlJDG1caQj%_NT1$U%^AWi4MI5av > > > z>ArpY<h_8lye?>3>94rr3V8*DySe8hD$PQZ<)^`3m|AmoDgdGC)TyJ@v(Chr^`R > GP > > zH- > tqb3>lmW6p!)!YiHtnkN_X40}}*vXcg=4n+)AldAl$&_01$q0{A7bfN(eWe8k{a > > zXtMk?z{jzC`SOxD!tUaj39=F!rk8n^r5J0Y6HAI<-&r!jl+s;2uPeTM<ed=7@-k+j > > z7$t?o$9mj%EoJA<osksem5Je_fQ+IZuPua38- > *NvPdj(+Y(K7Yz<RH5o{9<j_3PKF > > > zRV&5B?qoP6P^qw$#+Q%eU%!5RlBwtEl@eY@vNh>Dsb@pP4NHVq3?BtBbp > Z*mJN(#V > > zk9o<J`}+Fz>xCK?@icNi(iYrMpnah=U~r?v6>`8jCL}nlS{KaRzKBjj$RgyA>xv)g > > z<r&&{?Ix%kq{m- > }E+7FMfT$=*+Mq=>60`dy%t0J{wCY2MbKkL|jfvL*euP4rS~Gs| > > > z%G|n65n%xIeO6ce3?GI5(&eMpdJ)Tg2^$>A1tvZ|QZ6BhAAkID0bbox%#_%W > mA682 > > > z_wvgx_bu`8!w;9_5b~DcqX3{TAi8|?eFHn?VfE_OLiLJ!8Y>^IrZFC1Oy~qb_ZZLu > > > zQ$|JMAy&^|y5eWPkAisU@^Rt9g+dOJQ`Aa}OF*IY1o%jan3=dYOeH9}Z?Tdr)L > iit > > > zC0@%Jmpf1U%K7J?ub5kaWQLCdXu5#t@=>lZV|TiB(7%6wp?bwVO@@!O5 > mdKr+a{o) > > > zb&9LfU|4P1v`Jo2toDz(;%B~(LTBmnQEPdhRgPdn71L9R@sawUbka$zEemL?pJ > Jg? > > zvu4czIN(rPUdpIZqXJ~B_=w@70F*8ux_rcQvb?*Uce{4&ihg*)KZ!L{l6<6JP{Bnp > > z-U*1- > @n8P(7Zj6({`Ecm&2N4qFXj2?pZCoqZ~|TNGv7y{v$XigVyTw)zED;&rxFc^ > > zg!zb6vofQ#T`NGuY+aWcsQU_;2&X%C?9k0qJ-y+hfR!#FT6_$ktS$&c0;j3sqt!c> > > zC- > Y!!zvGTOgf5n!`dV0^co4uNpS)1}uCDl*@1r0UT6`qDweWZfPgBT8#ub5Gexcn; > > zFcDkeRSr-Zm-kEEx^- > 3Z36RF{Q2<RB5G_77XwX33(P_AwLO#+*cwKw@?YD#BL*Npj > > > zm*uAfuaOrN%sNJ1sC8FY{LJ@J=qW8ewrtr_cszxt>Et8gO3a<W`;u+jwpF2nm4 > ={- > > z@_vcWC9>h8&`r94Xz>y4N_j`8;cml*4Fyc>)8yB4?4qp$28zD>^#w6RIaX`ZC- > )J7 > > zzZ9WjQJw0FpZPut-L1t(cEp6oQ+Rsz*=Ku6SJC-M#fZTd%os##- > _X}7F3Ub%D22Ih > > > z_$Z*K3y2mU%atpaLIMg^lEe;310U%x!T<?%Ryk#1M_tw2*DQU&fB}N!L~^Pte > &+iq > > > zbiEcIaX6g*{YPA!d5Km^_(=6utXLs*gv#kd4?X17G~qfcx^iEv_)8ZaiR9GqQGihw > > z5G_7Zmahjh6}gHp4PLVZK%A%P;Uhao0iw5~M8_7evqh3)l=&q%<A;{8^^(Vf- > O?35 > > z^L-ThNSBXV`m4;9SnUk?>)pGzP- > n?0w$c(oN)I2Y<bC(uCuxY+Ep>mhzP6C+T#!I2 > > > z+%kL&35YHqvCi`n75DW>A_aHq)XAN**A=3f3xGIJQ^iNTK%=4R)ex`ixQJ9#YCY > nJ > > > zBjoNMXUv%41SgVX!$$!|T|jjC$P~s)RNU9KcFlx_*r$9E+&Oz)A()H(p!*<Ie587~ > > > zu??`+I&k1Xchd@988Kpn7f@VhGgKu4QNf(OF6xRO>AkWNu1gx?zEwK@bF@ > ?fbagL< > > zF0f7)ELh+M- > 0MoOUcCxtVqHudAF0)>S+l&_;&ol!hbogzd1NKL5lY|+aLe#f08JMV > > z- > R~od0Qf}m5*6Y4%P+qyR4>3OAt!`vC8q=gkra_aK4Kl_8+60nUUjeLW5<qlKW<; > q > > z)x?uvYu(ZnKl6RG`@%ZV<s- > 1Ghe3zAnC1F*q9g$hVbtl*w?IAsOCcX=JL6BGQ+!XS > > > zPMs<N&3TKMERx7XjFzJf>yvdpYAsgKO~|JcZTGP*AOZO3Yw_w7r;t8HCr_U2% > uRmG > > > zrk)!R=aqEw5yy1$QKh@p#05|f<2Z5RM0XDMl`&(+I3WsotSf$L`#ut($wo%yz<2 > ve > > z7mxsa)QS?t1_bgJte4TWk- > Xd8a19$aOkPkr`AD7RlySF|D;+y_lsDGCOPq8`)Jq&b > > > zNHi$yOcW1v#V>7qoHlJ*L9`2AWON}Pj{%x4AOZM@%{$=>3)ZmUMGWK>ds9 > d@Zrr$n > > z85X>V;*js)A+>zO!ckZ834=- > jF3IWi>C+2>W?jUkfaF=NTe{+xDn4Qpw|n<)2~ff< > > > z6=(0dfCS(p9mFV9sGIyWKnM>)@DTe+o~`q)SKL^qIHi`4RFXL6&gS?YBMj<pTA3 > tD > > > zLjSNJ;6y3Rv99=~ijP`*d34amjT?Qj(gh?K9~t53n)30n^ZmHntwWv6H}tk3u_|$P > > > z(#%J#S%B4c%)@QOd=KW%ohu;bJPi{K&{?#u_@#u8DC+<I_rG@nqH;{M6ldE > D9_s=U > > zjE@w3=bd+|)Y+Ma=u0XZJ9wodX1eo1-(!XuDuD^o%ts*A+SvgU- > }$mrLJ0IA84|zp > > > z$}7&qfsb{?FD5=NUApvkh2M}NLuSsLNib8bk(e!wD&u@zKv3b3R~#MGg1y5=B > )VI6 > > z- > P8}(ty{;ca>a@j1qQKH#cn?FVb!y;Q!46Xq@0hsvjE+3rhGmgiL+c?@r#L%wqV3} > > z!1%vHg$f0!;k>8|h;M~?dpPrV9;1Ha`?w?li+<a;Z(q4`B}%7^P6KF;S(&5auDJN0 > > zay~Lvk-+7?#m=l&Fb+_XcugmiIpGGJ{Ttv|SNyWe$0bXasNkauh`X1CD- > u4^ebh=w > > zpYSOx#`abP8PcSjkJJ!P8d?Bi#G%-BD;ZNx$*8qMhYnh~xfAP(Uv~M3mv49T- > B)x0 > > z@$G#HA1R%^MO_i{Em1203IlEsyso65k8- > 0$H!{pMyc+9uUE<1v;R;qEUJt5V*A>5v > > > z@{yUo;#fi#5O)^~SLA%8kBFC~wQDcrALbM<Pm0DzmMo>8kL}yH*8(Jf%@hH > h;hk40 > > zefsoK;hk3+UGd8zADKC- > FGuSF;?*zqbzeTxHEb{1=@UCZ$4qO%pL(XBk1T3w&7*af > > > zbSxg>C(x@DynKZ58=xzGS>)sB(WAXyNAByofcVl!g^yIDTeof!r7Yi4bQ3^E^=YG > x > > zQu_HwRoP`$M*~GxyLDOz5)HjD- > dT0UFLQh(K$4bvp)Mf4U9ZSTgrRZc#>sfs2}VY0 > > zm<c}0Eu`H2rS5djNmz8l2(07IjVpXQQBH6sRzKDizijc5)l0lOsG~tjT|f%<i1VU4 > > zA1S?h_38n9P&kY8Jq}Dps+S2qvdHNRf- > ?b52DBu^PK;k8uTksHojZe#T6M)QD|`ef > > > zRLuh{cIg7*?Ae0HT70Chk3ar+oMuS0B@33Kco9NXty<NVDBXih@KINBPF<wka > 7i=- > > > zg2kHG6+iXLD@sTl$%w04zkYo;dMa0R0r9QBE+4H*qMb$TLa*1aZ=vo4tTUk1q > k@1W > > > zO(yt=e|2~BC0D`($3aC3)iSTln>A}D0khyOUGYmZAMqWE5e>r?#jTA<0P*Sz`+6` > w > > zT6JStSc?L7q0R$z3#Uw(!e_T&d$lfVRR*;mt<0lJj7J4$^L>x|_wOI3XvU?RHf<_c > > > z3foCq`ae`7yL@CG#Dse7+O<p)+0?%J>Z{op3InY5tS%r0JHmM}3?Hp3VU~zyCS > kI* > > > zw03zrJ^l34XwOChi&c|M@R7H%)@Xm|(4is4=JeA~_i|>gYrDz^7p*+?pP<7mX > $Y&D > > z_K!ss`^TKl{$YS-|1c)9f0SbXfY<&>ii_%&E+2`jB1eygM^!iQWC%2J<j6U5=0FY9 > > zRx#SL+~Z)-f!j2k*kcyN{tkl#7679v*Ul#se5AIYefF92l_)=E4rn(p@Bt38yp%fd > > zM;$m@^Pnyt1KV3g1vM`#UI<a;CeJ4;eDoSX79=LN|MFHV-sK%waK6tAla*M- > OiVHX > > zfz0tysDG@dS>Ypwq6Mi}@M5rq(1JL7g)qR!PMBrwf@PJ+MZ- > r)N9U4{=!Z+1tb1$T > > zym<v#zj^cKU^|k!706k7!$(PnW`&Ph<5k>mN}8;Di#a}Pj0Gvl;y;rM-3&`Sz2T!o > > z0J6eIt@Rv5-v|;|gj?mymw)%&cMDST- > h1yA5}Q*w0)~$gd@{jDzCl|19sT<ClQcQl > > zE%rcJ{dQ9l0E1;%vQHU4O1eH1eALwk=- > $1%q{)GAp@4y&m_SKiKBAX3T<2Hx<^90; > > zC_ZTTC;=)HeALyK^Kv*Q!9npBw%&jI;~$- > r^yQ<j_~m{lMHi6Vzo4A5mkB=V>XYL* > > > z+S$fvkB>U)C|p6>lr((Qh1c*=f><W_sB3Q(ha!^`LsneTb+jmH_~=AN<=F61f>I{< > > > z_~3&N+TSDJgFSopNZK3KEfhr2C8jclkGhZ=K1vXan~#xf&k0jDIVG1bUoL5HgtyS > m > > zMzz@RQ5RCfM+ssv@sT+=e%{z1z=IIpFZq- > Nw%JE}|KP!cat=E0st0D3z@m7Iw+-&^ > > z<cW2~&#dP-dy`|co+AKapDNlvVh&8)goht~xM|a-<;s;KK*@js0|- > GrVZsD#f8^5Z > > > zzI)+?7upq2ISAl?)m><WR}3EoFm(YjeDo4~6+YtQ4(j1Pkx*q9U33wBfrDs{2}H7H > > z&6)s~iMmmWA_=- > 7h)|eQUGdBP_Yp%j44l<}C`X0CKU>d6J6>gMiDO~Bh!DpaQd@d! > > zXm?|^1UE7A#oOL_=bfhok-d`X^_Fm6$6_%tQ#Hj_7(OZjWs- > qFw0z{%hci90wfTs4 > > > z%D3Ns`}pIJTWG^gt&nhK%a%QK=#Z0f^5dw2#96hC<gejlBrujpCeiW{#Zi_VfzI > M1 > > z+GSg|Y~kYwD=j?HoWXsrI<{Ei%Lyplz3Z;K)H6>erQu^TIOn63X!(e- > gXPNG;v=s6 > > > zq36dRe~c3nYmff2%PwOUsScf6UsNEVa7yG9^~{q=Y5157&iN=MT0RnS%nF}j > @e!Y0 > > zpwzHoLs)ag6<2V4&pr1%^2j5K(Ba5Ppqu=Zb)-nPI~A*^n9T4|5h#- > k1fu2R2`8L@ > > z8?Kr)Yg&9{w%DRY3o8sgI;E`kU`2@AKt<%W)N- > Ke6Hh#$m~)cJ3?Gw3JL_dd%SX^4 > > zLNtR+h- > n8d`QU>O9(dpZZsA7nrI%h(M2zt*5u)WEMB#1#XT^$@36l(CF}5(&f04M= > > > z4O3zBY!MNNoR4_*#J@MuIq@gY&Jhcwv<{hEuwVgOAr&iDRBY_sci%10O@2 > yzjT8=6 > > z6&q`k83Zf@BIl!(ZO@)P@xX>RZ&p(oqvG}%<s2- > P6k*5A(Ehy2X=vXyelrxYHObP9 > > z0AoDjR4V@3v}vQ&mNU*cgGZP->Z- > {>E}Lj72YB;P|MF@z!6Y^alsE$D*AY`yg@$&T > > z7hZUw#6dI7HweUpz@$l&Y@#V1TzTb{F;&K7YY-@91TYCH=%Qaj%- > 3Iky_69%Z8r$S > > zgaD!3cJ10Fp<cmTmK8}%RZ2s)?b@}|Rl- > k0wM`wej=;>BGYc|Ka&htE#aVB)Z~X~J > > z0s_pDv1Rj3Y!Vm*B0- > >4t5y=;6}&~9sWZ<!Gm_HNoQcIp3jwr$0m|&Orn$dzP&YiR > > > zqG(r;bdrk%?ae{keVgFqqlE@mGhMoL(cMMzEyyG=2!H@;JZRTQcvtY&C!c(RR$ > eIp > > > z=;osZ2y^YeefvfjEV~rIG;Ne4fI0uVb?XW;PJYoc7?Ee5kGo!cwD7^I1@#F_FEJnO > > > zHLWNX0?dOfFQ#(px$l<9NY&~W?9QHh?m0II&MV)1^9@dljFM8ZBsmA=qIn) > *K@}my > > > zU_@ONHU~giO=#S>@tbeH>ExjM81I@uS_*4ix#`xFGz9<NPd)XNTcUigpsI?Oo > |LpA > > > z;c76PAaufx9XsSGegFOU%a$!;*AkEuuAwO|iwLj;fgz+^sJ!mt$~B8kj<C*{b>DW| > > > zZ7TLJ7?6$~JC@;Ygr%FTa)tm(I9mSyoy1i4^^r5s+|5Dje)Q<k__uW8<8{1x_3Ex& > > zyPB0)H;g5I1xIsUfxo?E$- > cg5(ITdtB@Up_{L@Z5ZO)uI3{Y*9BnRy9vJMt&Fg~Gr > > z<}}R+5b9$8{{0exk=#NrC2fw5(*reL^_(FoB`{jIHg4RAt1$*D>1l$gNs<VlNrHa> > > zUpetgK%9aS+4>LDDQw7Y+O)|FL- > +Lq2M*w;+UUfF!90u4R<2x`ubW#Q6t8UEy7kmk > > > zPt9V(ldm)5d0ai<@KzC9D;X~32M!#FOTgqSY)VWL0X~aF!{I%wB_7Vi8#Zh>@x > &98 > > ztaA>^V%?^H|Nb9+^pO)u- > ($>9@tq4Xt5vI(0}xCT1O)IeNBl=$F_0u!wQ3cPt%PjN > > zsUiY|i)9OP?b@{xguQOz9*{6A#^_QJ>XavADW0eSii>_;B7wP|S- > ^>;qY0q7aN$Dq > > > zD7>JST*pNxJD6B}8w;;U`Xb>>h`x&JV_k1lZh4qCZJN<7iMH>mR;|kJEo!cAv{kNP > > > zO~YOZ;a7~2SG4^SQ*La8J^JXQVWx_fRFDHZ*D+PnWXsTn5Ma6sK2E|C`I;S1f< > 74S > > zf^>=#>R7X9&nC#Dv)6(hZ`- > !b%vloXWxjEpJ9mETt+#@8ll2rnu5p$^KtRH^Bv5Bl > > zgf9XYTyOyslaTX7TO`QJtls!y9&LgqO_~sXTGyeU-DUQ{- > o1N?2XXVwHyd5qXgf$T > > > zH~LX4(16`>1rM0i^y$+_v1pSlas;r?nmTpr!Gi}2_KxmFVtvk^KfhP6UNvgeh`g#M > > zLni`k8S@SdwuJ80tpxZu{q)nFrI_QQAb^JfIu~cQ;XjvlU+>wohiHSp`qi(hSFc`_ > > > zM&+{5DpjfwMUI||YG`Wp7mg;F#pDvPOg9RBs=<Q?qZVb;Dv|>hkqDOEy?b|} > x|rRQ > > z01|@FHypFP{r20Dbcc`$u~P{`7ob+=k;D+FUAy+UapU;L34Is-6te<e?*xY6(^<D} > > zU9- > _F>C<}k>Jc~<74Gn`7t8@$JR+D&DqwD<3ITLtFS+Cr+<*jd$XQST+!xVRzzT2P > > zym{=!5O58DgQ- > Fw`N}XvY1_6f8;C?~bi)<Z6|}HgwrrVv>r9D}AaLZ7N1}lD%rnm% > > zI&>&1k?_igMIk&$@Ljm>y6af8&9~hvqj%=lSR- > O!j@_J!=Lav`6t92y;fG8W&8#63 > > > zUKBkOBC0daT)A>(geyOCL1M2Hn@zSm$B!S6s(kC#tr<(B+fZ~Uf>i(_@RI4&sS_ > >% > > zSFBhO-@wC- > D&vqIJ$e}Bw_qKY@~2SBVuZ;Aguo5%u20|!lFXnBXP6A_SaM{HSEo*$ > > > zR2c+OnRCxQ_wvgx#}01DkRj+C0#{(G{4kL6<!#=)x%nohoKulh4@C|%=nysrLSb > Yk > > > zs%P2JW__5gG<I92Oqs$skQL)wZ@u+~8*ZSUOoyQ@+oLC+d~z7AKV+K^4f{mr > oO2G- > > > zUi3T%4H`6Y;zS(FV7Z3N{R9T~zKBr=)aQ)aTO@Lx#Y`}t#2Lu5&p!M0*I)ZeOBxdJ > > > zao@LZAN0Yy0;|6KaF~xWAzxldjSeRcHd$9;O3Mx%wi1vXArEFRlURE#Yu4Luzn > ynZ > > > z7NyA4IdTNhl4T)%#E22=*RPLu=Q=T|&Rjt@4J%cu6nTf540D43gF4m^XUv$fd- > v|l > > z33>V}Y- > pGprX=4Ge15V<x@5_cI5Z8?&z%TsXlR(c^ya%nW;bj}4;?xbdWNyej8Mqa > > > zpOv9uzDbdu)}fixqD2d|G|@URBU|U2fzS_2moDYSg;!4#TQEHmTT(T_{R`s9wj > G)P > > z1fO-vXYP+tfncW+g#qT>sLz#DznjKp0s;2c*;r={A4fopZ`q#6%9e`C+k*`hS~Pw7 > > zbabC;)vASiz)W<CsiZ-`i2#E){8XTsgMJQP4H?vJ*|LQ#LKO-WD- > Ev^^wzNGXTcf2 > > zn%JN<YSgF%Lz+7K(H!R+0j&A3<YKUgMjwhpxDUliJ|7_5M1TJI=LD{en~b~@- > h1yo > > > zwA5zJnl*g*aK3tsy|H05VN>!gc&2s15Fm^u17K|J(IsoppaHs_ke5#tu{Bvx8Z%}L > > zK1{IE<%g{qj7F7x)TmJ~i}@^G-23+J+p}j+bmTgA?AWGF8&- > )gz4TIop<u2E>9VWq > > Q9t=$LltI8CkSzrM7XaWYkpKVy > > > > literal 0 > > HcmV?d00001 > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > new file mode 100644 > > index 0000000000..a636b086ca > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > @@ -0,0 +1,153 @@ > > +/** @file > > > > + Logo DXE Driver, install Edkii Platform Logo protocol. > > > > + > > > > +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > +#include <Uefi.h> > > > > +#include <Protocol/HiiDatabase.h> > > > > +#include <Protocol/GraphicsOutput.h> > > > > +#include <Protocol/HiiImageEx.h> > > > > +#include <Protocol/PlatformLogo.h> > > > > +#include <Protocol/HiiPackageList.h> > > > > +#include <Library/UefiBootServicesTableLib.h> > > > > +#include <Library/DebugLib.h> > > > > + > > > > +typedef struct { > > > > + EFI_IMAGE_ID ImageId; > > > > + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; > > > > + INTN OffsetX; > > > > + INTN OffsetY; > > > > +} LOGO_ENTRY; > > > > + > > > > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > > > > +EFI_HII_HANDLE mHiiHandle; > > > > +LOGO_ENTRY mLogos[] = { > > > > + { > > > > + IMAGE_TOKEN (IMG_LOGO), > > > > + EdkiiPlatformLogoDisplayAttributeCenter, > > > > + 0, > > > > + 0 > > > > + } > > > > +}; > > > > + > > > > +/** > > > > + Load a platform logo image and return its data and attributes. > > > > + > > > > + @param This The pointer to this protocol instance. > > > > + @param Instance The visible image instance is found. > > > > + @param Image Points to the image. > > > > + @param Attribute The display attributes of the image returned. > > > > + @param OffsetX The X offset of the image regarding the Attribute. > > > > + @param OffsetY The Y offset of the image regarding the Attribute. > > > > + > > > > + @retval EFI_SUCCESS The image was fetched successfully. > > > > + @retval EFI_NOT_FOUND The specified image could not be found. > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +GetImage ( > > > > + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, > > > > + IN OUT UINT32 *Instance, > > > > + OUT EFI_IMAGE_INPUT *Image, > > > > + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, > > > > + OUT INTN *OffsetX, > > > > + OUT INTN *OffsetY > > > > + ) > > > > +{ > > > > + UINT32 Current; > > > > + if (Instance == NULL || Image == NULL || > > > > + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { > > > > + return EFI_INVALID_PARAMETER; > > > > + } > > > > + > > > > + Current = *Instance; > > > > + if (Current >= ARRAY_SIZE (mLogos)) { > > > > + return EFI_NOT_FOUND; > > > > + } > > > > + > > > > + (*Instance)++; > > > > + *Attribute = mLogos[Current].Attribute; > > > > + *OffsetX = mLogos[Current].OffsetX; > > > > + *OffsetY = mLogos[Current].OffsetY; > > > > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, > mLogos[Current].ImageId, Image); > > > > +} > > > > + > > > > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { > > > > + GetImage > > > > +}; > > > > + > > > > +/** > > > > + Entrypoint of this module. > > > > + > > > > + This function is the entrypoint of this module. It installs the Edkii > > > > + Platform Logo protocol. > > > > + > > > > + @param ImageHandle The firmware allocated handle for the EFI > image. > > > > + @param SystemTable A pointer to the EFI System Table. > > > > + > > > > + @retval EFI_SUCCESS The entry point is executed successfully. > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +InitializeLogo ( > > > > + IN EFI_HANDLE ImageHandle, > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > + ) > > > > +{ > > > > + EFI_STATUS Status; > > > > + EFI_HII_PACKAGE_LIST_HEADER *PackageList; > > > > + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; > > > > + EFI_HANDLE Handle; > > > > + > > > > + Status = gBS->LocateProtocol ( > > > > + &gEfiHiiDatabaseProtocolGuid, > > > > + NULL, > > > > + (VOID **) &HiiDatabase > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + Status = gBS->LocateProtocol ( > > > > + &gEfiHiiImageExProtocolGuid, > > > > + NULL, > > > > + (VOID **) &mHiiImageEx > > > > + ); > > > > + ASSERT_EFI_ERROR (Status); > > > > + > > > > + // > > > > + // Retrieve HII package list from ImageHandle > > > > + // > > > > + Status = gBS->OpenProtocol ( > > > > + ImageHandle, > > > > + &gEfiHiiPackageListProtocolGuid, > > > > + (VOID **) &PackageList, > > > > + ImageHandle, > > > > + NULL, > > > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > > > + ); > > > > + if (EFI_ERROR (Status)) { > > > > + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in > PE/COFF resource section\n")); > > > > + return Status; > > > > + } > > > > + > > > > + // > > > > + // Publish HII package list to HII Database. > > > > + // > > > > + Status = HiiDatabase->NewPackageList ( > > > > + HiiDatabase, > > > > + PackageList, > > > > + NULL, > > > > + &mHiiHandle > > > > + ); > > > > + if (!EFI_ERROR (Status)) { > > > > + Handle = NULL; > > > > + Status = gBS->InstallMultipleProtocolInterfaces ( > > > > + &Handle, > > > > + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, > > > > + NULL > > > > + ); > > > > + } > > > > + return Status; > > > > +} > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > new file mode 100644 > > index 0000000000..fd9c489815 > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > @@ -0,0 +1,10 @@ > > +// /** @file > > > > +// Platform Logo image definition file. > > > > +// > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +// > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +// > > > > +// **/ > > > > + > > > > +#image IMG_LOGO Logo.bmp > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > new file mode 100644 > > index > 0000000000000000000000000000000000000000..d1d099789fa794648b86c04 > 6f0320a553954764e > > GIT binary patch > > literal 11944 > > > zcmbt)1yozzwr+6OVns`fYjKxAi#rsGl~SZwaQ7xSMH;L{gF|r*PAO2VloTiy0>$0k > > zA3gV;|D1Erd-skz-pU>sd+dzt`RzUD`sO$1T6a@- > zX7CbN~%f#G&D4T%KZm$hXg1B > > > zFwoKe9QOnB{=mY;!otMF!pFhE#wEljBqYEmARr<pCnX{#BPJjqr6MJJKtV}KNk~ > FX > > zLq$PDPC- > fW=O$<v_y57f!o$MCqaY$6qWE8ryDtDTT)+U@Qw%gR06G~O1{vC24}cMX > > > z20+IEVBF*V`@qG+#=*abiT>yJ*Q5Y642*m1*w}c4#JD&B02(?5CIAZ?hYS~woL > K<) > > zKwQ_-t)Akspn~^1N-8luBd-s&V- > KGQy>a&dLsN2V>Zoa0L=^R{AjzqD`Cms_MGXv- > > z3cJRIUxan{{M^5{K=Dte{}aNWt7QKG^!KYX078s=v}71$06D<t&sga1<Y77- > 6!?Fg > > > zkmOqR@l8Kl{#s|UYF@;>+y`NB5f6%1VS@y`ZtL(3A7^4K^G=(4UE49w?T_0SDk > G($ > > zN1<Fzi- > #BCZuBd*+s^07kU*dt{v81Q>)gk~AQ&^pb*wNQgm&5Qja9BOcG>LPphMn9 > > z?<LSCzG-E!dB<m>vN(4)gekvjlgi*B7D+O@84|?4X;VNd+d{aB!>#pj!RbY@V{- > 0M > > > zPKO!E5zd!e2f}z9zFqo?RzF^@dVZHH#ahPeGa{TZpU_*TS1M}tX|w?EK$R@^Lk > RGw > > > z!2NJxRO`lH|1I4eAlB_T*bxj_KwZ3X{pDi~+h}#8{=KYTznUxyJMG)ThL|nWX9zRy > > > zjlcdeRPG?hqS!3Fs64*K%@X8ETgA5=WaAe}8M~Q$o<KY<;?t0OTsCev^Aip)xZ- > &7 > > zEnwj2m76xl$_MdV+x{H|P#S4>kN+4mZvm5zF6{kGTDNoQ`j$h0&=;2p+- > Mm#r;q9a > > zs>e7`0_!VEV8!}BIp8l(V4*`i?MARK`>JfxT(4<Y*rs-S%vWL0!r{>*Qllw5>&m(( > > > zI+~jN%Lzeg%hnEzdBDc}>Pl=WN<Bm6{2?g>c}Qq3kngxNWsM~L?XtNCxd(st+& > s!y > > > zI*EgOrXSDx282+Z^`WkNLp5%?Z5T!MlIZj?Z;RlQ`kXhU046A8Ah5sU<#$$%HnW > 8p > > > z%i@k_8@M(#J9<$Rv@YyRIr0Kn;u#U;OMJW?y=?POH6LAyzUFU)7%XSboO{- > I1(G~! > > > zv&NF8LJDonPp@=)(heT{7*k(r$#v`!oGxJ)Oxu5Xb))L#NmJ3CE%K@T7NbCa*<Y > 3{ > > > zSkVIUwM1Y;`p{X;$6MH+8+5bvi99ug<GoxS<aAQHwEI+(F1~ZtI!5~r5Mw8E9(X > vd > > zUrJtY`3- > q7^p>6A$y5?)h$gnjn>G8wL;vS%m_wlDvulFiweq(@6$qzti;NKBX@X(6 > > > z;F*7)|CQu!YNVQ8kWB*T9bgj@^m|rs1G~^qc*#HIz1h6Sa<Arafr{L!p+et*ooI{! > > zMIsQB5uqH1voeu*r4H(0{WgJb5FYpS-5#cI4DNinbgL(w@pbDN{bLdE=I- > +BLH<6@ > > zJDE)m`9pQthFm2ursEo$*$4&bDm7)9a5WK%-_c`s`B)nR5h- > @4#bnHT`3_b!JBHow > > zxyGDgImnY#bM@V- > uG(2(e5mx8F$Jwj7So#v1GxWhp>ow^hy!(aeiO^a{iey<$mjMM > > zx06lB1|z#Qq?(cCl;i<WuAU%C)-koQcf??CdqKwly`#s}- > )2PTm^a{pEuoxR=C#gC > > > zs@TJ8#4zz8InTL)<1nfss&!dP`@^_Ya$?Og(x{@I4dURS)bN{D0#kL^gFy7@Ppu > ue > > > z>&J*p*N`Na;KD0%B22CEY}XdL$O}WaZ+p$(3wB9c1NkA!>=W=o3Y>Cg12TO*z > h4fT > > > zSA%uomW@1Gl5o6W|JkMiZ5ZTo2JJN0fGl5hX(@{54lqcN{n;X4wBsu(cO0n?& > $k<J > > > zsY3z_`2DcPSkp_>0+NTydjm@!SeX7`a!6K%9sd(~(LGQ<j~Pc%LnEupS5FcO*+U> > o > > zsre5rS}aW)s}@)gnlg{qR7- > r<5@SomE6N08vY@4nCv<_`8+xJm_R8a=2_UR+*Mq*) > > > zgafvZ2Ljj8qM30Bw7#k!fg(zOI?QC5TacQR&pROVy2xtX{vDwB8fX<$yY_KhYTFe > ` > > > z6V!988l(NgW_i1Dq<Y(X2h&?ef9)ZCl@KwL)yUv}nzilJ1F5Dx^?+I4;WOwVxu_e! > > zrzuo)hf7U<4or;rr^mo2%+RXu<Nno_E- > MqUbaW^+bO&JL!B!hoy7_Fpt8o9V3-J8_ > > > zw4D`mw~0ZLxk!!$nvP_poz__f6yn{K9eSf)fm1_~&V59f2MJ6{;xb(dWT$mSzW > WSY > > zCQm-AL8Vn?b<aePPdE_Ih@94d?-qAua5UXMO_vw!e(-22`4Zj<hC- > p6eI<pRAWZsS > > zb8l&H%4Ch-r4mX`tuFn3S!aPU6@1f@eFyM^e+Ki- > R(kLYWoNjiUT;*DRZNqc>Boy# > > > zsU_#B%Fd9O{MYP)g>yon?|`q$sUrm@?xDp?`?@DAql@r!<Mk7UpO6q~4Sy# > 3d1$Mo > > zTo{ex<xTRjqhMQ<LFSm60Y<O<I#Yc?bNQnTO2}AiAPws`T^iO`IV- > >R0o83OvX&P$ > > > zoGji5r%^OavL<0l$alF^vw$Ac>|(o{QnE^3Ry`M*a?wj&)+Y_xz4E&rZKb(WmB;a > w > > > zz2WL)HB+aw{~%q=@s*V?B2}?&z5{|z(O0%Y)*qu1Oe@xz@Kb9;+uQQs>ULA{ > b14sy > > zaP1(hq~*)$ZVP@VRo_`kBo7p+qT5%FOI`_0#d(u0b>c-f3!lIVm8Bphu<- > l3=^cEW > > > z5u62#D^7jk95y&DxXZ`h>b@AM7?6OO@AkWH9*FHe`{NFfJvY~84R4JAdIy}U! > X?xb > > z58KO(*<D`X^!;n1{tGhU- > gB>3{)H<UNZNvr5pSAGpABrc$VQ~|o6WLIEux|oxV!xb > > zjD{B6#&qBk=jK*4&@lte0NvuLi)GNxZo1R;cyqG1Yx2L*Yj5>_w5=ykbO6- > OoIGc@ > > z(%$_%q49Wzrf=8f*!ro}6KlofhCpLZjOE->Z=+CSrX^7{Q-i;x1D%xidFpr^$Jo}7 > > > zhmkhq2W29QI%yJysC4Kd7#(ofy_73OyiC@y7PKyszt_yV#^~28xfR208mp_9oa > e)m > > zG^dHP_;2xo{tkF$lg1()k*<*C)r*;nOIP~r6ad&0X7agWw6Qp|J- > 7|syRK*C6c<&+ > > > zm#Ss4Iy0oPXLXj`W+zW(@qwy&V@v`MIHYUdw2LY_DccN?H2Ld{sdDKhz|dy > w<cRAV > > > z&Gem_HJhM%1tm_vV=`caujL}+9iW@4YWm2Lc4A9|zke3g6~vK6_RLS|#lj5s2 > 77P{ > > zEBjYSK0StH- > KO&ct09341)J0(vgR5_<Qr2HAev&AVpIG+5T^w)kZI{1r_^2bvi*|F > > > zcDnL_KAbl^aCHKjRI~pisA~@sU8+Q)Zt{k)*^a7a<t5S2=hIZiF*eN%GP363fJSp< > > zcSQrUsjo`|cIV$*k0&&gqjq3!yO`Y-yXx&- > )rd!0)UwT<X+mDe9L|a3$;n<F8nDj0 > > zbt2XTx~4+j0mf`@)4?nrk_$M>$6^uZ(~Lx6J$-xXozJ66o%(}%sgjYss?*LK-pR$? > > zU%@5+mRbI$3$X*b?*OPJ&08okXrqNVeO- > 9(A*20F*RkHp?htHs72I{MQs4c}4ZeLk > > > z!TU2Oso2@(aJR1V5X3wDaphN2Mg8&AeG*o(hZS5rss?Xn>Vc!QRV*{#nC_en > 6@50g > > zVKc}m%KkiBa%Kt{QGrG>syls$f6@- > UE+Ri1de4jMS5)7SA)p|w1fwqa9J?pC#kfXe > > > zGxL@vL}J@>8?yRiHd`zdLL4I1D0c!8#&K9GN42A(py^jwrB9cRGct&$orzhT2;!W > U > > > zFfR@C;7Yd<N$aq3lY40;{xgnx$m>jpcgp*rllkD@(_Pi`@^5xz<3~fgiuUvMmtO!- > > zG@_JmlSGZTlwMjxkgjGKpTrDI<GM9TNySk!(_9<8ixLJ-fOl4;Jxe- > K_~6?SQ|fCA > > > z*E1W01uG`y8tZBT$%ZihW`T|#(O)VXN3Df2Vv6Y}gN)k{Lqi{RJTkfP^AqcmkHfp > F > > zGZ67BmA;S*tg0KL&I>z<z?M+HBmf=Y@D3o3@UQ>- > JQJE@y4|C7IZj3HX(Bu)fyKW4 > > zM_Lmkd1?IK<~U-)bUB*haUKu4- > dY+nq$>gA`eTk+_~zY3uflwPv_xjVj~sG_Rm17j > > z!yD==(psSU;~lX5Eeo<UUX#XWbxQEc5$m_VHv<- > gC`E&MorI0!o88rPSJXA3VSq4J > > > zW;H2F4k)cZSl4}IWHQt(BebeK3Lg2YPDSNn;WRn5Z+zYE#()7sM==;A4t5VF6vUf > T > > z5#Nbe!Cs!XU6E>gQj+ky- > {@C6772nwu!48=I>ERODa#OzoOJI%F%nh}29ST4E3B{( > > z!Be@Pp{|$+i%1ePIs17uNjh1LQa7t+TJ~;tvm!lzBUU@Qtk!- > IOLF7X@!35lin4ES > > z$q5#7%y*~Dyzc-tsrB`-LA8RNHe{w;>-xn(E#n4-q*6GB-9d2Xq8+iaaIgcL$=X2U > > > zcX?*P$I?ZafVe1pRh)XApuO$7%#e8=$c645;9^~d?uQq2*|kT#QPHdAIX(fQX8K > nD > > zCf&BbL7v!-Oh*ez<X_bjaLgGJ)a|*ozS4@yfc;pPuxt$pvc0|T{2|O(@yGv8- > t%Ao > > > z(A(QKxtlrR`3+w9Tn22T5~6kRVKu9q={eu4?G|EZyZcH2dw2o7ypkWS$&rrWGJ > R-X > > zYRS2$b8c#yQ0^V%$-s+H- > j&OZo~7OFwssk_)$i;vp}qqU;Yd+16{VZ*<`yLu)0=?x > > z!iWZ=cLBcX1S=~eT~4wz$HN&nm*iRn%L1b- > y^{bgc&)ddW&TgNrHAuL9Gn>s7Tz}F > > > z+btRUDT}eU=)~&faeUd>cG=?hCic4iQ=i;ygmP?_c@7yHxTS>kEsut1SGJp9yz!w > U > > z1N?El)P3f9=N&a$L{- > pdtjgPjuX;~yQbbtecL0Z?=v$m>rjs|+>m|&cBEv*uaWV_` > > zt(Dxx=Z!+1V&_iRq9ZnOWVhhRmZXUp^cJmdw+<8- > oLRy<nXDAOF<0P<gqj`B63`4f > > zYueOWi3y&(O%PZXX71K;;_cxG3+GiX4ub2- > vVmRhZKXyB<G9}2B3UnCn#s+Rd-omV > > z#t3rBMY48UydL@618@g;@%uIgGS=+skt=2xm~kl+#w`1Bg62E- > VPjZ2ZedRXJ4)`m > > zQyrg))>f0D%8bF1;Q&eVV- > %;U3qox$b%4EDJ~^T77)y3lJZMe(Fr!H9gK2jC+)l!0 > > z;U+!oA^V=JC|OKjuoxyO@DU==pE$#lZkMjuLYa4N8- > ?uyEKB>^7}M0iX##x5sV0>| > > > zZ%f8<2UyTC#1X&Y@Ae#F8C|WuR_l!s6J+hu)3t7_Bb3!^lvL|h)z+oUg73~=+Hq > %t > > > zzxax+s3$tU$fL3<^<cAX%8XBYWBSmJ;QeWWokbt!Q^;?F6i&r@7IX>)gm5baM > D=rm > > > zR!gARP?RN?S&k%wUL!e(eMn}!rZWnY<OMd8$`>!pGD^2c@fIMQ!+vev2pgBI= > }L{= > > zGI$P8+BnG?P*YWN7Cn{4;$?)a7;oqzJ8j5i3@BN@- > 2r&ZW5d^ftTcV^I~<nMZ|74r > > > z4Nz}%_Et$GmoxyYppA!$ZF6dEY~q>&v+u?7neSLgLF2r?Go+}6Na~w%x_5OD > MRP#y > > zx<vDz<VIHo4)mJMj}3YfHuik+J(QxC`AJArckW5fYjx`!9oYIQSnTLwYu- > SYR%yp# > > zx8+cP?mJo5X<kvB$w}ad3|81- > ;(|z={y3gw1@t+IRa0g%+$nz3=UG{5m*v~hhpK9) > > zS0|0Z_7qfdef;D^``z8BBewWOC1tVO_ce``s8#V4&ng$v89g}hO(cvYlS2ZT!nsjv > > z{(<>dC- > X`gy;m<Krvtltp0+*9=^k(i_A#?4@T4ZB_l(5b9P3aASm~B+2fBF@evzP~ > > zyMi@-XmIp$F!<Bp8IACRTd=TW-_tCXg%KT#ZXujK- > nmcl<0)*EZEf?45YKDpTx0`w > > z8~yxw085D1veo42qdUL|@R8?(m^i`3SD4c@*ea- > B=Td=u1jBsNMQFQv880yl&b)}m > > > zI&H5IpmhACHRHVM9SLH}&!XoWHdoc=>6`WJua_!{D<#JR4Rlw?Rrl>NzJjaQB| > !+6 > > zCg- > dmdU!yc=R*`GM@Ys9$<KMW!omJaq^|1BXh0WoZ~c*+kQVP#My{%lgyodT*a > ~AS > > z4F`*9+-&)9@uC>X0IfR!vjLM!iX1L!!-x)>1C<e}T92CqQIW8iZma$- > omU~(K8KxW > > > zh3Wyf6GNX4vv)FWhDB4+*sF&Xgu^55Y&#<ZYANJXUkQ#_LGy^w0Pp#_Qd1Vj > 6MWnn > > zx- > 8jP8E*|Af%h}glpO2}v5^$VmxGvK?^EX>g9kz?CrQMUW`d$GAoEY=%SWK#EvZ > 7M > > zCIBm(6h<- > gZOO9)qXwr50!%Rnx$dP7cyGNod@G+iI`x580UhbpfS$svDicPk^61h| > > zVtFY)!p60(YSPS>- > Sp%5F+t&nU%T2}W_qC@<zCHFE}+aZE7$fWY*PAvB5EwKyX|OX > > > zZT6!*zwU#Wim8fHQ2hl%bQ=3fJs`x7TnsrXBTTIdL~9<}#CSPR*qCX<2NGiG5X > @ok > > zKxsTpk!%Q3Kg2jUpy- > O9;(KTdbgDJ6;scGYaF)0|5j)KC>kVVZm@tsPT$fZ|sC%|^ > > zEp3;|{SJ9aFWMBU4t)pzYQw+Ou~%#(UI^- > R_g4<b()Ng$eE#<G1_J=Tcu`CcLw=|i > > z%(W()+_Z3V3}4pYWDZUOqS;YAc#u4j- > N=95v2ZWoI@EAQeh3W{br!gG3T)y_!&<V{ > > > zvK=34k4d~*!Ul&RbhX7?q+6>NeVKlx<C+46{hpgGe_7%i?Itd5ESh1jz65TYU<B)6 > > > zT(gY^e<qlOg<h|JRBYp%qRMT_7|P>h|JkMrxdWKsYr{6+z>b9$uVZ)A?l9u5Cw( > =l > > > zv!gB~*kX;A#1N8Cj4fPR!MLEUwXGm%r4>Ad`r*4Vt)%f`C2ewpa|`$M5%B`BM > UZ=2 > > z!-A=K?rk|78$~${rNUm}Z3H(kw1*-*fEAZr!IN2f{X*~K6>^$T)|@?!FIt||O3~Rc > > > zhA~UA1c=ELq!ZGDoet9`@h%;Ej_FmkN(~8r7Jh+t84f&)Korw>l60WBT&6aT@d > -v? > > > zm2;jmw!>$N0vgjF7mNsl_nDja8A@YW8@!wYl~e4q;8#l<QsMfp{}Z#xX$m(J|JS > 5U > > z9NrwVzrIEkC^l8@BmPxZ*HgE3F7n5- > Ncj!BoI_AyJsD~|g=`+k!oi7?aoWJH>kCbY > > > zQt*{>`kIUDupw3OJ)m&1U$!7ZNBJGdfC(e{^h1bs2hWa=ACI4@?GrNOP@&>t > S}U!k > > zECP-JIm- > w7Q<wFa`47u(Ng%${2+TsSB3DJjQaEnpX^G#QC`x_$O#30(=IHDJKU{*E > > > znq2D!Ym%bl!@bUtk=L=Jz{iXJS8YqX_HZ>~epKAz;|Ug{j=46gw#fV9jm#=H2vBa > F > > > zqc{VeZ9aJ*O|m(R$qV~<UD$Ra(Af(o@p*x@kC3nQm~)`gF07H6Fvnuk@kGM > rT~U&k > > z63%C~>q0HWFP-P- > jXOK}kK%AvQFuPwVJ|_q1I**~ISx@6mv)jFu@9ScjpGp;_667o > > z830i@PHE!H*EWW9DXClZ>WyakQp5)Cd5K$mk8<r%EMzSPO1~jUAY- > R~K*W3(sPjhD > > zVxxqqw7uKqcjNqR2LJImlNHHtF`z49(d37vOCS8{fQJ5OB_6b&I7- > v>eAGhq3z#f1 > > > zbzEj}>%N~(@nsTk>Um>1<za^9C_g)2z5|Hf0aC&7O(9op_MM}qF70B#F>~y!r6 > <Eu > > > zFJ)uQ+NV9~XYboORJ?;};8GLFN8p5X3yu=2jc?@ut%6*~108P?KmgK4(KXNvKy* > pL > > z!KVf>JP@j!sH8hKV);=S15yWfJ;N=NdgwugYx!YmrXm{I%&fK#TU~qH|A#I- > +EImk > > zpotaM0qAm*kA9VSUPJliV6>b$R`a29w=RLI$OA5((38Q_U- > gp8_RqXAGDr*$6Yc<C > > > z!A1waJ_hCOLq4C$cd|81&4q@?@0Us`sWP_DQP8j6WB&i42!RWAzfG%<SZBu > F&jbsw > > > zcV=sC<2*U)Zvx6&@HPHB7N9WZj^zAA#F%FC(v2MfoYnCX0cE0ops1{ry$ggR6 > NA(M > > > z2^+ABiz4||_DBnt_g`NOAgys$^T??YrTCx*9#P7gsj_0wsgw%}Xqr<N{rdWWS!Z > g- > > > z4H3qP8xIrMG3{_HBo`K3$qL!mbiXxmITj}Q)l(geS7|Y%c^d&SIuIL<81BIiw@DA > 8 > > z(|T*1(_W3_%- > s1!Tv(Zw;o%;NU=NOK?F+(uv~UO5Jt(>ZsDe6<Q8=2Ov_9_>gm+$F > > > za=PD_ejXn3u=GHz!=3g65%;*%m5TnFjrTr2{7yPIC{>vXfpr&Gg{;#;sWSJ(HnZR^ > > > zP%n=w&xEgrDM*LrnO*hLBj!dEc|0|899IAuaAz?2JI#nH^vG?g7Q7VS0!wCo<Z > O@^ > > z0KlkE0xHh-H6e^BOp;Ma3_*%o2XMn!Ke~iklAM@k2SzZC`s>rM- > 2nW4G!i@hv}9Ct > > ztTN_#K~bl5i+0oZfV#D4EkU_y8{zv- > hX`i~&TkhTx_KAAlZMXguacb$Fjxx~I@r=Z > > > z!;NFfic&3^+z5R!85}UuWhO;Z!ZZL394B?me49=eqOuTdHBR9N^pZ}Io)F9_a&P} > e > > > zgn0*m<z+k1`T1D%?8}u2lQx2_4pWcD?*${(tPIM4x*LezJmObkESuVMX6#Av2{ > @)q > > > z;%=G&^S5WtA0KNPuIXV?5iorWd9CAqQc9CGggH)_z|f}T&hTT}HJByBTw4uV& > jUGO > > > zfaCO#+6fF2N1bE*vTX<ntB`4Z$oawb9h#`$Qkhrb`F#0x2$B;|F}n}#0G7yKJ)3G~ > > > zGmb;+#!8?Nu^=B8B}~6_koDD8@oQ0;8LxY8$1bzP8AJ7)q+0q1`mE7ui}P`G@` > CKS > > > zAGrqxc(``};NHt^BcAj<@?US^gDtZwO|%L454il+QUjo2Eadr{=wMYx3%+4fL<M > 8r > > zCgthu_mBMfm0Q^Ou~pM>xd%f#Q$S4T0w{R^- > Y(1I8*G={I$F4+ZH`)EHImR;^vulo > > > zqEsVwKrT_obLqcU^i)YhN2z>b>5DYGpEo^I_fD@eR5KjES*2j(i^*^&SAK0jogZL > d > > zJoBPN*F*ocb9&zRk?eQZ`|ljO8R|Sr@l&A2#1FN4$?- > j*0040pa7_;kWC_KwXa5Q= > > z@Jl<Qi2U@Wd4o7@R+h}pWQh7Yf;)%&B@-7nJ`- > pAtx4aT(+#=;D6HH83+wW*((szd > > ze*aj?o#`ShhNSL$KGT)e?==07c$=nVR+_2@j7p|_53UWk4- > p<q_m!^m9KMJoar}XP > > z@k8^U2UL?(EBk)#6yEAQ9WzT6y-e+D=3KHcJ4s13@F)e80xE{- > LyIf+zYrt;J=3($ > > zy=b|?FcP<^U*a1C4!G9G8Z`A<(0`- > 5rbNgd!!PF>3VpnFG+GFsh#+<(#y@RjrT!NG > > zp)J9QOI}6gdzgjC&|T5<0AA*gpSSj)kj608I{nqe!>FkP(W0L0QjS{FPf<*qrf95| > > > z_3?R<@yIi0yQi;SnprC>bm|r@Hait6ce$t0sY6q%CU(YfdKEX1ndOgp&H>?!J+u > Tv > > z_T$ns^dNh;hR}ivc2`(HlrR%NR}YWhuXxS0Cw20jCM<E;@7&)<6E?4- > 2r%#G9248& > > > z#6snQt3jV<3;8Q9F3vYgB1LC%%ZPn>#)=Zr%GCX>A`>>euKfT$31(FegZ>YC))nll > > zr7O;hktJmggtyk>XEX`D$=&X6I>LpwNFMPLGb`G#{)Z?&L+Dfq#- > WXYFemoj*{|FR > > zMK>|)y<Hq8Z!o5pqA0FvVtx%x9oUp-@-IL<YZ|4GW-gvK2CXJjg~uP4Fm%B- > 0wOEy > > z>)o*On|^rNdNqi6#-ylP;?MR%u}1`}NOh`nx9G^GfUxsGYrkSgoS*7xt$dJ- > bmG`1 > > > zq9e&siyn=8E`=eRJG>G$8U>^t54w<Ui>jz>eUS9XZA3_8ueBvjk&Ce;0@%PgzU!- > T > > zawecNLK5|`Rw}A9eW5D8- > SMIPpk6%f0G_g*2NN~bGLK4GxM%KLEp3cipF)r%cziR- > > z?UR<B- > y@PA%#hZ@A2C_#4_!xqUu`zx(HRI2ad)pAN1Y+fGTf7M52ef0<c;ddaZhzT > > > zC_Nho>dXp}tMw&EkEI(K?akLs4D<?eUOtNX+rmaoFky3z#;CL{D$Jp<#aTH)9w > hMF > > > z;t@rqr(q}>k$5;MgM#vFBOM(KP}+30(<^IfD|;N$Hf|BeE)O=ovxGX=<<B$AZ}a; > V > > z$Rib^)uXhoC;=+7-e-sx3|KJt_9b@ZCSL^Itwf1LXy2Y-tvxli6`j+7j0P8v(r8DK > > zv5C^AeOHat^{btzSvH)_T-UyHP3=R5`=uffP`~Y4LlViPGn@0nS46(lLl})yAAUYn > > z@{5}YBdtMfl2&#vHI9=- > fYsgieqAdo`od~$n%ifM1<v=21h=~xCNB*e4U&l?5(^my > > zFsgM-jsErSWEYukS^0s${WHgJ)r9>Pdrr%`#S#>zw#pkeJSqxl<3}9YZ!+bPL018- > > zL|CSXw=Jxd5|Jdv$2^^QEnG;igadkzVrjG{IsPX<y6t*y%clEIIPN1-s<Qm+b>YoB > > > zfK&XpJgYP(y?wH}QBYiTwPEg@vYnUI+3|6iONY#|7#;n%?^~~e3KQ@Vm(03(% > x{&` > > z?JlMf;H&F#-^{UKR{l#LcCA`Ui|P7r>9f6Dgi&*<TD;JAb;J2(uHil|C?pWGgiRTb > > ze%K2mqAW1b`G|haSJ9L;HgFoN`KkVT`~m(nT?j;nbDKeiF6- > ;S@mRVGNqQv1JATd( > > zk|y!Q7bMIPOXfH|e%4qG7lty)bmsKdc4~{CFkU`QoZ1(g>I&)M- > n`$WKrOne+1*Iy > > z;;on-O@4eBKt|r*U5j$PL{sy}X;8agm%wWJxJLJ3H8H2w9xL}+lAx5+`^J-~*;PlD > > > zNEBK$y?ueKFmDfMaRHk75QLT0UkDYe`a4bYajq@*yEZMA>7vy15*(sgpxX9xk > S<_b > > zli3orj;~h#tF-9v&gQ8OqxW6T-}sAa$hxxEK+qQ{^ikk0P6<&7J5_;)$Crkr$hJMw > > zmW9b{54MgeThpmSd|T^BNAFAVP;&)5ME!RFY;V}- > 76P%Ziwdh5qHZcQ$ifuzLe|Eq > > z4o+(j8-K8KU`}`H9o%%l_{ft)VHlHXa*k7kJvw&G<LG- > dGM13zGiyy)gypmOYg5(j > > zdFLMu&UsSfb|TOJ^g`<^RV2aPVlrA?^8xn!4dh2;6<4F+Mhm%={$r|k;4|rQ- > vCM8 > > > zo^s?#hlC^jFnEtFMrq(#Wkn%;XG_OpoKa;T7V%d@{JvxQSAYHAPp~h3JDPsF*K > E<- > > > zLY&zbZ~B|@;pUVb0~$u7rh30NfgB#!D4gd5IwlHGpeh|$+D_Po=KASOQ~A$;R > BrYG > > zrH;Ni8|ZS)y=)#*k&(Jz^kl1Pp^^$9zH(09rr)<|%9_U<sPsL#ojdt_;*{7_yU?$# > > zHsi+rhU7NPo2-T*0<wIsr~lswS&aw-o4l- > |F{svG2NhZV*siLZEK1JdNzm|?qS`CD > > > zHel+6UA6W4DtDhN1!$IkY(3f)+|{w^bZ<6eK)IVKAn~U0ra4qL4Zjdw1*o;IGxz@ > I > > zE1+&2B8Z8)yvlVG$SAKk(vXONX(+~^-1FXzG0GpvQOe- > U6qnNFq;jyCV+yTeeIe?M > > > zF=ax^az!;(Xu=y1W4lajzkVj4Jw0rrkhO|zT`pTp)T0PWUl7}o804c_)wWNu>M)(< > > > zRfP!DM$#G8^^nzII^#Y91Lq)%_wBs@>jOjPYF}0w^Nz~Y{&Y$4YU(#qe7f+oINR > %0 > > zSneZe5EyK0r_Bkn`6XthG59f|Xo6i- > FRL}URYdisz<{CaM6zg|r!KO?%wM2;ud7(O > > > z`aPW0(IzOpA8gG_a9lqzr&*EUhPTNSXva#4rR?$b4p1fe;=IM@q(aB=Z!vd|icT > m} > > zGpPUE{#SsKM;tGA5@~9og4;6@QNhN;_xvtc09- > i{RkcWm=QxV#4=QOo$!Oo&57%&p > > > z;5H6xtC#a6@RIH0BwLOrK<kt47gWVC$?4D`N^VkJ9hnEFR?h+(XG<oVhLeH)yv > t&O > > zVhP%YJ>qd!{#3X- > ES^d2SW*WfLq3MSUMYN@0anc&jB{JhPy4^7n#vy}enEjqrAEFf > > > z@2o#g`S$=uhs@SZJ4+CCl~9$CS9)YiiBZvUdHu?fR|B$d!jfs957AjP*l4u1Y43<m > > > zts;j9&7Sr%wK)}cqIR}m87;s8E6l#@u=eLem3~gSwJGQm@6g$9IrZTBv5fVlb(^r > v > > > zbfa98pghse(AQ1jWwfsgSo@fj(bhtD5970DT`wo{?1cW51NqGhA(L5L*XB}}6D8 > b_ > > > z|Ey&EaWnSu0)OoHzOeFb^KHJ2@Q63ij7Hh3FaeR8MX5^$752g}VhlYLP$>0Jn > Dq14 > > > z*J`h~t*11n9~e(RHlxPXC?WpP3H56~Q)@kyDK$hEd_V&0I4H=5%>9Dx(nv}Aa{ > _zG > > z- > ge40o9{8bjAT`l*?b9TT<mmOqzLjP6*7|GTs4f$PAYy_Sob(`rl6~XS*MW2mxUJ% > > zRDL;<#P}IEu9TkKF*}*FJJCMtL?GirpZDi26FrHl8@Rq8Km|4meIi42QhTLtxjLeT > > > zbYtaGJthq(k@oyY@Djp_N9nh8#y`Ybe!^BB_s0I^7_4$#qDn!xhP(2i$JV(qITOp > 9 > > zqiioJFug}7!O_NMq#pugIX;83J?9^g%5->9J0*p`IQ6=jC&wtovz|OC2p^U-<2a}; > > z@A|y{W&- > ImypnJAD=1qL_$m>JR{vqs$Y>JCwI3wdBm852pI(`|Zt3YMpw1pVYh5-` > > z85W<vB~$- > U<WG>COBDIVZS+QOO}q$(TQ#Nzn+;_qKSjuf7Lql~0=#qZ@edc3Gqc6w > > > zuDOQuCqf!yLs3jl)SkQ_Ib>6(x83F)+CJVOU}ZPflTLdUhY58TyUP5Jnph|V8JT&$ > > z0i}|KN97gmPgsbqeyl>!|HIdR%nl1D7z;7re_vb?e}4Epe!tJsl-+wy=_(ZkJg<DT > > > zEvEL4A@nTNj`u2D%c+U6GRm7sMUgfrmEU$uppRs#)bXY)X6JQIyX*1oY*GW} > k<IF| > > zaHNTenY}%}0>Ve_-3}%b8Sv`foIqQrrT`Jps((eiB8}y(b9QWd`zJ*gt7u_b3)YqS > > z?rft8TYK|738T20zTZ3BgyQdj<yF!!-+<;)C1L4!1c_^;4;S94pF!2d`qPc;WZ|Gm > > > z$=p?mdTXZi?WlOrNz?}Hn0kO+BcXq!w&!+3;C?@ulaBw^a$IrbvICn|4oZOjp7J > @Q > > z6PsD=TOH?YVJq7Ch;FwGx#V1npTHz!^HV!(nfI})F4E_bl>$(?srMvD2piEk-D}A% > > z<j~7KBcje7v9yRgz`2d^!wHF@gh+a`g5J?Brxf-zvx0$7o%Pb2kw- > cp4adkG{%$o& > > > z%dt$oANAhhUA5or11|lcp*|;ww*x8)3VP^z*kA6OpErN=0m))ADYTF@`CT)6la > 8{? > > z+f|ZWf991XRNc$TvQ|@weV=#ElM<i8=Qsn6Rr;}- > n7EUSp2iVM<FUbMZw_i`22q@? > > > zs6kr|WS5Gg3(NEg_h1YzK}k#5M~9UYqs%eZ=H<yJ9V4^WrSohg!wRa?csHNr8 > 9x&m > > > z{(ZLpi2xlAu@RCsm(4Sx`08)mNv&L8r%^9&=KXXiq!o0uc3c)s_3#dasg&~qSB{b > V > > z8g?eJR!y(dC;=%y-V>f<o<nsoO6GqeD%xHE#XYZHRHI(j7p+CCP- > Ui*0n$KF#F=ub > > > zCA%k+Ua0Ux^ZzjSk7Pm<?^iY@oAz8#h_IvYeFI$QirdveGUY0{RKDaglnu=1pe( > wB > > z*40*Kn2|Lvni|*l96DD3|Fz|IIHPh>T($*^maO<uC)t6MZ+}Z|-}}*ULjzg&Ifvb) > > > zLrpme#6GUjiz)KUncK_9RK5TE3Hpgo)b5S<asRor(EVPDhSB*eVcNWZeHDMh2 > Hc(A > > > z^P%@%9RB)C_C;*~yZ4HspGFI0Lk$XKdV!fb#%D{fU>^&ro^xH*#G(uFur6owz > MXtg > > zH^0Zh(t- > EmiaBl>`Tcls+HJnZoyQ30vFByCb0O*`%L)nX5D4}#VfMp)J~NWKw40M$ > > z46D6ToGO~*lIx|Qb75H3?+#X*QJ4HgOgj?bLnD}%eB&%k9(+&PNM- > 6vy1)%G5g&Xm > > > zBX`D*Z}!UP+%JV68h}7!&Cyuz&u9V}7g4K{@atIECE=zaGy5se=l;E2KAxQQ7dY`s > > zr3- > FihZjNNS)Jd^rnQehLso_+hXq2zxeW8)=t8qkWCCMC<+zh+vXF5M*tI8tPmHQp > > > zcIF<>JxmNil^W1!9({@=N~PdvE&Wi)<0FQR5(FAm=R)N;VG|Ne61+HdUTm1sjn > }z{ > > > z8d8p$uq*YdNAFH_9Oyf<DX1=yz4b+kSJ%<hu`MRZnK2M|$Wjau(<cw;r1U#JF > <VIN > > z;&6741o<3%PP@Ksaa4OB3)64J7cnWLei+@k8LxE27ubX- > qS4?UH?hja^lyZXxwA;| > > lp0r(+`K^)Y&AL5T(>;a;tp795|91lNzXsubc7WVX{~rvVe^USe > > > > literal 0 > > HcmV?d00001 > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > new file mode 100644 > > index 0000000000..5ef93461ee > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > @@ -0,0 +1,52 @@ > > +## @file > > > > +# The default logo bitmap picture shown on setup screen. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION = 0x00010005 > > > > + BASE_NAME = LogoDxe > > > > + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 > > > > + MODULE_TYPE = DXE_DRIVER > > > > + VERSION_STRING = 1.0 > > > > + > > > > + ENTRY_POINT = InitializeLogo > > > > +# > > > > +# This flag specifies whether HII resource section is generated into PE > image. > > > > +# > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > + > > > > +# > > > > +# The following information is for reference only and not required by the > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > +# > > > > + > > > > +[Sources] > > > > + Logo.bmp > > > > + Logo.c > > > > + Logo.idf > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + MdeModulePkg/MdeModulePkg.dec > > > > + > > > > +[LibraryClasses] > > > > + UefiBootServicesTableLib > > > > + UefiDriverEntryPoint > > > > + DebugLib > > > > + > > > > +[Protocols] > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > + > > > > +[Depex] > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > + gEfiHiiImageExProtocolGuid > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > new file mode 100644 > > index 0000000000..1418eb2137 > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > @@ -0,0 +1,31 @@ > > +## @file > > > > +# This package provides advanced feature functionality for LOGO. > > > > +# This package should only depend on EDK II Core packages. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + DEC_SPECIFICATION = 0x00010017 > > > > + PACKAGE_NAME = LogoFeaturePkg > > > > + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 > > > > + PACKAGE_VERSION = 0.1 > > > > + > > > > +[Includes] > > > > + Include > > > > + > > > > +[LibraryClasses] > > > > + > > > > +[Guids] > > > > + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, {0x99, > 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} > > > > + > > > > +[PcdsFeatureFlag] > > > > + > gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0 > xA0000001 > > > > + > gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA00000 > 02 > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > new file mode 100644 > > index 0000000000..717e074c69 > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > @@ -0,0 +1,37 @@ > > +## @file > > > > +# This package provides advanced feature functionality for LOGO. > > > > +# This package should only depend on EDK II Core packages. > > > > +# > > > > +# The DEC files are used by the utilities that parse DSC and > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > +# for the build infrastructure. > > > > +# > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + PLATFORM_NAME = LogoFeaturePkg > > > > + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7-1F43D74736CF > > > > + PLATFORM_VERSION = 0.1 > > > > + DSC_SPECIFICATION = 0x00010005 > > > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) > > > > + SUPPORTED_ARCHITECTURES = IA32|X64 > > > > + BUILD_TARGETS = DEBUG|RELEASE|NOOPT > > > > + SKUID_IDENTIFIER = DEFAULT > > > > + > > > > +[LibraryClasses] > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > + > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > pStr.inf > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > + > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > tServicesTableLib.inf > > > > + > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > oint.inf > > > > + > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > + > > > > +[Components] > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > new file mode 100644 > > index 0000000000..092a055a2c > > --- /dev/null > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > @@ -0,0 +1,129 @@ > > +# Overview > > > > +* **Feature Name:** Logo > > > > +* **PI Phase(s) Supported:** DXE > > > > +* **SMM Required?** No > > > > + > > > > +## Purpose > > > > +This feature provides the Logo image and driver that produces > EDKII_PLATFORM_LOGO_PROTOCOL: > > > > + > > > > +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides the > image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses > EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > > JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > + > > > > +# High-Level Theory of Operation > > > > + > > > > +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a > logo picture shown on setup screen. > > > > + > > > > +The Logo file is built in HII package list as EFI resource, the driver uses > EFI_HII_DATABASE_PROTOCOL > > > > +to the publish HII package list to HII Database and get images via > EFI_HII_IMAGE_EX_PROTOCOL. > > > > + > > > > +## Firmware Volumes > > > > + > > > > +* PostMemory > > > > + > > > > +## Modules > > > > + > > > > +A bulleted list of the modules that make up the feature. > > > > + > > > > +* LogoDxe > > > > +* JpegLogoDxe > > > > + > > > > +## LogoDxe > > > > + > > > > +This driver provides a bitmap image via > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > + > > > > +## JpegLogoDxe > > > > + > > > > +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg > data and provide a bitmap image via > > > > +EDKII_PLATFORM_LOGO_PROTOCOL. > > > > + > > > > +## Key Functions > > > > + > > > > +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which > could be used by consumer such as > > Edk2\MdeModulePkg\Library\BootLogoLib. > > > > + > > > > +## Configuration > > > > + > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > + TRUE: Enable logo feature > > > > + FALSE: Disable logo feature > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > > > + TRUE: Use jpeg logo > > > > + FALSE: Use bitmap logo > > > > + > > > > +## Data Flows > > > > + > > > > +Architecturally defined data structures and flows for the feature. > > > > + > > > > +### Data flows of LogoDxe > > > > + > > > > +```txt > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| > > > > +------------ ------------------ ---------------- > > > > + | | | > > > > + | |--bitmap image data->| > > > > + |<---bitmap data--|<-return bitmap data-| > > > > +``` > > > > + > > > > +### Data flows of JpegLogoDxe > > > > + > > > > +```txt > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | > EFI_HII_IMAGE_DECODER_PROTOCOL | > > > > +------------ ------------------ ---------------- ---------------------------------- > > > > + | | | | > > > > + | |---Jpeg Image data-->|---------decode Jpeg------->| > > > > + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data----| > > > > +``` > > > > + > > > > +## Control Flows > > > > + > > > > +Consumer gets image from the logo driver via > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > + > > > > +## Build Flows > > > > + > > > > +No any special build flows is needed. > > > > + > > > > +## Test Point Results > > > > + > > > > +Not available. > > > > + > > > > +## Functional Exit Criteria > > > > + > > > > +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a > default Intel logo. > > > > +* If using jpeg logo, a dex driver which produces > EFI_HII_IMAGE_DECODER_PROTOCOL(name is > > > > +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode > Jpeg data. > > > > + > > > > +## Feature Enabling Checklist > > > > + > > > > +### Option 1 > > > > + > > > > +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to > enable the feature. > > > > + > > > > +```dsc > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > |TRUE > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > > > + !include Include/AdvancedFeatures.dsc > > > > +``` > > > > + > > > > +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file > > > > + > > > > +```fdf > > > > +!include Include/PreMemory.fdf > > > > +!include Include/PostMemory.fdf > > > > +``` > > > > + > > > > +### Option 2 > > > > + > > > > +* To use bitmap logo, include > "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc file, > and include > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf > file. > > > > + > > > > +* To use jpeg logo, include > "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform dsc > file, and include > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in > platform fdf file. > > > > + > > > > +## Performance Impact > > > > + > > > > +* LogoDxe > > > > + * EFI size: 180 KB > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about > 18 milliseconds > > > > + > > > > +* JpegLogoDxe > > > > + * EFI size: 13.6 KB > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about > 80 milliseconds > > > > -- > > 2.24.0.windows.2 > > > > > > -=-=-=-=-=-= > > Groups.io Links: You receive all messages sent to this group. > > > > View/Reply Online (#56238): > https://edk2.groups.io/g/devel/message/56238 > > Mute This Topic: https://groups.io/mt/72533665/1712937 > > Group Owner: devel+owner@edk2.groups.io > > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] > > -=-=-=-=-=-= ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers 2020-03-25 7:01 ` Heng Luo @ 2020-03-25 7:17 ` Ni, Ray 2020-03-25 7:53 ` Heng Luo 0 siblings, 1 reply; 6+ messages in thread From: Ni, Ray @ 2020-03-25 7:17 UTC (permalink / raw) To: Luo, Heng, devel@edk2.groups.io; +Cc: Bi, Dandan, Gao, Liming, Dong, Eric What is PACKAGES_PATH env variable set to? > -----Original Message----- > From: Luo, Heng <heng.luo@intel.com> > Sent: Wednesday, March 25, 2020 3:01 PM > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers > > Hi Ray, > It fails to build with GCC in ubuntu if removing the <feature-domain> prefix from all paths insideDSC/FDF/INF. > No problem in windows > > Active Platform = /home/ilabuser/code/hengluo/edk2- > platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > build.py... > /home/ilabuser/code/hengluo/edk2-platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc(36): error > 000E: File/directory not found in workspace > LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf is not found in packages path: > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Platform/Intel > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Silicon/Intel > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Features/Intel > > > - Failed - > Build end time: 14:57:21, Mar.25 2020 > Build total time: 00:00:00 > > Best Regards > Heng > > > -----Original Message----- > > From: Ni, Ray <ray.ni@intel.com> > > Sent: Wednesday, March 25, 2020 11:53 AM > > To: devel@edk2.groups.io; Luo, Heng <heng.luo@intel.com> > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; > > Dong, Eric <eric.dong@intel.com> > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > provide logo images and drivers > > > > Heng, > > Can you please remove the <feature-domain> prefix from all paths inside > > DSC/FDF/INF? > > > > We expect PACKAGES_PATH is set to include "edk2-platforms/Features/Intel" > > and all sub folders inside "edk2-platforms/Features/Intel/". > > > > Thanks, > > Ray > > > > > > > -----Original Message----- > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Heng > > Luo > > > Sent: Wednesday, March 25, 2020 10:44 AM > > > To: devel@edk2.groups.io > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > > Subject: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > provide logo images and drivers > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 > > > > > > 1. LogoDxe.inf includes a BMP logo in the EFI file, > > > the driver decodes the BMP file and provide the image > > > via EDKII_PLATFORM_LOGO_PROTOCOL. > > > 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, > > > the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg > > > file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > Cc: Dandan Bi <dandan.bi@intel.com> > > > Cc: Liming Gao <liming.gao@intel.com> > > > Cc: Eric Dong <eric.dong@intel.com> > > > Signed-off-by: Heng Luo <heng.luo@intel.com> > > > --- > > > > > > Notes: > > > v2: > > > - Add Cc and Remove Change-Id in commit message > > > > > > Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 4 > > +++- > > > Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc | > > 6 +++++- > > > Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | 6 > > +++++- > > > Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | 6 > > +++++- > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | > > 107 > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > +++++++++++++++++++++++++++++++++++++++ > > > ++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | > > 13 +++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf | > > 8 ++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | > > 10 ++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | > > 52 > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | > > Bin 0 -> 183366 bytes > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 153 > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > +++++++++++++++++++++++++++++++++++++++ > > > ++++++++++++++++++++++++++++++++++++++++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 > > ++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin > > 0 -> 11944 bytes > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | > > 52 > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 31 > > +++++++++++++++++++++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 37 > > +++++++++++++++++++++++++++++++++++++ > > > Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | 129 > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > +++++++++++++++++++++++++++++++++++++++ > > > ++++++++++++++++++++++++++ > > > 17 files changed, 620 insertions(+), 4 deletions(-) > > > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > index 23e7c6474a..ea879680ba 100644 > > > --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > @@ -7,7 +7,7 @@ > > > # 1. Present a consolidated and simplified view of all available advanced > > features to board packages. > > > > > > # 2. Provide a simple, single package build for all available advanced > > features. > > > > > > # > > > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> > > > > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > # > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > # > > > > > > @@ -46,6 +46,8 @@ > > > gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > > |TRUE > > > > > > gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > > |TRUE > > > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > |TRUE > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > |TRUE > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > > > > > > > > > > > # > > > > > > # This package builds all advanced features. > > > > > > diff --git > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > index 649774edf7..c1bd791525 100644 > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > @@ -4,7 +4,7 @@ > > > # This file is intended to be included into another package so advanced > > features > > > > > > # can be conditionally built by enabling the respective feature via its > > FeaturePCD. > > > > > > # > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > # > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > # > > > > > > @@ -54,3 +54,7 @@ > > > !if > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > == TRUE > > > > > > !include > > UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc > > > > > > !endif > > > > > > + > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > > +!endif > > > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > index 57b29a42b9..56f6143650 100644 > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > @@ -5,7 +5,7 @@ > > > # can be conditionally included in the flash image by enabling the > > respective > > > > > > # feature via its FeaturePCD. > > > > > > # > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > # > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > # > > > > > > @@ -55,3 +55,7 @@ > > > !if > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > == TRUE > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf > > > > > > !endif > > > > > > + > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > > +!endif > > > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > index 20d25dd173..7a76b0efc3 100644 > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > @@ -5,7 +5,7 @@ > > > # can be conditionally included in the flash image by enabling the > > respective > > > > > > # feature via its FeaturePCD. > > > > > > # > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > # > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > # > > > > > > @@ -55,3 +55,7 @@ > > > !if > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > == TRUE > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf > > > > > > !endif > > > > > > + > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > > +!endif > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > new file mode 100644 > > > index 0000000000..3fd1c3372e > > > --- /dev/null > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > @@ -0,0 +1,107 @@ > > > +## @file > > > > > > +# This is a build description file for the Logo advanced feature. > > > > > > +# This file should be included into another package DSC file to build this > > feature. > > > > > > +# > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > +# for the build infrastructure. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +## > > > > > > + > > > > > > > > +############################################################### > > ################# > > > > > > +# > > > > > > +# Defines Section - statements that will be processed to create a Makefile. > > > > > > +# > > > > > > > > +############################################################### > > ################# > > > > > > +[Defines] > > > > > > +!ifndef $(PEI_ARCH) > > > > > > + !error "PEI_ARCH must be specified to build this feature!" > > > > > > +!endif > > > > > > +!ifndef $(DXE_ARCH) > > > > > > + !error "DXE_ARCH must be specified to build this feature!" > > > > > > +!endif > > > > > > + > > > > > > > > +############################################################### > > ################# > > > > > > +# > > > > > > +# Packages Section - Make sure PCD can be directly used in a conditional > > statement > > > > > > +# in a DSC which includes this DSC file. > > > > > > +# > > > > > > > > +############################################################### > > ################# > > > > > > +[Packages] > > > > > > + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > > + > > > > > > > > +############################################################### > > ################# > > > > > > +# > > > > > > +# Library Class section - list of all Library Classes needed by this feature. > > > > > > +# > > > > > > > > +############################################################### > > ################# > > > > > > +[LibraryClasses] > > > > > > + ####################################### > > > > > > + # Edk2 Packages > > > > > > + ####################################### > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > + > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > pStr.inf > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > + > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > tServicesTableLib.inf > > > > > > + > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > oint.inf > > > > > > + > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > + ####################################### > > > > > > + # Edk2 Packages > > > > > > + ####################################### > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > + > > > > > > > > +############################################################### > > ################# > > > > > > +# > > > > > > +# Component section - list of all components that need built for this > > feature. > > > > > > +# > > > > > > +# Note: The EDK II DSC file is not used to specify how compiled binary > > images get placed > > > > > > +# into firmware volume images. This section is just a list of modules to > > compile from > > > > > > +# source into UEFI-compliant binaries. > > > > > > +# It is the FDF file that contains information on combining binary files > > into firmware > > > > > > +# volume images, whose concept is beyond UEFI and is described in PI > > specification. > > > > > > +# There may also be modules listed in this section that are not required > > in the FDF file, > > > > > > +# When a module listed here is excluded from FDF file, then UEFI- > > compliant binary will be > > > > > > +# generated for it, but the binary will not be put into any firmware > > volume. > > > > > > +# > > > > > > > > +############################################################### > > ################# > > > > > > + > > > > > > +# > > > > > > +# Feature DXE Components > > > > > > +# > > > > > > + > > > > > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after > > https://bugzilla.tianocore.org/show_bug.cgi?id=2308 > > > > > > +# is completed. > > > > > > +[Components.X64] > > > > > > + ##################################### > > > > > > + # Logo Feature Package > > > > > > + ##################################### > > > > > > + > > > > > > + # Add library instances here that are not included in package > > components and should be tested > > > > > > + # in the package build. > > > > > > + > > > > > > + # Add components here that should be included in the package build. > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > +!else > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > +!endif > > > > > > + > > > > > > > > +############################################################### > > #################################### > > > > > > +# > > > > > > +# BuildOptions Section - Define the module specific tool chain flags that > > should be used as > > > > > > +# the default flags for a module. These flags are appended to > > any > > > > > > +# standard flags that are defined by the build process. They > > can be > > > > > > +# applied for any modules or only those modules with the > > specific > > > > > > +# module style (EDK or EDKII) specified in [Components] > > section. > > > > > > +# > > > > > > +# For advanced features, it is recommended to enable > > [BuildOptions] in > > > > > > +# the applicable INF file so it does not affect the whole board > > package > > > > > > +# build when this DSC file is active. > > > > > > +# > > > > > > > > +############################################################### > > #################################### > > > > > > +[BuildOptions] > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > new file mode 100644 > > > index 0000000000..53c85da716 > > > --- /dev/null > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > @@ -0,0 +1,13 @@ > > > +## @file > > > > > > +# FDF file for post-memory Logo modules. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +## > > > > > > +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > +!else > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > +!endif > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > new file mode 100644 > > > index 0000000000..91cd1c6ec6 > > > --- /dev/null > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > @@ -0,0 +1,8 @@ > > > +## @file > > > > > > +# FDF file for pre-memory Logo modules. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +## > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > new file mode 100644 > > > index 0000000000..a39500e043 > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > @@ -0,0 +1,10 @@ > > > +// /** @file > > > > > > +// Platform Logo image definition file. > > > > > > +// > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +// > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +// > > > > > > +// **/ > > > > > > + > > > > > > +#image IMG_LOGO Logo.jpg > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > new file mode 100644 > > > index 0000000000..47f1672a4c > > > --- /dev/null > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > @@ -0,0 +1,52 @@ > > > +## @file > > > > > > +# The default logo JPEG picture shown on setup screen. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +# > > > > > > +## > > > > > > + > > > > > > +[Defines] > > > > > > + INF_VERSION = 0x00010005 > > > > > > + BASE_NAME = JpegLogoDxe > > > > > > + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > + VERSION_STRING = 1.0 > > > > > > + > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > +# > > > > > > +# This flag specifies whether HII resource section is generated into PE > > image. > > > > > > +# > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > + > > > > > > +# > > > > > > +# The following information is for reference only and not required by the > > build tools. > > > > > > +# > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > +# > > > > > > + > > > > > > +[Sources] > > > > > > + Logo.jpg > > > > > > + Logo.c > > > > > > + JpegLogo.idf > > > > > > + > > > > > > +[Packages] > > > > > > + MdePkg/MdePkg.dec > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > + > > > > > > +[LibraryClasses] > > > > > > + UefiBootServicesTableLib > > > > > > + UefiDriverEntryPoint > > > > > > + DebugLib > > > > > > + > > > > > > +[Protocols] > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > + > > > > > > +[Depex] > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > new file mode 100644 > > > index > > 0000000000000000000000000000000000000000..7ec1aa6a852564e262df599 > > 29655f7a0f3d5445f > > > GIT binary patch > > > literal 183366 > > > zcmeI53HVo2{>L- > > Jm@&3csA!XsrHq!LrXr$}sH8=bnxa%BMny_PD@D^Xt&}NI5uvfP > > > zOj2oNv@nuXBQ#^OWNI42{Qs~2|31%s?sM+<o_o&SzW3hm`94p-?sD!~- > > skha_bi{K > > > z=~b7%^@B41_p8spv- > > o%ZVP(p^$^VCyIfcJv${f%A6MtIf|Ns5}1@p%sU=T0}WEX+M > > > z4?q0mlTSY9oO7BqY0|D;yDnY2bno8%mRoM=- > > @pHzciuT<$dKW~hmRaN@}Y+wdi2pp > > > zr%s(ZYu2nMo_J#3ym^m3_So-!_d70*8#nHO2ObzYbm*^t{p;IqyRCQc- > > sEuo_19l} > > > z?X|62w{F&~*##F|P`PsDqmMp1yC|8O8w4Uj;D{rRs8ORv^XAQa^yqQ-- > > FL$sc(ios > > > > > z(sk?BZQs8A%P+tD?|=XMKS})#9Xj;MC!cKIym`fn6$=+Ggw7Coz<>c=yLP?u$}4~I > > > > > zi(gc&T9pb%(r}ZBL7=z@@Byk_yLQ{QZST74E=2vc*IwJXbLV&8eU}v5qABP5@4 > > w%( > > > zXU`jNyz%6dPmUfvny+okmM!^wA9Ktx#f8_DZV- > > ?l@S`97sBYc53@m5PoQd@Q?QegJ > > > > > zh7T#u<%=)A`17CtykyCeF=NKuc;k)r>eVx2V2Om7Td^X*K<?*1|9Q`zJ^A*%_10 > > Ve > > > z{`bFAOr3<P#$bE*?%m6lEqnOkhZ&GxbkRk}9d}%;y<jpgWdu$+<&+z4xMA|- > > $#1^- > > > zCX=s(q&(xrFhza!)mK?)>ej6r1Kl6|z*?g(WjQi!4~_ueL6$m4jT*(+EXl=|jI+?Q > > > > > z`rmx>&8k(a#*Q7^zJ2>DRjLH<81rN)A%Lhb8Dw&_fB$|@*)lgmBk=dX|NX@m > > Ut|-9 > > > > > zWukKB%9WCcnYQ{P(4awsM;>|P{rBGwEodf#APDT*wd<*;p6b)5&)H|6?cZA_ > > MNSc@ > > > > > zUcEZ6=np^qFo+D9XW~JCHR`9Ie%f#|r<^O$tg>axGALzxA|8P<xkiQn!&)>JZoTz > > Z > > > zR)h{a3^h&j%MSwV6<%}AHH#N7Hk%ZY5hlTmY;K- > > ;=9&2s%93meAH;j_y_XJ6P<%{L > > > zF(UB62Oo?dKmL+SE- > > `w2*&_65r=3Q}vDhA?aG0!%hrm}~eZ@i$yTd1*cw)9Bv(#$K > > > zjAPE6Ip2Q!ZSjP~l$;y_DBP}Dvu4nsLG*j6iF(T0`^#Vc64ME@iJu%9QdSZQ{J;I} > > > zZ!s~$iY?``n(yk>s#OacqLfL8sZP- > > lVCw{8qEDM|u}@*^PB`I&Ns}gJ&aA0ul3HQ~ > > > z@7S>e8_$|GYo<_ib5<o3mDx=E$3Om2Vj^am8w3Hgk+DmyRH;(VSdfzDG- > > }icgoAX9 > > > > > zd8ULBU~K{Ac8uoO2uq11XT2H~DpZ(1e}2|wisgE=^)_tSfU?l))vH&oT!}w{mtTJQ > > > zrI%h}NeZ=gv=>kwTd-gOu5#wior{+b44<b>n>J<26lO- > > ~++uQw(F8y2F|p;x2yyM& > > > > > zweP+69_CI54jjljK5^F{%@9DwkBU+L3G+fg&1T=eeQ|eI`21N<SigQfG=VjP2M_ > > Mm > > > > > zs~3JeFymrP9`98Nto~618*`}X;>@aP)240Ow7Kb~n{L1T_F=<@O_(rY_UzfuJoC) > > * > > > z<;yp2+{g^;U;p}7_$FsG2i}Tz+;NBbT<Ws&$3Olt>o#fYbo31vHY3~cu5aJIc!k1F > > > z;i#jI(rsOF)ANnsErCC)>#n;FCw16gV-mG>>(<iIrZ{-;Aj1#*KNPnkvQqk4XPvca > > > z)21|#kq_S={_qE^l@VPW$K`&s!$+1cEFX8=&|&hA;s4&fd(+SnG1Y- > > Ff9KAfQFzV@ > > > zHIlC<- > > b9NyA^P;wPnpW01k1ONscZ7hPhpAJ5i<tH*DK!?JemCSpZ|=B9mUF)w=TOR > > > > > zs9dHH{32HA*kg}n3YL7QFhzxf82gxgE0x}7kWj5!wX3hbnzt4@rK~CCV>_5uFc > > WFm > > > > > zu%QYFxldEEV#RmgeK#>OGFM`4bKt;%Od^a6rjXKg<dH|>4U!Ki^!)haj}z;}m<nR) > > > z8&%AZm}L6#GtM{zUBsB+b!N+_ko^KyJ`-5;%yf^0sXPO}4jno${ruCP{`8;!{KtuZ > > > zhK@^?m3aA%d(nUiDI?)lty&o~x- > > diw@GOhZy#3e%dj9$6v#48DYOG|qPE?DSUYop} > > > > > zS;;5X%ujzxR4(%?J_4BhvoVU!L$++jON5mzTC|91DHW|1cGgZh>7?R|ps7J21Xv > > Ve > > > > > zV+AutRF$&gRwdu8WJfO!BVzWoag=R#lnRj`rPmm}FqN1%apJaZ+hQ6iMVKwo > > Oj3$t > > > zh- > > zJY@x_sokvA<)cXPjG9|H9ZJWAwB)V~)kS`^<bCL}k}G0p&vI#oo`B|@!K95}Gd > > > > > zPVgz6DwwosN8pD){2}(mXhz}EDkOuVeLQD;#Gp7rgi#l%Q>RYaWy{nr90It5xc~ > > n9 > > > zliZ$`P&iL~WV<0MKN~EbGq5qE({PfWv8Pd>LMiB-cixfkCGJ~!;v))>;o-u_bo%t^ > > > z#_wOoxD;u1Q6M24Jo*OV#Ys1Z-0%_q3A$}}rzbRO{rdGI?OT&sh7n- > > >2YW`$G~A*R > > > z)0KSi5o<dZUcx|xx-VObM%OgM<cYKDd@-@nNI- > > iw2Yh7OxMj<hFl0oX1CyUP`_tr| > > > z2LyOs<CFu>C-LbR<baPuhYk%xMy3hIHZ2cqNw5tp<M- > > >=FAg7QS?42bVuubL3e3k@ > > > > > zvu0t=lVDGpqH=`*_H;M|i*Ua?(|lw<f@llD$jFf6=9_QMm2jBG6bS)d>F8(TdL?{x > > > > > ziA?j6=(oYhh`q3})Gm_n=DFCP{p@FW(G25ZFS~ri<bVJE{Q>w0T!j3~vsjq66%~Q > > < > > > > > z<;#y4F(Q~fW_J0A7vBJ6#AxxVtF9_)cbURV0s(BL8NcC?RZB`U%10Ks0yrXLkFryz > > > zP9-4?rjhADfGv`C?b@wdw@#6j8Rg@B_uZ%1KxZ<ufRhd(EyY^k!- > > |*!z6(BC<l|3% > > > > > z@{<4#8BnMzML95SP7?ww_~1@N!pbc25nraxub#>=D&lGC7E_m!Mu1&Qq8 > > $~K+syG1 > > > > > zOVW=%`lw)Aye^Xd=%bG=X$dfmPagu8UV16^3xd#Qj*lHXb`+W*KV=Q4apT7 > > 6>kU&Q > > > > > zgFqP+T99Yw8f@nH_{uA<$O$OiC03N_c!NNi5x^jVaAt)0Ky<Uk$K#GWPRmgh( > > H{sc > > > zm*&1Obu$Q92r#7@K79C$88b2j2)l>E=TCCV*1z#Xm7&fxRRsZ- > > M>2#1uHGaB6mFrj > > > zl%b}Xsu~2cg#ccN)fHC1_~Hw*rkbt(HMPwa0{H(IzJQX`2OoSeTdgy- > > H3(!20YbS+ > > > z2<W_pg)$-Rv(-9NTZ2Hh5Fm<;lXQ|}qm7fTo;9`290Ej{mk`i- > > 3k3k;j%BWarosk+ > > > > > z3?YDyjgxeeW1_TYs9mP227xRhfT@&(gU(wQUU*>^8))im5XcY$#EW;5&g&RQ > > tQl&Q > > > > > zsj5LBqX;Oftr~6BjP|docD4{ubk)utWwF|Yy25$qork(Uj^zoKtym4zYt?^&m8tL= > > > > > zp<W6pGac9q?~54Y4<0;t{`~p)U?gZDAqep<h5jUeQE6VaY85`lCr_R{Y}l~gy?bAF > > > > > z*=1;SEB2R31_H+%bBxyj)p;G4ssyJ_7%`j`;CmBS3{D^N*IaXrVl|xg_dOmoXpmyI > > > > > zLNZ+=wJKGr2ss2eML()dn>LJC;KlOg%L%af`RAX1<?(yrg%<)8;e4cCy?P@@j(q*~ > > > > > z*8}*+rczHn`DBL<9gaQrSZAKG9`lkUEQqhGLqg!8XP&BnYe4NQt0dsP7b}25<~R` > > J > > > > > zQ&>=iuax=7w}!>HS6_YA`GWH8zQBFQnBm%MuYKc<H++jwNkE;KEn9ZujW<F > > Tp}V6x > > > zMVN7oh$ZsDg9oY7`|rOm&)M>$i1)S$6DCxuR7svVnY- > > Yl0_HvU+>=awD1|rw?%lh+ > > > > > zYE`m)#FyIk?c2Rzkz5bJN8X162M*k|YnLS3z_*Ca(Wp_Q2*rs}G%+RJ!MhdtXf*_ > > 5 > > > z!`ZWEpLNz*5mqcfR-;FcRsoi%a{)3B@Q81$$r9va*|KFBl&W- > > 7!8E#jJonsl6NoU5 > > > > > zb#NrHmYAZtnP}ml#YgKAG+q`jUd(qkfapf@$aBv<SFjVE7r*@S%fQPWT9srx?< > > }|A > > > > > zajEeUp$*9nEk53I%PnDi@)ztfuZsr`9AMlPX81a8+&HhyxgLOzc5bh|_8RXcE$NL > > U > > > > > zF?F`<;B~Nc>C#Bbl4pW%bFT_Gua^`bS^QC4{dPhm94qqi_~VaXv}lp=YyzjO*D* > > Yn > > > > > z%ZB?dEJl@DUcE4UBxfeP41>eGF5K1jy&{>Z*^MRamv25H6R^hh*=L{GB}xuTh > > mVX& > > > zB3VmO;UkRLuwjD)_E>KbC- > > jt4PSFw}m3dZ3K3Ywt3u@G;p;fmqiU0c7zxqPWTOv#m > > > zD$hcB-)dM1N{5du#VcYWPv*- > > <J^{}@`>Z^ZxbN~^P#+&Mzx(dH?|iEi2_GqiaWzh{ > > > zlG!*`84g{4{q-uG3Y><W&9A@y+816cL5c9OTD58_BBuhHFCWK`AFq;6+- > > Z=3+O=!@ > > > zN)f!+ym_-qWuoGvRTeYKNEV>v4OFpwY|^BOJd==jd- > > Uj`0<V>(MEIzvRIGxVoR5J6 > > > > > zeX10#m1geTxhl(s&6+h+%r;s+QYdeXZr!?tly>>!pMLtOZ|ka8uP)Cd<X!fCeCuE* > > > > > zC<Q*Uv_e>0yU8IBBz(lXepFxKkd?$kh2nq^qdBIl!3E?W}BfD0+}UXSnHyVtj > > M > > > > > zXkB_e9?5kC#<vc3f>Pk)O*h?Sw>SKOgpa7wh0i~H4(g@~Om)?DlVai{?cKU{YlR9 > > G > > > zA`yNe6U%k81XA>bg-0SkRasNAYgh_=oHJ*R- > > Co@Tw7&#BRxkZktXXw4x6|W?f6}B$ > > > zty{OQRjbyir=E(!KkBJft5#*DrFrw_L}hyM#TOO#G4H?seszheT)DDc2j7GE_(;)2 > > > > > zu3?U^UUS8izR~60dFLI)tb!#&*$JfxUu^9JrNGAkifU{fUVQPzTCT>>gSAmrKR~N > > o > > > zF=z{WC=hndnl+Nlbt4s`A}+~IxD_iODT}$D`kJsJJA6a2gTG={!IBZSPk>Q=ntML7 > > > z6)Q);eYbn}?z- > > T!M(55)euZWK_U+s27DW0kUAnlJDG1caQj%_NT1$U%^AWi4MI5av > > > > > z>ArpY<h_8lye?>3>94rr3V8*DySe8hD$PQZ<)^`3m|AmoDgdGC)TyJ@v(Chr^`R > > GP > > > zH- > > tqb3>lmW6p!)!YiHtnkN_X40}}*vXcg=4n+)AldAl$&_01$q0{A7bfN(eWe8k{a > > > zXtMk?z{jzC`SOxD!tUaj39=F!rk8n^r5J0Y6HAI<-&r!jl+s;2uPeTM<ed=7@-k+j > > > z7$t?o$9mj%EoJA<osksem5Je_fQ+IZuPua38- > > *NvPdj(+Y(K7Yz<RH5o{9<j_3PKF > > > > > zRV&5B?qoP6P^qw$#+Q%eU%!5RlBwtEl@eY@vNh>Dsb@pP4NHVq3?BtBbp > > Z*mJN(#V > > > zk9o<J`}+Fz>xCK?@icNi(iYrMpnah=U~r?v6>`8jCL}nlS{KaRzKBjj$RgyA>xv)g > > > z<r&&{?Ix%kq{m- > > }E+7FMfT$=*+Mq=>60`dy%t0J{wCY2MbKkL|jfvL*euP4rS~Gs| > > > > > z%G|n65n%xIeO6ce3?GI5(&eMpdJ)Tg2^$>A1tvZ|QZ6BhAAkID0bbox%#_%W > > mA682 > > > > > z_wvgx_bu`8!w;9_5b~DcqX3{TAi8|?eFHn?VfE_OLiLJ!8Y>^IrZFC1Oy~qb_ZZLu > > > > > zQ$|JMAy&^|y5eWPkAisU@^Rt9g+dOJQ`Aa}OF*IY1o%jan3=dYOeH9}Z?Tdr)L > > iit > > > > > zC0@%Jmpf1U%K7J?ub5kaWQLCdXu5#t@=>lZV|TiB(7%6wp?bwVO@@!O5 > > mdKr+a{o) > > > > > zb&9LfU|4P1v`Jo2toDz(;%B~(LTBmnQEPdhRgPdn71L9R@sawUbka$zEemL?pJ > > Jg? > > > zvu4czIN(rPUdpIZqXJ~B_=w@70F*8ux_rcQvb?*Uce{4&ihg*)KZ!L{l6<6JP{Bnp > > > z-U*1- > > @n8P(7Zj6({`Ecm&2N4qFXj2?pZCoqZ~|TNGv7y{v$XigVyTw)zED;&rxFc^ > > > zg!zb6vofQ#T`NGuY+aWcsQU_;2&X%C?9k0qJ-y+hfR!#FT6_$ktS$&c0;j3sqt!c> > > > zC- > > Y!!zvGTOgf5n!`dV0^co4uNpS)1}uCDl*@1r0UT6`qDweWZfPgBT8#ub5Gexcn; > > > zFcDkeRSr-Zm-kEEx^- > > 3Z36RF{Q2<RB5G_77XwX33(P_AwLO#+*cwKw@?YD#BL*Npj > > > > > zm*uAfuaOrN%sNJ1sC8FY{LJ@J=qW8ewrtr_cszxt>Et8gO3a<W`;u+jwpF2nm4 > > ={- > > > z@_vcWC9>h8&`r94Xz>y4N_j`8;cml*4Fyc>)8yB4?4qp$28zD>^#w6RIaX`ZC- > > )J7 > > > zzZ9WjQJw0FpZPut-L1t(cEp6oQ+Rsz*=Ku6SJC-M#fZTd%os##- > > _X}7F3Ub%D22Ih > > > > > z_$Z*K3y2mU%atpaLIMg^lEe;310U%x!T<?%Ryk#1M_tw2*DQU&fB}N!L~^Pte > > &+iq > > > > > zbiEcIaX6g*{YPA!d5Km^_(=6utXLs*gv#kd4?X17G~qfcx^iEv_)8ZaiR9GqQGihw > > > z5G_7Zmahjh6}gHp4PLVZK%A%P;Uhao0iw5~M8_7evqh3)l=&q%<A;{8^^(Vf- > > O?35 > > > z^L-ThNSBXV`m4;9SnUk?>)pGzP- > > n?0w$c(oN)I2Y<bC(uCuxY+Ep>mhzP6C+T#!I2 > > > > > z+%kL&35YHqvCi`n75DW>A_aHq)XAN**A=3f3xGIJQ^iNTK%=4R)ex`ixQJ9#YCY > > nJ > > > > > zBjoNMXUv%41SgVX!$$!|T|jjC$P~s)RNU9KcFlx_*r$9E+&Oz)A()H(p!*<Ie587~ > > > > > zu??`+I&k1Xchd@988Kpn7f@VhGgKu4QNf(OF6xRO>AkWNu1gx?zEwK@bF@ > > ?fbagL< > > > zF0f7)ELh+M- > > 0MoOUcCxtVqHudAF0)>S+l&_;&ol!hbogzd1NKL5lY|+aLe#f08JMV > > > z- > > R~od0Qf}m5*6Y4%P+qyR4>3OAt!`vC8q=gkra_aK4Kl_8+60nUUjeLW5<qlKW<; > > q > > > z)x?uvYu(ZnKl6RG`@%ZV<s- > > 1Ghe3zAnC1F*q9g$hVbtl*w?IAsOCcX=JL6BGQ+!XS > > > > > zPMs<N&3TKMERx7XjFzJf>yvdpYAsgKO~|JcZTGP*AOZO3Yw_w7r;t8HCr_U2% > > uRmG > > > > > zrk)!R=aqEw5yy1$QKh@p#05|f<2Z5RM0XDMl`&(+I3WsotSf$L`#ut($wo%yz<2 > > ve > > > z7mxsa)QS?t1_bgJte4TWk- > > Xd8a19$aOkPkr`AD7RlySF|D;+y_lsDGCOPq8`)Jq&b > > > > > zNHi$yOcW1v#V>7qoHlJ*L9`2AWON}Pj{%x4AOZM@%{$=>3)ZmUMGWK>ds9 > > d@Zrr$n > > > z85X>V;*js)A+>zO!ckZ834=- > > jF3IWi>C+2>W?jUkfaF=NTe{+xDn4Qpw|n<)2~ff< > > > > > z6=(0dfCS(p9mFV9sGIyWKnM>)@DTe+o~`q)SKL^qIHi`4RFXL6&gS?YBMj<pTA3 > > tD > > > > > zLjSNJ;6y3Rv99=~ijP`*d34amjT?Qj(gh?K9~t53n)30n^ZmHntwWv6H}tk3u_|$P > > > > > z(#%J#S%B4c%)@QOd=KW%ohu;bJPi{K&{?#u_@#u8DC+<I_rG@nqH;{M6ldE > > D9_s=U > > > zjE@w3=bd+|)Y+Ma=u0XZJ9wodX1eo1-(!XuDuD^o%ts*A+SvgU- > > }$mrLJ0IA84|zp > > > > > z$}7&qfsb{?FD5=NUApvkh2M}NLuSsLNib8bk(e!wD&u@zKv3b3R~#MGg1y5=B > > )VI6 > > > z- > > P8}(ty{;ca>a@j1qQKH#cn?FVb!y;Q!46Xq@0hsvjE+3rhGmgiL+c?@r#L%wqV3} > > > z!1%vHg$f0!;k>8|h;M~?dpPrV9;1Ha`?w?li+<a;Z(q4`B}%7^P6KF;S(&5auDJN0 > > > zay~Lvk-+7?#m=l&Fb+_XcugmiIpGGJ{Ttv|SNyWe$0bXasNkauh`X1CD- > > u4^ebh=w > > > zpYSOx#`abP8PcSjkJJ!P8d?Bi#G%-BD;ZNx$*8qMhYnh~xfAP(Uv~M3mv49T- > > B)x0 > > > z@$G#HA1R%^MO_i{Em1203IlEsyso65k8- > > 0$H!{pMyc+9uUE<1v;R;qEUJt5V*A>5v > > > > > z@{yUo;#fi#5O)^~SLA%8kBFC~wQDcrALbM<Pm0DzmMo>8kL}yH*8(Jf%@hH > > h;hk40 > > > zefsoK;hk3+UGd8zADKC- > > FGuSF;?*zqbzeTxHEb{1=@UCZ$4qO%pL(XBk1T3w&7*af > > > > > zbSxg>C(x@DynKZ58=xzGS>)sB(WAXyNAByofcVl!g^yIDTeof!r7Yi4bQ3^E^=YG > > x > > > zQu_HwRoP`$M*~GxyLDOz5)HjD- > > dT0UFLQh(K$4bvp)Mf4U9ZSTgrRZc#>sfs2}VY0 > > > zm<c}0Eu`H2rS5djNmz8l2(07IjVpXQQBH6sRzKDizijc5)l0lOsG~tjT|f%<i1VU4 > > > zA1S?h_38n9P&kY8Jq}Dps+S2qvdHNRf- > > ?b52DBu^PK;k8uTksHojZe#T6M)QD|`ef > > > > > zRLuh{cIg7*?Ae0HT70Chk3ar+oMuS0B@33Kco9NXty<NVDBXih@KINBPF<wka > > 7i=- > > > > > zg2kHG6+iXLD@sTl$%w04zkYo;dMa0R0r9QBE+4H*qMb$TLa*1aZ=vo4tTUk1q > > k@1W > > > > > zO(yt=e|2~BC0D`($3aC3)iSTln>A}D0khyOUGYmZAMqWE5e>r?#jTA<0P*Sz`+6` > > w > > > zT6JStSc?L7q0R$z3#Uw(!e_T&d$lfVRR*;mt<0lJj7J4$^L>x|_wOI3XvU?RHf<_c > > > > > z3foCq`ae`7yL@CG#Dse7+O<p)+0?%J>Z{op3InY5tS%r0JHmM}3?Hp3VU~zyCS > > kI* > > > > > zw03zrJ^l34XwOChi&c|M@R7H%)@Xm|(4is4=JeA~_i|>gYrDz^7p*+?pP<7mX > > $Y&D > > > z_K!ss`^TKl{$YS-|1c)9f0SbXfY<&>ii_%&E+2`jB1eygM^!iQWC%2J<j6U5=0FY9 > > > zRx#SL+~Z)-f!j2k*kcyN{tkl#7679v*Ul#se5AIYefF92l_)=E4rn(p@Bt38yp%fd > > > zM;$m@^Pnyt1KV3g1vM`#UI<a;CeJ4;eDoSX79=LN|MFHV-sK%waK6tAla*M- > > OiVHX > > > zfz0tysDG@dS>Ypwq6Mi}@M5rq(1JL7g)qR!PMBrwf@PJ+MZ- > > r)N9U4{=!Z+1tb1$T > > > zym<v#zj^cKU^|k!706k7!$(PnW`&Ph<5k>mN}8;Di#a}Pj0Gvl;y;rM-3&`Sz2T!o > > > z0J6eIt@Rv5-v|;|gj?mymw)%&cMDST- > > h1yA5}Q*w0)~$gd@{jDzCl|19sT<ClQcQl > > > zE%rcJ{dQ9l0E1;%vQHU4O1eH1eALwk=- > > $1%q{)GAp@4y&m_SKiKBAX3T<2Hx<^90; > > > zC_ZTTC;=)HeALyK^Kv*Q!9npBw%&jI;~$- > > r^yQ<j_~m{lMHi6Vzo4A5mkB=V>XYL* > > > > > z+S$fvkB>U)C|p6>lr((Qh1c*=f><W_sB3Q(ha!^`LsneTb+jmH_~=AN<=F61f>I{< > > > > > z_~3&N+TSDJgFSopNZK3KEfhr2C8jclkGhZ=K1vXan~#xf&k0jDIVG1bUoL5HgtyS > > m > > > zMzz@RQ5RCfM+ssv@sT+=e%{z1z=IIpFZq- > > Nw%JE}|KP!cat=E0st0D3z@m7Iw+-&^ > > > z<cW2~&#dP-dy`|co+AKapDNlvVh&8)goht~xM|a-<;s;KK*@js0|- > > GrVZsD#f8^5Z > > > > > zzI)+?7upq2ISAl?)m><WR}3EoFm(YjeDo4~6+YtQ4(j1Pkx*q9U33wBfrDs{2}H7H > > > z&6)s~iMmmWA_=- > > 7h)|eQUGdBP_Yp%j44l<}C`X0CKU>d6J6>gMiDO~Bh!DpaQd@d! > > > zXm?|^1UE7A#oOL_=bfhok-d`X^_Fm6$6_%tQ#Hj_7(OZjWs- > > qFw0z{%hci90wfTs4 > > > > > z%D3Ns`}pIJTWG^gt&nhK%a%QK=#Z0f^5dw2#96hC<gejlBrujpCeiW{#Zi_VfzI > > M1 > > > z+GSg|Y~kYwD=j?HoWXsrI<{Ei%Lyplz3Z;K)H6>erQu^TIOn63X!(e- > > gXPNG;v=s6 > > > > > zq36dRe~c3nYmff2%PwOUsScf6UsNEVa7yG9^~{q=Y5157&iN=MT0RnS%nF}j > > @e!Y0 > > > zpwzHoLs)ag6<2V4&pr1%^2j5K(Ba5Ppqu=Zb)-nPI~A*^n9T4|5h#- > > k1fu2R2`8L@ > > > z8?Kr)Yg&9{w%DRY3o8sgI;E`kU`2@AKt<%W)N- > > Ke6Hh#$m~)cJ3?Gw3JL_dd%SX^4 > > > zLNtR+h- > > n8d`QU>O9(dpZZsA7nrI%h(M2zt*5u)WEMB#1#XT^$@36l(CF}5(&f04M= > > > > > z4O3zBY!MNNoR4_*#J@MuIq@gY&Jhcwv<{hEuwVgOAr&iDRBY_sci%10O@2 > > yzjT8=6 > > > z6&q`k83Zf@BIl!(ZO@)P@xX>RZ&p(oqvG}%<s2- > > P6k*5A(Ehy2X=vXyelrxYHObP9 > > > z0AoDjR4V@3v}vQ&mNU*cgGZP->Z- > > {>E}Lj72YB;P|MF@z!6Y^alsE$D*AY`yg@$&T > > > z7hZUw#6dI7HweUpz@$l&Y@#V1TzTb{F;&K7YY-@91TYCH=%Qaj%- > > 3Iky_69%Z8r$S > > > zgaD!3cJ10Fp<cmTmK8}%RZ2s)?b@}|Rl- > > k0wM`wej=;>BGYc|Ka&htE#aVB)Z~X~J > > > z0s_pDv1Rj3Y!Vm*B0- > > >4t5y=;6}&~9sWZ<!Gm_HNoQcIp3jwr$0m|&Orn$dzP&YiR > > > > > zqG(r;bdrk%?ae{keVgFqqlE@mGhMoL(cMMzEyyG=2!H@;JZRTQcvtY&C!c(RR$ > > eIp > > > > > z=;osZ2y^YeefvfjEV~rIG;Ne4fI0uVb?XW;PJYoc7?Ee5kGo!cwD7^I1@#F_FEJnO > > > > > zHLWNX0?dOfFQ#(px$l<9NY&~W?9QHh?m0II&MV)1^9@dljFM8ZBsmA=qIn) > > *K@}my > > > > > zU_@ONHU~giO=#S>@tbeH>ExjM81I@uS_*4ix#`xFGz9<NPd)XNTcUigpsI?Oo > > |LpA > > > > > z;c76PAaufx9XsSGegFOU%a$!;*AkEuuAwO|iwLj;fgz+^sJ!mt$~B8kj<C*{b>DW| > > > > > zZ7TLJ7?6$~JC@;Ygr%FTa)tm(I9mSyoy1i4^^r5s+|5Dje)Q<k__uW8<8{1x_3Ex& > > > zyPB0)H;g5I1xIsUfxo?E$- > > cg5(ITdtB@Up_{L@Z5ZO)uI3{Y*9BnRy9vJMt&Fg~Gr > > > z<}}R+5b9$8{{0exk=#NrC2fw5(*reL^_(FoB`{jIHg4RAt1$*D>1l$gNs<VlNrHa> > > > zUpetgK%9aS+4>LDDQw7Y+O)|FL- > > +Lq2M*w;+UUfF!90u4R<2x`ubW#Q6t8UEy7kmk > > > > > zPt9V(ldm)5d0ai<@KzC9D;X~32M!#FOTgqSY)VWL0X~aF!{I%wB_7Vi8#Zh>@x > > &98 > > > ztaA>^V%?^H|Nb9+^pO)u- > > ($>9@tq4Xt5vI(0}xCT1O)IeNBl=$F_0u!wQ3cPt%PjN > > > zsUiY|i)9OP?b@{xguQOz9*{6A#^_QJ>XavADW0eSii>_;B7wP|S- > > ^>;qY0q7aN$Dq > > > > > zD7>JST*pNxJD6B}8w;;U`Xb>>h`x&JV_k1lZh4qCZJN<7iMH>mR;|kJEo!cAv{kNP > > > > > zO~YOZ;a7~2SG4^SQ*La8J^JXQVWx_fRFDHZ*D+PnWXsTn5Ma6sK2E|C`I;S1f< > > 74S > > > zf^>=#>R7X9&nC#Dv)6(hZ`- > > !b%vloXWxjEpJ9mETt+#@8ll2rnu5p$^KtRH^Bv5Bl > > > zgf9XYTyOyslaTX7TO`QJtls!y9&LgqO_~sXTGyeU-DUQ{- > > o1N?2XXVwHyd5qXgf$T > > > > > zH~LX4(16`>1rM0i^y$+_v1pSlas;r?nmTpr!Gi}2_KxmFVtvk^KfhP6UNvgeh`g#M > > > zLni`k8S@SdwuJ80tpxZu{q)nFrI_QQAb^JfIu~cQ;XjvlU+>wohiHSp`qi(hSFc`_ > > > > > zM&+{5DpjfwMUI||YG`Wp7mg;F#pDvPOg9RBs=<Q?qZVb;Dv|>hkqDOEy?b|} > > x|rRQ > > > z01|@FHypFP{r20Dbcc`$u~P{`7ob+=k;D+FUAy+UapU;L34Is-6te<e?*xY6(^<D} > > > zU9- > > _F>C<}k>Jc~<74Gn`7t8@$JR+D&DqwD<3ITLtFS+Cr+<*jd$XQST+!xVRzzT2P > > > zym{=!5O58DgQ- > > Fw`N}XvY1_6f8;C?~bi)<Z6|}HgwrrVv>r9D}AaLZ7N1}lD%rnm% > > > zI&>&1k?_igMIk&$@Ljm>y6af8&9~hvqj%=lSR- > > O!j@_J!=Lav`6t92y;fG8W&8#63 > > > > > zUKBkOBC0daT)A>(geyOCL1M2Hn@zSm$B!S6s(kC#tr<(B+fZ~Uf>i(_@RI4&sS_ > > >% > > > zSFBhO-@wC- > > D&vqIJ$e}Bw_qKY@~2SBVuZ;Aguo5%u20|!lFXnBXP6A_SaM{HSEo*$ > > > > > zR2c+OnRCxQ_wvgx#}01DkRj+C0#{(G{4kL6<!#=)x%nohoKulh4@C|%=nysrLSb > > Yk > > > > > zs%P2JW__5gG<I92Oqs$skQL)wZ@u+~8*ZSUOoyQ@+oLC+d~z7AKV+K^4f{mr > > oO2G- > > > > > zUi3T%4H`6Y;zS(FV7Z3N{R9T~zKBr=)aQ)aTO@Lx#Y`}t#2Lu5&p!M0*I)ZeOBxdJ > > > > > zao@LZAN0Yy0;|6KaF~xWAzxldjSeRcHd$9;O3Mx%wi1vXArEFRlURE#Yu4Luzn > > ynZ > > > > > z7NyA4IdTNhl4T)%#E22=*RPLu=Q=T|&Rjt@4J%cu6nTf540D43gF4m^XUv$fd- > > v|l > > > z33>V}Y- > > pGprX=4Ge15V<x@5_cI5Z8?&z%TsXlR(c^ya%nW;bj}4;?xbdWNyej8Mqa > > > > > zpOv9uzDbdu)}fixqD2d|G|@URBU|U2fzS_2moDYSg;!4#TQEHmTT(T_{R`s9wj > > G)P > > > z1fO-vXYP+tfncW+g#qT>sLz#DznjKp0s;2c*;r={A4fopZ`q#6%9e`C+k*`hS~Pw7 > > > zbabC;)vASiz)W<CsiZ-`i2#E){8XTsgMJQP4H?vJ*|LQ#LKO-WD- > > Ev^^wzNGXTcf2 > > > zn%JN<YSgF%Lz+7K(H!R+0j&A3<YKUgMjwhpxDUliJ|7_5M1TJI=LD{en~b~@- > > h1yo > > > > > zwA5zJnl*g*aK3tsy|H05VN>!gc&2s15Fm^u17K|J(IsoppaHs_ke5#tu{Bvx8Z%}L > > > zK1{IE<%g{qj7F7x)TmJ~i}@^G-23+J+p}j+bmTgA?AWGF8&- > > )gz4TIop<u2E>9VWq > > > Q9t=$LltI8CkSzrM7XaWYkpKVy > > > > > > literal 0 > > > HcmV?d00001 > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > new file mode 100644 > > > index 0000000000..a636b086ca > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > @@ -0,0 +1,153 @@ > > > +/** @file > > > > > > + Logo DXE Driver, install Edkii Platform Logo protocol. > > > > > > + > > > > > > +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > + > > > > > > +**/ > > > > > > +#include <Uefi.h> > > > > > > +#include <Protocol/HiiDatabase.h> > > > > > > +#include <Protocol/GraphicsOutput.h> > > > > > > +#include <Protocol/HiiImageEx.h> > > > > > > +#include <Protocol/PlatformLogo.h> > > > > > > +#include <Protocol/HiiPackageList.h> > > > > > > +#include <Library/UefiBootServicesTableLib.h> > > > > > > +#include <Library/DebugLib.h> > > > > > > + > > > > > > +typedef struct { > > > > > > + EFI_IMAGE_ID ImageId; > > > > > > + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; > > > > > > + INTN OffsetX; > > > > > > + INTN OffsetY; > > > > > > +} LOGO_ENTRY; > > > > > > + > > > > > > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > > > > > > +EFI_HII_HANDLE mHiiHandle; > > > > > > +LOGO_ENTRY mLogos[] = { > > > > > > + { > > > > > > + IMAGE_TOKEN (IMG_LOGO), > > > > > > + EdkiiPlatformLogoDisplayAttributeCenter, > > > > > > + 0, > > > > > > + 0 > > > > > > + } > > > > > > +}; > > > > > > + > > > > > > +/** > > > > > > + Load a platform logo image and return its data and attributes. > > > > > > + > > > > > > + @param This The pointer to this protocol instance. > > > > > > + @param Instance The visible image instance is found. > > > > > > + @param Image Points to the image. > > > > > > + @param Attribute The display attributes of the image returned. > > > > > > + @param OffsetX The X offset of the image regarding the Attribute. > > > > > > + @param OffsetY The Y offset of the image regarding the Attribute. > > > > > > + > > > > > > + @retval EFI_SUCCESS The image was fetched successfully. > > > > > > + @retval EFI_NOT_FOUND The specified image could not be found. > > > > > > +**/ > > > > > > +EFI_STATUS > > > > > > +EFIAPI > > > > > > +GetImage ( > > > > > > + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, > > > > > > + IN OUT UINT32 *Instance, > > > > > > + OUT EFI_IMAGE_INPUT *Image, > > > > > > + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, > > > > > > + OUT INTN *OffsetX, > > > > > > + OUT INTN *OffsetY > > > > > > + ) > > > > > > +{ > > > > > > + UINT32 Current; > > > > > > + if (Instance == NULL || Image == NULL || > > > > > > + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { > > > > > > + return EFI_INVALID_PARAMETER; > > > > > > + } > > > > > > + > > > > > > + Current = *Instance; > > > > > > + if (Current >= ARRAY_SIZE (mLogos)) { > > > > > > + return EFI_NOT_FOUND; > > > > > > + } > > > > > > + > > > > > > + (*Instance)++; > > > > > > + *Attribute = mLogos[Current].Attribute; > > > > > > + *OffsetX = mLogos[Current].OffsetX; > > > > > > + *OffsetY = mLogos[Current].OffsetY; > > > > > > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, > > mLogos[Current].ImageId, Image); > > > > > > +} > > > > > > + > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { > > > > > > + GetImage > > > > > > +}; > > > > > > + > > > > > > +/** > > > > > > + Entrypoint of this module. > > > > > > + > > > > > > + This function is the entrypoint of this module. It installs the Edkii > > > > > > + Platform Logo protocol. > > > > > > + > > > > > > + @param ImageHandle The firmware allocated handle for the EFI > > image. > > > > > > + @param SystemTable A pointer to the EFI System Table. > > > > > > + > > > > > > + @retval EFI_SUCCESS The entry point is executed successfully. > > > > > > + > > > > > > +**/ > > > > > > +EFI_STATUS > > > > > > +EFIAPI > > > > > > +InitializeLogo ( > > > > > > + IN EFI_HANDLE ImageHandle, > > > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > > > + ) > > > > > > +{ > > > > > > + EFI_STATUS Status; > > > > > > + EFI_HII_PACKAGE_LIST_HEADER *PackageList; > > > > > > + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; > > > > > > + EFI_HANDLE Handle; > > > > > > + > > > > > > + Status = gBS->LocateProtocol ( > > > > > > + &gEfiHiiDatabaseProtocolGuid, > > > > > > + NULL, > > > > > > + (VOID **) &HiiDatabase > > > > > > + ); > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > + > > > > > > + Status = gBS->LocateProtocol ( > > > > > > + &gEfiHiiImageExProtocolGuid, > > > > > > + NULL, > > > > > > + (VOID **) &mHiiImageEx > > > > > > + ); > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > + > > > > > > + // > > > > > > + // Retrieve HII package list from ImageHandle > > > > > > + // > > > > > > + Status = gBS->OpenProtocol ( > > > > > > + ImageHandle, > > > > > > + &gEfiHiiPackageListProtocolGuid, > > > > > > + (VOID **) &PackageList, > > > > > > + ImageHandle, > > > > > > + NULL, > > > > > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > > > > > + ); > > > > > > + if (EFI_ERROR (Status)) { > > > > > > + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in > > PE/COFF resource section\n")); > > > > > > + return Status; > > > > > > + } > > > > > > + > > > > > > + // > > > > > > + // Publish HII package list to HII Database. > > > > > > + // > > > > > > + Status = HiiDatabase->NewPackageList ( > > > > > > + HiiDatabase, > > > > > > + PackageList, > > > > > > + NULL, > > > > > > + &mHiiHandle > > > > > > + ); > > > > > > + if (!EFI_ERROR (Status)) { > > > > > > + Handle = NULL; > > > > > > + Status = gBS->InstallMultipleProtocolInterfaces ( > > > > > > + &Handle, > > > > > > + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, > > > > > > + NULL > > > > > > + ); > > > > > > + } > > > > > > + return Status; > > > > > > +} > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > new file mode 100644 > > > index 0000000000..fd9c489815 > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > @@ -0,0 +1,10 @@ > > > +// /** @file > > > > > > +// Platform Logo image definition file. > > > > > > +// > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +// > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +// > > > > > > +// **/ > > > > > > + > > > > > > +#image IMG_LOGO Logo.bmp > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > new file mode 100644 > > > index > > 0000000000000000000000000000000000000000..d1d099789fa794648b86c04 > > 6f0320a553954764e > > > GIT binary patch > > > literal 11944 > > > > > zcmbt)1yozzwr+6OVns`fYjKxAi#rsGl~SZwaQ7xSMH;L{gF|r*PAO2VloTiy0>$0k > > > zA3gV;|D1Erd-skz-pU>sd+dzt`RzUD`sO$1T6a@- > > zX7CbN~%f#G&D4T%KZm$hXg1B > > > > > zFwoKe9QOnB{=mY;!otMF!pFhE#wEljBqYEmARr<pCnX{#BPJjqr6MJJKtV}KNk~ > > FX > > > zLq$PDPC- > > fW=O$<v_y57f!o$MCqaY$6qWE8ryDtDTT)+U@Qw%gR06G~O1{vC24}cMX > > > > > z20+IEVBF*V`@qG+#=*abiT>yJ*Q5Y642*m1*w}c4#JD&B02(?5CIAZ?hYS~woL > > K<) > > > zKwQ_-t)Akspn~^1N-8luBd-s&V- > > KGQy>a&dLsN2V>Zoa0L=^R{AjzqD`Cms_MGXv- > > > z3cJRIUxan{{M^5{K=Dte{}aNWt7QKG^!KYX078s=v}71$06D<t&sga1<Y77- > > 6!?Fg > > > > > zkmOqR@l8Kl{#s|UYF@;>+y`NB5f6%1VS@y`ZtL(3A7^4K^G=(4UE49w?T_0SDk > > G($ > > > zN1<Fzi- > > #BCZuBd*+s^07kU*dt{v81Q>)gk~AQ&^pb*wNQgm&5Qja9BOcG>LPphMn9 > > > z?<LSCzG-E!dB<m>vN(4)gekvjlgi*B7D+O@84|?4X;VNd+d{aB!>#pj!RbY@V{- > > 0M > > > > > zPKO!E5zd!e2f}z9zFqo?RzF^@dVZHH#ahPeGa{TZpU_*TS1M}tX|w?EK$R@^Lk > > RGw > > > > > z!2NJxRO`lH|1I4eAlB_T*bxj_KwZ3X{pDi~+h}#8{=KYTznUxyJMG)ThL|nWX9zRy > > > > > zjlcdeRPG?hqS!3Fs64*K%@X8ETgA5=WaAe}8M~Q$o<KY<;?t0OTsCev^Aip)xZ- > > &7 > > > zEnwj2m76xl$_MdV+x{H|P#S4>kN+4mZvm5zF6{kGTDNoQ`j$h0&=;2p+- > > Mm#r;q9a > > > zs>e7`0_!VEV8!}BIp8l(V4*`i?MARK`>JfxT(4<Y*rs-S%vWL0!r{>*Qllw5>&m(( > > > > > zI+~jN%Lzeg%hnEzdBDc}>Pl=WN<Bm6{2?g>c}Qq3kngxNWsM~L?XtNCxd(st+& > > s!y > > > > > zI*EgOrXSDx282+Z^`WkNLp5%?Z5T!MlIZj?Z;RlQ`kXhU046A8Ah5sU<#$$%HnW > > 8p > > > > > z%i@k_8@M(#J9<$Rv@YyRIr0Kn;u#U;OMJW?y=?POH6LAyzUFU)7%XSboO{- > > I1(G~! > > > > > zv&NF8LJDonPp@=)(heT{7*k(r$#v`!oGxJ)Oxu5Xb))L#NmJ3CE%K@T7NbCa*<Y > > 3{ > > > > > zSkVIUwM1Y;`p{X;$6MH+8+5bvi99ug<GoxS<aAQHwEI+(F1~ZtI!5~r5Mw8E9(X > > vd > > > zUrJtY`3- > > q7^p>6A$y5?)h$gnjn>G8wL;vS%m_wlDvulFiweq(@6$qzti;NKBX@X(6 > > > > > z;F*7)|CQu!YNVQ8kWB*T9bgj@^m|rs1G~^qc*#HIz1h6Sa<Arafr{L!p+et*ooI{! > > > zMIsQB5uqH1voeu*r4H(0{WgJb5FYpS-5#cI4DNinbgL(w@pbDN{bLdE=I- > > +BLH<6@ > > > zJDE)m`9pQthFm2ursEo$*$4&bDm7)9a5WK%-_c`s`B)nR5h- > > @4#bnHT`3_b!JBHow > > > zxyGDgImnY#bM@V- > > uG(2(e5mx8F$Jwj7So#v1GxWhp>ow^hy!(aeiO^a{iey<$mjMM > > > zx06lB1|z#Qq?(cCl;i<WuAU%C)-koQcf??CdqKwly`#s}- > > )2PTm^a{pEuoxR=C#gC > > > > > zs@TJ8#4zz8InTL)<1nfss&!dP`@^_Ya$?Og(x{@I4dURS)bN{D0#kL^gFy7@Ppu > > ue > > > > > z>&J*p*N`Na;KD0%B22CEY}XdL$O}WaZ+p$(3wB9c1NkA!>=W=o3Y>Cg12TO*z > > h4fT > > > > > zSA%uomW@1Gl5o6W|JkMiZ5ZTo2JJN0fGl5hX(@{54lqcN{n;X4wBsu(cO0n?& > > $k<J > > > > > zsY3z_`2DcPSkp_>0+NTydjm@!SeX7`a!6K%9sd(~(LGQ<j~Pc%LnEupS5FcO*+U> > > o > > > zsre5rS}aW)s}@)gnlg{qR7- > > r<5@SomE6N08vY@4nCv<_`8+xJm_R8a=2_UR+*Mq*) > > > > > zgafvZ2Ljj8qM30Bw7#k!fg(zOI?QC5TacQR&pROVy2xtX{vDwB8fX<$yY_KhYTFe > > ` > > > > > z6V!988l(NgW_i1Dq<Y(X2h&?ef9)ZCl@KwL)yUv}nzilJ1F5Dx^?+I4;WOwVxu_e! > > > zrzuo)hf7U<4or;rr^mo2%+RXu<Nno_E- > > MqUbaW^+bO&JL!B!hoy7_Fpt8o9V3-J8_ > > > > > zw4D`mw~0ZLxk!!$nvP_poz__f6yn{K9eSf)fm1_~&V59f2MJ6{;xb(dWT$mSzW > > WSY > > > zCQm-AL8Vn?b<aePPdE_Ih@94d?-qAua5UXMO_vw!e(-22`4Zj<hC- > > p6eI<pRAWZsS > > > zb8l&H%4Ch-r4mX`tuFn3S!aPU6@1f@eFyM^e+Ki- > > R(kLYWoNjiUT;*DRZNqc>Boy# > > > > > zsU_#B%Fd9O{MYP)g>yon?|`q$sUrm@?xDp?`?@DAql@r!<Mk7UpO6q~4Sy# > > 3d1$Mo > > > zTo{ex<xTRjqhMQ<LFSm60Y<O<I#Yc?bNQnTO2}AiAPws`T^iO`IV- > > >R0o83OvX&P$ > > > > > zoGji5r%^OavL<0l$alF^vw$Ac>|(o{QnE^3Ry`M*a?wj&)+Y_xz4E&rZKb(WmB;a > > w > > > > > zz2WL)HB+aw{~%q=@s*V?B2}?&z5{|z(O0%Y)*qu1Oe@xz@Kb9;+uQQs>ULA{ > > b14sy > > > zaP1(hq~*)$ZVP@VRo_`kBo7p+qT5%FOI`_0#d(u0b>c-f3!lIVm8Bphu<- > > l3=^cEW > > > > > z5u62#D^7jk95y&DxXZ`h>b@AM7?6OO@AkWH9*FHe`{NFfJvY~84R4JAdIy}U! > > X?xb > > > z58KO(*<D`X^!;n1{tGhU- > > gB>3{)H<UNZNvr5pSAGpABrc$VQ~|o6WLIEux|oxV!xb > > > zjD{B6#&qBk=jK*4&@lte0NvuLi)GNxZo1R;cyqG1Yx2L*Yj5>_w5=ykbO6- > > OoIGc@ > > > z(%$_%q49Wzrf=8f*!ro}6KlofhCpLZjOE->Z=+CSrX^7{Q-i;x1D%xidFpr^$Jo}7 > > > > > zhmkhq2W29QI%yJysC4Kd7#(ofy_73OyiC@y7PKyszt_yV#^~28xfR208mp_9oa > > e)m > > > zG^dHP_;2xo{tkF$lg1()k*<*C)r*;nOIP~r6ad&0X7agWw6Qp|J- > > 7|syRK*C6c<&+ > > > > > zm#Ss4Iy0oPXLXj`W+zW(@qwy&V@v`MIHYUdw2LY_DccN?H2Ld{sdDKhz|dy > > w<cRAV > > > > > z&Gem_HJhM%1tm_vV=`caujL}+9iW@4YWm2Lc4A9|zke3g6~vK6_RLS|#lj5s2 > > 77P{ > > > zEBjYSK0StH- > > KO&ct09341)J0(vgR5_<Qr2HAev&AVpIG+5T^w)kZI{1r_^2bvi*|F > > > > > zcDnL_KAbl^aCHKjRI~pisA~@sU8+Q)Zt{k)*^a7a<t5S2=hIZiF*eN%GP363fJSp< > > > zcSQrUsjo`|cIV$*k0&&gqjq3!yO`Y-yXx&- > > )rd!0)UwT<X+mDe9L|a3$;n<F8nDj0 > > > zbt2XTx~4+j0mf`@)4?nrk_$M>$6^uZ(~Lx6J$-xXozJ66o%(}%sgjYss?*LK-pR$? > > > zU%@5+mRbI$3$X*b?*OPJ&08okXrqNVeO- > > 9(A*20F*RkHp?htHs72I{MQs4c}4ZeLk > > > > > z!TU2Oso2@(aJR1V5X3wDaphN2Mg8&AeG*o(hZS5rss?Xn>Vc!QRV*{#nC_en > > 6@50g > > > zVKc}m%KkiBa%Kt{QGrG>syls$f6@- > > UE+Ri1de4jMS5)7SA)p|w1fwqa9J?pC#kfXe > > > > > zGxL@vL}J@>8?yRiHd`zdLL4I1D0c!8#&K9GN42A(py^jwrB9cRGct&$orzhT2;!W > > U > > > > > zFfR@C;7Yd<N$aq3lY40;{xgnx$m>jpcgp*rllkD@(_Pi`@^5xz<3~fgiuUvMmtO!- > > > zG@_JmlSGZTlwMjxkgjGKpTrDI<GM9TNySk!(_9<8ixLJ-fOl4;Jxe- > > K_~6?SQ|fCA > > > > > z*E1W01uG`y8tZBT$%ZihW`T|#(O)VXN3Df2Vv6Y}gN)k{Lqi{RJTkfP^AqcmkHfp > > F > > > zGZ67BmA;S*tg0KL&I>z<z?M+HBmf=Y@D3o3@UQ>- > > JQJE@y4|C7IZj3HX(Bu)fyKW4 > > > zM_Lmkd1?IK<~U-)bUB*haUKu4- > > dY+nq$>gA`eTk+_~zY3uflwPv_xjVj~sG_Rm17j > > > z!yD==(psSU;~lX5Eeo<UUX#XWbxQEc5$m_VHv<- > > gC`E&MorI0!o88rPSJXA3VSq4J > > > > > zW;H2F4k)cZSl4}IWHQt(BebeK3Lg2YPDSNn;WRn5Z+zYE#()7sM==;A4t5VF6vUf > > T > > > z5#Nbe!Cs!XU6E>gQj+ky- > > {@C6772nwu!48=I>ERODa#OzoOJI%F%nh}29ST4E3B{( > > > z!Be@Pp{|$+i%1ePIs17uNjh1LQa7t+TJ~;tvm!lzBUU@Qtk!- > > IOLF7X@!35lin4ES > > > z$q5#7%y*~Dyzc-tsrB`-LA8RNHe{w;>-xn(E#n4-q*6GB-9d2Xq8+iaaIgcL$=X2U > > > > > zcX?*P$I?ZafVe1pRh)XApuO$7%#e8=$c645;9^~d?uQq2*|kT#QPHdAIX(fQX8K > > nD > > > zCf&BbL7v!-Oh*ez<X_bjaLgGJ)a|*ozS4@yfc;pPuxt$pvc0|T{2|O(@yGv8- > > t%Ao > > > > > z(A(QKxtlrR`3+w9Tn22T5~6kRVKu9q={eu4?G|EZyZcH2dw2o7ypkWS$&rrWGJ > > R-X > > > zYRS2$b8c#yQ0^V%$-s+H- > > j&OZo~7OFwssk_)$i;vp}qqU;Yd+16{VZ*<`yLu)0=?x > > > z!iWZ=cLBcX1S=~eT~4wz$HN&nm*iRn%L1b- > > y^{bgc&)ddW&TgNrHAuL9Gn>s7Tz}F > > > > > z+btRUDT}eU=)~&faeUd>cG=?hCic4iQ=i;ygmP?_c@7yHxTS>kEsut1SGJp9yz!w > > U > > > z1N?El)P3f9=N&a$L{- > > pdtjgPjuX;~yQbbtecL0Z?=v$m>rjs|+>m|&cBEv*uaWV_` > > > zt(Dxx=Z!+1V&_iRq9ZnOWVhhRmZXUp^cJmdw+<8- > > oLRy<nXDAOF<0P<gqj`B63`4f > > > zYueOWi3y&(O%PZXX71K;;_cxG3+GiX4ub2- > > vVmRhZKXyB<G9}2B3UnCn#s+Rd-omV > > > z#t3rBMY48UydL@618@g;@%uIgGS=+skt=2xm~kl+#w`1Bg62E- > > VPjZ2ZedRXJ4)`m > > > zQyrg))>f0D%8bF1;Q&eVV- > > %;U3qox$b%4EDJ~^T77)y3lJZMe(Fr!H9gK2jC+)l!0 > > > z;U+!oA^V=JC|OKjuoxyO@DU==pE$#lZkMjuLYa4N8- > > ?uyEKB>^7}M0iX##x5sV0>| > > > > > zZ%f8<2UyTC#1X&Y@Ae#F8C|WuR_l!s6J+hu)3t7_Bb3!^lvL|h)z+oUg73~=+Hq > > %t > > > > > zzxax+s3$tU$fL3<^<cAX%8XBYWBSmJ;QeWWokbt!Q^;?F6i&r@7IX>)gm5baM > > D=rm > > > > > zR!gARP?RN?S&k%wUL!e(eMn}!rZWnY<OMd8$`>!pGD^2c@fIMQ!+vev2pgBI= > > }L{= > > > zGI$P8+BnG?P*YWN7Cn{4;$?)a7;oqzJ8j5i3@BN@- > > 2r&ZW5d^ftTcV^I~<nMZ|74r > > > > > z4Nz}%_Et$GmoxyYppA!$ZF6dEY~q>&v+u?7neSLgLF2r?Go+}6Na~w%x_5OD > > MRP#y > > > zx<vDz<VIHo4)mJMj}3YfHuik+J(QxC`AJArckW5fYjx`!9oYIQSnTLwYu- > > SYR%yp# > > > zx8+cP?mJo5X<kvB$w}ad3|81- > > ;(|z={y3gw1@t+IRa0g%+$nz3=UG{5m*v~hhpK9) > > > zS0|0Z_7qfdef;D^``z8BBewWOC1tVO_ce``s8#V4&ng$v89g}hO(cvYlS2ZT!nsjv > > > z{(<>dC- > > X`gy;m<Krvtltp0+*9=^k(i_A#?4@T4ZB_l(5b9P3aASm~B+2fBF@evzP~ > > > zyMi@-XmIp$F!<Bp8IACRTd=TW-_tCXg%KT#ZXujK- > > nmcl<0)*EZEf?45YKDpTx0`w > > > z8~yxw085D1veo42qdUL|@R8?(m^i`3SD4c@*ea- > > B=Td=u1jBsNMQFQv880yl&b)}m > > > > > zI&H5IpmhACHRHVM9SLH}&!XoWHdoc=>6`WJua_!{D<#JR4Rlw?Rrl>NzJjaQB| > > !+6 > > > zCg- > > dmdU!yc=R*`GM@Ys9$<KMW!omJaq^|1BXh0WoZ~c*+kQVP#My{%lgyodT*a > > ~AS > > > z4F`*9+-&)9@uC>X0IfR!vjLM!iX1L!!-x)>1C<e}T92CqQIW8iZma$- > > omU~(K8KxW > > > > > zh3Wyf6GNX4vv)FWhDB4+*sF&Xgu^55Y&#<ZYANJXUkQ#_LGy^w0Pp#_Qd1Vj > > 6MWnn > > > zx- > > 8jP8E*|Af%h}glpO2}v5^$VmxGvK?^EX>g9kz?CrQMUW`d$GAoEY=%SWK#EvZ > > 7M > > > zCIBm(6h<- > > gZOO9)qXwr50!%Rnx$dP7cyGNod@G+iI`x580UhbpfS$svDicPk^61h| > > > zVtFY)!p60(YSPS>- > > Sp%5F+t&nU%T2}W_qC@<zCHFE}+aZE7$fWY*PAvB5EwKyX|OX > > > > > zZT6!*zwU#Wim8fHQ2hl%bQ=3fJs`x7TnsrXBTTIdL~9<}#CSPR*qCX<2NGiG5X > > @ok > > > zKxsTpk!%Q3Kg2jUpy- > > O9;(KTdbgDJ6;scGYaF)0|5j)KC>kVVZm@tsPT$fZ|sC%|^ > > > zEp3;|{SJ9aFWMBU4t)pzYQw+Ou~%#(UI^- > > R_g4<b()Ng$eE#<G1_J=Tcu`CcLw=|i > > > z%(W()+_Z3V3}4pYWDZUOqS;YAc#u4j- > > N=95v2ZWoI@EAQeh3W{br!gG3T)y_!&<V{ > > > > > zvK=34k4d~*!Ul&RbhX7?q+6>NeVKlx<C+46{hpgGe_7%i?Itd5ESh1jz65TYU<B)6 > > > > > zT(gY^e<qlOg<h|JRBYp%qRMT_7|P>h|JkMrxdWKsYr{6+z>b9$uVZ)A?l9u5Cw( > > =l > > > > > zv!gB~*kX;A#1N8Cj4fPR!MLEUwXGm%r4>Ad`r*4Vt)%f`C2ewpa|`$M5%B`BM > > UZ=2 > > > z!-A=K?rk|78$~${rNUm}Z3H(kw1*-*fEAZr!IN2f{X*~K6>^$T)|@?!FIt||O3~Rc > > > > > zhA~UA1c=ELq!ZGDoet9`@h%;Ej_FmkN(~8r7Jh+t84f&)Korw>l60WBT&6aT@d > > -v? > > > > > zm2;jmw!>$N0vgjF7mNsl_nDja8A@YW8@!wYl~e4q;8#l<QsMfp{}Z#xX$m(J|JS > > 5U > > > z9NrwVzrIEkC^l8@BmPxZ*HgE3F7n5- > > Ncj!BoI_AyJsD~|g=`+k!oi7?aoWJH>kCbY > > > > > zQt*{>`kIUDupw3OJ)m&1U$!7ZNBJGdfC(e{^h1bs2hWa=ACI4@?GrNOP@&>t > > S}U!k > > > zECP-JIm- > > w7Q<wFa`47u(Ng%${2+TsSB3DJjQaEnpX^G#QC`x_$O#30(=IHDJKU{*E > > > > > znq2D!Ym%bl!@bUtk=L=Jz{iXJS8YqX_HZ>~epKAz;|Ug{j=46gw#fV9jm#=H2vBa > > F > > > > > zqc{VeZ9aJ*O|m(R$qV~<UD$Ra(Af(o@p*x@kC3nQm~)`gF07H6Fvnuk@kGM > > rT~U&k > > > z63%C~>q0HWFP-P- > > jXOK}kK%AvQFuPwVJ|_q1I**~ISx@6mv)jFu@9ScjpGp;_667o > > > z830i@PHE!H*EWW9DXClZ>WyakQp5)Cd5K$mk8<r%EMzSPO1~jUAY- > > R~K*W3(sPjhD > > > zVxxqqw7uKqcjNqR2LJImlNHHtF`z49(d37vOCS8{fQJ5OB_6b&I7- > > v>eAGhq3z#f1 > > > > > zbzEj}>%N~(@nsTk>Um>1<za^9C_g)2z5|Hf0aC&7O(9op_MM}qF70B#F>~y!r6 > > <Eu > > > > > zFJ)uQ+NV9~XYboORJ?;};8GLFN8p5X3yu=2jc?@ut%6*~108P?KmgK4(KXNvKy* > > pL > > > z!KVf>JP@j!sH8hKV);=S15yWfJ;N=NdgwugYx!YmrXm{I%&fK#TU~qH|A#I- > > +EImk > > > zpotaM0qAm*kA9VSUPJliV6>b$R`a29w=RLI$OA5((38Q_U- > > gp8_RqXAGDr*$6Yc<C > > > > > z!A1waJ_hCOLq4C$cd|81&4q@?@0Us`sWP_DQP8j6WB&i42!RWAzfG%<SZBu > > F&jbsw > > > > > zcV=sC<2*U)Zvx6&@HPHB7N9WZj^zAA#F%FC(v2MfoYnCX0cE0ops1{ry$ggR6 > > NA(M > > > > > z2^+ABiz4||_DBnt_g`NOAgys$^T??YrTCx*9#P7gsj_0wsgw%}Xqr<N{rdWWS!Z > > g- > > > > > z4H3qP8xIrMG3{_HBo`K3$qL!mbiXxmITj}Q)l(geS7|Y%c^d&SIuIL<81BIiw@DA > > 8 > > > z(|T*1(_W3_%- > > s1!Tv(Zw;o%;NU=NOK?F+(uv~UO5Jt(>ZsDe6<Q8=2Ov_9_>gm+$F > > > > > za=PD_ejXn3u=GHz!=3g65%;*%m5TnFjrTr2{7yPIC{>vXfpr&Gg{;#;sWSJ(HnZR^ > > > > > zP%n=w&xEgrDM*LrnO*hLBj!dEc|0|899IAuaAz?2JI#nH^vG?g7Q7VS0!wCo<Z > > O@^ > > > z0KlkE0xHh-H6e^BOp;Ma3_*%o2XMn!Ke~iklAM@k2SzZC`s>rM- > > 2nW4G!i@hv}9Ct > > > ztTN_#K~bl5i+0oZfV#D4EkU_y8{zv- > > hX`i~&TkhTx_KAAlZMXguacb$Fjxx~I@r=Z > > > > > z!;NFfic&3^+z5R!85}UuWhO;Z!ZZL394B?me49=eqOuTdHBR9N^pZ}Io)F9_a&P} > > e > > > > > zgn0*m<z+k1`T1D%?8}u2lQx2_4pWcD?*${(tPIM4x*LezJmObkESuVMX6#Av2{ > > @)q > > > > > z;%=G&^S5WtA0KNPuIXV?5iorWd9CAqQc9CGggH)_z|f}T&hTT}HJByBTw4uV& > > jUGO > > > > > zfaCO#+6fF2N1bE*vTX<ntB`4Z$oawb9h#`$Qkhrb`F#0x2$B;|F}n}#0G7yKJ)3G~ > > > > > zGmb;+#!8?Nu^=B8B}~6_koDD8@oQ0;8LxY8$1bzP8AJ7)q+0q1`mE7ui}P`G@` > > CKS > > > > > zAGrqxc(``};NHt^BcAj<@?US^gDtZwO|%L454il+QUjo2Eadr{=wMYx3%+4fL<M > > 8r > > > zCgthu_mBMfm0Q^Ou~pM>xd%f#Q$S4T0w{R^- > > Y(1I8*G={I$F4+ZH`)EHImR;^vulo > > > > > zqEsVwKrT_obLqcU^i)YhN2z>b>5DYGpEo^I_fD@eR5KjES*2j(i^*^&SAK0jogZL > > d > > > zJoBPN*F*ocb9&zRk?eQZ`|ljO8R|Sr@l&A2#1FN4$?- > > j*0040pa7_;kWC_KwXa5Q= > > > z@Jl<Qi2U@Wd4o7@R+h}pWQh7Yf;)%&B@-7nJ`- > > pAtx4aT(+#=;D6HH83+wW*((szd > > > ze*aj?o#`ShhNSL$KGT)e?==07c$=nVR+_2@j7p|_53UWk4- > > p<q_m!^m9KMJoar}XP > > > z@k8^U2UL?(EBk)#6yEAQ9WzT6y-e+D=3KHcJ4s13@F)e80xE{- > > LyIf+zYrt;J=3($ > > > zy=b|?FcP<^U*a1C4!G9G8Z`A<(0`- > > 5rbNgd!!PF>3VpnFG+GFsh#+<(#y@RjrT!NG > > > zp)J9QOI}6gdzgjC&|T5<0AA*gpSSj)kj608I{nqe!>FkP(W0L0QjS{FPf<*qrf95| > > > > > z_3?R<@yIi0yQi;SnprC>bm|r@Hait6ce$t0sY6q%CU(YfdKEX1ndOgp&H>?!J+u > > Tv > > > z_T$ns^dNh;hR}ivc2`(HlrR%NR}YWhuXxS0Cw20jCM<E;@7&)<6E?4- > > 2r%#G9248& > > > > > z#6snQt3jV<3;8Q9F3vYgB1LC%%ZPn>#)=Zr%GCX>A`>>euKfT$31(FegZ>YC))nll > > > zr7O;hktJmggtyk>XEX`D$=&X6I>LpwNFMPLGb`G#{)Z?&L+Dfq#- > > WXYFemoj*{|FR > > > zMK>|)y<Hq8Z!o5pqA0FvVtx%x9oUp-@-IL<YZ|4GW-gvK2CXJjg~uP4Fm%B- > > 0wOEy > > > z>)o*On|^rNdNqi6#-ylP;?MR%u}1`}NOh`nx9G^GfUxsGYrkSgoS*7xt$dJ- > > bmG`1 > > > > > zq9e&siyn=8E`=eRJG>G$8U>^t54w<Ui>jz>eUS9XZA3_8ueBvjk&Ce;0@%PgzU!- > > T > > > zawecNLK5|`Rw}A9eW5D8- > > SMIPpk6%f0G_g*2NN~bGLK4GxM%KLEp3cipF)r%cziR- > > > z?UR<B- > > y@PA%#hZ@A2C_#4_!xqUu`zx(HRI2ad)pAN1Y+fGTf7M52ef0<c;ddaZhzT > > > > > zC_Nho>dXp}tMw&EkEI(K?akLs4D<?eUOtNX+rmaoFky3z#;CL{D$Jp<#aTH)9w > > hMF > > > > > z;t@rqr(q}>k$5;MgM#vFBOM(KP}+30(<^IfD|;N$Hf|BeE)O=ovxGX=<<B$AZ}a; > > V > > > z$Rib^)uXhoC;=+7-e-sx3|KJt_9b@ZCSL^Itwf1LXy2Y-tvxli6`j+7j0P8v(r8DK > > > zv5C^AeOHat^{btzSvH)_T-UyHP3=R5`=uffP`~Y4LlViPGn@0nS46(lLl})yAAUYn > > > z@{5}YBdtMfl2&#vHI9=- > > fYsgieqAdo`od~$n%ifM1<v=21h=~xCNB*e4U&l?5(^my > > > zFsgM-jsErSWEYukS^0s${WHgJ)r9>Pdrr%`#S#>zw#pkeJSqxl<3}9YZ!+bPL018- > > > zL|CSXw=Jxd5|Jdv$2^^QEnG;igadkzVrjG{IsPX<y6t*y%clEIIPN1-s<Qm+b>YoB > > > > > zfK&XpJgYP(y?wH}QBYiTwPEg@vYnUI+3|6iONY#|7#;n%?^~~e3KQ@Vm(03(% > > x{&` > > > z?JlMf;H&F#-^{UKR{l#LcCA`Ui|P7r>9f6Dgi&*<TD;JAb;J2(uHil|C?pWGgiRTb > > > ze%K2mqAW1b`G|haSJ9L;HgFoN`KkVT`~m(nT?j;nbDKeiF6- > > ;S@mRVGNqQv1JATd( > > > zk|y!Q7bMIPOXfH|e%4qG7lty)bmsKdc4~{CFkU`QoZ1(g>I&)M- > > n`$WKrOne+1*Iy > > > z;;on-O@4eBKt|r*U5j$PL{sy}X;8agm%wWJxJLJ3H8H2w9xL}+lAx5+`^J-~*;PlD > > > > > zNEBK$y?ueKFmDfMaRHk75QLT0UkDYe`a4bYajq@*yEZMA>7vy15*(sgpxX9xk > > S<_b > > > zli3orj;~h#tF-9v&gQ8OqxW6T-}sAa$hxxEK+qQ{^ikk0P6<&7J5_;)$Crkr$hJMw > > > zmW9b{54MgeThpmSd|T^BNAFAVP;&)5ME!RFY;V}- > > 76P%Ziwdh5qHZcQ$ifuzLe|Eq > > > z4o+(j8-K8KU`}`H9o%%l_{ft)VHlHXa*k7kJvw&G<LG- > > dGM13zGiyy)gypmOYg5(j > > > zdFLMu&UsSfb|TOJ^g`<^RV2aPVlrA?^8xn!4dh2;6<4F+Mhm%={$r|k;4|rQ- > > vCM8 > > > > > zo^s?#hlC^jFnEtFMrq(#Wkn%;XG_OpoKa;T7V%d@{JvxQSAYHAPp~h3JDPsF*K > > E<- > > > > > zLY&zbZ~B|@;pUVb0~$u7rh30NfgB#!D4gd5IwlHGpeh|$+D_Po=KASOQ~A$;R > > BrYG > > > zrH;Ni8|ZS)y=)#*k&(Jz^kl1Pp^^$9zH(09rr)<|%9_U<sPsL#ojdt_;*{7_yU?$# > > > zHsi+rhU7NPo2-T*0<wIsr~lswS&aw-o4l- > > |F{svG2NhZV*siLZEK1JdNzm|?qS`CD > > > > > zHel+6UA6W4DtDhN1!$IkY(3f)+|{w^bZ<6eK)IVKAn~U0ra4qL4Zjdw1*o;IGxz@ > > I > > > zE1+&2B8Z8)yvlVG$SAKk(vXONX(+~^-1FXzG0GpvQOe- > > U6qnNFq;jyCV+yTeeIe?M > > > > > zF=ax^az!;(Xu=y1W4lajzkVj4Jw0rrkhO|zT`pTp)T0PWUl7}o804c_)wWNu>M)(< > > > > > zRfP!DM$#G8^^nzII^#Y91Lq)%_wBs@>jOjPYF}0w^Nz~Y{&Y$4YU(#qe7f+oINR > > %0 > > > zSneZe5EyK0r_Bkn`6XthG59f|Xo6i- > > FRL}URYdisz<{CaM6zg|r!KO?%wM2;ud7(O > > > > > z`aPW0(IzOpA8gG_a9lqzr&*EUhPTNSXva#4rR?$b4p1fe;=IM@q(aB=Z!vd|icT > > m} > > > zGpPUE{#SsKM;tGA5@~9og4;6@QNhN;_xvtc09- > > i{RkcWm=QxV#4=QOo$!Oo&57%&p > > > > > z;5H6xtC#a6@RIH0BwLOrK<kt47gWVC$?4D`N^VkJ9hnEFR?h+(XG<oVhLeH)yv > > t&O > > > zVhP%YJ>qd!{#3X- > > ES^d2SW*WfLq3MSUMYN@0anc&jB{JhPy4^7n#vy}enEjqrAEFf > > > > > z@2o#g`S$=uhs@SZJ4+CCl~9$CS9)YiiBZvUdHu?fR|B$d!jfs957AjP*l4u1Y43<m > > > > > zts;j9&7Sr%wK)}cqIR}m87;s8E6l#@u=eLem3~gSwJGQm@6g$9IrZTBv5fVlb(^r > > v > > > > > zbfa98pghse(AQ1jWwfsgSo@fj(bhtD5970DT`wo{?1cW51NqGhA(L5L*XB}}6D8 > > b_ > > > > > z|Ey&EaWnSu0)OoHzOeFb^KHJ2@Q63ij7Hh3FaeR8MX5^$752g}VhlYLP$>0Jn > > Dq14 > > > > > z*J`h~t*11n9~e(RHlxPXC?WpP3H56~Q)@kyDK$hEd_V&0I4H=5%>9Dx(nv}Aa{ > > _zG > > > z- > > ge40o9{8bjAT`l*?b9TT<mmOqzLjP6*7|GTs4f$PAYy_Sob(`rl6~XS*MW2mxUJ% > > > zRDL;<#P}IEu9TkKF*}*FJJCMtL?GirpZDi26FrHl8@Rq8Km|4meIi42QhTLtxjLeT > > > > > zbYtaGJthq(k@oyY@Djp_N9nh8#y`Ybe!^BB_s0I^7_4$#qDn!xhP(2i$JV(qITOp > > 9 > > > zqiioJFug}7!O_NMq#pugIX;83J?9^g%5->9J0*p`IQ6=jC&wtovz|OC2p^U-<2a}; > > > z@A|y{W&- > > ImypnJAD=1qL_$m>JR{vqs$Y>JCwI3wdBm852pI(`|Zt3YMpw1pVYh5-` > > > z85W<vB~$- > > U<WG>COBDIVZS+QOO}q$(TQ#Nzn+;_qKSjuf7Lql~0=#qZ@edc3Gqc6w > > > > > zuDOQuCqf!yLs3jl)SkQ_Ib>6(x83F)+CJVOU}ZPflTLdUhY58TyUP5Jnph|V8JT&$ > > > z0i}|KN97gmPgsbqeyl>!|HIdR%nl1D7z;7re_vb?e}4Epe!tJsl-+wy=_(ZkJg<DT > > > > > zEvEL4A@nTNj`u2D%c+U6GRm7sMUgfrmEU$uppRs#)bXY)X6JQIyX*1oY*GW} > > k<IF| > > > zaHNTenY}%}0>Ve_-3}%b8Sv`foIqQrrT`Jps((eiB8}y(b9QWd`zJ*gt7u_b3)YqS > > > z?rft8TYK|738T20zTZ3BgyQdj<yF!!-+<;)C1L4!1c_^;4;S94pF!2d`qPc;WZ|Gm > > > > > z$=p?mdTXZi?WlOrNz?}Hn0kO+BcXq!w&!+3;C?@ulaBw^a$IrbvICn|4oZOjp7J > > @Q > > > z6PsD=TOH?YVJq7Ch;FwGx#V1npTHz!^HV!(nfI})F4E_bl>$(?srMvD2piEk-D}A% > > > z<j~7KBcje7v9yRgz`2d^!wHF@gh+a`g5J?Brxf-zvx0$7o%Pb2kw- > > cp4adkG{%$o& > > > > > z%dt$oANAhhUA5or11|lcp*|;ww*x8)3VP^z*kA6OpErN=0m))ADYTF@`CT)6la > > 8{? > > > z+f|ZWf991XRNc$TvQ|@weV=#ElM<i8=Qsn6Rr;}- > > n7EUSp2iVM<FUbMZw_i`22q@? > > > > > zs6kr|WS5Gg3(NEg_h1YzK}k#5M~9UYqs%eZ=H<yJ9V4^WrSohg!wRa?csHNr8 > > 9x&m > > > > > z{(ZLpi2xlAu@RCsm(4Sx`08)mNv&L8r%^9&=KXXiq!o0uc3c)s_3#dasg&~qSB{b > > V > > > z8g?eJR!y(dC;=%y-V>f<o<nsoO6GqeD%xHE#XYZHRHI(j7p+CCP- > > Ui*0n$KF#F=ub > > > > > zCA%k+Ua0Ux^ZzjSk7Pm<?^iY@oAz8#h_IvYeFI$QirdveGUY0{RKDaglnu=1pe( > > wB > > > z*40*Kn2|Lvni|*l96DD3|Fz|IIHPh>T($*^maO<uC)t6MZ+}Z|-}}*ULjzg&Ifvb) > > > > > zLrpme#6GUjiz)KUncK_9RK5TE3Hpgo)b5S<asRor(EVPDhSB*eVcNWZeHDMh2 > > Hc(A > > > > > z^P%@%9RB)C_C;*~yZ4HspGFI0Lk$XKdV!fb#%D{fU>^&ro^xH*#G(uFur6owz > > MXtg > > > zH^0Zh(t- > > EmiaBl>`Tcls+HJnZoyQ30vFByCb0O*`%L)nX5D4}#VfMp)J~NWKw40M$ > > > z46D6ToGO~*lIx|Qb75H3?+#X*QJ4HgOgj?bLnD}%eB&%k9(+&PNM- > > 6vy1)%G5g&Xm > > > > > zBX`D*Z}!UP+%JV68h}7!&Cyuz&u9V}7g4K{@atIECE=zaGy5se=l;E2KAxQQ7dY`s > > > zr3- > > FihZjNNS)Jd^rnQehLso_+hXq2zxeW8)=t8qkWCCMC<+zh+vXF5M*tI8tPmHQp > > > > > zcIF<>JxmNil^W1!9({@=N~PdvE&Wi)<0FQR5(FAm=R)N;VG|Ne61+HdUTm1sjn > > }z{ > > > > > z8d8p$uq*YdNAFH_9Oyf<DX1=yz4b+kSJ%<hu`MRZnK2M|$Wjau(<cw;r1U#JF > > <VIN > > > z;&6741o<3%PP@Ksaa4OB3)64J7cnWLei+@k8LxE27ubX- > > qS4?UH?hja^lyZXxwA;| > > > lp0r(+`K^)Y&AL5T(>;a;tp795|91lNzXsubc7WVX{~rvVe^USe > > > > > > literal 0 > > > HcmV?d00001 > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > new file mode 100644 > > > index 0000000000..5ef93461ee > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > @@ -0,0 +1,52 @@ > > > +## @file > > > > > > +# The default logo bitmap picture shown on setup screen. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +# > > > > > > +## > > > > > > + > > > > > > +[Defines] > > > > > > + INF_VERSION = 0x00010005 > > > > > > + BASE_NAME = LogoDxe > > > > > > + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > + VERSION_STRING = 1.0 > > > > > > + > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > +# > > > > > > +# This flag specifies whether HII resource section is generated into PE > > image. > > > > > > +# > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > + > > > > > > +# > > > > > > +# The following information is for reference only and not required by the > > build tools. > > > > > > +# > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > +# > > > > > > + > > > > > > +[Sources] > > > > > > + Logo.bmp > > > > > > + Logo.c > > > > > > + Logo.idf > > > > > > + > > > > > > +[Packages] > > > > > > + MdePkg/MdePkg.dec > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > + > > > > > > +[LibraryClasses] > > > > > > + UefiBootServicesTableLib > > > > > > + UefiDriverEntryPoint > > > > > > + DebugLib > > > > > > + > > > > > > +[Protocols] > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > + > > > > > > +[Depex] > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > new file mode 100644 > > > index 0000000000..1418eb2137 > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > @@ -0,0 +1,31 @@ > > > +## @file > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > +# > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > +# for the build infrastructure. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +## > > > > > > + > > > > > > +[Defines] > > > > > > + DEC_SPECIFICATION = 0x00010017 > > > > > > + PACKAGE_NAME = LogoFeaturePkg > > > > > > + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 > > > > > > + PACKAGE_VERSION = 0.1 > > > > > > + > > > > > > +[Includes] > > > > > > + Include > > > > > > + > > > > > > +[LibraryClasses] > > > > > > + > > > > > > +[Guids] > > > > > > + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, {0x99, > > 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} > > > > > > + > > > > > > +[PcdsFeatureFlag] > > > > > > + > > gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0 > > xA0000001 > > > > > > + > > gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA00000 > > 02 > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > new file mode 100644 > > > index 0000000000..717e074c69 > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > @@ -0,0 +1,37 @@ > > > +## @file > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > +# > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > +# for the build infrastructure. > > > > > > +# > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > +# > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > +# > > > > > > +## > > > > > > + > > > > > > +[Defines] > > > > > > + PLATFORM_NAME = LogoFeaturePkg > > > > > > + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7-1F43D74736CF > > > > > > + PLATFORM_VERSION = 0.1 > > > > > > + DSC_SPECIFICATION = 0x00010005 > > > > > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) > > > > > > + SUPPORTED_ARCHITECTURES = IA32|X64 > > > > > > + BUILD_TARGETS = DEBUG|RELEASE|NOOPT > > > > > > + SKUID_IDENTIFIER = DEFAULT > > > > > > + > > > > > > +[LibraryClasses] > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > + > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > pStr.inf > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > + > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > tServicesTableLib.inf > > > > > > + > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > oint.inf > > > > > > + > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > + > > > > > > +[Components] > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > new file mode 100644 > > > index 0000000000..092a055a2c > > > --- /dev/null > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > @@ -0,0 +1,129 @@ > > > +# Overview > > > > > > +* **Feature Name:** Logo > > > > > > +* **PI Phase(s) Supported:** DXE > > > > > > +* **SMM Required?** No > > > > > > + > > > > > > +## Purpose > > > > > > +This feature provides the Logo image and driver that produces > > EDKII_PLATFORM_LOGO_PROTOCOL: > > > > > > + > > > > > > +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides the > > image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses > > EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > > > JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > + > > > > > > +# High-Level Theory of Operation > > > > > > + > > > > > > +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a > > logo picture shown on setup screen. > > > > > > + > > > > > > +The Logo file is built in HII package list as EFI resource, the driver uses > > EFI_HII_DATABASE_PROTOCOL > > > > > > +to the publish HII package list to HII Database and get images via > > EFI_HII_IMAGE_EX_PROTOCOL. > > > > > > + > > > > > > +## Firmware Volumes > > > > > > + > > > > > > +* PostMemory > > > > > > + > > > > > > +## Modules > > > > > > + > > > > > > +A bulleted list of the modules that make up the feature. > > > > > > + > > > > > > +* LogoDxe > > > > > > +* JpegLogoDxe > > > > > > + > > > > > > +## LogoDxe > > > > > > + > > > > > > +This driver provides a bitmap image via > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > + > > > > > > +## JpegLogoDxe > > > > > > + > > > > > > +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg > > data and provide a bitmap image via > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > + > > > > > > +## Key Functions > > > > > > + > > > > > > +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which > > could be used by consumer such as > > > Edk2\MdeModulePkg\Library\BootLogoLib. > > > > > > + > > > > > > +## Configuration > > > > > > + > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > > > + TRUE: Enable logo feature > > > > > > + FALSE: Disable logo feature > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > > > > > + TRUE: Use jpeg logo > > > > > > + FALSE: Use bitmap logo > > > > > > + > > > > > > +## Data Flows > > > > > > + > > > > > > +Architecturally defined data structures and flows for the feature. > > > > > > + > > > > > > +### Data flows of LogoDxe > > > > > > + > > > > > > +```txt > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| > > > > > > +------------ ------------------ ---------------- > > > > > > + | | | > > > > > > + | |--bitmap image data->| > > > > > > + |<---bitmap data--|<-return bitmap data-| > > > > > > +``` > > > > > > + > > > > > > +### Data flows of JpegLogoDxe > > > > > > + > > > > > > +```txt > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | > > EFI_HII_IMAGE_DECODER_PROTOCOL | > > > > > > +------------ ------------------ ---------------- ---------------------------------- > > > > > > + | | | | > > > > > > + | |---Jpeg Image data-->|---------decode Jpeg------->| > > > > > > + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data----| > > > > > > +``` > > > > > > + > > > > > > +## Control Flows > > > > > > + > > > > > > +Consumer gets image from the logo driver via > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > + > > > > > > +## Build Flows > > > > > > + > > > > > > +No any special build flows is needed. > > > > > > + > > > > > > +## Test Point Results > > > > > > + > > > > > > +Not available. > > > > > > + > > > > > > +## Functional Exit Criteria > > > > > > + > > > > > > +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a > > default Intel logo. > > > > > > +* If using jpeg logo, a dex driver which produces > > EFI_HII_IMAGE_DECODER_PROTOCOL(name is > > > > > > +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode > > Jpeg data. > > > > > > + > > > > > > +## Feature Enabling Checklist > > > > > > + > > > > > > +### Option 1 > > > > > > + > > > > > > +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to > > enable the feature. > > > > > > + > > > > > > +```dsc > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > |TRUE > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE > > > > > > + !include Include/AdvancedFeatures.dsc > > > > > > +``` > > > > > > + > > > > > > +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file > > > > > > + > > > > > > +```fdf > > > > > > +!include Include/PreMemory.fdf > > > > > > +!include Include/PostMemory.fdf > > > > > > +``` > > > > > > + > > > > > > +### Option 2 > > > > > > + > > > > > > +* To use bitmap logo, include > > "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc file, > > and include > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf > > file. > > > > > > + > > > > > > +* To use jpeg logo, include > > "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform dsc > > file, and include > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in > > platform fdf file. > > > > > > + > > > > > > +## Performance Impact > > > > > > + > > > > > > +* LogoDxe > > > > > > + * EFI size: 180 KB > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about > > 18 milliseconds > > > > > > + > > > > > > +* JpegLogoDxe > > > > > > + * EFI size: 13.6 KB > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about > > 80 milliseconds > > > > > > -- > > > 2.24.0.windows.2 > > > > > > > > > -=-=-=-=-=-= > > > Groups.io Links: You receive all messages sent to this group. > > > > > > View/Reply Online (#56238): > > https://edk2.groups.io/g/devel/message/56238 > > > Mute This Topic: https://groups.io/mt/72533665/1712937 > > > Group Owner: devel+owner@edk2.groups.io > > > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] > > > -=-=-=-=-=-= ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers 2020-03-25 7:17 ` Ni, Ray @ 2020-03-25 7:53 ` Heng Luo 2020-03-25 8:04 ` Ni, Ray 0 siblings, 1 reply; 6+ messages in thread From: Heng Luo @ 2020-03-25 7:53 UTC (permalink / raw) To: Ni, Ray, devel@edk2.groups.io; +Cc: Bi, Dandan, Gao, Liming, Dong, Eric Hi Ray, Pass build with GCC in ubuntu after adding "~/code/edk2-platforms/Features/Intel/UserInterface" in PACKAGES_PATH. Best Regards Heng > -----Original Message----- > From: Ni, Ray <ray.ni@intel.com> > Sent: Wednesday, March 25, 2020 3:17 PM > To: Luo, Heng <heng.luo@intel.com>; devel@edk2.groups.io > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; > Dong, Eric <eric.dong@intel.com> > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > provide logo images and drivers > > What is PACKAGES_PATH env variable set to? > > > -----Original Message----- > > From: Luo, Heng <heng.luo@intel.com> > > Sent: Wednesday, March 25, 2020 3:01 PM > > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > provide logo images and drivers > > > > Hi Ray, > > It fails to build with GCC in ubuntu if removing the <feature-domain> prefix > from all paths insideDSC/FDF/INF. > > No problem in windows > > > > Active Platform = /home/ilabuser/code/hengluo/edk2- > > > platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > > > build.py... > > /home/ilabuser/code/hengluo/edk2- > platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > (36): error > > 000E: File/directory not found in workspace > > LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf is not found in packages > path: > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Platform/Intel > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Silicon/Intel > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Features/Intel > > > > > > - Failed - > > Build end time: 14:57:21, Mar.25 2020 > > Build total time: 00:00:00 > > > > Best Regards > > Heng > > > > > -----Original Message----- > > > From: Ni, Ray <ray.ni@intel.com> > > > Sent: Wednesday, March 25, 2020 11:53 AM > > > To: devel@edk2.groups.io; Luo, Heng <heng.luo@intel.com> > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > <liming.gao@intel.com>; > > > Dong, Eric <eric.dong@intel.com> > > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg > to > > > provide logo images and drivers > > > > > > Heng, > > > Can you please remove the <feature-domain> prefix from all paths inside > > > DSC/FDF/INF? > > > > > > We expect PACKAGES_PATH is set to include "edk2- > platforms/Features/Intel" > > > and all sub folders inside "edk2-platforms/Features/Intel/". > > > > > > Thanks, > > > Ray > > > > > > > > > > -----Original Message----- > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > Heng > > > Luo > > > > Sent: Wednesday, March 25, 2020 10:44 AM > > > > To: devel@edk2.groups.io > > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > > > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > > > Subject: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > > provide logo images and drivers > > > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 > > > > > > > > 1. LogoDxe.inf includes a BMP logo in the EFI file, > > > > the driver decodes the BMP file and provide the image > > > > via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, > > > > the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg > > > > file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > Cc: Dandan Bi <dandan.bi@intel.com> > > > > Cc: Liming Gao <liming.gao@intel.com> > > > > Cc: Eric Dong <eric.dong@intel.com> > > > > Signed-off-by: Heng Luo <heng.luo@intel.com> > > > > --- > > > > > > > > Notes: > > > > v2: > > > > - Add Cc and Remove Change-Id in commit message > > > > > > > > Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | > 4 > > > +++- > > > > Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > | > > > 6 +++++- > > > > Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | > 6 > > > +++++- > > > > Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | > 6 > > > +++++- > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > | > > > 107 > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > +++++++++++++++++++++++++++++++++++++++ > > > > ++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > | > > > 13 +++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > | > > > 8 ++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > | > > > 10 ++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | > > > 52 > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | > > > Bin 0 -> 183366 bytes > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | > 153 > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > +++++++++++++++++++++++++++++++++++++++ > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | > 10 > > > ++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | > Bin > > > 0 -> 11944 bytes > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > | > > > 52 > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | > 31 > > > +++++++++++++++++++++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | > 37 > > > +++++++++++++++++++++++++++++++++++++ > > > > Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | > 129 > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > +++++++++++++++++++++++++++++++++++++++ > > > > ++++++++++++++++++++++++++ > > > > 17 files changed, 620 insertions(+), 4 deletions(-) > > > > > > > > diff --git > a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > index 23e7c6474a..ea879680ba 100644 > > > > --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > @@ -7,7 +7,7 @@ > > > > # 1. Present a consolidated and simplified view of all available > advanced > > > features to board packages. > > > > > > > > # 2. Provide a simple, single package build for all available advanced > > > features. > > > > > > > > # > > > > > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > # > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > # > > > > > > > > @@ -46,6 +46,8 @@ > > > > gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > > > |TRUE > > > > > > > > > gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > > > |TRUE > > > > > > > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > |TRUE > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > |TRUE > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > |FALSE > > > > > > > > > > > > > > > > # > > > > > > > > # This package builds all advanced features. > > > > > > > > diff --git > > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > index 649774edf7..c1bd791525 100644 > > > > --- > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > +++ > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > @@ -4,7 +4,7 @@ > > > > # This file is intended to be included into another package so advanced > > > features > > > > > > > > # can be conditionally built by enabling the respective feature via its > > > FeaturePCD. > > > > > > > > # > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > # > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > # > > > > > > > > @@ -54,3 +54,7 @@ > > > > !if > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > == TRUE > > > > > > > > !include > > > UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc > > > > > > > > !endif > > > > > > > > + > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > > > > +!endif > > > > > > > > diff --git > a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > index 57b29a42b9..56f6143650 100644 > > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > @@ -5,7 +5,7 @@ > > > > # can be conditionally included in the flash image by enabling the > > > respective > > > > > > > > # feature via its FeaturePCD. > > > > > > > > # > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > # > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > # > > > > > > > > @@ -55,3 +55,7 @@ > > > > !if > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > == TRUE > > > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf > > > > > > > > !endif > > > > > > > > + > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > > > > +!endif > > > > > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > index 20d25dd173..7a76b0efc3 100644 > > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > @@ -5,7 +5,7 @@ > > > > # can be conditionally included in the flash image by enabling the > > > respective > > > > > > > > # feature via its FeaturePCD. > > > > > > > > # > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > # > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > # > > > > > > > > @@ -55,3 +55,7 @@ > > > > !if > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > == TRUE > > > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf > > > > > > > > !endif > > > > > > > > + > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > > > > +!endif > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > new file mode 100644 > > > > index 0000000000..3fd1c3372e > > > > --- /dev/null > > > > +++ > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > @@ -0,0 +1,107 @@ > > > > +## @file > > > > > > > > +# This is a build description file for the Logo advanced feature. > > > > > > > > +# This file should be included into another package DSC file to build > this > > > feature. > > > > > > > > +# > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > +# for the build infrastructure. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +## > > > > > > > > + > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +# > > > > > > > > +# Defines Section - statements that will be processed to create a > Makefile. > > > > > > > > +# > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +[Defines] > > > > > > > > +!ifndef $(PEI_ARCH) > > > > > > > > + !error "PEI_ARCH must be specified to build this feature!" > > > > > > > > +!endif > > > > > > > > +!ifndef $(DXE_ARCH) > > > > > > > > + !error "DXE_ARCH must be specified to build this feature!" > > > > > > > > +!endif > > > > > > > > + > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +# > > > > > > > > +# Packages Section - Make sure PCD can be directly used in a > conditional > > > statement > > > > > > > > +# in a DSC which includes this DSC file. > > > > > > > > +# > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +[Packages] > > > > > > > > + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > > > > + > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +# > > > > > > > > +# Library Class section - list of all Library Classes needed by this feature. > > > > > > > > +# > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +[LibraryClasses] > > > > > > > > + ####################################### > > > > > > > > + # Edk2 Packages > > > > > > > > + ####################################### > > > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > > > + > > > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > > pStr.inf > > > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > > > + > > > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > > tServicesTableLib.inf > > > > > > > > + > > > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > > oint.inf > > > > > > > > + > > > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > > > + ####################################### > > > > > > > > + # Edk2 Packages > > > > > > > > + ####################################### > > > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > > > + > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > +# > > > > > > > > +# Component section - list of all components that need built for this > > > feature. > > > > > > > > +# > > > > > > > > +# Note: The EDK II DSC file is not used to specify how compiled binary > > > images get placed > > > > > > > > +# into firmware volume images. This section is just a list of modules > to > > > compile from > > > > > > > > +# source into UEFI-compliant binaries. > > > > > > > > +# It is the FDF file that contains information on combining binary > files > > > into firmware > > > > > > > > +# volume images, whose concept is beyond UEFI and is described in > PI > > > specification. > > > > > > > > +# There may also be modules listed in this section that are not > required > > > in the FDF file, > > > > > > > > +# When a module listed here is excluded from FDF file, then UEFI- > > > compliant binary will be > > > > > > > > +# generated for it, but the binary will not be put into any firmware > > > volume. > > > > > > > > +# > > > > > > > > > > > > +############################################################### > > > ################# > > > > > > > > + > > > > > > > > +# > > > > > > > > +# Feature DXE Components > > > > > > > > +# > > > > > > > > + > > > > > > > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after > > > https://bugzilla.tianocore.org/show_bug.cgi?id=2308 > > > > > > > > +# is completed. > > > > > > > > +[Components.X64] > > > > > > > > + ##################################### > > > > > > > > + # Logo Feature Package > > > > > > > > + ##################################### > > > > > > > > + > > > > > > > > + # Add library instances here that are not included in package > > > components and should be tested > > > > > > > > + # in the package build. > > > > > > > > + > > > > > > > > + # Add components here that should be included in the package build. > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > +!else > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > +!endif > > > > > > > > + > > > > > > > > > > > > +############################################################### > > > #################################### > > > > > > > > +# > > > > > > > > +# BuildOptions Section - Define the module specific tool chain flags > that > > > should be used as > > > > > > > > +# the default flags for a module. These flags are appended > to > > > any > > > > > > > > +# standard flags that are defined by the build process. > They > > > can be > > > > > > > > +# applied for any modules or only those modules with the > > > specific > > > > > > > > +# module style (EDK or EDKII) specified in [Components] > > > section. > > > > > > > > +# > > > > > > > > +# For advanced features, it is recommended to enable > > > [BuildOptions] in > > > > > > > > +# the applicable INF file so it does not affect the whole > board > > > package > > > > > > > > +# build when this DSC file is active. > > > > > > > > +# > > > > > > > > > > > > +############################################################### > > > #################################### > > > > > > > > +[BuildOptions] > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > new file mode 100644 > > > > index 0000000000..53c85da716 > > > > --- /dev/null > > > > +++ > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > @@ -0,0 +1,13 @@ > > > > +## @file > > > > > > > > +# FDF file for post-memory Logo modules. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +## > > > > > > > > +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > +!else > > > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > +!endif > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > new file mode 100644 > > > > index 0000000000..91cd1c6ec6 > > > > --- /dev/null > > > > +++ > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > @@ -0,0 +1,8 @@ > > > > +## @file > > > > > > > > +# FDF file for pre-memory Logo modules. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +## > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > new file mode 100644 > > > > index 0000000000..a39500e043 > > > > --- /dev/null > > > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > @@ -0,0 +1,10 @@ > > > > +// /** @file > > > > > > > > +// Platform Logo image definition file. > > > > > > > > +// > > > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +// > > > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +// > > > > > > > > +// **/ > > > > > > > > + > > > > > > > > +#image IMG_LOGO Logo.jpg > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > new file mode 100644 > > > > index 0000000000..47f1672a4c > > > > --- /dev/null > > > > +++ > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > @@ -0,0 +1,52 @@ > > > > +## @file > > > > > > > > +# The default logo JPEG picture shown on setup screen. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +# > > > > > > > > +## > > > > > > > > + > > > > > > > > +[Defines] > > > > > > > > + INF_VERSION = 0x00010005 > > > > > > > > + BASE_NAME = JpegLogoDxe > > > > > > > > + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF > > > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > > > + VERSION_STRING = 1.0 > > > > > > > > + > > > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > > > +# > > > > > > > > +# This flag specifies whether HII resource section is generated into PE > > > image. > > > > > > > > +# > > > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > > > + > > > > > > > > +# > > > > > > > > +# The following information is for reference only and not required by > the > > > build tools. > > > > > > > > +# > > > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > > > +# > > > > > > > > + > > > > > > > > +[Sources] > > > > > > > > + Logo.jpg > > > > > > > > + Logo.c > > > > > > > > + JpegLogo.idf > > > > > > > > + > > > > > > > > +[Packages] > > > > > > > > + MdePkg/MdePkg.dec > > > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > > > + > > > > > > > > +[LibraryClasses] > > > > > > > > + UefiBootServicesTableLib > > > > > > > > + UefiDriverEntryPoint > > > > > > > > + DebugLib > > > > > > > > + > > > > > > > > +[Protocols] > > > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > > > + > > > > > > > > +[Depex] > > > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > > new file mode 100644 > > > > index > > > > 0000000000000000000000000000000000000000..7ec1aa6a852564e262df599 > > > 29655f7a0f3d5445f > > > > GIT binary patch > > > > literal 183366 > > > > zcmeI53HVo2{>L- > > > Jm@&3csA!XsrHq!LrXr$}sH8=bnxa%BMny_PD@D^Xt&}NI5uvfP > > > > zOj2oNv@nuXBQ#^OWNI42{Qs~2|31%s?sM+<o_o&SzW3hm`94p- > ?sD!~- > > > skha_bi{K > > > > z=~b7%^@B41_p8spv- > > > o%ZVP(p^$^VCyIfcJv${f%A6MtIf|Ns5}1@p%sU=T0}WEX+M > > > > z4?q0mlTSY9oO7BqY0|D;yDnY2bno8%mRoM=- > > > @pHzciuT<$dKW~hmRaN@}Y+wdi2pp > > > > zr%s(ZYu2nMo_J#3ym^m3_So-!_d70*8#nHO2ObzYbm*^t{p;IqyRCQc- > > > sEuo_19l} > > > > z?X|62w{F&~*##F|P`PsDqmMp1yC|8O8w4Uj;D{rRs8ORv^XAQa^yqQ-- > > > FL$sc(ios > > > > > > > > z(sk?BZQs8A%P+tD?|=XMKS})#9Xj;MC!cKIym`fn6$=+Ggw7Coz<>c=yLP?u$}4~I > > > > > > > > zi(gc&T9pb%(r}ZBL7=z@@Byk_yLQ{QZST74E=2vc*IwJXbLV&8eU}v5qABP5@4 > > > w%( > > > > zXU`jNyz%6dPmUfvny+okmM!^wA9Ktx#f8_DZV- > > > ?l@S`97sBYc53@m5PoQd@Q?QegJ > > > > > > > > zh7T#u<%=)A`17CtykyCeF=NKuc;k)r>eVx2V2Om7Td^X*K<?*1|9Q`zJ^A*%_10 > > > Ve > > > > > z{`bFAOr3<P#$bE*?%m6lEqnOkhZ&GxbkRk}9d}%;y<jpgWdu$+<&+z4xMA|- > > > $#1^- > > > > > zCX=s(q&(xrFhza!)mK?)>ej6r1Kl6|z*?g(WjQi!4~_ueL6$m4jT*(+EXl=|jI+?Q > > > > > > > > z`rmx>&8k(a#*Q7^zJ2>DRjLH<81rN)A%Lhb8Dw&_fB$|@*)lgmBk=dX|NX@m > > > Ut|-9 > > > > > > > > zWukKB%9WCcnYQ{P(4awsM;>|P{rBGwEodf#APDT*wd<*;p6b)5&)H|6?cZA_ > > > MNSc@ > > > > > > > > zUcEZ6=np^qFo+D9XW~JCHR`9Ie%f#|r<^O$tg>axGALzxA|8P<xkiQn!&)>JZoTz > > > Z > > > > zR)h{a3^h&j%MSwV6<%}AHH#N7Hk%ZY5hlTmY;K- > > > ;=9&2s%93meAH;j_y_XJ6P<%{L > > > > zF(UB62Oo?dKmL+SE- > > > `w2*&_65r=3Q}vDhA?aG0!%hrm}~eZ@i$yTd1*cw)9Bv(#$K > > > > > zjAPE6Ip2Q!ZSjP~l$;y_DBP}Dvu4nsLG*j6iF(T0`^#Vc64ME@iJu%9QdSZQ{J;I} > > > > zZ!s~$iY?``n(yk>s#OacqLfL8sZP- > > > lVCw{8qEDM|u}@*^PB`I&Ns}gJ&aA0ul3HQ~ > > > > > z@7S>e8_$|GYo<_ib5<o3mDx=E$3Om2Vj^am8w3Hgk+DmyRH;(VSdfzDG- > > > }icgoAX9 > > > > > > > > zd8ULBU~K{Ac8uoO2uq11XT2H~DpZ(1e}2|wisgE=^)_tSfU?l))vH&oT!}w{mtTJQ > > > > zrI%h}NeZ=gv=>kwTd-gOu5#wior{+b44<b>n>J<26lO- > > > ~++uQw(F8y2F|p;x2yyM& > > > > > > > > zweP+69_CI54jjljK5^F{%@9DwkBU+L3G+fg&1T=eeQ|eI`21N<SigQfG=VjP2M_ > > > Mm > > > > > > > > zs~3JeFymrP9`98Nto~618*`}X;>@aP)240Ow7Kb~n{L1T_F=<@O_(rY_UzfuJoC) > > > * > > > > > z<;yp2+{g^;U;p}7_$FsG2i}Tz+;NBbT<Ws&$3Olt>o#fYbo31vHY3~cu5aJIc!k1F > > > > z;i#jI(rsOF)ANnsErCC)>#n;FCw16gV-mG>>(<iIrZ{- > ;Aj1#*KNPnkvQqk4XPvca > > > > z)21|#kq_S={_qE^l@VPW$K`&s!$+1cEFX8=&|&hA;s4&fd(+SnG1Y- > > > Ff9KAfQFzV@ > > > > zHIlC<- > > > > b9NyA^P;wPnpW01k1ONscZ7hPhpAJ5i<tH*DK!?JemCSpZ|=B9mUF)w=TOR > > > > > > > > zs9dHH{32HA*kg}n3YL7QFhzxf82gxgE0x}7kWj5!wX3hbnzt4@rK~CCV>_5uFc > > > WFm > > > > > > > > zu%QYFxldEEV#RmgeK#>OGFM`4bKt;%Od^a6rjXKg<dH|>4U!Ki^!)haj}z;}m<nR) > > > > z8&%AZm}L6#GtM{zUBsB+b!N+_ko^KyJ`- > 5;%yf^0sXPO}4jno${ruCP{`8;!{KtuZ > > > > zhK@^?m3aA%d(nUiDI?)lty&o~x- > > > diw@GOhZy#3e%dj9$6v#48DYOG|qPE?DSUYop} > > > > > > > > zS;;5X%ujzxR4(%?J_4BhvoVU!L$++jON5mzTC|91DHW|1cGgZh>7?R|ps7J21Xv > > > Ve > > > > > > > > zV+AutRF$&gRwdu8WJfO!BVzWoag=R#lnRj`rPmm}FqN1%apJaZ+hQ6iMVKwo > > > Oj3$t > > > > zh- > > > > zJY@x_sokvA<)cXPjG9|H9ZJWAwB)V~)kS`^<bCL}k}G0p&vI#oo`B|@!K95}Gd > > > > > > > > zPVgz6DwwosN8pD){2}(mXhz}EDkOuVeLQD;#Gp7rgi#l%Q>RYaWy{nr90It5xc~ > > > n9 > > > > zliZ$`P&iL~WV<0MKN~EbGq5qE({PfWv8Pd>LMiB-cixfkCGJ~!;v))>;o- > u_bo%t^ > > > > z#_wOoxD;u1Q6M24Jo*OV#Ys1Z-0%_q3A$}}rzbRO{rdGI?OT&sh7n- > > > >2YW`$G~A*R > > > > z)0KSi5o<dZUcx|xx-VObM%OgM<cYKDd@-@nNI- > > > iw2Yh7OxMj<hFl0oX1CyUP`_tr| > > > > z2LyOs<CFu>C-LbR<baPuhYk%xMy3hIHZ2cqNw5tp<M- > > > >=FAg7QS?42bVuubL3e3k@ > > > > > > > > zvu0t=lVDGpqH=`*_H;M|i*Ua?(|lw<f@llD$jFf6=9_QMm2jBG6bS)d>F8(TdL?{x > > > > > > > > ziA?j6=(oYhh`q3})Gm_n=DFCP{p@FW(G25ZFS~ri<bVJE{Q>w0T!j3~vsjq66%~Q > > > < > > > > > > > > z<;#y4F(Q~fW_J0A7vBJ6#AxxVtF9_)cbURV0s(BL8NcC?RZB`U%10Ks0yrXLkFryz > > > > zP9-4?rjhADfGv`C?b@wdw@#6j8Rg@B_uZ%1KxZ<ufRhd(EyY^k!- > > > |*!z6(BC<l|3% > > > > > > > > z@{<4#8BnMzML95SP7?ww_~1@N!pbc25nraxub#>=D&lGC7E_m!Mu1&Qq8 > > > $~K+syG1 > > > > > > > > zOVW=%`lw)Aye^Xd=%bG=X$dfmPagu8UV16^3xd#Qj*lHXb`+W*KV=Q4apT7 > > > 6>kU&Q > > > > > > > > zgFqP+T99Yw8f@nH_{uA<$O$OiC03N_c!NNi5x^jVaAt)0Ky<Uk$K#GWPRmgh( > > > H{sc > > > > zm*&1Obu$Q92r#7@K79C$88b2j2)l>E=TCCV*1z#Xm7&fxRRsZ- > > > M>2#1uHGaB6mFrj > > > > zl%b}Xsu~2cg#ccN)fHC1_~Hw*rkbt(HMPwa0{H(IzJQX`2OoSeTdgy- > > > H3(!20YbS+ > > > > z2<W_pg)$-Rv(-9NTZ2Hh5Fm<;lXQ|}qm7fTo;9`290Ej{mk`i- > > > 3k3k;j%BWarosk+ > > > > > > > > z3?YDyjgxeeW1_TYs9mP227xRhfT@&(gU(wQUU*>^8))im5XcY$#EW;5&g&RQ > > > tQl&Q > > > > > > > > zsj5LBqX;Oftr~6BjP|docD4{ubk)utWwF|Yy25$qork(Uj^zoKtym4zYt?^&m8tL= > > > > > > > > zp<W6pGac9q?~54Y4<0;t{`~p)U?gZDAqep<h5jUeQE6VaY85`lCr_R{Y}l~gy?bAF > > > > > > > > z*=1;SEB2R31_H+%bBxyj)p;G4ssyJ_7%`j`;CmBS3{D^N*IaXrVl|xg_dOmoXpmyI > > > > > > > > zLNZ+=wJKGr2ss2eML()dn>LJC;KlOg%L%af`RAX1<?(yrg%<)8;e4cCy?P@@j(q*~ > > > > > > > > z*8}*+rczHn`DBL<9gaQrSZAKG9`lkUEQqhGLqg!8XP&BnYe4NQt0dsP7b}25<~R` > > > J > > > > > > > > zQ&>=iuax=7w}!>HS6_YA`GWH8zQBFQnBm%MuYKc<H++jwNkE;KEn9ZujW<F > > > Tp}V6x > > > > zMVN7oh$ZsDg9oY7`|rOm&)M>$i1)S$6DCxuR7svVnY- > > > Yl0_HvU+>=awD1|rw?%lh+ > > > > > > > > zYE`m)#FyIk?c2Rzkz5bJN8X162M*k|YnLS3z_*Ca(Wp_Q2*rs}G%+RJ!MhdtXf*_ > > > 5 > > > > z!`ZWEpLNz*5mqcfR-;FcRsoi%a{)3B@Q81$$r9va*|KFBl&W- > > > 7!8E#jJonsl6NoU5 > > > > > > > > zb#NrHmYAZtnP}ml#YgKAG+q`jUd(qkfapf@$aBv<SFjVE7r*@S%fQPWT9srx?< > > > }|A > > > > > > > > zajEeUp$*9nEk53I%PnDi@)ztfuZsr`9AMlPX81a8+&HhyxgLOzc5bh|_8RXcE$NL > > > U > > > > > > > > zF?F`<;B~Nc>C#Bbl4pW%bFT_Gua^`bS^QC4{dPhm94qqi_~VaXv}lp=YyzjO*D* > > > Yn > > > > > > > > z%ZB?dEJl@DUcE4UBxfeP41>eGF5K1jy&{>Z*^MRamv25H6R^hh*=L{GB}xuTh > > > mVX& > > > > zB3VmO;UkRLuwjD)_E>KbC- > > > jt4PSFw}m3dZ3K3Ywt3u@G;p;fmqiU0c7zxqPWTOv#m > > > > zD$hcB-)dM1N{5du#VcYWPv*- > > > <J^{}@`>Z^ZxbN~^P#+&Mzx(dH?|iEi2_GqiaWzh{ > > > > zlG!*`84g{4{q-uG3Y><W&9A@y+816cL5c9OTD58_BBuhHFCWK`AFq;6+- > > > Z=3+O=!@ > > > > zN)f!+ym_-qWuoGvRTeYKNEV>v4OFpwY|^BOJd==jd- > > > Uj`0<V>(MEIzvRIGxVoR5J6 > > > > > > > > zeX10#m1geTxhl(s&6+h+%r;s+QYdeXZr!?tly>>!pMLtOZ|ka8uP)Cd<X!fCeCuE* > > > > > > > > zC<Q*Uv_e>0yU8IBBz(lXepFxKkd?$kh2nq^qdBIl!3E?W}BfD0+}UXSnHyVtj > > > M > > > > > > > > zXkB_e9?5kC#<vc3f>Pk)O*h?Sw>SKOgpa7wh0i~H4(g@~Om)?DlVai{?cKU{YlR9 > > > G > > > > zA`yNe6U%k81XA>bg-0SkRasNAYgh_=oHJ*R- > > > Co@Tw7&#BRxkZktXXw4x6|W?f6}B$ > > > > > zty{OQRjbyir=E(!KkBJft5#*DrFrw_L}hyM#TOO#G4H?seszheT)DDc2j7GE_(;)2 > > > > > > > > zu3?U^UUS8izR~60dFLI)tb!#&*$JfxUu^9JrNGAkifU{fUVQPzTCT>>gSAmrKR~N > > > o > > > > > zF=z{WC=hndnl+Nlbt4s`A}+~IxD_iODT}$D`kJsJJA6a2gTG={!IBZSPk>Q=ntML7 > > > > z6)Q);eYbn}?z- > > > T!M(55)euZWK_U+s27DW0kUAnlJDG1caQj%_NT1$U%^AWi4MI5av > > > > > > > > z>ArpY<h_8lye?>3>94rr3V8*DySe8hD$PQZ<)^`3m|AmoDgdGC)TyJ@v(Chr^`R > > > GP > > > > zH- > > > tqb3>lmW6p!)!YiHtnkN_X40}}*vXcg=4n+)AldAl$&_01$q0{A7bfN(eWe8k{a > > > > zXtMk?z{jzC`SOxD!tUaj39=F!rk8n^r5J0Y6HAI<-&r!jl+s;2uPeTM<ed=7@- > k+j > > > > z7$t?o$9mj%EoJA<osksem5Je_fQ+IZuPua38- > > > *NvPdj(+Y(K7Yz<RH5o{9<j_3PKF > > > > > > > > zRV&5B?qoP6P^qw$#+Q%eU%!5RlBwtEl@eY@vNh>Dsb@pP4NHVq3?BtBbp > > > Z*mJN(#V > > > > zk9o<J`}+Fz>xCK?@icNi(iYrMpnah=U~r?v6>`8jCL}nlS{KaRzKBjj$RgyA>xv)g > > > > z<r&&{?Ix%kq{m- > > > }E+7FMfT$=*+Mq=>60`dy%t0J{wCY2MbKkL|jfvL*euP4rS~Gs| > > > > > > > > z%G|n65n%xIeO6ce3?GI5(&eMpdJ)Tg2^$>A1tvZ|QZ6BhAAkID0bbox%#_%W > > > mA682 > > > > > > > > z_wvgx_bu`8!w;9_5b~DcqX3{TAi8|?eFHn?VfE_OLiLJ!8Y>^IrZFC1Oy~qb_ZZLu > > > > > > > > zQ$|JMAy&^|y5eWPkAisU@^Rt9g+dOJQ`Aa}OF*IY1o%jan3=dYOeH9}Z?Tdr)L > > > iit > > > > > > > > zC0@%Jmpf1U%K7J?ub5kaWQLCdXu5#t@=>lZV|TiB(7%6wp?bwVO@@!O5 > > > mdKr+a{o) > > > > > > > > zb&9LfU|4P1v`Jo2toDz(;%B~(LTBmnQEPdhRgPdn71L9R@sawUbka$zEemL?pJ > > > Jg? > > > > > zvu4czIN(rPUdpIZqXJ~B_=w@70F*8ux_rcQvb?*Uce{4&ihg*)KZ!L{l6<6JP{Bnp > > > > z-U*1- > > > @n8P(7Zj6({`Ecm&2N4qFXj2?pZCoqZ~|TNGv7y{v$XigVyTw)zED;&rxFc^ > > > > zg!zb6vofQ#T`NGuY+aWcsQU_;2&X%C?9k0qJ- > y+hfR!#FT6_$ktS$&c0;j3sqt!c> > > > > zC- > > > > Y!!zvGTOgf5n!`dV0^co4uNpS)1}uCDl*@1r0UT6`qDweWZfPgBT8#ub5Gexcn; > > > > zFcDkeRSr-Zm-kEEx^- > > > 3Z36RF{Q2<RB5G_77XwX33(P_AwLO#+*cwKw@?YD#BL*Npj > > > > > > > > zm*uAfuaOrN%sNJ1sC8FY{LJ@J=qW8ewrtr_cszxt>Et8gO3a<W`;u+jwpF2nm4 > > > ={- > > > > > z@_vcWC9>h8&`r94Xz>y4N_j`8;cml*4Fyc>)8yB4?4qp$28zD>^#w6RIaX`ZC- > > > )J7 > > > > zzZ9WjQJw0FpZPut-L1t(cEp6oQ+Rsz*=Ku6SJC-M#fZTd%os##- > > > _X}7F3Ub%D22Ih > > > > > > > > z_$Z*K3y2mU%atpaLIMg^lEe;310U%x!T<?%Ryk#1M_tw2*DQU&fB}N!L~^Pte > > > &+iq > > > > > > > > zbiEcIaX6g*{YPA!d5Km^_(=6utXLs*gv#kd4?X17G~qfcx^iEv_)8ZaiR9GqQGihw > > > > > z5G_7Zmahjh6}gHp4PLVZK%A%P;Uhao0iw5~M8_7evqh3)l=&q%<A;{8^^(Vf- > > > O?35 > > > > z^L-ThNSBXV`m4;9SnUk?>)pGzP- > > > n?0w$c(oN)I2Y<bC(uCuxY+Ep>mhzP6C+T#!I2 > > > > > > > > z+%kL&35YHqvCi`n75DW>A_aHq)XAN**A=3f3xGIJQ^iNTK%=4R)ex`ixQJ9#YCY > > > nJ > > > > > > > > zBjoNMXUv%41SgVX!$$!|T|jjC$P~s)RNU9KcFlx_*r$9E+&Oz)A()H(p!*<Ie587~ > > > > > > > > zu??`+I&k1Xchd@988Kpn7f@VhGgKu4QNf(OF6xRO>AkWNu1gx?zEwK@bF@ > > > ?fbagL< > > > > zF0f7)ELh+M- > > > 0MoOUcCxtVqHudAF0)>S+l&_;&ol!hbogzd1NKL5lY|+aLe#f08JMV > > > > z- > > > > R~od0Qf}m5*6Y4%P+qyR4>3OAt!`vC8q=gkra_aK4Kl_8+60nUUjeLW5<qlKW<; > > > q > > > > z)x?uvYu(ZnKl6RG`@%ZV<s- > > > 1Ghe3zAnC1F*q9g$hVbtl*w?IAsOCcX=JL6BGQ+!XS > > > > > > > > zPMs<N&3TKMERx7XjFzJf>yvdpYAsgKO~|JcZTGP*AOZO3Yw_w7r;t8HCr_U2% > > > uRmG > > > > > > > > zrk)!R=aqEw5yy1$QKh@p#05|f<2Z5RM0XDMl`&(+I3WsotSf$L`#ut($wo%yz<2 > > > ve > > > > z7mxsa)QS?t1_bgJte4TWk- > > > Xd8a19$aOkPkr`AD7RlySF|D;+y_lsDGCOPq8`)Jq&b > > > > > > > > zNHi$yOcW1v#V>7qoHlJ*L9`2AWON}Pj{%x4AOZM@%{$=>3)ZmUMGWK>ds9 > > > d@Zrr$n > > > > z85X>V;*js)A+>zO!ckZ834=- > > > jF3IWi>C+2>W?jUkfaF=NTe{+xDn4Qpw|n<)2~ff< > > > > > > > > z6=(0dfCS(p9mFV9sGIyWKnM>)@DTe+o~`q)SKL^qIHi`4RFXL6&gS?YBMj<pTA3 > > > tD > > > > > > > > zLjSNJ;6y3Rv99=~ijP`*d34amjT?Qj(gh?K9~t53n)30n^ZmHntwWv6H}tk3u_|$P > > > > > > > > z(#%J#S%B4c%)@QOd=KW%ohu;bJPi{K&{?#u_@#u8DC+<I_rG@nqH;{M6ldE > > > D9_s=U > > > > zjE@w3=bd+|)Y+Ma=u0XZJ9wodX1eo1-(!XuDuD^o%ts*A+SvgU- > > > }$mrLJ0IA84|zp > > > > > > > > z$}7&qfsb{?FD5=NUApvkh2M}NLuSsLNib8bk(e!wD&u@zKv3b3R~#MGg1y5=B > > > )VI6 > > > > z- > > > > P8}(ty{;ca>a@j1qQKH#cn?FVb!y;Q!46Xq@0hsvjE+3rhGmgiL+c?@r#L%wqV3} > > > > > z!1%vHg$f0!;k>8|h;M~?dpPrV9;1Ha`?w?li+<a;Z(q4`B}%7^P6KF;S(&5auDJN0 > > > > zay~Lvk-+7?#m=l&Fb+_XcugmiIpGGJ{Ttv|SNyWe$0bXasNkauh`X1CD- > > > u4^ebh=w > > > > zpYSOx#`abP8PcSjkJJ!P8d?Bi#G%- > BD;ZNx$*8qMhYnh~xfAP(Uv~M3mv49T- > > > B)x0 > > > > z@$G#HA1R%^MO_i{Em1203IlEsyso65k8- > > > 0$H!{pMyc+9uUE<1v;R;qEUJt5V*A>5v > > > > > > > > z@{yUo;#fi#5O)^~SLA%8kBFC~wQDcrALbM<Pm0DzmMo>8kL}yH*8(Jf%@hH > > > h;hk40 > > > > zefsoK;hk3+UGd8zADKC- > > > FGuSF;?*zqbzeTxHEb{1=@UCZ$4qO%pL(XBk1T3w&7*af > > > > > > > > zbSxg>C(x@DynKZ58=xzGS>)sB(WAXyNAByofcVl!g^yIDTeof!r7Yi4bQ3^E^=YG > > > x > > > > zQu_HwRoP`$M*~GxyLDOz5)HjD- > > > dT0UFLQh(K$4bvp)Mf4U9ZSTgrRZc#>sfs2}VY0 > > > > > zm<c}0Eu`H2rS5djNmz8l2(07IjVpXQQBH6sRzKDizijc5)l0lOsG~tjT|f%<i1VU4 > > > > zA1S?h_38n9P&kY8Jq}Dps+S2qvdHNRf- > > > ?b52DBu^PK;k8uTksHojZe#T6M)QD|`ef > > > > > > > > zRLuh{cIg7*?Ae0HT70Chk3ar+oMuS0B@33Kco9NXty<NVDBXih@KINBPF<wka > > > 7i=- > > > > > > > > zg2kHG6+iXLD@sTl$%w04zkYo;dMa0R0r9QBE+4H*qMb$TLa*1aZ=vo4tTUk1q > > > k@1W > > > > > > > > zO(yt=e|2~BC0D`($3aC3)iSTln>A}D0khyOUGYmZAMqWE5e>r?#jTA<0P*Sz`+6` > > > w > > > > > zT6JStSc?L7q0R$z3#Uw(!e_T&d$lfVRR*;mt<0lJj7J4$^L>x|_wOI3XvU?RHf<_c > > > > > > > > z3foCq`ae`7yL@CG#Dse7+O<p)+0?%J>Z{op3InY5tS%r0JHmM}3?Hp3VU~zyCS > > > kI* > > > > > > > > zw03zrJ^l34XwOChi&c|M@R7H%)@Xm|(4is4=JeA~_i|>gYrDz^7p*+?pP<7mX > > > $Y&D > > > > z_K!ss`^TKl{$YS- > |1c)9f0SbXfY<&>ii_%&E+2`jB1eygM^!iQWC%2J<j6U5=0FY9 > > > > zRx#SL+~Z)- > f!j2k*kcyN{tkl#7679v*Ul#se5AIYefF92l_)=E4rn(p@Bt38yp%fd > > > > zM;$m@^Pnyt1KV3g1vM`#UI<a;CeJ4;eDoSX79=LN|MFHV- > sK%waK6tAla*M- > > > OiVHX > > > > zfz0tysDG@dS>Ypwq6Mi}@M5rq(1JL7g)qR!PMBrwf@PJ+MZ- > > > r)N9U4{=!Z+1tb1$T > > > > zym<v#zj^cKU^|k!706k7!$(PnW`&Ph<5k>mN}8;Di#a}Pj0Gvl;y;rM- > 3&`Sz2T!o > > > > z0J6eIt@Rv5-v|;|gj?mymw)%&cMDST- > > > h1yA5}Q*w0)~$gd@{jDzCl|19sT<ClQcQl > > > > zE%rcJ{dQ9l0E1;%vQHU4O1eH1eALwk=- > > > $1%q{)GAp@4y&m_SKiKBAX3T<2Hx<^90; > > > > zC_ZTTC;=)HeALyK^Kv*Q!9npBw%&jI;~$- > > > r^yQ<j_~m{lMHi6Vzo4A5mkB=V>XYL* > > > > > > > > z+S$fvkB>U)C|p6>lr((Qh1c*=f><W_sB3Q(ha!^`LsneTb+jmH_~=AN<=F61f>I{< > > > > > > > > z_~3&N+TSDJgFSopNZK3KEfhr2C8jclkGhZ=K1vXan~#xf&k0jDIVG1bUoL5HgtyS > > > m > > > > zMzz@RQ5RCfM+ssv@sT+=e%{z1z=IIpFZq- > > > Nw%JE}|KP!cat=E0st0D3z@m7Iw+-&^ > > > > z<cW2~&#dP-dy`|co+AKapDNlvVh&8)goht~xM|a-<;s;KK*@js0|- > > > GrVZsD#f8^5Z > > > > > > > > zzI)+?7upq2ISAl?)m><WR}3EoFm(YjeDo4~6+YtQ4(j1Pkx*q9U33wBfrDs{2}H7H > > > > z&6)s~iMmmWA_=- > > > 7h)|eQUGdBP_Yp%j44l<}C`X0CKU>d6J6>gMiDO~Bh!DpaQd@d! > > > > zXm?|^1UE7A#oOL_=bfhok-d`X^_Fm6$6_%tQ#Hj_7(OZjWs- > > > qFw0z{%hci90wfTs4 > > > > > > > > z%D3Ns`}pIJTWG^gt&nhK%a%QK=#Z0f^5dw2#96hC<gejlBrujpCeiW{#Zi_VfzI > > > M1 > > > > z+GSg|Y~kYwD=j?HoWXsrI<{Ei%Lyplz3Z;K)H6>erQu^TIOn63X!(e- > > > gXPNG;v=s6 > > > > > > > > zq36dRe~c3nYmff2%PwOUsScf6UsNEVa7yG9^~{q=Y5157&iN=MT0RnS%nF}j > > > @e!Y0 > > > > zpwzHoLs)ag6<2V4&pr1%^2j5K(Ba5Ppqu=Zb)-nPI~A*^n9T4|5h#- > > > k1fu2R2`8L@ > > > > z8?Kr)Yg&9{w%DRY3o8sgI;E`kU`2@AKt<%W)N- > > > Ke6Hh#$m~)cJ3?Gw3JL_dd%SX^4 > > > > zLNtR+h- > > > n8d`QU>O9(dpZZsA7nrI%h(M2zt*5u)WEMB#1#XT^$@36l(CF}5(&f04M= > > > > > > > > z4O3zBY!MNNoR4_*#J@MuIq@gY&Jhcwv<{hEuwVgOAr&iDRBY_sci%10O@2 > > > yzjT8=6 > > > > z6&q`k83Zf@BIl!(ZO@)P@xX>RZ&p(oqvG}%<s2- > > > P6k*5A(Ehy2X=vXyelrxYHObP9 > > > > z0AoDjR4V@3v}vQ&mNU*cgGZP->Z- > > > {>E}Lj72YB;P|MF@z!6Y^alsE$D*AY`yg@$&T > > > > z7hZUw#6dI7HweUpz@$l&Y@#V1TzTb{F;&K7YY-@91TYCH=%Qaj%- > > > 3Iky_69%Z8r$S > > > > zgaD!3cJ10Fp<cmTmK8}%RZ2s)?b@}|Rl- > > > k0wM`wej=;>BGYc|Ka&htE#aVB)Z~X~J > > > > z0s_pDv1Rj3Y!Vm*B0- > > > >4t5y=;6}&~9sWZ<!Gm_HNoQcIp3jwr$0m|&Orn$dzP&YiR > > > > > > > > zqG(r;bdrk%?ae{keVgFqqlE@mGhMoL(cMMzEyyG=2!H@;JZRTQcvtY&C!c(RR$ > > > eIp > > > > > > > > z=;osZ2y^YeefvfjEV~rIG;Ne4fI0uVb?XW;PJYoc7?Ee5kGo!cwD7^I1@#F_FEJnO > > > > > > > > zHLWNX0?dOfFQ#(px$l<9NY&~W?9QHh?m0II&MV)1^9@dljFM8ZBsmA=qIn) > > > *K@}my > > > > > > > > zU_@ONHU~giO=#S>@tbeH>ExjM81I@uS_*4ix#`xFGz9<NPd)XNTcUigpsI?Oo > > > |LpA > > > > > > > > z;c76PAaufx9XsSGegFOU%a$!;*AkEuuAwO|iwLj;fgz+^sJ!mt$~B8kj<C*{b>DW| > > > > > > > > zZ7TLJ7?6$~JC@;Ygr%FTa)tm(I9mSyoy1i4^^r5s+|5Dje)Q<k__uW8<8{1x_3Ex& > > > > zyPB0)H;g5I1xIsUfxo?E$- > > > cg5(ITdtB@Up_{L@Z5ZO)uI3{Y*9BnRy9vJMt&Fg~Gr > > > > > z<}}R+5b9$8{{0exk=#NrC2fw5(*reL^_(FoB`{jIHg4RAt1$*D>1l$gNs<VlNrHa> > > > > zUpetgK%9aS+4>LDDQw7Y+O)|FL- > > > +Lq2M*w;+UUfF!90u4R<2x`ubW#Q6t8UEy7kmk > > > > > > > > zPt9V(ldm)5d0ai<@KzC9D;X~32M!#FOTgqSY)VWL0X~aF!{I%wB_7Vi8#Zh>@x > > > &98 > > > > ztaA>^V%?^H|Nb9+^pO)u- > > > ($>9@tq4Xt5vI(0}xCT1O)IeNBl=$F_0u!wQ3cPt%PjN > > > > zsUiY|i)9OP?b@{xguQOz9*{6A#^_QJ>XavADW0eSii>_;B7wP|S- > > > ^>;qY0q7aN$Dq > > > > > > > > zD7>JST*pNxJD6B}8w;;U`Xb>>h`x&JV_k1lZh4qCZJN<7iMH>mR;|kJEo!cAv{kNP > > > > > > > > zO~YOZ;a7~2SG4^SQ*La8J^JXQVWx_fRFDHZ*D+PnWXsTn5Ma6sK2E|C`I;S1f< > > > 74S > > > > zf^>=#>R7X9&nC#Dv)6(hZ`- > > > !b%vloXWxjEpJ9mETt+#@8ll2rnu5p$^KtRH^Bv5Bl > > > > zgf9XYTyOyslaTX7TO`QJtls!y9&LgqO_~sXTGyeU-DUQ{- > > > o1N?2XXVwHyd5qXgf$T > > > > > > > > zH~LX4(16`>1rM0i^y$+_v1pSlas;r?nmTpr!Gi}2_KxmFVtvk^KfhP6UNvgeh`g#M > > > > > zLni`k8S@SdwuJ80tpxZu{q)nFrI_QQAb^JfIu~cQ;XjvlU+>wohiHSp`qi(hSFc`_ > > > > > > > > zM&+{5DpjfwMUI||YG`Wp7mg;F#pDvPOg9RBs=<Q?qZVb;Dv|>hkqDOEy?b|} > > > x|rRQ > > > > z01|@FHypFP{r20Dbcc`$u~P{`7ob+=k;D+FUAy+UapU;L34Is- > 6te<e?*xY6(^<D} > > > > zU9- > > > _F>C<}k>Jc~<74Gn`7t8@$JR+D&DqwD<3ITLtFS+Cr+<*jd$XQST+!xVRzzT2P > > > > zym{=!5O58DgQ- > > > Fw`N}XvY1_6f8;C?~bi)<Z6|}HgwrrVv>r9D}AaLZ7N1}lD%rnm% > > > > zI&>&1k?_igMIk&$@Ljm>y6af8&9~hvqj%=lSR- > > > O!j@_J!=Lav`6t92y;fG8W&8#63 > > > > > > > > zUKBkOBC0daT)A>(geyOCL1M2Hn@zSm$B!S6s(kC#tr<(B+fZ~Uf>i(_@RI4&sS_ > > > >% > > > > zSFBhO-@wC- > > > D&vqIJ$e}Bw_qKY@~2SBVuZ;Aguo5%u20|!lFXnBXP6A_SaM{HSEo*$ > > > > > > > > zR2c+OnRCxQ_wvgx#}01DkRj+C0#{(G{4kL6<!#=)x%nohoKulh4@C|%=nysrLSb > > > Yk > > > > > > > > zs%P2JW__5gG<I92Oqs$skQL)wZ@u+~8*ZSUOoyQ@+oLC+d~z7AKV+K^4f{mr > > > oO2G- > > > > > > > > zUi3T%4H`6Y;zS(FV7Z3N{R9T~zKBr=)aQ)aTO@Lx#Y`}t#2Lu5&p!M0*I)ZeOBxdJ > > > > > > > > zao@LZAN0Yy0;|6KaF~xWAzxldjSeRcHd$9;O3Mx%wi1vXArEFRlURE#Yu4Luzn > > > ynZ > > > > > > > > z7NyA4IdTNhl4T)%#E22=*RPLu=Q=T|&Rjt@4J%cu6nTf540D43gF4m^XUv$fd- > > > v|l > > > > z33>V}Y- > > > pGprX=4Ge15V<x@5_cI5Z8?&z%TsXlR(c^ya%nW;bj}4;?xbdWNyej8Mqa > > > > > > > > zpOv9uzDbdu)}fixqD2d|G|@URBU|U2fzS_2moDYSg;!4#TQEHmTT(T_{R`s9wj > > > G)P > > > > z1fO- > vXYP+tfncW+g#qT>sLz#DznjKp0s;2c*;r={A4fopZ`q#6%9e`C+k*`hS~Pw7 > > > > zbabC;)vASiz)W<CsiZ-`i2#E){8XTsgMJQP4H?vJ*|LQ#LKO-WD- > > > Ev^^wzNGXTcf2 > > > > > zn%JN<YSgF%Lz+7K(H!R+0j&A3<YKUgMjwhpxDUliJ|7_5M1TJI=LD{en~b~@- > > > h1yo > > > > > > > > zwA5zJnl*g*aK3tsy|H05VN>!gc&2s15Fm^u17K|J(IsoppaHs_ke5#tu{Bvx8Z%}L > > > > zK1{IE<%g{qj7F7x)TmJ~i}@^G-23+J+p}j+bmTgA?AWGF8&- > > > )gz4TIop<u2E>9VWq > > > > Q9t=$LltI8CkSzrM7XaWYkpKVy > > > > > > > > literal 0 > > > > HcmV?d00001 > > > > > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > new file mode 100644 > > > > index 0000000000..a636b086ca > > > > --- /dev/null > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > @@ -0,0 +1,153 @@ > > > > +/** @file > > > > > > > > + Logo DXE Driver, install Edkii Platform Logo protocol. > > > > > > > > + > > > > > > > > +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > + > > > > > > > > +**/ > > > > > > > > +#include <Uefi.h> > > > > > > > > +#include <Protocol/HiiDatabase.h> > > > > > > > > +#include <Protocol/GraphicsOutput.h> > > > > > > > > +#include <Protocol/HiiImageEx.h> > > > > > > > > +#include <Protocol/PlatformLogo.h> > > > > > > > > +#include <Protocol/HiiPackageList.h> > > > > > > > > +#include <Library/UefiBootServicesTableLib.h> > > > > > > > > +#include <Library/DebugLib.h> > > > > > > > > + > > > > > > > > +typedef struct { > > > > > > > > + EFI_IMAGE_ID ImageId; > > > > > > > > + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; > > > > > > > > + INTN OffsetX; > > > > > > > > + INTN OffsetY; > > > > > > > > +} LOGO_ENTRY; > > > > > > > > + > > > > > > > > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > > > > > > > > +EFI_HII_HANDLE mHiiHandle; > > > > > > > > +LOGO_ENTRY mLogos[] = { > > > > > > > > + { > > > > > > > > + IMAGE_TOKEN (IMG_LOGO), > > > > > > > > + EdkiiPlatformLogoDisplayAttributeCenter, > > > > > > > > + 0, > > > > > > > > + 0 > > > > > > > > + } > > > > > > > > +}; > > > > > > > > + > > > > > > > > +/** > > > > > > > > + Load a platform logo image and return its data and attributes. > > > > > > > > + > > > > > > > > + @param This The pointer to this protocol instance. > > > > > > > > + @param Instance The visible image instance is found. > > > > > > > > + @param Image Points to the image. > > > > > > > > + @param Attribute The display attributes of the image returned. > > > > > > > > + @param OffsetX The X offset of the image regarding the > Attribute. > > > > > > > > + @param OffsetY The Y offset of the image regarding the > Attribute. > > > > > > > > + > > > > > > > > + @retval EFI_SUCCESS The image was fetched successfully. > > > > > > > > + @retval EFI_NOT_FOUND The specified image could not be found. > > > > > > > > +**/ > > > > > > > > +EFI_STATUS > > > > > > > > +EFIAPI > > > > > > > > +GetImage ( > > > > > > > > + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, > > > > > > > > + IN OUT UINT32 *Instance, > > > > > > > > + OUT EFI_IMAGE_INPUT *Image, > > > > > > > > + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, > > > > > > > > + OUT INTN *OffsetX, > > > > > > > > + OUT INTN *OffsetY > > > > > > > > + ) > > > > > > > > +{ > > > > > > > > + UINT32 Current; > > > > > > > > + if (Instance == NULL || Image == NULL || > > > > > > > > + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { > > > > > > > > + return EFI_INVALID_PARAMETER; > > > > > > > > + } > > > > > > > > + > > > > > > > > + Current = *Instance; > > > > > > > > + if (Current >= ARRAY_SIZE (mLogos)) { > > > > > > > > + return EFI_NOT_FOUND; > > > > > > > > + } > > > > > > > > + > > > > > > > > + (*Instance)++; > > > > > > > > + *Attribute = mLogos[Current].Attribute; > > > > > > > > + *OffsetX = mLogos[Current].OffsetX; > > > > > > > > + *OffsetY = mLogos[Current].OffsetY; > > > > > > > > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, > > > mLogos[Current].ImageId, Image); > > > > > > > > +} > > > > > > > > + > > > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { > > > > > > > > + GetImage > > > > > > > > +}; > > > > > > > > + > > > > > > > > +/** > > > > > > > > + Entrypoint of this module. > > > > > > > > + > > > > > > > > + This function is the entrypoint of this module. It installs the Edkii > > > > > > > > + Platform Logo protocol. > > > > > > > > + > > > > > > > > + @param ImageHandle The firmware allocated handle for the EFI > > > image. > > > > > > > > + @param SystemTable A pointer to the EFI System Table. > > > > > > > > + > > > > > > > > + @retval EFI_SUCCESS The entry point is executed successfully. > > > > > > > > + > > > > > > > > +**/ > > > > > > > > +EFI_STATUS > > > > > > > > +EFIAPI > > > > > > > > +InitializeLogo ( > > > > > > > > + IN EFI_HANDLE ImageHandle, > > > > > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > > > > > + ) > > > > > > > > +{ > > > > > > > > + EFI_STATUS Status; > > > > > > > > + EFI_HII_PACKAGE_LIST_HEADER *PackageList; > > > > > > > > + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; > > > > > > > > + EFI_HANDLE Handle; > > > > > > > > + > > > > > > > > + Status = gBS->LocateProtocol ( > > > > > > > > + &gEfiHiiDatabaseProtocolGuid, > > > > > > > > + NULL, > > > > > > > > + (VOID **) &HiiDatabase > > > > > > > > + ); > > > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > > > + > > > > > > > > + Status = gBS->LocateProtocol ( > > > > > > > > + &gEfiHiiImageExProtocolGuid, > > > > > > > > + NULL, > > > > > > > > + (VOID **) &mHiiImageEx > > > > > > > > + ); > > > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > > > + > > > > > > > > + // > > > > > > > > + // Retrieve HII package list from ImageHandle > > > > > > > > + // > > > > > > > > + Status = gBS->OpenProtocol ( > > > > > > > > + ImageHandle, > > > > > > > > + &gEfiHiiPackageListProtocolGuid, > > > > > > > > + (VOID **) &PackageList, > > > > > > > > + ImageHandle, > > > > > > > > + NULL, > > > > > > > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > > > > > > > + ); > > > > > > > > + if (EFI_ERROR (Status)) { > > > > > > > > + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in > > > PE/COFF resource section\n")); > > > > > > > > + return Status; > > > > > > > > + } > > > > > > > > + > > > > > > > > + // > > > > > > > > + // Publish HII package list to HII Database. > > > > > > > > + // > > > > > > > > + Status = HiiDatabase->NewPackageList ( > > > > > > > > + HiiDatabase, > > > > > > > > + PackageList, > > > > > > > > + NULL, > > > > > > > > + &mHiiHandle > > > > > > > > + ); > > > > > > > > + if (!EFI_ERROR (Status)) { > > > > > > > > + Handle = NULL; > > > > > > > > + Status = gBS->InstallMultipleProtocolInterfaces ( > > > > > > > > + &Handle, > > > > > > > > + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, > > > > > > > > + NULL > > > > > > > > + ); > > > > > > > > + } > > > > > > > > + return Status; > > > > > > > > +} > > > > > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > new file mode 100644 > > > > index 0000000000..fd9c489815 > > > > --- /dev/null > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > @@ -0,0 +1,10 @@ > > > > +// /** @file > > > > > > > > +// Platform Logo image definition file. > > > > > > > > +// > > > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +// > > > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +// > > > > > > > > +// **/ > > > > > > > > + > > > > > > > > +#image IMG_LOGO Logo.bmp > > > > > > > > diff --git > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > > new file mode 100644 > > > > index > > > > 0000000000000000000000000000000000000000..d1d099789fa794648b86c04 > > > 6f0320a553954764e > > > > GIT binary patch > > > > literal 11944 > > > > > > > > zcmbt)1yozzwr+6OVns`fYjKxAi#rsGl~SZwaQ7xSMH;L{gF|r*PAO2VloTiy0>$0k > > > > zA3gV;|D1Erd-skz-pU>sd+dzt`RzUD`sO$1T6a@- > > > zX7CbN~%f#G&D4T%KZm$hXg1B > > > > > > > > zFwoKe9QOnB{=mY;!otMF!pFhE#wEljBqYEmARr<pCnX{#BPJjqr6MJJKtV}KNk~ > > > FX > > > > zLq$PDPC- > > > fW=O$<v_y57f!o$MCqaY$6qWE8ryDtDTT)+U@Qw%gR06G~O1{vC24}cMX > > > > > > > > z20+IEVBF*V`@qG+#=*abiT>yJ*Q5Y642*m1*w}c4#JD&B02(?5CIAZ?hYS~woL > > > K<) > > > > zKwQ_-t)Akspn~^1N-8luBd-s&V- > > > KGQy>a&dLsN2V>Zoa0L=^R{AjzqD`Cms_MGXv- > > > > z3cJRIUxan{{M^5{K=Dte{}aNWt7QKG^!KYX078s=v}71$06D<t&sga1<Y77- > > > 6!?Fg > > > > > > > > zkmOqR@l8Kl{#s|UYF@;>+y`NB5f6%1VS@y`ZtL(3A7^4K^G=(4UE49w?T_0SDk > > > G($ > > > > zN1<Fzi- > > > > #BCZuBd*+s^07kU*dt{v81Q>)gk~AQ&^pb*wNQgm&5Qja9BOcG>LPphMn9 > > > > z?<LSCzG- > E!dB<m>vN(4)gekvjlgi*B7D+O@84|?4X;VNd+d{aB!>#pj!RbY@V{- > > > 0M > > > > > > > > zPKO!E5zd!e2f}z9zFqo?RzF^@dVZHH#ahPeGa{TZpU_*TS1M}tX|w?EK$R@^Lk > > > RGw > > > > > > > > z!2NJxRO`lH|1I4eAlB_T*bxj_KwZ3X{pDi~+h}#8{=KYTznUxyJMG)ThL|nWX9zRy > > > > > > > > zjlcdeRPG?hqS!3Fs64*K%@X8ETgA5=WaAe}8M~Q$o<KY<;?t0OTsCev^Aip)xZ- > > > &7 > > > > zEnwj2m76xl$_MdV+x{H|P#S4>kN+4mZvm5zF6{kGTDNoQ`j$h0&=;2p+- > > > Mm#r;q9a > > > > zs>e7`0_!VEV8!}BIp8l(V4*`i?MARK`>JfxT(4<Y*rs- > S%vWL0!r{>*Qllw5>&m(( > > > > > > > > zI+~jN%Lzeg%hnEzdBDc}>Pl=WN<Bm6{2?g>c}Qq3kngxNWsM~L?XtNCxd(st+& > > > s!y > > > > > > > > zI*EgOrXSDx282+Z^`WkNLp5%?Z5T!MlIZj?Z;RlQ`kXhU046A8Ah5sU<#$$%HnW > > > 8p > > > > > > > > z%i@k_8@M(#J9<$Rv@YyRIr0Kn;u#U;OMJW?y=?POH6LAyzUFU)7%XSboO{- > > > I1(G~! > > > > > > > > zv&NF8LJDonPp@=)(heT{7*k(r$#v`!oGxJ)Oxu5Xb))L#NmJ3CE%K@T7NbCa*<Y > > > 3{ > > > > > > > > zSkVIUwM1Y;`p{X;$6MH+8+5bvi99ug<GoxS<aAQHwEI+(F1~ZtI!5~r5Mw8E9(X > > > vd > > > > zUrJtY`3- > > > q7^p>6A$y5?)h$gnjn>G8wL;vS%m_wlDvulFiweq(@6$qzti;NKBX@X(6 > > > > > > > > z;F*7)|CQu!YNVQ8kWB*T9bgj@^m|rs1G~^qc*#HIz1h6Sa<Arafr{L!p+et*ooI{! > > > > zMIsQB5uqH1voeu*r4H(0{WgJb5FYpS-5#cI4DNinbgL(w@pbDN{bLdE=I- > > > +BLH<6@ > > > > zJDE)m`9pQthFm2ursEo$*$4&bDm7)9a5WK%-_c`s`B)nR5h- > > > @4#bnHT`3_b!JBHow > > > > zxyGDgImnY#bM@V- > > > uG(2(e5mx8F$Jwj7So#v1GxWhp>ow^hy!(aeiO^a{iey<$mjMM > > > > zx06lB1|z#Qq?(cCl;i<WuAU%C)-koQcf??CdqKwly`#s}- > > > )2PTm^a{pEuoxR=C#gC > > > > > > > > zs@TJ8#4zz8InTL)<1nfss&!dP`@^_Ya$?Og(x{@I4dURS)bN{D0#kL^gFy7@Ppu > > > ue > > > > > > > > z>&J*p*N`Na;KD0%B22CEY}XdL$O}WaZ+p$(3wB9c1NkA!>=W=o3Y>Cg12TO*z > > > h4fT > > > > > > > > zSA%uomW@1Gl5o6W|JkMiZ5ZTo2JJN0fGl5hX(@{54lqcN{n;X4wBsu(cO0n?& > > > $k<J > > > > > > > > zsY3z_`2DcPSkp_>0+NTydjm@!SeX7`a!6K%9sd(~(LGQ<j~Pc%LnEupS5FcO*+U> > > > o > > > > zsre5rS}aW)s}@)gnlg{qR7- > > > r<5@SomE6N08vY@4nCv<_`8+xJm_R8a=2_UR+*Mq*) > > > > > > > > zgafvZ2Ljj8qM30Bw7#k!fg(zOI?QC5TacQR&pROVy2xtX{vDwB8fX<$yY_KhYTFe > > > ` > > > > > > > > z6V!988l(NgW_i1Dq<Y(X2h&?ef9)ZCl@KwL)yUv}nzilJ1F5Dx^?+I4;WOwVxu_e! > > > > zrzuo)hf7U<4or;rr^mo2%+RXu<Nno_E- > > > MqUbaW^+bO&JL!B!hoy7_Fpt8o9V3-J8_ > > > > > > > > zw4D`mw~0ZLxk!!$nvP_poz__f6yn{K9eSf)fm1_~&V59f2MJ6{;xb(dWT$mSzW > > > WSY > > > > zCQm-AL8Vn?b<aePPdE_Ih@94d?-qAua5UXMO_vw!e(-22`4Zj<hC- > > > p6eI<pRAWZsS > > > > zb8l&H%4Ch-r4mX`tuFn3S!aPU6@1f@eFyM^e+Ki- > > > R(kLYWoNjiUT;*DRZNqc>Boy# > > > > > > > > zsU_#B%Fd9O{MYP)g>yon?|`q$sUrm@?xDp?`?@DAql@r!<Mk7UpO6q~4Sy# > > > 3d1$Mo > > > > zTo{ex<xTRjqhMQ<LFSm60Y<O<I#Yc?bNQnTO2}AiAPws`T^iO`IV- > > > >R0o83OvX&P$ > > > > > > > > zoGji5r%^OavL<0l$alF^vw$Ac>|(o{QnE^3Ry`M*a?wj&)+Y_xz4E&rZKb(WmB;a > > > w > > > > > > > > zz2WL)HB+aw{~%q=@s*V?B2}?&z5{|z(O0%Y)*qu1Oe@xz@Kb9;+uQQs>ULA{ > > > b14sy > > > > zaP1(hq~*)$ZVP@VRo_`kBo7p+qT5%FOI`_0#d(u0b>c-f3!lIVm8Bphu<- > > > l3=^cEW > > > > > > > > z5u62#D^7jk95y&DxXZ`h>b@AM7?6OO@AkWH9*FHe`{NFfJvY~84R4JAdIy}U! > > > X?xb > > > > z58KO(*<D`X^!;n1{tGhU- > > > gB>3{)H<UNZNvr5pSAGpABrc$VQ~|o6WLIEux|oxV!xb > > > > zjD{B6#&qBk=jK*4&@lte0NvuLi)GNxZo1R;cyqG1Yx2L*Yj5>_w5=ykbO6- > > > OoIGc@ > > > > z(%$_%q49Wzrf=8f*!ro}6KlofhCpLZjOE->Z=+CSrX^7{Q- > i;x1D%xidFpr^$Jo}7 > > > > > > > > zhmkhq2W29QI%yJysC4Kd7#(ofy_73OyiC@y7PKyszt_yV#^~28xfR208mp_9oa > > > e)m > > > > zG^dHP_;2xo{tkF$lg1()k*<*C)r*;nOIP~r6ad&0X7agWw6Qp|J- > > > 7|syRK*C6c<&+ > > > > > > > > zm#Ss4Iy0oPXLXj`W+zW(@qwy&V@v`MIHYUdw2LY_DccN?H2Ld{sdDKhz|dy > > > w<cRAV > > > > > > > > z&Gem_HJhM%1tm_vV=`caujL}+9iW@4YWm2Lc4A9|zke3g6~vK6_RLS|#lj5s2 > > > 77P{ > > > > zEBjYSK0StH- > > > KO&ct09341)J0(vgR5_<Qr2HAev&AVpIG+5T^w)kZI{1r_^2bvi*|F > > > > > > > > zcDnL_KAbl^aCHKjRI~pisA~@sU8+Q)Zt{k)*^a7a<t5S2=hIZiF*eN%GP363fJSp< > > > > zcSQrUsjo`|cIV$*k0&&gqjq3!yO`Y-yXx&- > > > )rd!0)UwT<X+mDe9L|a3$;n<F8nDj0 > > > > zbt2XTx~4+j0mf`@)4?nrk_$M>$6^uZ(~Lx6J$-xXozJ66o%(}%sgjYss?*LK- > pR$? > > > > zU%@5+mRbI$3$X*b?*OPJ&08okXrqNVeO- > > > 9(A*20F*RkHp?htHs72I{MQs4c}4ZeLk > > > > > > > > z!TU2Oso2@(aJR1V5X3wDaphN2Mg8&AeG*o(hZS5rss?Xn>Vc!QRV*{#nC_en > > > 6@50g > > > > zVKc}m%KkiBa%Kt{QGrG>syls$f6@- > > > UE+Ri1de4jMS5)7SA)p|w1fwqa9J?pC#kfXe > > > > > > > > zGxL@vL}J@>8?yRiHd`zdLL4I1D0c!8#&K9GN42A(py^jwrB9cRGct&$orzhT2;!W > > > U > > > > > > > > zFfR@C;7Yd<N$aq3lY40;{xgnx$m>jpcgp*rllkD@(_Pi`@^5xz<3~fgiuUvMmtO!- > > > > zG@_JmlSGZTlwMjxkgjGKpTrDI<GM9TNySk!(_9<8ixLJ-fOl4;Jxe- > > > K_~6?SQ|fCA > > > > > > > > z*E1W01uG`y8tZBT$%ZihW`T|#(O)VXN3Df2Vv6Y}gN)k{Lqi{RJTkfP^AqcmkHfp > > > F > > > > zGZ67BmA;S*tg0KL&I>z<z?M+HBmf=Y@D3o3@UQ>- > > > JQJE@y4|C7IZj3HX(Bu)fyKW4 > > > > zM_Lmkd1?IK<~U-)bUB*haUKu4- > > > dY+nq$>gA`eTk+_~zY3uflwPv_xjVj~sG_Rm17j > > > > z!yD==(psSU;~lX5Eeo<UUX#XWbxQEc5$m_VHv<- > > > gC`E&MorI0!o88rPSJXA3VSq4J > > > > > > > > zW;H2F4k)cZSl4}IWHQt(BebeK3Lg2YPDSNn;WRn5Z+zYE#()7sM==;A4t5VF6vUf > > > T > > > > z5#Nbe!Cs!XU6E>gQj+ky- > > > {@C6772nwu!48=I>ERODa#OzoOJI%F%nh}29ST4E3B{( > > > > z!Be@Pp{|$+i%1ePIs17uNjh1LQa7t+TJ~;tvm!lzBUU@Qtk!- > > > IOLF7X@!35lin4ES > > > > z$q5#7%y*~Dyzc-tsrB`-LA8RNHe{w;>-xn(E#n4-q*6GB- > 9d2Xq8+iaaIgcL$=X2U > > > > > > > > zcX?*P$I?ZafVe1pRh)XApuO$7%#e8=$c645;9^~d?uQq2*|kT#QPHdAIX(fQX8K > > > nD > > > > zCf&BbL7v!-Oh*ez<X_bjaLgGJ)a|*ozS4@yfc;pPuxt$pvc0|T{2|O(@yGv8- > > > t%Ao > > > > > > > > z(A(QKxtlrR`3+w9Tn22T5~6kRVKu9q={eu4?G|EZyZcH2dw2o7ypkWS$&rrWGJ > > > R-X > > > > zYRS2$b8c#yQ0^V%$-s+H- > > > j&OZo~7OFwssk_)$i;vp}qqU;Yd+16{VZ*<`yLu)0=?x > > > > z!iWZ=cLBcX1S=~eT~4wz$HN&nm*iRn%L1b- > > > y^{bgc&)ddW&TgNrHAuL9Gn>s7Tz}F > > > > > > > > z+btRUDT}eU=)~&faeUd>cG=?hCic4iQ=i;ygmP?_c@7yHxTS>kEsut1SGJp9yz!w > > > U > > > > z1N?El)P3f9=N&a$L{- > > > pdtjgPjuX;~yQbbtecL0Z?=v$m>rjs|+>m|&cBEv*uaWV_` > > > > zt(Dxx=Z!+1V&_iRq9ZnOWVhhRmZXUp^cJmdw+<8- > > > oLRy<nXDAOF<0P<gqj`B63`4f > > > > zYueOWi3y&(O%PZXX71K;;_cxG3+GiX4ub2- > > > vVmRhZKXyB<G9}2B3UnCn#s+Rd-omV > > > > z#t3rBMY48UydL@618@g;@%uIgGS=+skt=2xm~kl+#w`1Bg62E- > > > VPjZ2ZedRXJ4)`m > > > > zQyrg))>f0D%8bF1;Q&eVV- > > > %;U3qox$b%4EDJ~^T77)y3lJZMe(Fr!H9gK2jC+)l!0 > > > > z;U+!oA^V=JC|OKjuoxyO@DU==pE$#lZkMjuLYa4N8- > > > ?uyEKB>^7}M0iX##x5sV0>| > > > > > > > > zZ%f8<2UyTC#1X&Y@Ae#F8C|WuR_l!s6J+hu)3t7_Bb3!^lvL|h)z+oUg73~=+Hq > > > %t > > > > > > > > zzxax+s3$tU$fL3<^<cAX%8XBYWBSmJ;QeWWokbt!Q^;?F6i&r@7IX>)gm5baM > > > D=rm > > > > > > > > zR!gARP?RN?S&k%wUL!e(eMn}!rZWnY<OMd8$`>!pGD^2c@fIMQ!+vev2pgBI= > > > }L{= > > > > zGI$P8+BnG?P*YWN7Cn{4;$?)a7;oqzJ8j5i3@BN@- > > > 2r&ZW5d^ftTcV^I~<nMZ|74r > > > > > > > > z4Nz}%_Et$GmoxyYppA!$ZF6dEY~q>&v+u?7neSLgLF2r?Go+}6Na~w%x_5OD > > > MRP#y > > > > zx<vDz<VIHo4)mJMj}3YfHuik+J(QxC`AJArckW5fYjx`!9oYIQSnTLwYu- > > > SYR%yp# > > > > zx8+cP?mJo5X<kvB$w}ad3|81- > > > ;(|z={y3gw1@t+IRa0g%+$nz3=UG{5m*v~hhpK9) > > > > > zS0|0Z_7qfdef;D^``z8BBewWOC1tVO_ce``s8#V4&ng$v89g}hO(cvYlS2ZT!nsjv > > > > z{(<>dC- > > > X`gy;m<Krvtltp0+*9=^k(i_A#?4@T4ZB_l(5b9P3aASm~B+2fBF@evzP~ > > > > zyMi@-XmIp$F!<Bp8IACRTd=TW-_tCXg%KT#ZXujK- > > > nmcl<0)*EZEf?45YKDpTx0`w > > > > z8~yxw085D1veo42qdUL|@R8?(m^i`3SD4c@*ea- > > > B=Td=u1jBsNMQFQv880yl&b)}m > > > > > > > > zI&H5IpmhACHRHVM9SLH}&!XoWHdoc=>6`WJua_!{D<#JR4Rlw?Rrl>NzJjaQB| > > > !+6 > > > > zCg- > > > > dmdU!yc=R*`GM@Ys9$<KMW!omJaq^|1BXh0WoZ~c*+kQVP#My{%lgyodT*a > > > ~AS > > > > z4F`*9+-&)9@uC>X0IfR!vjLM!iX1L!!-x)>1C<e}T92CqQIW8iZma$- > > > omU~(K8KxW > > > > > > > > zh3Wyf6GNX4vv)FWhDB4+*sF&Xgu^55Y&#<ZYANJXUkQ#_LGy^w0Pp#_Qd1Vj > > > 6MWnn > > > > zx- > > > > 8jP8E*|Af%h}glpO2}v5^$VmxGvK?^EX>g9kz?CrQMUW`d$GAoEY=%SWK#EvZ > > > 7M > > > > zCIBm(6h<- > > > gZOO9)qXwr50!%Rnx$dP7cyGNod@G+iI`x580UhbpfS$svDicPk^61h| > > > > zVtFY)!p60(YSPS>- > > > Sp%5F+t&nU%T2}W_qC@<zCHFE}+aZE7$fWY*PAvB5EwKyX|OX > > > > > > > > zZT6!*zwU#Wim8fHQ2hl%bQ=3fJs`x7TnsrXBTTIdL~9<}#CSPR*qCX<2NGiG5X > > > @ok > > > > zKxsTpk!%Q3Kg2jUpy- > > > O9;(KTdbgDJ6;scGYaF)0|5j)KC>kVVZm@tsPT$fZ|sC%|^ > > > > zEp3;|{SJ9aFWMBU4t)pzYQw+Ou~%#(UI^- > > > R_g4<b()Ng$eE#<G1_J=Tcu`CcLw=|i > > > > z%(W()+_Z3V3}4pYWDZUOqS;YAc#u4j- > > > N=95v2ZWoI@EAQeh3W{br!gG3T)y_!&<V{ > > > > > > > > zvK=34k4d~*!Ul&RbhX7?q+6>NeVKlx<C+46{hpgGe_7%i?Itd5ESh1jz65TYU<B)6 > > > > > > > > zT(gY^e<qlOg<h|JRBYp%qRMT_7|P>h|JkMrxdWKsYr{6+z>b9$uVZ)A?l9u5Cw( > > > =l > > > > > > > > zv!gB~*kX;A#1N8Cj4fPR!MLEUwXGm%r4>Ad`r*4Vt)%f`C2ewpa|`$M5%B`BM > > > UZ=2 > > > > z!-A=K?rk|78$~${rNUm}Z3H(kw1*- > *fEAZr!IN2f{X*~K6>^$T)|@?!FIt||O3~Rc > > > > > > > > zhA~UA1c=ELq!ZGDoet9`@h%;Ej_FmkN(~8r7Jh+t84f&)Korw>l60WBT&6aT@d > > > -v? > > > > > > > > zm2;jmw!>$N0vgjF7mNsl_nDja8A@YW8@!wYl~e4q;8#l<QsMfp{}Z#xX$m(J|JS > > > 5U > > > > z9NrwVzrIEkC^l8@BmPxZ*HgE3F7n5- > > > Ncj!BoI_AyJsD~|g=`+k!oi7?aoWJH>kCbY > > > > > > > > zQt*{>`kIUDupw3OJ)m&1U$!7ZNBJGdfC(e{^h1bs2hWa=ACI4@?GrNOP@&>t > > > S}U!k > > > > zECP-JIm- > > > w7Q<wFa`47u(Ng%${2+TsSB3DJjQaEnpX^G#QC`x_$O#30(=IHDJKU{*E > > > > > > > > znq2D!Ym%bl!@bUtk=L=Jz{iXJS8YqX_HZ>~epKAz;|Ug{j=46gw#fV9jm#=H2vBa > > > F > > > > > > > > zqc{VeZ9aJ*O|m(R$qV~<UD$Ra(Af(o@p*x@kC3nQm~)`gF07H6Fvnuk@kGM > > > rT~U&k > > > > z63%C~>q0HWFP-P- > > > jXOK}kK%AvQFuPwVJ|_q1I**~ISx@6mv)jFu@9ScjpGp;_667o > > > > z830i@PHE!H*EWW9DXClZ>WyakQp5)Cd5K$mk8<r%EMzSPO1~jUAY- > > > R~K*W3(sPjhD > > > > zVxxqqw7uKqcjNqR2LJImlNHHtF`z49(d37vOCS8{fQJ5OB_6b&I7- > > > v>eAGhq3z#f1 > > > > > > > > zbzEj}>%N~(@nsTk>Um>1<za^9C_g)2z5|Hf0aC&7O(9op_MM}qF70B#F>~y!r6 > > > <Eu > > > > > > > > zFJ)uQ+NV9~XYboORJ?;};8GLFN8p5X3yu=2jc?@ut%6*~108P?KmgK4(KXNvKy* > > > pL > > > > > z!KVf>JP@j!sH8hKV);=S15yWfJ;N=NdgwugYx!YmrXm{I%&fK#TU~qH|A#I- > > > +EImk > > > > zpotaM0qAm*kA9VSUPJliV6>b$R`a29w=RLI$OA5((38Q_U- > > > gp8_RqXAGDr*$6Yc<C > > > > > > > > z!A1waJ_hCOLq4C$cd|81&4q@?@0Us`sWP_DQP8j6WB&i42!RWAzfG%<SZBu > > > F&jbsw > > > > > > > > zcV=sC<2*U)Zvx6&@HPHB7N9WZj^zAA#F%FC(v2MfoYnCX0cE0ops1{ry$ggR6 > > > NA(M > > > > > > > > z2^+ABiz4||_DBnt_g`NOAgys$^T??YrTCx*9#P7gsj_0wsgw%}Xqr<N{rdWWS!Z > > > g- > > > > > > > > z4H3qP8xIrMG3{_HBo`K3$qL!mbiXxmITj}Q)l(geS7|Y%c^d&SIuIL<81BIiw@DA > > > 8 > > > > z(|T*1(_W3_%- > > > s1!Tv(Zw;o%;NU=NOK?F+(uv~UO5Jt(>ZsDe6<Q8=2Ov_9_>gm+$F > > > > > > > > za=PD_ejXn3u=GHz!=3g65%;*%m5TnFjrTr2{7yPIC{>vXfpr&Gg{;#;sWSJ(HnZR^ > > > > > > > > zP%n=w&xEgrDM*LrnO*hLBj!dEc|0|899IAuaAz?2JI#nH^vG?g7Q7VS0!wCo<Z > > > O@^ > > > > z0KlkE0xHh-H6e^BOp;Ma3_*%o2XMn!Ke~iklAM@k2SzZC`s>rM- > > > 2nW4G!i@hv}9Ct > > > > ztTN_#K~bl5i+0oZfV#D4EkU_y8{zv- > > > hX`i~&TkhTx_KAAlZMXguacb$Fjxx~I@r=Z > > > > > > > > z!;NFfic&3^+z5R!85}UuWhO;Z!ZZL394B?me49=eqOuTdHBR9N^pZ}Io)F9_a&P} > > > e > > > > > > > > zgn0*m<z+k1`T1D%?8}u2lQx2_4pWcD?*${(tPIM4x*LezJmObkESuVMX6#Av2{ > > > @)q > > > > > > > > z;%=G&^S5WtA0KNPuIXV?5iorWd9CAqQc9CGggH)_z|f}T&hTT}HJByBTw4uV& > > > jUGO > > > > > > > > zfaCO#+6fF2N1bE*vTX<ntB`4Z$oawb9h#`$Qkhrb`F#0x2$B;|F}n}#0G7yKJ)3G~ > > > > > > > > zGmb;+#!8?Nu^=B8B}~6_koDD8@oQ0;8LxY8$1bzP8AJ7)q+0q1`mE7ui}P`G@` > > > CKS > > > > > > > > zAGrqxc(``};NHt^BcAj<@?US^gDtZwO|%L454il+QUjo2Eadr{=wMYx3%+4fL<M > > > 8r > > > > zCgthu_mBMfm0Q^Ou~pM>xd%f#Q$S4T0w{R^- > > > Y(1I8*G={I$F4+ZH`)EHImR;^vulo > > > > > > > > zqEsVwKrT_obLqcU^i)YhN2z>b>5DYGpEo^I_fD@eR5KjES*2j(i^*^&SAK0jogZL > > > d > > > > zJoBPN*F*ocb9&zRk?eQZ`|ljO8R|Sr@l&A2#1FN4$?- > > > j*0040pa7_;kWC_KwXa5Q= > > > > z@Jl<Qi2U@Wd4o7@R+h}pWQh7Yf;)%&B@-7nJ`- > > > pAtx4aT(+#=;D6HH83+wW*((szd > > > > ze*aj?o#`ShhNSL$KGT)e?==07c$=nVR+_2@j7p|_53UWk4- > > > p<q_m!^m9KMJoar}XP > > > > z@k8^U2UL?(EBk)#6yEAQ9WzT6y-e+D=3KHcJ4s13@F)e80xE{- > > > LyIf+zYrt;J=3($ > > > > zy=b|?FcP<^U*a1C4!G9G8Z`A<(0`- > > > 5rbNgd!!PF>3VpnFG+GFsh#+<(#y@RjrT!NG > > > > > zp)J9QOI}6gdzgjC&|T5<0AA*gpSSj)kj608I{nqe!>FkP(W0L0QjS{FPf<*qrf95| > > > > > > > > z_3?R<@yIi0yQi;SnprC>bm|r@Hait6ce$t0sY6q%CU(YfdKEX1ndOgp&H>?!J+u > > > Tv > > > > z_T$ns^dNh;hR}ivc2`(HlrR%NR}YWhuXxS0Cw20jCM<E;@7&)<6E?4- > > > 2r%#G9248& > > > > > > > > z#6snQt3jV<3;8Q9F3vYgB1LC%%ZPn>#)=Zr%GCX>A`>>euKfT$31(FegZ>YC))nll > > > > zr7O;hktJmggtyk>XEX`D$=&X6I>LpwNFMPLGb`G#{)Z?&L+Dfq#- > > > WXYFemoj*{|FR > > > > zMK>|)y<Hq8Z!o5pqA0FvVtx%x9oUp-@-IL<YZ|4GW- > gvK2CXJjg~uP4Fm%B- > > > 0wOEy > > > > z>)o*On|^rNdNqi6#-ylP;?MR%u}1`}NOh`nx9G^GfUxsGYrkSgoS*7xt$dJ- > > > bmG`1 > > > > > > > > zq9e&siyn=8E`=eRJG>G$8U>^t54w<Ui>jz>eUS9XZA3_8ueBvjk&Ce;0@%PgzU!- > > > T > > > > zawecNLK5|`Rw}A9eW5D8- > > > SMIPpk6%f0G_g*2NN~bGLK4GxM%KLEp3cipF)r%cziR- > > > > z?UR<B- > > > y@PA%#hZ@A2C_#4_!xqUu`zx(HRI2ad)pAN1Y+fGTf7M52ef0<c;ddaZhzT > > > > > > > > zC_Nho>dXp}tMw&EkEI(K?akLs4D<?eUOtNX+rmaoFky3z#;CL{D$Jp<#aTH)9w > > > hMF > > > > > > > > z;t@rqr(q}>k$5;MgM#vFBOM(KP}+30(<^IfD|;N$Hf|BeE)O=ovxGX=<<B$AZ}a; > > > V > > > > z$Rib^)uXhoC;=+7-e-sx3|KJt_9b@ZCSL^Itwf1LXy2Y-tvxli6`j+7j0P8v(r8DK > > > > zv5C^AeOHat^{btzSvH)_T- > UyHP3=R5`=uffP`~Y4LlViPGn@0nS46(lLl})yAAUYn > > > > z@{5}YBdtMfl2&#vHI9=- > > > fYsgieqAdo`od~$n%ifM1<v=21h=~xCNB*e4U&l?5(^my > > > > zFsgM- > jsErSWEYukS^0s${WHgJ)r9>Pdrr%`#S#>zw#pkeJSqxl<3}9YZ!+bPL018- > > > > zL|CSXw=Jxd5|Jdv$2^^QEnG;igadkzVrjG{IsPX<y6t*y%clEIIPN1- > s<Qm+b>YoB > > > > > > > > zfK&XpJgYP(y?wH}QBYiTwPEg@vYnUI+3|6iONY#|7#;n%?^~~e3KQ@Vm(03(% > > > x{&` > > > > z?JlMf;H&F#- > ^{UKR{l#LcCA`Ui|P7r>9f6Dgi&*<TD;JAb;J2(uHil|C?pWGgiRTb > > > > ze%K2mqAW1b`G|haSJ9L;HgFoN`KkVT`~m(nT?j;nbDKeiF6- > > > ;S@mRVGNqQv1JATd( > > > > zk|y!Q7bMIPOXfH|e%4qG7lty)bmsKdc4~{CFkU`QoZ1(g>I&)M- > > > n`$WKrOne+1*Iy > > > > z;;on-O@4eBKt|r*U5j$PL{sy}X;8agm%wWJxJLJ3H8H2w9xL}+lAx5+`^J- > ~*;PlD > > > > > > > > zNEBK$y?ueKFmDfMaRHk75QLT0UkDYe`a4bYajq@*yEZMA>7vy15*(sgpxX9xk > > > S<_b > > > > zli3orj;~h#tF-9v&gQ8OqxW6T- > }sAa$hxxEK+qQ{^ikk0P6<&7J5_;)$Crkr$hJMw > > > > zmW9b{54MgeThpmSd|T^BNAFAVP;&)5ME!RFY;V}- > > > 76P%Ziwdh5qHZcQ$ifuzLe|Eq > > > > z4o+(j8-K8KU`}`H9o%%l_{ft)VHlHXa*k7kJvw&G<LG- > > > dGM13zGiyy)gypmOYg5(j > > > > > zdFLMu&UsSfb|TOJ^g`<^RV2aPVlrA?^8xn!4dh2;6<4F+Mhm%={$r|k;4|rQ- > > > vCM8 > > > > > > > > zo^s?#hlC^jFnEtFMrq(#Wkn%;XG_OpoKa;T7V%d@{JvxQSAYHAPp~h3JDPsF*K > > > E<- > > > > > > > > zLY&zbZ~B|@;pUVb0~$u7rh30NfgB#!D4gd5IwlHGpeh|$+D_Po=KASOQ~A$;R > > > BrYG > > > > > zrH;Ni8|ZS)y=)#*k&(Jz^kl1Pp^^$9zH(09rr)<|%9_U<sPsL#ojdt_;*{7_yU?$# > > > > zHsi+rhU7NPo2-T*0<wIsr~lswS&aw-o4l- > > > |F{svG2NhZV*siLZEK1JdNzm|?qS`CD > > > > > > > > zHel+6UA6W4DtDhN1!$IkY(3f)+|{w^bZ<6eK)IVKAn~U0ra4qL4Zjdw1*o;IGxz@ > > > I > > > > zE1+&2B8Z8)yvlVG$SAKk(vXONX(+~^-1FXzG0GpvQOe- > > > U6qnNFq;jyCV+yTeeIe?M > > > > > > > > zF=ax^az!;(Xu=y1W4lajzkVj4Jw0rrkhO|zT`pTp)T0PWUl7}o804c_)wWNu>M)(< > > > > > > > > zRfP!DM$#G8^^nzII^#Y91Lq)%_wBs@>jOjPYF}0w^Nz~Y{&Y$4YU(#qe7f+oINR > > > %0 > > > > zSneZe5EyK0r_Bkn`6XthG59f|Xo6i- > > > FRL}URYdisz<{CaM6zg|r!KO?%wM2;ud7(O > > > > > > > > z`aPW0(IzOpA8gG_a9lqzr&*EUhPTNSXva#4rR?$b4p1fe;=IM@q(aB=Z!vd|icT > > > m} > > > > zGpPUE{#SsKM;tGA5@~9og4;6@QNhN;_xvtc09- > > > i{RkcWm=QxV#4=QOo$!Oo&57%&p > > > > > > > > z;5H6xtC#a6@RIH0BwLOrK<kt47gWVC$?4D`N^VkJ9hnEFR?h+(XG<oVhLeH)yv > > > t&O > > > > zVhP%YJ>qd!{#3X- > > > ES^d2SW*WfLq3MSUMYN@0anc&jB{JhPy4^7n#vy}enEjqrAEFf > > > > > > > > z@2o#g`S$=uhs@SZJ4+CCl~9$CS9)YiiBZvUdHu?fR|B$d!jfs957AjP*l4u1Y43<m > > > > > > > > zts;j9&7Sr%wK)}cqIR}m87;s8E6l#@u=eLem3~gSwJGQm@6g$9IrZTBv5fVlb(^r > > > v > > > > > > > > zbfa98pghse(AQ1jWwfsgSo@fj(bhtD5970DT`wo{?1cW51NqGhA(L5L*XB}}6D8 > > > b_ > > > > > > > > z|Ey&EaWnSu0)OoHzOeFb^KHJ2@Q63ij7Hh3FaeR8MX5^$752g}VhlYLP$>0Jn > > > Dq14 > > > > > > > > z*J`h~t*11n9~e(RHlxPXC?WpP3H56~Q)@kyDK$hEd_V&0I4H=5%>9Dx(nv}Aa{ > > > _zG > > > > z- > > > > ge40o9{8bjAT`l*?b9TT<mmOqzLjP6*7|GTs4f$PAYy_Sob(`rl6~XS*MW2mxUJ% > > > > > zRDL;<#P}IEu9TkKF*}*FJJCMtL?GirpZDi26FrHl8@Rq8Km|4meIi42QhTLtxjLeT > > > > > > > > zbYtaGJthq(k@oyY@Djp_N9nh8#y`Ybe!^BB_s0I^7_4$#qDn!xhP(2i$JV(qITOp > > > 9 > > > > zqiioJFug}7!O_NMq#pugIX;83J?9^g%5->9J0*p`IQ6=jC&wtovz|OC2p^U- > <2a}; > > > > z@A|y{W&- > > > ImypnJAD=1qL_$m>JR{vqs$Y>JCwI3wdBm852pI(`|Zt3YMpw1pVYh5-` > > > > z85W<vB~$- > > > U<WG>COBDIVZS+QOO}q$(TQ#Nzn+;_qKSjuf7Lql~0=#qZ@edc3Gqc6w > > > > > > > > zuDOQuCqf!yLs3jl)SkQ_Ib>6(x83F)+CJVOU}ZPflTLdUhY58TyUP5Jnph|V8JT&$ > > > > z0i}|KN97gmPgsbqeyl>!|HIdR%nl1D7z;7re_vb?e}4Epe!tJsl- > +wy=_(ZkJg<DT > > > > > > > > zEvEL4A@nTNj`u2D%c+U6GRm7sMUgfrmEU$uppRs#)bXY)X6JQIyX*1oY*GW} > > > k<IF| > > > > zaHNTenY}%}0>Ve_- > 3}%b8Sv`foIqQrrT`Jps((eiB8}y(b9QWd`zJ*gt7u_b3)YqS > > > > z?rft8TYK|738T20zTZ3BgyQdj<yF!!- > +<;)C1L4!1c_^;4;S94pF!2d`qPc;WZ|Gm > > > > > > > > z$=p?mdTXZi?WlOrNz?}Hn0kO+BcXq!w&!+3;C?@ulaBw^a$IrbvICn|4oZOjp7J > > > @Q > > > > z6PsD=TOH?YVJq7Ch;FwGx#V1npTHz!^HV!(nfI})F4E_bl>$(?srMvD2piEk- > D}A% > > > > z<j~7KBcje7v9yRgz`2d^!wHF@gh+a`g5J?Brxf-zvx0$7o%Pb2kw- > > > cp4adkG{%$o& > > > > > > > > z%dt$oANAhhUA5or11|lcp*|;ww*x8)3VP^z*kA6OpErN=0m))ADYTF@`CT)6la > > > 8{? > > > > z+f|ZWf991XRNc$TvQ|@weV=#ElM<i8=Qsn6Rr;}- > > > n7EUSp2iVM<FUbMZw_i`22q@? > > > > > > > > zs6kr|WS5Gg3(NEg_h1YzK}k#5M~9UYqs%eZ=H<yJ9V4^WrSohg!wRa?csHNr8 > > > 9x&m > > > > > > > > z{(ZLpi2xlAu@RCsm(4Sx`08)mNv&L8r%^9&=KXXiq!o0uc3c)s_3#dasg&~qSB{b > > > V > > > > z8g?eJR!y(dC;=%y-V>f<o<nsoO6GqeD%xHE#XYZHRHI(j7p+CCP- > > > Ui*0n$KF#F=ub > > > > > > > > zCA%k+Ua0Ux^ZzjSk7Pm<?^iY@oAz8#h_IvYeFI$QirdveGUY0{RKDaglnu=1pe( > > > wB > > > > z*40*Kn2|Lvni|*l96DD3|Fz|IIHPh>T($*^maO<uC)t6MZ+}Z|- > }}*ULjzg&Ifvb) > > > > > > > > zLrpme#6GUjiz)KUncK_9RK5TE3Hpgo)b5S<asRor(EVPDhSB*eVcNWZeHDMh2 > > > Hc(A > > > > > > > > z^P%@%9RB)C_C;*~yZ4HspGFI0Lk$XKdV!fb#%D{fU>^&ro^xH*#G(uFur6owz > > > MXtg > > > > zH^0Zh(t- > > > EmiaBl>`Tcls+HJnZoyQ30vFByCb0O*`%L)nX5D4}#VfMp)J~NWKw40M$ > > > > z46D6ToGO~*lIx|Qb75H3?+#X*QJ4HgOgj?bLnD}%eB&%k9(+&PNM- > > > 6vy1)%G5g&Xm > > > > > > > > zBX`D*Z}!UP+%JV68h}7!&Cyuz&u9V}7g4K{@atIECE=zaGy5se=l;E2KAxQQ7dY`s > > > > zr3- > > > > FihZjNNS)Jd^rnQehLso_+hXq2zxeW8)=t8qkWCCMC<+zh+vXF5M*tI8tPmHQp > > > > > > > > zcIF<>JxmNil^W1!9({@=N~PdvE&Wi)<0FQR5(FAm=R)N;VG|Ne61+HdUTm1sjn > > > }z{ > > > > > > > > z8d8p$uq*YdNAFH_9Oyf<DX1=yz4b+kSJ%<hu`MRZnK2M|$Wjau(<cw;r1U#JF > > > <VIN > > > > z;&6741o<3%PP@Ksaa4OB3)64J7cnWLei+@k8LxE27ubX- > > > qS4?UH?hja^lyZXxwA;| > > > > lp0r(+`K^)Y&AL5T(>;a;tp795|91lNzXsubc7WVX{~rvVe^USe > > > > > > > > literal 0 > > > > HcmV?d00001 > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > new file mode 100644 > > > > index 0000000000..5ef93461ee > > > > --- /dev/null > > > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > @@ -0,0 +1,52 @@ > > > > +## @file > > > > > > > > +# The default logo bitmap picture shown on setup screen. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +# > > > > > > > > +## > > > > > > > > + > > > > > > > > +[Defines] > > > > > > > > + INF_VERSION = 0x00010005 > > > > > > > > + BASE_NAME = LogoDxe > > > > > > > > + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 > > > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > > > + VERSION_STRING = 1.0 > > > > > > > > + > > > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > > > +# > > > > > > > > +# This flag specifies whether HII resource section is generated into PE > > > image. > > > > > > > > +# > > > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > > > + > > > > > > > > +# > > > > > > > > +# The following information is for reference only and not required by > the > > > build tools. > > > > > > > > +# > > > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > > > +# > > > > > > > > + > > > > > > > > +[Sources] > > > > > > > > + Logo.bmp > > > > > > > > + Logo.c > > > > > > > > + Logo.idf > > > > > > > > + > > > > > > > > +[Packages] > > > > > > > > + MdePkg/MdePkg.dec > > > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > > > + > > > > > > > > +[LibraryClasses] > > > > > > > > + UefiBootServicesTableLib > > > > > > > > + UefiDriverEntryPoint > > > > > > > > + DebugLib > > > > > > > > + > > > > > > > > +[Protocols] > > > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > > > + > > > > > > > > +[Depex] > > > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > new file mode 100644 > > > > index 0000000000..1418eb2137 > > > > --- /dev/null > > > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > @@ -0,0 +1,31 @@ > > > > +## @file > > > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > > > +# > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > +# for the build infrastructure. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +## > > > > > > > > + > > > > > > > > +[Defines] > > > > > > > > + DEC_SPECIFICATION = 0x00010017 > > > > > > > > + PACKAGE_NAME = LogoFeaturePkg > > > > > > > > + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 > > > > > > > > + PACKAGE_VERSION = 0.1 > > > > > > > > + > > > > > > > > +[Includes] > > > > > > > > + Include > > > > > > > > + > > > > > > > > +[LibraryClasses] > > > > > > > > + > > > > > > > > +[Guids] > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, > {0x99, > > > 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} > > > > > > > > + > > > > > > > > +[PcdsFeatureFlag] > > > > > > > > + > > > > gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0 > > > xA0000001 > > > > > > > > + > > > > gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA00000 > > > 02 > > > > > > > > diff --git > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > new file mode 100644 > > > > index 0000000000..717e074c69 > > > > --- /dev/null > > > > +++ > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > @@ -0,0 +1,37 @@ > > > > +## @file > > > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > > > +# > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > +# for the build infrastructure. > > > > > > > > +# > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > +# > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > +# > > > > > > > > +## > > > > > > > > + > > > > > > > > +[Defines] > > > > > > > > + PLATFORM_NAME = LogoFeaturePkg > > > > > > > > + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7- > 1F43D74736CF > > > > > > > > + PLATFORM_VERSION = 0.1 > > > > > > > > + DSC_SPECIFICATION = 0x00010005 > > > > > > > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) > > > > > > > > + SUPPORTED_ARCHITECTURES = IA32|X64 > > > > > > > > + BUILD_TARGETS = DEBUG|RELEASE|NOOPT > > > > > > > > + SKUID_IDENTIFIER = DEFAULT > > > > > > > > + > > > > > > > > +[LibraryClasses] > > > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > > > + > > > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > > pStr.inf > > > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > > > + > > > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > > tServicesTableLib.inf > > > > > > > > + > > > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > > oint.inf > > > > > > > > + > > > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > > > + > > > > > > > > +[Components] > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > new file mode 100644 > > > > index 0000000000..092a055a2c > > > > --- /dev/null > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > @@ -0,0 +1,129 @@ > > > > +# Overview > > > > > > > > +* **Feature Name:** Logo > > > > > > > > +* **PI Phase(s) Supported:** DXE > > > > > > > > +* **SMM Required?** No > > > > > > > > + > > > > > > > > +## Purpose > > > > > > > > +This feature provides the Logo image and driver that produces > > > EDKII_PLATFORM_LOGO_PROTOCOL: > > > > > > > > + > > > > > > > > +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides > the > > > image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses > > > EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > > > > JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > + > > > > > > > > +# High-Level Theory of Operation > > > > > > > > + > > > > > > > > +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide > a > > > logo picture shown on setup screen. > > > > > > > > + > > > > > > > > +The Logo file is built in HII package list as EFI resource, the driver uses > > > EFI_HII_DATABASE_PROTOCOL > > > > > > > > +to the publish HII package list to HII Database and get images via > > > EFI_HII_IMAGE_EX_PROTOCOL. > > > > > > > > + > > > > > > > > +## Firmware Volumes > > > > > > > > + > > > > > > > > +* PostMemory > > > > > > > > + > > > > > > > > +## Modules > > > > > > > > + > > > > > > > > +A bulleted list of the modules that make up the feature. > > > > > > > > + > > > > > > > > +* LogoDxe > > > > > > > > +* JpegLogoDxe > > > > > > > > + > > > > > > > > +## LogoDxe > > > > > > > > + > > > > > > > > +This driver provides a bitmap image via > > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > + > > > > > > > > +## JpegLogoDxe > > > > > > > > + > > > > > > > > +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > jpeg > > > data and provide a bitmap image via > > > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > + > > > > > > > > +## Key Functions > > > > > > > > + > > > > > > > > +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which > > > could be used by consumer such as > > > > Edk2\MdeModulePkg\Library\BootLogoLib. > > > > > > > > + > > > > > > > > +## Configuration > > > > > > > > + > > > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > > > > > + TRUE: Enable logo feature > > > > > > > > + FALSE: Disable logo feature > > > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > > > > > > > + TRUE: Use jpeg logo > > > > > > > > + FALSE: Use bitmap logo > > > > > > > > + > > > > > > > > +## Data Flows > > > > > > > > + > > > > > > > > +Architecturally defined data structures and flows for the feature. > > > > > > > > + > > > > > > > > +### Data flows of LogoDxe > > > > > > > > + > > > > > > > > +```txt > > > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| > > > > > > > > +------------ ------------------ ---------------- > > > > > > > > + | | | > > > > > > > > + | |--bitmap image data->| > > > > > > > > + |<---bitmap data--|<-return bitmap data-| > > > > > > > > +``` > > > > > > > > + > > > > > > > > +### Data flows of JpegLogoDxe > > > > > > > > + > > > > > > > > +```txt > > > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | > > > EFI_HII_IMAGE_DECODER_PROTOCOL | > > > > > > > > +------------ ------------------ ---------------- ---------------------------------- > > > > > > > > + | | | | > > > > > > > > + | |---Jpeg Image data-->|---------decode Jpeg------->| > > > > > > > > + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data- > ---| > > > > > > > > +``` > > > > > > > > + > > > > > > > > +## Control Flows > > > > > > > > + > > > > > > > > +Consumer gets image from the logo driver via > > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > + > > > > > > > > +## Build Flows > > > > > > > > + > > > > > > > > +No any special build flows is needed. > > > > > > > > + > > > > > > > > +## Test Point Results > > > > > > > > + > > > > > > > > +Not available. > > > > > > > > + > > > > > > > > +## Functional Exit Criteria > > > > > > > > + > > > > > > > > +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() > return a > > > default Intel logo. > > > > > > > > +* If using jpeg logo, a dex driver which produces > > > EFI_HII_IMAGE_DECODER_PROTOCOL(name is > > > > > > > > +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode > > > Jpeg data. > > > > > > > > + > > > > > > > > +## Feature Enabling Checklist > > > > > > > > + > > > > > > > > +### Option 1 > > > > > > > > + > > > > > > > > +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to > > > enable the feature. > > > > > > > > + > > > > > > > > +```dsc > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > |TRUE > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > |FALSE > > > > > > > > + !include Include/AdvancedFeatures.dsc > > > > > > > > +``` > > > > > > > > + > > > > > > > > +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file > > > > > > > > + > > > > > > > > +```fdf > > > > > > > > +!include Include/PreMemory.fdf > > > > > > > > +!include Include/PostMemory.fdf > > > > > > > > +``` > > > > > > > > + > > > > > > > > +### Option 2 > > > > > > > > + > > > > > > > > +* To use bitmap logo, include > > > "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc > file, > > > and include > > > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform > fdf > > > file. > > > > > > > > + > > > > > > > > +* To use jpeg logo, include > > > "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform > dsc > > > file, and include > > > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in > > > platform fdf file. > > > > > > > > + > > > > > > > > +## Performance Impact > > > > > > > > + > > > > > > > > +* LogoDxe > > > > > > > > + * EFI size: 180 KB > > > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): > about > > > 18 milliseconds > > > > > > > > + > > > > > > > > +* JpegLogoDxe > > > > > > > > + * EFI size: 13.6 KB > > > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): > about > > > 80 milliseconds > > > > > > > > -- > > > > 2.24.0.windows.2 > > > > > > > > > > > > -=-=-=-=-=-= > > > > Groups.io Links: You receive all messages sent to this group. > > > > > > > > View/Reply Online (#56238): > > > https://edk2.groups.io/g/devel/message/56238 > > > > Mute This Topic: https://groups.io/mt/72533665/1712937 > > > > Group Owner: devel+owner@edk2.groups.io > > > > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] > > > > -=-=-=-=-=-= ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers 2020-03-25 7:53 ` Heng Luo @ 2020-03-25 8:04 ` Ni, Ray 0 siblings, 0 replies; 6+ messages in thread From: Ni, Ray @ 2020-03-25 8:04 UTC (permalink / raw) To: Luo, Heng, devel@edk2.groups.io; +Cc: Bi, Dandan, Gao, Liming, Dong, Eric Thanks for confirming that works. > -----Original Message----- > From: Luo, Heng <heng.luo@intel.com> > Sent: Wednesday, March 25, 2020 3:53 PM > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers > > Hi Ray, > Pass build with GCC in ubuntu after adding "~/code/edk2-platforms/Features/Intel/UserInterface" in PACKAGES_PATH. > > Best Regards > Heng > > > -----Original Message----- > > From: Ni, Ray <ray.ni@intel.com> > > Sent: Wednesday, March 25, 2020 3:17 PM > > To: Luo, Heng <heng.luo@intel.com>; devel@edk2.groups.io > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming <liming.gao@intel.com>; > > Dong, Eric <eric.dong@intel.com> > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > provide logo images and drivers > > > > What is PACKAGES_PATH env variable set to? > > > > > -----Original Message----- > > > From: Luo, Heng <heng.luo@intel.com> > > > Sent: Wednesday, March 25, 2020 3:01 PM > > > To: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > provide logo images and drivers > > > > > > Hi Ray, > > > It fails to build with GCC in ubuntu if removing the <feature-domain> prefix > > from all paths insideDSC/FDF/INF. > > > No problem in windows > > > > > > Active Platform = /home/ilabuser/code/hengluo/edk2- > > > > > platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > > > > > > build.py... > > > /home/ilabuser/code/hengluo/edk2- > > platforms/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > (36): error > > > 000E: File/directory not found in workspace > > > LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf is not found in packages > > path: > > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Platform/Intel > > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Silicon/Intel > > > /home/ilabuser/code/hengluo/edk2/../edk2-platforms/Features/Intel > > > > > > > > > - Failed - > > > Build end time: 14:57:21, Mar.25 2020 > > > Build total time: 00:00:00 > > > > > > Best Regards > > > Heng > > > > > > > -----Original Message----- > > > > From: Ni, Ray <ray.ni@intel.com> > > > > Sent: Wednesday, March 25, 2020 11:53 AM > > > > To: devel@edk2.groups.io; Luo, Heng <heng.luo@intel.com> > > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > > <liming.gao@intel.com>; > > > > Dong, Eric <eric.dong@intel.com> > > > > Subject: RE: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg > > to > > > > provide logo images and drivers > > > > > > > > Heng, > > > > Can you please remove the <feature-domain> prefix from all paths inside > > > > DSC/FDF/INF? > > > > > > > > We expect PACKAGES_PATH is set to include "edk2- > > platforms/Features/Intel" > > > > and all sub folders inside "edk2-platforms/Features/Intel/". > > > > > > > > Thanks, > > > > Ray > > > > > > > > > > > > > -----Original Message----- > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > > Heng > > > > Luo > > > > > Sent: Wednesday, March 25, 2020 10:44 AM > > > > > To: devel@edk2.groups.io > > > > > Cc: Bi, Dandan <dandan.bi@intel.com>; Gao, Liming > > > > <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com> > > > > > Subject: [edk2-devel] [Patch V2] Features/Intel: Add LogoFeaturePkg to > > > > provide logo images and drivers > > > > > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2584 > > > > > > > > > > 1. LogoDxe.inf includes a BMP logo in the EFI file, > > > > > the driver decodes the BMP file and provide the image > > > > > via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, > > > > > the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg > > > > > file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > Cc: Dandan Bi <dandan.bi@intel.com> > > > > > Cc: Liming Gao <liming.gao@intel.com> > > > > > Cc: Eric Dong <eric.dong@intel.com> > > > > > Signed-off-by: Heng Luo <heng.luo@intel.com> > > > > > --- > > > > > > > > > > Notes: > > > > > v2: > > > > > - Add Cc and Remove Change-Id in commit message > > > > > > > > > > Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | > > 4 > > > > +++- > > > > > Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > | > > > > 6 +++++- > > > > > Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | > > 6 > > > > +++++- > > > > > Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | > > 6 > > > > +++++- > > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > | > > > > 107 > > > > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > +++++++++++++++++++++++++++++++++++++++ > > > > > ++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > | > > > > 13 +++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > | > > > > 8 ++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > | > > > > 10 ++++++++++ > > > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | > > > > 52 > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | > > > > Bin 0 -> 183366 bytes > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | > > 153 > > > > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > +++++++++++++++++++++++++++++++++++++++ > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | > > 10 > > > > ++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | > > Bin > > > > 0 -> 11944 bytes > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > | > > > > 52 > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | > > 31 > > > > +++++++++++++++++++++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | > > 37 > > > > +++++++++++++++++++++++++++++++++++++ > > > > > Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | > > 129 > > > > > > > > > > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > > +++++++++++++++++++++++++++++++++++++++ > > > > > ++++++++++++++++++++++++++ > > > > > 17 files changed, 620 insertions(+), 4 deletions(-) > > > > > > > > > > diff --git > > a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > > b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > > index 23e7c6474a..ea879680ba 100644 > > > > > --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > > +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc > > > > > @@ -7,7 +7,7 @@ > > > > > # 1. Present a consolidated and simplified view of all available > > advanced > > > > features to board packages. > > > > > > > > > > # 2. Provide a simple, single package build for all available advanced > > > > features. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > # > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > # > > > > > > > > > > @@ -46,6 +46,8 @@ > > > > > gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable > > > > |TRUE > > > > > > > > > > > > gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable > > > > |TRUE > > > > > > > > > > > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > > |TRUE > > > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > |TRUE > > > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > |FALSE > > > > > > > > > > > > > > > > > > > > # > > > > > > > > > > # This package builds all advanced features. > > > > > > > > > > diff --git > > > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > > index 649774edf7..c1bd791525 100644 > > > > > --- > > a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > > +++ > > b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc > > > > > @@ -4,7 +4,7 @@ > > > > > # This file is intended to be included into another package so advanced > > > > features > > > > > > > > > > # can be conditionally built by enabling the respective feature via its > > > > FeaturePCD. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > # > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > # > > > > > > > > > > @@ -54,3 +54,7 @@ > > > > > !if > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > > == TRUE > > > > > > > > > > !include > > > > UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc > > > > > > > > > > !endif > > > > > > > > > > + > > > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > > > > > > +!endif > > > > > > > > > > diff --git > > a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > > b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > > index 57b29a42b9..56f6143650 100644 > > > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf > > > > > @@ -5,7 +5,7 @@ > > > > > # can be conditionally included in the flash image by enabling the > > > > respective > > > > > > > > > > # feature via its FeaturePCD. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > # > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > # > > > > > > > > > > @@ -55,3 +55,7 @@ > > > > > !if > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > > == TRUE > > > > > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf > > > > > > > > > > !endif > > > > > > > > > > + > > > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > > > > > > +!endif > > > > > > > > > > diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > > b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > > index 20d25dd173..7a76b0efc3 100644 > > > > > --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > > +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf > > > > > @@ -5,7 +5,7 @@ > > > > > # can be conditionally included in the flash image by enabling the > > > > respective > > > > > > > > > > # feature via its FeaturePCD. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > # > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > # > > > > > > > > > > @@ -55,3 +55,7 @@ > > > > > !if > > > > > > gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable > > > > == TRUE > > > > > > > > > > !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf > > > > > > > > > > !endif > > > > > > > > > > + > > > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable == TRUE > > > > > > > > > > + !include UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > > > > > > +!endif > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > new file mode 100644 > > > > > index 0000000000..3fd1c3372e > > > > > --- /dev/null > > > > > +++ > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc > > > > > @@ -0,0 +1,107 @@ > > > > > +## @file > > > > > > > > > > +# This is a build description file for the Logo advanced feature. > > > > > > > > > > +# This file should be included into another package DSC file to build > > this > > > > feature. > > > > > > > > > > +# > > > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > > > +# for the build infrastructure. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > + > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +# > > > > > > > > > > +# Defines Section - statements that will be processed to create a > > Makefile. > > > > > > > > > > +# > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +[Defines] > > > > > > > > > > +!ifndef $(PEI_ARCH) > > > > > > > > > > + !error "PEI_ARCH must be specified to build this feature!" > > > > > > > > > > +!endif > > > > > > > > > > +!ifndef $(DXE_ARCH) > > > > > > > > > > + !error "DXE_ARCH must be specified to build this feature!" > > > > > > > > > > +!endif > > > > > > > > > > + > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +# > > > > > > > > > > +# Packages Section - Make sure PCD can be directly used in a > > conditional > > > > statement > > > > > > > > > > +# in a DSC which includes this DSC file. > > > > > > > > > > +# > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +[Packages] > > > > > > > > > > + UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > > > > > > + > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +# > > > > > > > > > > +# Library Class section - list of all Library Classes needed by this feature. > > > > > > > > > > +# > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +[LibraryClasses] > > > > > > > > > > + ####################################### > > > > > > > > > > + # Edk2 Packages > > > > > > > > > > + ####################################### > > > > > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > > > > > + > > > > > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > > > pStr.inf > > > > > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > > > > > + > > > > > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > > > tServicesTableLib.inf > > > > > > > > > > + > > > > > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > > > oint.inf > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > > > > > + ####################################### > > > > > > > > > > + # Edk2 Packages > > > > > > > > > > + ####################################### > > > > > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > > > > > + > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > +# > > > > > > > > > > +# Component section - list of all components that need built for this > > > > feature. > > > > > > > > > > +# > > > > > > > > > > +# Note: The EDK II DSC file is not used to specify how compiled binary > > > > images get placed > > > > > > > > > > +# into firmware volume images. This section is just a list of modules > > to > > > > compile from > > > > > > > > > > +# source into UEFI-compliant binaries. > > > > > > > > > > +# It is the FDF file that contains information on combining binary > > files > > > > into firmware > > > > > > > > > > +# volume images, whose concept is beyond UEFI and is described in > > PI > > > > specification. > > > > > > > > > > +# There may also be modules listed in this section that are not > > required > > > > in the FDF file, > > > > > > > > > > +# When a module listed here is excluded from FDF file, then UEFI- > > > > compliant binary will be > > > > > > > > > > +# generated for it, but the binary will not be put into any firmware > > > > volume. > > > > > > > > > > +# > > > > > > > > > > > > > > > > +############################################################### > > > > ################# > > > > > > > > > > + > > > > > > > > > > +# > > > > > > > > > > +# Feature DXE Components > > > > > > > > > > +# > > > > > > > > > > + > > > > > > > > > > +# @todo: Change below line to [Components.$(DXE_ARCH)] after > > > > https://bugzilla.tianocore.org/show_bug.cgi?id=2308 > > > > > > > > > > +# is completed. > > > > > > > > > > +[Components.X64] > > > > > > > > > > + ##################################### > > > > > > > > > > + # Logo Feature Package > > > > > > > > > > + ##################################### > > > > > > > > > > + > > > > > > > > > > + # Add library instances here that are not included in package > > > > components and should be tested > > > > > > > > > > + # in the package build. > > > > > > > > > > + > > > > > > > > > > + # Add components here that should be included in the package build. > > > > > > > > > > +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > > > +!else > > > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > > > +!endif > > > > > > > > > > + > > > > > > > > > > > > > > > > +############################################################### > > > > #################################### > > > > > > > > > > +# > > > > > > > > > > +# BuildOptions Section - Define the module specific tool chain flags > > that > > > > should be used as > > > > > > > > > > +# the default flags for a module. These flags are appended > > to > > > > any > > > > > > > > > > +# standard flags that are defined by the build process. > > They > > > > can be > > > > > > > > > > +# applied for any modules or only those modules with the > > > > specific > > > > > > > > > > +# module style (EDK or EDKII) specified in [Components] > > > > section. > > > > > > > > > > +# > > > > > > > > > > +# For advanced features, it is recommended to enable > > > > [BuildOptions] in > > > > > > > > > > +# the applicable INF file so it does not affect the whole > > board > > > > package > > > > > > > > > > +# build when this DSC file is active. > > > > > > > > > > +# > > > > > > > > > > > > > > > > +############################################################### > > > > #################################### > > > > > > > > > > +[BuildOptions] > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > new file mode 100644 > > > > > index 0000000000..53c85da716 > > > > > --- /dev/null > > > > > +++ > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf > > > > > @@ -0,0 +1,13 @@ > > > > > +## @file > > > > > > > > > > +# FDF file for post-memory Logo modules. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE > > > > > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > > > +!else > > > > > > > > > > + INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > > > +!endif > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > new file mode 100644 > > > > > index 0000000000..91cd1c6ec6 > > > > > --- /dev/null > > > > > +++ > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf > > > > > @@ -0,0 +1,8 @@ > > > > > +## @file > > > > > > > > > > +# FDF file for pre-memory Logo modules. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > > new file mode 100644 > > > > > index 0000000000..a39500e043 > > > > > --- /dev/null > > > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf > > > > > @@ -0,0 +1,10 @@ > > > > > +// /** @file > > > > > > > > > > +// Platform Logo image definition file. > > > > > > > > > > +// > > > > > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +// > > > > > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +// > > > > > > > > > > +// **/ > > > > > > > > > > + > > > > > > > > > > +#image IMG_LOGO Logo.jpg > > > > > > > > > > diff --git > > > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > new file mode 100644 > > > > > index 0000000000..47f1672a4c > > > > > --- /dev/null > > > > > +++ > > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > @@ -0,0 +1,52 @@ > > > > > +## @file > > > > > > > > > > +# The default logo JPEG picture shown on setup screen. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > + > > > > > > > > > > +[Defines] > > > > > > > > > > + INF_VERSION = 0x00010005 > > > > > > > > > > + BASE_NAME = JpegLogoDxe > > > > > > > > > > + FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF > > > > > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > > > > > + VERSION_STRING = 1.0 > > > > > > > > > > + > > > > > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > > > > > +# > > > > > > > > > > +# This flag specifies whether HII resource section is generated into PE > > > > image. > > > > > > > > > > +# > > > > > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > > > > > + > > > > > > > > > > +# > > > > > > > > > > +# The following information is for reference only and not required by > > the > > > > build tools. > > > > > > > > > > +# > > > > > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > > > > > +# > > > > > > > > > > + > > > > > > > > > > +[Sources] > > > > > > > > > > + Logo.jpg > > > > > > > > > > + Logo.c > > > > > > > > > > + JpegLogo.idf > > > > > > > > > > + > > > > > > > > > > +[Packages] > > > > > > > > > > + MdePkg/MdePkg.dec > > > > > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses] > > > > > > > > > > + UefiBootServicesTableLib > > > > > > > > > > + UefiDriverEntryPoint > > > > > > > > > > + DebugLib > > > > > > > > > > + > > > > > > > > > > +[Protocols] > > > > > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > > > > > + > > > > > > > > > > +[Depex] > > > > > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp > > > > > new file mode 100644 > > > > > index > > > > > > 0000000000000000000000000000000000000000..7ec1aa6a852564e262df599 > > > > 29655f7a0f3d5445f > > > > > GIT binary patch > > > > > literal 183366 > > > > > zcmeI53HVo2{>L- > > > > Jm@&3csA!XsrHq!LrXr$}sH8=bnxa%BMny_PD@D^Xt&}NI5uvfP > > > > > zOj2oNv@nuXBQ#^OWNI42{Qs~2|31%s?sM+<o_o&SzW3hm`94p- > > ?sD!~- > > > > skha_bi{K > > > > > z=~b7%^@B41_p8spv- > > > > o%ZVP(p^$^VCyIfcJv${f%A6MtIf|Ns5}1@p%sU=T0}WEX+M > > > > > z4?q0mlTSY9oO7BqY0|D;yDnY2bno8%mRoM=- > > > > @pHzciuT<$dKW~hmRaN@}Y+wdi2pp > > > > > zr%s(ZYu2nMo_J#3ym^m3_So-!_d70*8#nHO2ObzYbm*^t{p;IqyRCQc- > > > > sEuo_19l} > > > > > z?X|62w{F&~*##F|P`PsDqmMp1yC|8O8w4Uj;D{rRs8ORv^XAQa^yqQ-- > > > > FL$sc(ios > > > > > > > > > > > z(sk?BZQs8A%P+tD?|=XMKS})#9Xj;MC!cKIym`fn6$=+Ggw7Coz<>c=yLP?u$}4~I > > > > > > > > > > > zi(gc&T9pb%(r}ZBL7=z@@Byk_yLQ{QZST74E=2vc*IwJXbLV&8eU}v5qABP5@4 > > > > w%( > > > > > zXU`jNyz%6dPmUfvny+okmM!^wA9Ktx#f8_DZV- > > > > ?l@S`97sBYc53@m5PoQd@Q?QegJ > > > > > > > > > > > zh7T#u<%=)A`17CtykyCeF=NKuc;k)r>eVx2V2Om7Td^X*K<?*1|9Q`zJ^A*%_10 > > > > Ve > > > > > > > z{`bFAOr3<P#$bE*?%m6lEqnOkhZ&GxbkRk}9d}%;y<jpgWdu$+<&+z4xMA|- > > > > $#1^- > > > > > > > zCX=s(q&(xrFhza!)mK?)>ej6r1Kl6|z*?g(WjQi!4~_ueL6$m4jT*(+EXl=|jI+?Q > > > > > > > > > > > z`rmx>&8k(a#*Q7^zJ2>DRjLH<81rN)A%Lhb8Dw&_fB$|@*)lgmBk=dX|NX@m > > > > Ut|-9 > > > > > > > > > > > zWukKB%9WCcnYQ{P(4awsM;>|P{rBGwEodf#APDT*wd<*;p6b)5&)H|6?cZA_ > > > > MNSc@ > > > > > > > > > > > zUcEZ6=np^qFo+D9XW~JCHR`9Ie%f#|r<^O$tg>axGALzxA|8P<xkiQn!&)>JZoTz > > > > Z > > > > > zR)h{a3^h&j%MSwV6<%}AHH#N7Hk%ZY5hlTmY;K- > > > > ;=9&2s%93meAH;j_y_XJ6P<%{L > > > > > zF(UB62Oo?dKmL+SE- > > > > `w2*&_65r=3Q}vDhA?aG0!%hrm}~eZ@i$yTd1*cw)9Bv(#$K > > > > > > > zjAPE6Ip2Q!ZSjP~l$;y_DBP}Dvu4nsLG*j6iF(T0`^#Vc64ME@iJu%9QdSZQ{J;I} > > > > > zZ!s~$iY?``n(yk>s#OacqLfL8sZP- > > > > lVCw{8qEDM|u}@*^PB`I&Ns}gJ&aA0ul3HQ~ > > > > > > > z@7S>e8_$|GYo<_ib5<o3mDx=E$3Om2Vj^am8w3Hgk+DmyRH;(VSdfzDG- > > > > }icgoAX9 > > > > > > > > > > > zd8ULBU~K{Ac8uoO2uq11XT2H~DpZ(1e}2|wisgE=^)_tSfU?l))vH&oT!}w{mtTJQ > > > > > zrI%h}NeZ=gv=>kwTd-gOu5#wior{+b44<b>n>J<26lO- > > > > ~++uQw(F8y2F|p;x2yyM& > > > > > > > > > > > zweP+69_CI54jjljK5^F{%@9DwkBU+L3G+fg&1T=eeQ|eI`21N<SigQfG=VjP2M_ > > > > Mm > > > > > > > > > > > zs~3JeFymrP9`98Nto~618*`}X;>@aP)240Ow7Kb~n{L1T_F=<@O_(rY_UzfuJoC) > > > > * > > > > > > > z<;yp2+{g^;U;p}7_$FsG2i}Tz+;NBbT<Ws&$3Olt>o#fYbo31vHY3~cu5aJIc!k1F > > > > > z;i#jI(rsOF)ANnsErCC)>#n;FCw16gV-mG>>(<iIrZ{- > > ;Aj1#*KNPnkvQqk4XPvca > > > > > z)21|#kq_S={_qE^l@VPW$K`&s!$+1cEFX8=&|&hA;s4&fd(+SnG1Y- > > > > Ff9KAfQFzV@ > > > > > zHIlC<- > > > > > > b9NyA^P;wPnpW01k1ONscZ7hPhpAJ5i<tH*DK!?JemCSpZ|=B9mUF)w=TOR > > > > > > > > > > > zs9dHH{32HA*kg}n3YL7QFhzxf82gxgE0x}7kWj5!wX3hbnzt4@rK~CCV>_5uFc > > > > WFm > > > > > > > > > > > zu%QYFxldEEV#RmgeK#>OGFM`4bKt;%Od^a6rjXKg<dH|>4U!Ki^!)haj}z;}m<nR) > > > > > z8&%AZm}L6#GtM{zUBsB+b!N+_ko^KyJ`- > > 5;%yf^0sXPO}4jno${ruCP{`8;!{KtuZ > > > > > zhK@^?m3aA%d(nUiDI?)lty&o~x- > > > > diw@GOhZy#3e%dj9$6v#48DYOG|qPE?DSUYop} > > > > > > > > > > > zS;;5X%ujzxR4(%?J_4BhvoVU!L$++jON5mzTC|91DHW|1cGgZh>7?R|ps7J21Xv > > > > Ve > > > > > > > > > > > zV+AutRF$&gRwdu8WJfO!BVzWoag=R#lnRj`rPmm}FqN1%apJaZ+hQ6iMVKwo > > > > Oj3$t > > > > > zh- > > > > > > zJY@x_sokvA<)cXPjG9|H9ZJWAwB)V~)kS`^<bCL}k}G0p&vI#oo`B|@!K95}Gd > > > > > > > > > > > zPVgz6DwwosN8pD){2}(mXhz}EDkOuVeLQD;#Gp7rgi#l%Q>RYaWy{nr90It5xc~ > > > > n9 > > > > > zliZ$`P&iL~WV<0MKN~EbGq5qE({PfWv8Pd>LMiB-cixfkCGJ~!;v))>;o- > > u_bo%t^ > > > > > z#_wOoxD;u1Q6M24Jo*OV#Ys1Z-0%_q3A$}}rzbRO{rdGI?OT&sh7n- > > > > >2YW`$G~A*R > > > > > z)0KSi5o<dZUcx|xx-VObM%OgM<cYKDd@-@nNI- > > > > iw2Yh7OxMj<hFl0oX1CyUP`_tr| > > > > > z2LyOs<CFu>C-LbR<baPuhYk%xMy3hIHZ2cqNw5tp<M- > > > > >=FAg7QS?42bVuubL3e3k@ > > > > > > > > > > > zvu0t=lVDGpqH=`*_H;M|i*Ua?(|lw<f@llD$jFf6=9_QMm2jBG6bS)d>F8(TdL?{x > > > > > > > > > > > ziA?j6=(oYhh`q3})Gm_n=DFCP{p@FW(G25ZFS~ri<bVJE{Q>w0T!j3~vsjq66%~Q > > > > < > > > > > > > > > > > z<;#y4F(Q~fW_J0A7vBJ6#AxxVtF9_)cbURV0s(BL8NcC?RZB`U%10Ks0yrXLkFryz > > > > > zP9-4?rjhADfGv`C?b@wdw@#6j8Rg@B_uZ%1KxZ<ufRhd(EyY^k!- > > > > |*!z6(BC<l|3% > > > > > > > > > > > z@{<4#8BnMzML95SP7?ww_~1@N!pbc25nraxub#>=D&lGC7E_m!Mu1&Qq8 > > > > $~K+syG1 > > > > > > > > > > > zOVW=%`lw)Aye^Xd=%bG=X$dfmPagu8UV16^3xd#Qj*lHXb`+W*KV=Q4apT7 > > > > 6>kU&Q > > > > > > > > > > > zgFqP+T99Yw8f@nH_{uA<$O$OiC03N_c!NNi5x^jVaAt)0Ky<Uk$K#GWPRmgh( > > > > H{sc > > > > > zm*&1Obu$Q92r#7@K79C$88b2j2)l>E=TCCV*1z#Xm7&fxRRsZ- > > > > M>2#1uHGaB6mFrj > > > > > zl%b}Xsu~2cg#ccN)fHC1_~Hw*rkbt(HMPwa0{H(IzJQX`2OoSeTdgy- > > > > H3(!20YbS+ > > > > > z2<W_pg)$-Rv(-9NTZ2Hh5Fm<;lXQ|}qm7fTo;9`290Ej{mk`i- > > > > 3k3k;j%BWarosk+ > > > > > > > > > > > z3?YDyjgxeeW1_TYs9mP227xRhfT@&(gU(wQUU*>^8))im5XcY$#EW;5&g&RQ > > > > tQl&Q > > > > > > > > > > > zsj5LBqX;Oftr~6BjP|docD4{ubk)utWwF|Yy25$qork(Uj^zoKtym4zYt?^&m8tL= > > > > > > > > > > > zp<W6pGac9q?~54Y4<0;t{`~p)U?gZDAqep<h5jUeQE6VaY85`lCr_R{Y}l~gy?bAF > > > > > > > > > > > z*=1;SEB2R31_H+%bBxyj)p;G4ssyJ_7%`j`;CmBS3{D^N*IaXrVl|xg_dOmoXpmyI > > > > > > > > > > > zLNZ+=wJKGr2ss2eML()dn>LJC;KlOg%L%af`RAX1<?(yrg%<)8;e4cCy?P@@j(q*~ > > > > > > > > > > > z*8}*+rczHn`DBL<9gaQrSZAKG9`lkUEQqhGLqg!8XP&BnYe4NQt0dsP7b}25<~R` > > > > J > > > > > > > > > > > zQ&>=iuax=7w}!>HS6_YA`GWH8zQBFQnBm%MuYKc<H++jwNkE;KEn9ZujW<F > > > > Tp}V6x > > > > > zMVN7oh$ZsDg9oY7`|rOm&)M>$i1)S$6DCxuR7svVnY- > > > > Yl0_HvU+>=awD1|rw?%lh+ > > > > > > > > > > > zYE`m)#FyIk?c2Rzkz5bJN8X162M*k|YnLS3z_*Ca(Wp_Q2*rs}G%+RJ!MhdtXf*_ > > > > 5 > > > > > z!`ZWEpLNz*5mqcfR-;FcRsoi%a{)3B@Q81$$r9va*|KFBl&W- > > > > 7!8E#jJonsl6NoU5 > > > > > > > > > > > zb#NrHmYAZtnP}ml#YgKAG+q`jUd(qkfapf@$aBv<SFjVE7r*@S%fQPWT9srx?< > > > > }|A > > > > > > > > > > > zajEeUp$*9nEk53I%PnDi@)ztfuZsr`9AMlPX81a8+&HhyxgLOzc5bh|_8RXcE$NL > > > > U > > > > > > > > > > > zF?F`<;B~Nc>C#Bbl4pW%bFT_Gua^`bS^QC4{dPhm94qqi_~VaXv}lp=YyzjO*D* > > > > Yn > > > > > > > > > > > z%ZB?dEJl@DUcE4UBxfeP41>eGF5K1jy&{>Z*^MRamv25H6R^hh*=L{GB}xuTh > > > > mVX& > > > > > zB3VmO;UkRLuwjD)_E>KbC- > > > > jt4PSFw}m3dZ3K3Ywt3u@G;p;fmqiU0c7zxqPWTOv#m > > > > > zD$hcB-)dM1N{5du#VcYWPv*- > > > > <J^{}@`>Z^ZxbN~^P#+&Mzx(dH?|iEi2_GqiaWzh{ > > > > > zlG!*`84g{4{q-uG3Y><W&9A@y+816cL5c9OTD58_BBuhHFCWK`AFq;6+- > > > > Z=3+O=!@ > > > > > zN)f!+ym_-qWuoGvRTeYKNEV>v4OFpwY|^BOJd==jd- > > > > Uj`0<V>(MEIzvRIGxVoR5J6 > > > > > > > > > > > zeX10#m1geTxhl(s&6+h+%r;s+QYdeXZr!?tly>>!pMLtOZ|ka8uP)Cd<X!fCeCuE* > > > > > > > > > > > zC<Q*Uv_e>0yU8IBBz(lXepFxKkd?$kh2nq^qdBIl!3E?W}BfD0+}UXSnHyVtj > > > > M > > > > > > > > > > > zXkB_e9?5kC#<vc3f>Pk)O*h?Sw>SKOgpa7wh0i~H4(g@~Om)?DlVai{?cKU{YlR9 > > > > G > > > > > zA`yNe6U%k81XA>bg-0SkRasNAYgh_=oHJ*R- > > > > Co@Tw7&#BRxkZktXXw4x6|W?f6}B$ > > > > > > > zty{OQRjbyir=E(!KkBJft5#*DrFrw_L}hyM#TOO#G4H?seszheT)DDc2j7GE_(;)2 > > > > > > > > > > > zu3?U^UUS8izR~60dFLI)tb!#&*$JfxUu^9JrNGAkifU{fUVQPzTCT>>gSAmrKR~N > > > > o > > > > > > > zF=z{WC=hndnl+Nlbt4s`A}+~IxD_iODT}$D`kJsJJA6a2gTG={!IBZSPk>Q=ntML7 > > > > > z6)Q);eYbn}?z- > > > > T!M(55)euZWK_U+s27DW0kUAnlJDG1caQj%_NT1$U%^AWi4MI5av > > > > > > > > > > > z>ArpY<h_8lye?>3>94rr3V8*DySe8hD$PQZ<)^`3m|AmoDgdGC)TyJ@v(Chr^`R > > > > GP > > > > > zH- > > > > tqb3>lmW6p!)!YiHtnkN_X40}}*vXcg=4n+)AldAl$&_01$q0{A7bfN(eWe8k{a > > > > > zXtMk?z{jzC`SOxD!tUaj39=F!rk8n^r5J0Y6HAI<-&r!jl+s;2uPeTM<ed=7@- > > k+j > > > > > z7$t?o$9mj%EoJA<osksem5Je_fQ+IZuPua38- > > > > *NvPdj(+Y(K7Yz<RH5o{9<j_3PKF > > > > > > > > > > > zRV&5B?qoP6P^qw$#+Q%eU%!5RlBwtEl@eY@vNh>Dsb@pP4NHVq3?BtBbp > > > > Z*mJN(#V > > > > > zk9o<J`}+Fz>xCK?@icNi(iYrMpnah=U~r?v6>`8jCL}nlS{KaRzKBjj$RgyA>xv)g > > > > > z<r&&{?Ix%kq{m- > > > > }E+7FMfT$=*+Mq=>60`dy%t0J{wCY2MbKkL|jfvL*euP4rS~Gs| > > > > > > > > > > > z%G|n65n%xIeO6ce3?GI5(&eMpdJ)Tg2^$>A1tvZ|QZ6BhAAkID0bbox%#_%W > > > > mA682 > > > > > > > > > > > z_wvgx_bu`8!w;9_5b~DcqX3{TAi8|?eFHn?VfE_OLiLJ!8Y>^IrZFC1Oy~qb_ZZLu > > > > > > > > > > > zQ$|JMAy&^|y5eWPkAisU@^Rt9g+dOJQ`Aa}OF*IY1o%jan3=dYOeH9}Z?Tdr)L > > > > iit > > > > > > > > > > > zC0@%Jmpf1U%K7J?ub5kaWQLCdXu5#t@=>lZV|TiB(7%6wp?bwVO@@!O5 > > > > mdKr+a{o) > > > > > > > > > > > zb&9LfU|4P1v`Jo2toDz(;%B~(LTBmnQEPdhRgPdn71L9R@sawUbka$zEemL?pJ > > > > Jg? > > > > > > > zvu4czIN(rPUdpIZqXJ~B_=w@70F*8ux_rcQvb?*Uce{4&ihg*)KZ!L{l6<6JP{Bnp > > > > > z-U*1- > > > > @n8P(7Zj6({`Ecm&2N4qFXj2?pZCoqZ~|TNGv7y{v$XigVyTw)zED;&rxFc^ > > > > > zg!zb6vofQ#T`NGuY+aWcsQU_;2&X%C?9k0qJ- > > y+hfR!#FT6_$ktS$&c0;j3sqt!c> > > > > > zC- > > > > > > Y!!zvGTOgf5n!`dV0^co4uNpS)1}uCDl*@1r0UT6`qDweWZfPgBT8#ub5Gexcn; > > > > > zFcDkeRSr-Zm-kEEx^- > > > > 3Z36RF{Q2<RB5G_77XwX33(P_AwLO#+*cwKw@?YD#BL*Npj > > > > > > > > > > > zm*uAfuaOrN%sNJ1sC8FY{LJ@J=qW8ewrtr_cszxt>Et8gO3a<W`;u+jwpF2nm4 > > > > ={- > > > > > > > z@_vcWC9>h8&`r94Xz>y4N_j`8;cml*4Fyc>)8yB4?4qp$28zD>^#w6RIaX`ZC- > > > > )J7 > > > > > zzZ9WjQJw0FpZPut-L1t(cEp6oQ+Rsz*=Ku6SJC-M#fZTd%os##- > > > > _X}7F3Ub%D22Ih > > > > > > > > > > > z_$Z*K3y2mU%atpaLIMg^lEe;310U%x!T<?%Ryk#1M_tw2*DQU&fB}N!L~^Pte > > > > &+iq > > > > > > > > > > > zbiEcIaX6g*{YPA!d5Km^_(=6utXLs*gv#kd4?X17G~qfcx^iEv_)8ZaiR9GqQGihw > > > > > > > z5G_7Zmahjh6}gHp4PLVZK%A%P;Uhao0iw5~M8_7evqh3)l=&q%<A;{8^^(Vf- > > > > O?35 > > > > > z^L-ThNSBXV`m4;9SnUk?>)pGzP- > > > > n?0w$c(oN)I2Y<bC(uCuxY+Ep>mhzP6C+T#!I2 > > > > > > > > > > > z+%kL&35YHqvCi`n75DW>A_aHq)XAN**A=3f3xGIJQ^iNTK%=4R)ex`ixQJ9#YCY > > > > nJ > > > > > > > > > > > zBjoNMXUv%41SgVX!$$!|T|jjC$P~s)RNU9KcFlx_*r$9E+&Oz)A()H(p!*<Ie587~ > > > > > > > > > > > zu??`+I&k1Xchd@988Kpn7f@VhGgKu4QNf(OF6xRO>AkWNu1gx?zEwK@bF@ > > > > ?fbagL< > > > > > zF0f7)ELh+M- > > > > 0MoOUcCxtVqHudAF0)>S+l&_;&ol!hbogzd1NKL5lY|+aLe#f08JMV > > > > > z- > > > > > > R~od0Qf}m5*6Y4%P+qyR4>3OAt!`vC8q=gkra_aK4Kl_8+60nUUjeLW5<qlKW<; > > > > q > > > > > z)x?uvYu(ZnKl6RG`@%ZV<s- > > > > 1Ghe3zAnC1F*q9g$hVbtl*w?IAsOCcX=JL6BGQ+!XS > > > > > > > > > > > zPMs<N&3TKMERx7XjFzJf>yvdpYAsgKO~|JcZTGP*AOZO3Yw_w7r;t8HCr_U2% > > > > uRmG > > > > > > > > > > > zrk)!R=aqEw5yy1$QKh@p#05|f<2Z5RM0XDMl`&(+I3WsotSf$L`#ut($wo%yz<2 > > > > ve > > > > > z7mxsa)QS?t1_bgJte4TWk- > > > > Xd8a19$aOkPkr`AD7RlySF|D;+y_lsDGCOPq8`)Jq&b > > > > > > > > > > > zNHi$yOcW1v#V>7qoHlJ*L9`2AWON}Pj{%x4AOZM@%{$=>3)ZmUMGWK>ds9 > > > > d@Zrr$n > > > > > z85X>V;*js)A+>zO!ckZ834=- > > > > jF3IWi>C+2>W?jUkfaF=NTe{+xDn4Qpw|n<)2~ff< > > > > > > > > > > > z6=(0dfCS(p9mFV9sGIyWKnM>)@DTe+o~`q)SKL^qIHi`4RFXL6&gS?YBMj<pTA3 > > > > tD > > > > > > > > > > > zLjSNJ;6y3Rv99=~ijP`*d34amjT?Qj(gh?K9~t53n)30n^ZmHntwWv6H}tk3u_|$P > > > > > > > > > > > z(#%J#S%B4c%)@QOd=KW%ohu;bJPi{K&{?#u_@#u8DC+<I_rG@nqH;{M6ldE > > > > D9_s=U > > > > > zjE@w3=bd+|)Y+Ma=u0XZJ9wodX1eo1-(!XuDuD^o%ts*A+SvgU- > > > > }$mrLJ0IA84|zp > > > > > > > > > > > z$}7&qfsb{?FD5=NUApvkh2M}NLuSsLNib8bk(e!wD&u@zKv3b3R~#MGg1y5=B > > > > )VI6 > > > > > z- > > > > > > P8}(ty{;ca>a@j1qQKH#cn?FVb!y;Q!46Xq@0hsvjE+3rhGmgiL+c?@r#L%wqV3} > > > > > > > z!1%vHg$f0!;k>8|h;M~?dpPrV9;1Ha`?w?li+<a;Z(q4`B}%7^P6KF;S(&5auDJN0 > > > > > zay~Lvk-+7?#m=l&Fb+_XcugmiIpGGJ{Ttv|SNyWe$0bXasNkauh`X1CD- > > > > u4^ebh=w > > > > > zpYSOx#`abP8PcSjkJJ!P8d?Bi#G%- > > BD;ZNx$*8qMhYnh~xfAP(Uv~M3mv49T- > > > > B)x0 > > > > > z@$G#HA1R%^MO_i{Em1203IlEsyso65k8- > > > > 0$H!{pMyc+9uUE<1v;R;qEUJt5V*A>5v > > > > > > > > > > > z@{yUo;#fi#5O)^~SLA%8kBFC~wQDcrALbM<Pm0DzmMo>8kL}yH*8(Jf%@hH > > > > h;hk40 > > > > > zefsoK;hk3+UGd8zADKC- > > > > FGuSF;?*zqbzeTxHEb{1=@UCZ$4qO%pL(XBk1T3w&7*af > > > > > > > > > > > zbSxg>C(x@DynKZ58=xzGS>)sB(WAXyNAByofcVl!g^yIDTeof!r7Yi4bQ3^E^=YG > > > > x > > > > > zQu_HwRoP`$M*~GxyLDOz5)HjD- > > > > dT0UFLQh(K$4bvp)Mf4U9ZSTgrRZc#>sfs2}VY0 > > > > > > > zm<c}0Eu`H2rS5djNmz8l2(07IjVpXQQBH6sRzKDizijc5)l0lOsG~tjT|f%<i1VU4 > > > > > zA1S?h_38n9P&kY8Jq}Dps+S2qvdHNRf- > > > > ?b52DBu^PK;k8uTksHojZe#T6M)QD|`ef > > > > > > > > > > > zRLuh{cIg7*?Ae0HT70Chk3ar+oMuS0B@33Kco9NXty<NVDBXih@KINBPF<wka > > > > 7i=- > > > > > > > > > > > zg2kHG6+iXLD@sTl$%w04zkYo;dMa0R0r9QBE+4H*qMb$TLa*1aZ=vo4tTUk1q > > > > k@1W > > > > > > > > > > > zO(yt=e|2~BC0D`($3aC3)iSTln>A}D0khyOUGYmZAMqWE5e>r?#jTA<0P*Sz`+6` > > > > w > > > > > > > zT6JStSc?L7q0R$z3#Uw(!e_T&d$lfVRR*;mt<0lJj7J4$^L>x|_wOI3XvU?RHf<_c > > > > > > > > > > > z3foCq`ae`7yL@CG#Dse7+O<p)+0?%J>Z{op3InY5tS%r0JHmM}3?Hp3VU~zyCS > > > > kI* > > > > > > > > > > > zw03zrJ^l34XwOChi&c|M@R7H%)@Xm|(4is4=JeA~_i|>gYrDz^7p*+?pP<7mX > > > > $Y&D > > > > > z_K!ss`^TKl{$YS- > > |1c)9f0SbXfY<&>ii_%&E+2`jB1eygM^!iQWC%2J<j6U5=0FY9 > > > > > zRx#SL+~Z)- > > f!j2k*kcyN{tkl#7679v*Ul#se5AIYefF92l_)=E4rn(p@Bt38yp%fd > > > > > zM;$m@^Pnyt1KV3g1vM`#UI<a;CeJ4;eDoSX79=LN|MFHV- > > sK%waK6tAla*M- > > > > OiVHX > > > > > zfz0tysDG@dS>Ypwq6Mi}@M5rq(1JL7g)qR!PMBrwf@PJ+MZ- > > > > r)N9U4{=!Z+1tb1$T > > > > > zym<v#zj^cKU^|k!706k7!$(PnW`&Ph<5k>mN}8;Di#a}Pj0Gvl;y;rM- > > 3&`Sz2T!o > > > > > z0J6eIt@Rv5-v|;|gj?mymw)%&cMDST- > > > > h1yA5}Q*w0)~$gd@{jDzCl|19sT<ClQcQl > > > > > zE%rcJ{dQ9l0E1;%vQHU4O1eH1eALwk=- > > > > $1%q{)GAp@4y&m_SKiKBAX3T<2Hx<^90; > > > > > zC_ZTTC;=)HeALyK^Kv*Q!9npBw%&jI;~$- > > > > r^yQ<j_~m{lMHi6Vzo4A5mkB=V>XYL* > > > > > > > > > > > z+S$fvkB>U)C|p6>lr((Qh1c*=f><W_sB3Q(ha!^`LsneTb+jmH_~=AN<=F61f>I{< > > > > > > > > > > > z_~3&N+TSDJgFSopNZK3KEfhr2C8jclkGhZ=K1vXan~#xf&k0jDIVG1bUoL5HgtyS > > > > m > > > > > zMzz@RQ5RCfM+ssv@sT+=e%{z1z=IIpFZq- > > > > Nw%JE}|KP!cat=E0st0D3z@m7Iw+-&^ > > > > > z<cW2~&#dP-dy`|co+AKapDNlvVh&8)goht~xM|a-<;s;KK*@js0|- > > > > GrVZsD#f8^5Z > > > > > > > > > > > zzI)+?7upq2ISAl?)m><WR}3EoFm(YjeDo4~6+YtQ4(j1Pkx*q9U33wBfrDs{2}H7H > > > > > z&6)s~iMmmWA_=- > > > > 7h)|eQUGdBP_Yp%j44l<}C`X0CKU>d6J6>gMiDO~Bh!DpaQd@d! > > > > > zXm?|^1UE7A#oOL_=bfhok-d`X^_Fm6$6_%tQ#Hj_7(OZjWs- > > > > qFw0z{%hci90wfTs4 > > > > > > > > > > > z%D3Ns`}pIJTWG^gt&nhK%a%QK=#Z0f^5dw2#96hC<gejlBrujpCeiW{#Zi_VfzI > > > > M1 > > > > > z+GSg|Y~kYwD=j?HoWXsrI<{Ei%Lyplz3Z;K)H6>erQu^TIOn63X!(e- > > > > gXPNG;v=s6 > > > > > > > > > > > zq36dRe~c3nYmff2%PwOUsScf6UsNEVa7yG9^~{q=Y5157&iN=MT0RnS%nF}j > > > > @e!Y0 > > > > > zpwzHoLs)ag6<2V4&pr1%^2j5K(Ba5Ppqu=Zb)-nPI~A*^n9T4|5h#- > > > > k1fu2R2`8L@ > > > > > z8?Kr)Yg&9{w%DRY3o8sgI;E`kU`2@AKt<%W)N- > > > > Ke6Hh#$m~)cJ3?Gw3JL_dd%SX^4 > > > > > zLNtR+h- > > > > n8d`QU>O9(dpZZsA7nrI%h(M2zt*5u)WEMB#1#XT^$@36l(CF}5(&f04M= > > > > > > > > > > > z4O3zBY!MNNoR4_*#J@MuIq@gY&Jhcwv<{hEuwVgOAr&iDRBY_sci%10O@2 > > > > yzjT8=6 > > > > > z6&q`k83Zf@BIl!(ZO@)P@xX>RZ&p(oqvG}%<s2- > > > > P6k*5A(Ehy2X=vXyelrxYHObP9 > > > > > z0AoDjR4V@3v}vQ&mNU*cgGZP->Z- > > > > {>E}Lj72YB;P|MF@z!6Y^alsE$D*AY`yg@$&T > > > > > z7hZUw#6dI7HweUpz@$l&Y@#V1TzTb{F;&K7YY-@91TYCH=%Qaj%- > > > > 3Iky_69%Z8r$S > > > > > zgaD!3cJ10Fp<cmTmK8}%RZ2s)?b@}|Rl- > > > > k0wM`wej=;>BGYc|Ka&htE#aVB)Z~X~J > > > > > z0s_pDv1Rj3Y!Vm*B0- > > > > >4t5y=;6}&~9sWZ<!Gm_HNoQcIp3jwr$0m|&Orn$dzP&YiR > > > > > > > > > > > zqG(r;bdrk%?ae{keVgFqqlE@mGhMoL(cMMzEyyG=2!H@;JZRTQcvtY&C!c(RR$ > > > > eIp > > > > > > > > > > > z=;osZ2y^YeefvfjEV~rIG;Ne4fI0uVb?XW;PJYoc7?Ee5kGo!cwD7^I1@#F_FEJnO > > > > > > > > > > > zHLWNX0?dOfFQ#(px$l<9NY&~W?9QHh?m0II&MV)1^9@dljFM8ZBsmA=qIn) > > > > *K@}my > > > > > > > > > > > zU_@ONHU~giO=#S>@tbeH>ExjM81I@uS_*4ix#`xFGz9<NPd)XNTcUigpsI?Oo > > > > |LpA > > > > > > > > > > > z;c76PAaufx9XsSGegFOU%a$!;*AkEuuAwO|iwLj;fgz+^sJ!mt$~B8kj<C*{b>DW| > > > > > > > > > > > zZ7TLJ7?6$~JC@;Ygr%FTa)tm(I9mSyoy1i4^^r5s+|5Dje)Q<k__uW8<8{1x_3Ex& > > > > > zyPB0)H;g5I1xIsUfxo?E$- > > > > cg5(ITdtB@Up_{L@Z5ZO)uI3{Y*9BnRy9vJMt&Fg~Gr > > > > > > > z<}}R+5b9$8{{0exk=#NrC2fw5(*reL^_(FoB`{jIHg4RAt1$*D>1l$gNs<VlNrHa> > > > > > zUpetgK%9aS+4>LDDQw7Y+O)|FL- > > > > +Lq2M*w;+UUfF!90u4R<2x`ubW#Q6t8UEy7kmk > > > > > > > > > > > zPt9V(ldm)5d0ai<@KzC9D;X~32M!#FOTgqSY)VWL0X~aF!{I%wB_7Vi8#Zh>@x > > > > &98 > > > > > ztaA>^V%?^H|Nb9+^pO)u- > > > > ($>9@tq4Xt5vI(0}xCT1O)IeNBl=$F_0u!wQ3cPt%PjN > > > > > zsUiY|i)9OP?b@{xguQOz9*{6A#^_QJ>XavADW0eSii>_;B7wP|S- > > > > ^>;qY0q7aN$Dq > > > > > > > > > > > zD7>JST*pNxJD6B}8w;;U`Xb>>h`x&JV_k1lZh4qCZJN<7iMH>mR;|kJEo!cAv{kNP > > > > > > > > > > > zO~YOZ;a7~2SG4^SQ*La8J^JXQVWx_fRFDHZ*D+PnWXsTn5Ma6sK2E|C`I;S1f< > > > > 74S > > > > > zf^>=#>R7X9&nC#Dv)6(hZ`- > > > > !b%vloXWxjEpJ9mETt+#@8ll2rnu5p$^KtRH^Bv5Bl > > > > > zgf9XYTyOyslaTX7TO`QJtls!y9&LgqO_~sXTGyeU-DUQ{- > > > > o1N?2XXVwHyd5qXgf$T > > > > > > > > > > > zH~LX4(16`>1rM0i^y$+_v1pSlas;r?nmTpr!Gi}2_KxmFVtvk^KfhP6UNvgeh`g#M > > > > > > > zLni`k8S@SdwuJ80tpxZu{q)nFrI_QQAb^JfIu~cQ;XjvlU+>wohiHSp`qi(hSFc`_ > > > > > > > > > > > zM&+{5DpjfwMUI||YG`Wp7mg;F#pDvPOg9RBs=<Q?qZVb;Dv|>hkqDOEy?b|} > > > > x|rRQ > > > > > z01|@FHypFP{r20Dbcc`$u~P{`7ob+=k;D+FUAy+UapU;L34Is- > > 6te<e?*xY6(^<D} > > > > > zU9- > > > > _F>C<}k>Jc~<74Gn`7t8@$JR+D&DqwD<3ITLtFS+Cr+<*jd$XQST+!xVRzzT2P > > > > > zym{=!5O58DgQ- > > > > Fw`N}XvY1_6f8;C?~bi)<Z6|}HgwrrVv>r9D}AaLZ7N1}lD%rnm% > > > > > zI&>&1k?_igMIk&$@Ljm>y6af8&9~hvqj%=lSR- > > > > O!j@_J!=Lav`6t92y;fG8W&8#63 > > > > > > > > > > > zUKBkOBC0daT)A>(geyOCL1M2Hn@zSm$B!S6s(kC#tr<(B+fZ~Uf>i(_@RI4&sS_ > > > > >% > > > > > zSFBhO-@wC- > > > > D&vqIJ$e}Bw_qKY@~2SBVuZ;Aguo5%u20|!lFXnBXP6A_SaM{HSEo*$ > > > > > > > > > > > zR2c+OnRCxQ_wvgx#}01DkRj+C0#{(G{4kL6<!#=)x%nohoKulh4@C|%=nysrLSb > > > > Yk > > > > > > > > > > > zs%P2JW__5gG<I92Oqs$skQL)wZ@u+~8*ZSUOoyQ@+oLC+d~z7AKV+K^4f{mr > > > > oO2G- > > > > > > > > > > > zUi3T%4H`6Y;zS(FV7Z3N{R9T~zKBr=)aQ)aTO@Lx#Y`}t#2Lu5&p!M0*I)ZeOBxdJ > > > > > > > > > > > zao@LZAN0Yy0;|6KaF~xWAzxldjSeRcHd$9;O3Mx%wi1vXArEFRlURE#Yu4Luzn > > > > ynZ > > > > > > > > > > > z7NyA4IdTNhl4T)%#E22=*RPLu=Q=T|&Rjt@4J%cu6nTf540D43gF4m^XUv$fd- > > > > v|l > > > > > z33>V}Y- > > > > pGprX=4Ge15V<x@5_cI5Z8?&z%TsXlR(c^ya%nW;bj}4;?xbdWNyej8Mqa > > > > > > > > > > > zpOv9uzDbdu)}fixqD2d|G|@URBU|U2fzS_2moDYSg;!4#TQEHmTT(T_{R`s9wj > > > > G)P > > > > > z1fO- > > vXYP+tfncW+g#qT>sLz#DznjKp0s;2c*;r={A4fopZ`q#6%9e`C+k*`hS~Pw7 > > > > > zbabC;)vASiz)W<CsiZ-`i2#E){8XTsgMJQP4H?vJ*|LQ#LKO-WD- > > > > Ev^^wzNGXTcf2 > > > > > > > zn%JN<YSgF%Lz+7K(H!R+0j&A3<YKUgMjwhpxDUliJ|7_5M1TJI=LD{en~b~@- > > > > h1yo > > > > > > > > > > > zwA5zJnl*g*aK3tsy|H05VN>!gc&2s15Fm^u17K|J(IsoppaHs_ke5#tu{Bvx8Z%}L > > > > > zK1{IE<%g{qj7F7x)TmJ~i}@^G-23+J+p}j+bmTgA?AWGF8&- > > > > )gz4TIop<u2E>9VWq > > > > > Q9t=$LltI8CkSzrM7XaWYkpKVy > > > > > > > > > > literal 0 > > > > > HcmV?d00001 > > > > > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > > new file mode 100644 > > > > > index 0000000000..a636b086ca > > > > > --- /dev/null > > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c > > > > > @@ -0,0 +1,153 @@ > > > > > +/** @file > > > > > > > > > > + Logo DXE Driver, install Edkii Platform Logo protocol. > > > > > > > > > > + > > > > > > > > > > +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > + > > > > > > > > > > +**/ > > > > > > > > > > +#include <Uefi.h> > > > > > > > > > > +#include <Protocol/HiiDatabase.h> > > > > > > > > > > +#include <Protocol/GraphicsOutput.h> > > > > > > > > > > +#include <Protocol/HiiImageEx.h> > > > > > > > > > > +#include <Protocol/PlatformLogo.h> > > > > > > > > > > +#include <Protocol/HiiPackageList.h> > > > > > > > > > > +#include <Library/UefiBootServicesTableLib.h> > > > > > > > > > > +#include <Library/DebugLib.h> > > > > > > > > > > + > > > > > > > > > > +typedef struct { > > > > > > > > > > + EFI_IMAGE_ID ImageId; > > > > > > > > > > + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; > > > > > > > > > > + INTN OffsetX; > > > > > > > > > > + INTN OffsetY; > > > > > > > > > > +} LOGO_ENTRY; > > > > > > > > > > + > > > > > > > > > > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > > > > > > > > > > +EFI_HII_HANDLE mHiiHandle; > > > > > > > > > > +LOGO_ENTRY mLogos[] = { > > > > > > > > > > + { > > > > > > > > > > + IMAGE_TOKEN (IMG_LOGO), > > > > > > > > > > + EdkiiPlatformLogoDisplayAttributeCenter, > > > > > > > > > > + 0, > > > > > > > > > > + 0 > > > > > > > > > > + } > > > > > > > > > > +}; > > > > > > > > > > + > > > > > > > > > > +/** > > > > > > > > > > + Load a platform logo image and return its data and attributes. > > > > > > > > > > + > > > > > > > > > > + @param This The pointer to this protocol instance. > > > > > > > > > > + @param Instance The visible image instance is found. > > > > > > > > > > + @param Image Points to the image. > > > > > > > > > > + @param Attribute The display attributes of the image returned. > > > > > > > > > > + @param OffsetX The X offset of the image regarding the > > Attribute. > > > > > > > > > > + @param OffsetY The Y offset of the image regarding the > > Attribute. > > > > > > > > > > + > > > > > > > > > > + @retval EFI_SUCCESS The image was fetched successfully. > > > > > > > > > > + @retval EFI_NOT_FOUND The specified image could not be found. > > > > > > > > > > +**/ > > > > > > > > > > +EFI_STATUS > > > > > > > > > > +EFIAPI > > > > > > > > > > +GetImage ( > > > > > > > > > > + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, > > > > > > > > > > + IN OUT UINT32 *Instance, > > > > > > > > > > + OUT EFI_IMAGE_INPUT *Image, > > > > > > > > > > + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, > > > > > > > > > > + OUT INTN *OffsetX, > > > > > > > > > > + OUT INTN *OffsetY > > > > > > > > > > + ) > > > > > > > > > > +{ > > > > > > > > > > + UINT32 Current; > > > > > > > > > > + if (Instance == NULL || Image == NULL || > > > > > > > > > > + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { > > > > > > > > > > + return EFI_INVALID_PARAMETER; > > > > > > > > > > + } > > > > > > > > > > + > > > > > > > > > > + Current = *Instance; > > > > > > > > > > + if (Current >= ARRAY_SIZE (mLogos)) { > > > > > > > > > > + return EFI_NOT_FOUND; > > > > > > > > > > + } > > > > > > > > > > + > > > > > > > > > > + (*Instance)++; > > > > > > > > > > + *Attribute = mLogos[Current].Attribute; > > > > > > > > > > + *OffsetX = mLogos[Current].OffsetX; > > > > > > > > > > + *OffsetY = mLogos[Current].OffsetY; > > > > > > > > > > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, > > > > mLogos[Current].ImageId, Image); > > > > > > > > > > +} > > > > > > > > > > + > > > > > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { > > > > > > > > > > + GetImage > > > > > > > > > > +}; > > > > > > > > > > + > > > > > > > > > > +/** > > > > > > > > > > + Entrypoint of this module. > > > > > > > > > > + > > > > > > > > > > + This function is the entrypoint of this module. It installs the Edkii > > > > > > > > > > + Platform Logo protocol. > > > > > > > > > > + > > > > > > > > > > + @param ImageHandle The firmware allocated handle for the EFI > > > > image. > > > > > > > > > > + @param SystemTable A pointer to the EFI System Table. > > > > > > > > > > + > > > > > > > > > > + @retval EFI_SUCCESS The entry point is executed successfully. > > > > > > > > > > + > > > > > > > > > > +**/ > > > > > > > > > > +EFI_STATUS > > > > > > > > > > +EFIAPI > > > > > > > > > > +InitializeLogo ( > > > > > > > > > > + IN EFI_HANDLE ImageHandle, > > > > > > > > > > + IN EFI_SYSTEM_TABLE *SystemTable > > > > > > > > > > + ) > > > > > > > > > > +{ > > > > > > > > > > + EFI_STATUS Status; > > > > > > > > > > + EFI_HII_PACKAGE_LIST_HEADER *PackageList; > > > > > > > > > > + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; > > > > > > > > > > + EFI_HANDLE Handle; > > > > > > > > > > + > > > > > > > > > > + Status = gBS->LocateProtocol ( > > > > > > > > > > + &gEfiHiiDatabaseProtocolGuid, > > > > > > > > > > + NULL, > > > > > > > > > > + (VOID **) &HiiDatabase > > > > > > > > > > + ); > > > > > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > > > > > + > > > > > > > > > > + Status = gBS->LocateProtocol ( > > > > > > > > > > + &gEfiHiiImageExProtocolGuid, > > > > > > > > > > + NULL, > > > > > > > > > > + (VOID **) &mHiiImageEx > > > > > > > > > > + ); > > > > > > > > > > + ASSERT_EFI_ERROR (Status); > > > > > > > > > > + > > > > > > > > > > + // > > > > > > > > > > + // Retrieve HII package list from ImageHandle > > > > > > > > > > + // > > > > > > > > > > + Status = gBS->OpenProtocol ( > > > > > > > > > > + ImageHandle, > > > > > > > > > > + &gEfiHiiPackageListProtocolGuid, > > > > > > > > > > + (VOID **) &PackageList, > > > > > > > > > > + ImageHandle, > > > > > > > > > > + NULL, > > > > > > > > > > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > > > > > > > > > > + ); > > > > > > > > > > + if (EFI_ERROR (Status)) { > > > > > > > > > > + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in > > > > PE/COFF resource section\n")); > > > > > > > > > > + return Status; > > > > > > > > > > + } > > > > > > > > > > + > > > > > > > > > > + // > > > > > > > > > > + // Publish HII package list to HII Database. > > > > > > > > > > + // > > > > > > > > > > + Status = HiiDatabase->NewPackageList ( > > > > > > > > > > + HiiDatabase, > > > > > > > > > > + PackageList, > > > > > > > > > > + NULL, > > > > > > > > > > + &mHiiHandle > > > > > > > > > > + ); > > > > > > > > > > + if (!EFI_ERROR (Status)) { > > > > > > > > > > + Handle = NULL; > > > > > > > > > > + Status = gBS->InstallMultipleProtocolInterfaces ( > > > > > > > > > > + &Handle, > > > > > > > > > > + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, > > > > > > > > > > + NULL > > > > > > > > > > + ); > > > > > > > > > > + } > > > > > > > > > > + return Status; > > > > > > > > > > +} > > > > > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > > new file mode 100644 > > > > > index 0000000000..fd9c489815 > > > > > --- /dev/null > > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf > > > > > @@ -0,0 +1,10 @@ > > > > > +// /** @file > > > > > > > > > > +// Platform Logo image definition file. > > > > > > > > > > +// > > > > > > > > > > +// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +// > > > > > > > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +// > > > > > > > > > > +// **/ > > > > > > > > > > + > > > > > > > > > > +#image IMG_LOGO Logo.bmp > > > > > > > > > > diff --git > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg > > > > > new file mode 100644 > > > > > index > > > > > > 0000000000000000000000000000000000000000..d1d099789fa794648b86c04 > > > > 6f0320a553954764e > > > > > GIT binary patch > > > > > literal 11944 > > > > > > > > > > > zcmbt)1yozzwr+6OVns`fYjKxAi#rsGl~SZwaQ7xSMH;L{gF|r*PAO2VloTiy0>$0k > > > > > zA3gV;|D1Erd-skz-pU>sd+dzt`RzUD`sO$1T6a@- > > > > zX7CbN~%f#G&D4T%KZm$hXg1B > > > > > > > > > > > zFwoKe9QOnB{=mY;!otMF!pFhE#wEljBqYEmARr<pCnX{#BPJjqr6MJJKtV}KNk~ > > > > FX > > > > > zLq$PDPC- > > > > fW=O$<v_y57f!o$MCqaY$6qWE8ryDtDTT)+U@Qw%gR06G~O1{vC24}cMX > > > > > > > > > > > z20+IEVBF*V`@qG+#=*abiT>yJ*Q5Y642*m1*w}c4#JD&B02(?5CIAZ?hYS~woL > > > > K<) > > > > > zKwQ_-t)Akspn~^1N-8luBd-s&V- > > > > KGQy>a&dLsN2V>Zoa0L=^R{AjzqD`Cms_MGXv- > > > > > z3cJRIUxan{{M^5{K=Dte{}aNWt7QKG^!KYX078s=v}71$06D<t&sga1<Y77- > > > > 6!?Fg > > > > > > > > > > > zkmOqR@l8Kl{#s|UYF@;>+y`NB5f6%1VS@y`ZtL(3A7^4K^G=(4UE49w?T_0SDk > > > > G($ > > > > > zN1<Fzi- > > > > > > #BCZuBd*+s^07kU*dt{v81Q>)gk~AQ&^pb*wNQgm&5Qja9BOcG>LPphMn9 > > > > > z?<LSCzG- > > E!dB<m>vN(4)gekvjlgi*B7D+O@84|?4X;VNd+d{aB!>#pj!RbY@V{- > > > > 0M > > > > > > > > > > > zPKO!E5zd!e2f}z9zFqo?RzF^@dVZHH#ahPeGa{TZpU_*TS1M}tX|w?EK$R@^Lk > > > > RGw > > > > > > > > > > > z!2NJxRO`lH|1I4eAlB_T*bxj_KwZ3X{pDi~+h}#8{=KYTznUxyJMG)ThL|nWX9zRy > > > > > > > > > > > zjlcdeRPG?hqS!3Fs64*K%@X8ETgA5=WaAe}8M~Q$o<KY<;?t0OTsCev^Aip)xZ- > > > > &7 > > > > > zEnwj2m76xl$_MdV+x{H|P#S4>kN+4mZvm5zF6{kGTDNoQ`j$h0&=;2p+- > > > > Mm#r;q9a > > > > > zs>e7`0_!VEV8!}BIp8l(V4*`i?MARK`>JfxT(4<Y*rs- > > S%vWL0!r{>*Qllw5>&m(( > > > > > > > > > > > zI+~jN%Lzeg%hnEzdBDc}>Pl=WN<Bm6{2?g>c}Qq3kngxNWsM~L?XtNCxd(st+& > > > > s!y > > > > > > > > > > > zI*EgOrXSDx282+Z^`WkNLp5%?Z5T!MlIZj?Z;RlQ`kXhU046A8Ah5sU<#$$%HnW > > > > 8p > > > > > > > > > > > z%i@k_8@M(#J9<$Rv@YyRIr0Kn;u#U;OMJW?y=?POH6LAyzUFU)7%XSboO{- > > > > I1(G~! > > > > > > > > > > > zv&NF8LJDonPp@=)(heT{7*k(r$#v`!oGxJ)Oxu5Xb))L#NmJ3CE%K@T7NbCa*<Y > > > > 3{ > > > > > > > > > > > zSkVIUwM1Y;`p{X;$6MH+8+5bvi99ug<GoxS<aAQHwEI+(F1~ZtI!5~r5Mw8E9(X > > > > vd > > > > > zUrJtY`3- > > > > q7^p>6A$y5?)h$gnjn>G8wL;vS%m_wlDvulFiweq(@6$qzti;NKBX@X(6 > > > > > > > > > > > z;F*7)|CQu!YNVQ8kWB*T9bgj@^m|rs1G~^qc*#HIz1h6Sa<Arafr{L!p+et*ooI{! > > > > > zMIsQB5uqH1voeu*r4H(0{WgJb5FYpS-5#cI4DNinbgL(w@pbDN{bLdE=I- > > > > +BLH<6@ > > > > > zJDE)m`9pQthFm2ursEo$*$4&bDm7)9a5WK%-_c`s`B)nR5h- > > > > @4#bnHT`3_b!JBHow > > > > > zxyGDgImnY#bM@V- > > > > uG(2(e5mx8F$Jwj7So#v1GxWhp>ow^hy!(aeiO^a{iey<$mjMM > > > > > zx06lB1|z#Qq?(cCl;i<WuAU%C)-koQcf??CdqKwly`#s}- > > > > )2PTm^a{pEuoxR=C#gC > > > > > > > > > > > zs@TJ8#4zz8InTL)<1nfss&!dP`@^_Ya$?Og(x{@I4dURS)bN{D0#kL^gFy7@Ppu > > > > ue > > > > > > > > > > > z>&J*p*N`Na;KD0%B22CEY}XdL$O}WaZ+p$(3wB9c1NkA!>=W=o3Y>Cg12TO*z > > > > h4fT > > > > > > > > > > > zSA%uomW@1Gl5o6W|JkMiZ5ZTo2JJN0fGl5hX(@{54lqcN{n;X4wBsu(cO0n?& > > > > $k<J > > > > > > > > > > > zsY3z_`2DcPSkp_>0+NTydjm@!SeX7`a!6K%9sd(~(LGQ<j~Pc%LnEupS5FcO*+U> > > > > o > > > > > zsre5rS}aW)s}@)gnlg{qR7- > > > > r<5@SomE6N08vY@4nCv<_`8+xJm_R8a=2_UR+*Mq*) > > > > > > > > > > > zgafvZ2Ljj8qM30Bw7#k!fg(zOI?QC5TacQR&pROVy2xtX{vDwB8fX<$yY_KhYTFe > > > > ` > > > > > > > > > > > z6V!988l(NgW_i1Dq<Y(X2h&?ef9)ZCl@KwL)yUv}nzilJ1F5Dx^?+I4;WOwVxu_e! > > > > > zrzuo)hf7U<4or;rr^mo2%+RXu<Nno_E- > > > > MqUbaW^+bO&JL!B!hoy7_Fpt8o9V3-J8_ > > > > > > > > > > > zw4D`mw~0ZLxk!!$nvP_poz__f6yn{K9eSf)fm1_~&V59f2MJ6{;xb(dWT$mSzW > > > > WSY > > > > > zCQm-AL8Vn?b<aePPdE_Ih@94d?-qAua5UXMO_vw!e(-22`4Zj<hC- > > > > p6eI<pRAWZsS > > > > > zb8l&H%4Ch-r4mX`tuFn3S!aPU6@1f@eFyM^e+Ki- > > > > R(kLYWoNjiUT;*DRZNqc>Boy# > > > > > > > > > > > zsU_#B%Fd9O{MYP)g>yon?|`q$sUrm@?xDp?`?@DAql@r!<Mk7UpO6q~4Sy# > > > > 3d1$Mo > > > > > zTo{ex<xTRjqhMQ<LFSm60Y<O<I#Yc?bNQnTO2}AiAPws`T^iO`IV- > > > > >R0o83OvX&P$ > > > > > > > > > > > zoGji5r%^OavL<0l$alF^vw$Ac>|(o{QnE^3Ry`M*a?wj&)+Y_xz4E&rZKb(WmB;a > > > > w > > > > > > > > > > > zz2WL)HB+aw{~%q=@s*V?B2}?&z5{|z(O0%Y)*qu1Oe@xz@Kb9;+uQQs>ULA{ > > > > b14sy > > > > > zaP1(hq~*)$ZVP@VRo_`kBo7p+qT5%FOI`_0#d(u0b>c-f3!lIVm8Bphu<- > > > > l3=^cEW > > > > > > > > > > > z5u62#D^7jk95y&DxXZ`h>b@AM7?6OO@AkWH9*FHe`{NFfJvY~84R4JAdIy}U! > > > > X?xb > > > > > z58KO(*<D`X^!;n1{tGhU- > > > > gB>3{)H<UNZNvr5pSAGpABrc$VQ~|o6WLIEux|oxV!xb > > > > > zjD{B6#&qBk=jK*4&@lte0NvuLi)GNxZo1R;cyqG1Yx2L*Yj5>_w5=ykbO6- > > > > OoIGc@ > > > > > z(%$_%q49Wzrf=8f*!ro}6KlofhCpLZjOE->Z=+CSrX^7{Q- > > i;x1D%xidFpr^$Jo}7 > > > > > > > > > > > zhmkhq2W29QI%yJysC4Kd7#(ofy_73OyiC@y7PKyszt_yV#^~28xfR208mp_9oa > > > > e)m > > > > > zG^dHP_;2xo{tkF$lg1()k*<*C)r*;nOIP~r6ad&0X7agWw6Qp|J- > > > > 7|syRK*C6c<&+ > > > > > > > > > > > zm#Ss4Iy0oPXLXj`W+zW(@qwy&V@v`MIHYUdw2LY_DccN?H2Ld{sdDKhz|dy > > > > w<cRAV > > > > > > > > > > > z&Gem_HJhM%1tm_vV=`caujL}+9iW@4YWm2Lc4A9|zke3g6~vK6_RLS|#lj5s2 > > > > 77P{ > > > > > zEBjYSK0StH- > > > > KO&ct09341)J0(vgR5_<Qr2HAev&AVpIG+5T^w)kZI{1r_^2bvi*|F > > > > > > > > > > > zcDnL_KAbl^aCHKjRI~pisA~@sU8+Q)Zt{k)*^a7a<t5S2=hIZiF*eN%GP363fJSp< > > > > > zcSQrUsjo`|cIV$*k0&&gqjq3!yO`Y-yXx&- > > > > )rd!0)UwT<X+mDe9L|a3$;n<F8nDj0 > > > > > zbt2XTx~4+j0mf`@)4?nrk_$M>$6^uZ(~Lx6J$-xXozJ66o%(}%sgjYss?*LK- > > pR$? > > > > > zU%@5+mRbI$3$X*b?*OPJ&08okXrqNVeO- > > > > 9(A*20F*RkHp?htHs72I{MQs4c}4ZeLk > > > > > > > > > > > z!TU2Oso2@(aJR1V5X3wDaphN2Mg8&AeG*o(hZS5rss?Xn>Vc!QRV*{#nC_en > > > > 6@50g > > > > > zVKc}m%KkiBa%Kt{QGrG>syls$f6@- > > > > UE+Ri1de4jMS5)7SA)p|w1fwqa9J?pC#kfXe > > > > > > > > > > > zGxL@vL}J@>8?yRiHd`zdLL4I1D0c!8#&K9GN42A(py^jwrB9cRGct&$orzhT2;!W > > > > U > > > > > > > > > > > zFfR@C;7Yd<N$aq3lY40;{xgnx$m>jpcgp*rllkD@(_Pi`@^5xz<3~fgiuUvMmtO!- > > > > > zG@_JmlSGZTlwMjxkgjGKpTrDI<GM9TNySk!(_9<8ixLJ-fOl4;Jxe- > > > > K_~6?SQ|fCA > > > > > > > > > > > z*E1W01uG`y8tZBT$%ZihW`T|#(O)VXN3Df2Vv6Y}gN)k{Lqi{RJTkfP^AqcmkHfp > > > > F > > > > > zGZ67BmA;S*tg0KL&I>z<z?M+HBmf=Y@D3o3@UQ>- > > > > JQJE@y4|C7IZj3HX(Bu)fyKW4 > > > > > zM_Lmkd1?IK<~U-)bUB*haUKu4- > > > > dY+nq$>gA`eTk+_~zY3uflwPv_xjVj~sG_Rm17j > > > > > z!yD==(psSU;~lX5Eeo<UUX#XWbxQEc5$m_VHv<- > > > > gC`E&MorI0!o88rPSJXA3VSq4J > > > > > > > > > > > zW;H2F4k)cZSl4}IWHQt(BebeK3Lg2YPDSNn;WRn5Z+zYE#()7sM==;A4t5VF6vUf > > > > T > > > > > z5#Nbe!Cs!XU6E>gQj+ky- > > > > {@C6772nwu!48=I>ERODa#OzoOJI%F%nh}29ST4E3B{( > > > > > z!Be@Pp{|$+i%1ePIs17uNjh1LQa7t+TJ~;tvm!lzBUU@Qtk!- > > > > IOLF7X@!35lin4ES > > > > > z$q5#7%y*~Dyzc-tsrB`-LA8RNHe{w;>-xn(E#n4-q*6GB- > > 9d2Xq8+iaaIgcL$=X2U > > > > > > > > > > > zcX?*P$I?ZafVe1pRh)XApuO$7%#e8=$c645;9^~d?uQq2*|kT#QPHdAIX(fQX8K > > > > nD > > > > > zCf&BbL7v!-Oh*ez<X_bjaLgGJ)a|*ozS4@yfc;pPuxt$pvc0|T{2|O(@yGv8- > > > > t%Ao > > > > > > > > > > > z(A(QKxtlrR`3+w9Tn22T5~6kRVKu9q={eu4?G|EZyZcH2dw2o7ypkWS$&rrWGJ > > > > R-X > > > > > zYRS2$b8c#yQ0^V%$-s+H- > > > > j&OZo~7OFwssk_)$i;vp}qqU;Yd+16{VZ*<`yLu)0=?x > > > > > z!iWZ=cLBcX1S=~eT~4wz$HN&nm*iRn%L1b- > > > > y^{bgc&)ddW&TgNrHAuL9Gn>s7Tz}F > > > > > > > > > > > z+btRUDT}eU=)~&faeUd>cG=?hCic4iQ=i;ygmP?_c@7yHxTS>kEsut1SGJp9yz!w > > > > U > > > > > z1N?El)P3f9=N&a$L{- > > > > pdtjgPjuX;~yQbbtecL0Z?=v$m>rjs|+>m|&cBEv*uaWV_` > > > > > zt(Dxx=Z!+1V&_iRq9ZnOWVhhRmZXUp^cJmdw+<8- > > > > oLRy<nXDAOF<0P<gqj`B63`4f > > > > > zYueOWi3y&(O%PZXX71K;;_cxG3+GiX4ub2- > > > > vVmRhZKXyB<G9}2B3UnCn#s+Rd-omV > > > > > z#t3rBMY48UydL@618@g;@%uIgGS=+skt=2xm~kl+#w`1Bg62E- > > > > VPjZ2ZedRXJ4)`m > > > > > zQyrg))>f0D%8bF1;Q&eVV- > > > > %;U3qox$b%4EDJ~^T77)y3lJZMe(Fr!H9gK2jC+)l!0 > > > > > z;U+!oA^V=JC|OKjuoxyO@DU==pE$#lZkMjuLYa4N8- > > > > ?uyEKB>^7}M0iX##x5sV0>| > > > > > > > > > > > zZ%f8<2UyTC#1X&Y@Ae#F8C|WuR_l!s6J+hu)3t7_Bb3!^lvL|h)z+oUg73~=+Hq > > > > %t > > > > > > > > > > > zzxax+s3$tU$fL3<^<cAX%8XBYWBSmJ;QeWWokbt!Q^;?F6i&r@7IX>)gm5baM > > > > D=rm > > > > > > > > > > > zR!gARP?RN?S&k%wUL!e(eMn}!rZWnY<OMd8$`>!pGD^2c@fIMQ!+vev2pgBI= > > > > }L{= > > > > > zGI$P8+BnG?P*YWN7Cn{4;$?)a7;oqzJ8j5i3@BN@- > > > > 2r&ZW5d^ftTcV^I~<nMZ|74r > > > > > > > > > > > z4Nz}%_Et$GmoxyYppA!$ZF6dEY~q>&v+u?7neSLgLF2r?Go+}6Na~w%x_5OD > > > > MRP#y > > > > > zx<vDz<VIHo4)mJMj}3YfHuik+J(QxC`AJArckW5fYjx`!9oYIQSnTLwYu- > > > > SYR%yp# > > > > > zx8+cP?mJo5X<kvB$w}ad3|81- > > > > ;(|z={y3gw1@t+IRa0g%+$nz3=UG{5m*v~hhpK9) > > > > > > > zS0|0Z_7qfdef;D^``z8BBewWOC1tVO_ce``s8#V4&ng$v89g}hO(cvYlS2ZT!nsjv > > > > > z{(<>dC- > > > > X`gy;m<Krvtltp0+*9=^k(i_A#?4@T4ZB_l(5b9P3aASm~B+2fBF@evzP~ > > > > > zyMi@-XmIp$F!<Bp8IACRTd=TW-_tCXg%KT#ZXujK- > > > > nmcl<0)*EZEf?45YKDpTx0`w > > > > > z8~yxw085D1veo42qdUL|@R8?(m^i`3SD4c@*ea- > > > > B=Td=u1jBsNMQFQv880yl&b)}m > > > > > > > > > > > zI&H5IpmhACHRHVM9SLH}&!XoWHdoc=>6`WJua_!{D<#JR4Rlw?Rrl>NzJjaQB| > > > > !+6 > > > > > zCg- > > > > > > dmdU!yc=R*`GM@Ys9$<KMW!omJaq^|1BXh0WoZ~c*+kQVP#My{%lgyodT*a > > > > ~AS > > > > > z4F`*9+-&)9@uC>X0IfR!vjLM!iX1L!!-x)>1C<e}T92CqQIW8iZma$- > > > > omU~(K8KxW > > > > > > > > > > > zh3Wyf6GNX4vv)FWhDB4+*sF&Xgu^55Y&#<ZYANJXUkQ#_LGy^w0Pp#_Qd1Vj > > > > 6MWnn > > > > > zx- > > > > > > 8jP8E*|Af%h}glpO2}v5^$VmxGvK?^EX>g9kz?CrQMUW`d$GAoEY=%SWK#EvZ > > > > 7M > > > > > zCIBm(6h<- > > > > gZOO9)qXwr50!%Rnx$dP7cyGNod@G+iI`x580UhbpfS$svDicPk^61h| > > > > > zVtFY)!p60(YSPS>- > > > > Sp%5F+t&nU%T2}W_qC@<zCHFE}+aZE7$fWY*PAvB5EwKyX|OX > > > > > > > > > > > zZT6!*zwU#Wim8fHQ2hl%bQ=3fJs`x7TnsrXBTTIdL~9<}#CSPR*qCX<2NGiG5X > > > > @ok > > > > > zKxsTpk!%Q3Kg2jUpy- > > > > O9;(KTdbgDJ6;scGYaF)0|5j)KC>kVVZm@tsPT$fZ|sC%|^ > > > > > zEp3;|{SJ9aFWMBU4t)pzYQw+Ou~%#(UI^- > > > > R_g4<b()Ng$eE#<G1_J=Tcu`CcLw=|i > > > > > z%(W()+_Z3V3}4pYWDZUOqS;YAc#u4j- > > > > N=95v2ZWoI@EAQeh3W{br!gG3T)y_!&<V{ > > > > > > > > > > > zvK=34k4d~*!Ul&RbhX7?q+6>NeVKlx<C+46{hpgGe_7%i?Itd5ESh1jz65TYU<B)6 > > > > > > > > > > > zT(gY^e<qlOg<h|JRBYp%qRMT_7|P>h|JkMrxdWKsYr{6+z>b9$uVZ)A?l9u5Cw( > > > > =l > > > > > > > > > > > zv!gB~*kX;A#1N8Cj4fPR!MLEUwXGm%r4>Ad`r*4Vt)%f`C2ewpa|`$M5%B`BM > > > > UZ=2 > > > > > z!-A=K?rk|78$~${rNUm}Z3H(kw1*- > > *fEAZr!IN2f{X*~K6>^$T)|@?!FIt||O3~Rc > > > > > > > > > > > zhA~UA1c=ELq!ZGDoet9`@h%;Ej_FmkN(~8r7Jh+t84f&)Korw>l60WBT&6aT@d > > > > -v? > > > > > > > > > > > zm2;jmw!>$N0vgjF7mNsl_nDja8A@YW8@!wYl~e4q;8#l<QsMfp{}Z#xX$m(J|JS > > > > 5U > > > > > z9NrwVzrIEkC^l8@BmPxZ*HgE3F7n5- > > > > Ncj!BoI_AyJsD~|g=`+k!oi7?aoWJH>kCbY > > > > > > > > > > > zQt*{>`kIUDupw3OJ)m&1U$!7ZNBJGdfC(e{^h1bs2hWa=ACI4@?GrNOP@&>t > > > > S}U!k > > > > > zECP-JIm- > > > > w7Q<wFa`47u(Ng%${2+TsSB3DJjQaEnpX^G#QC`x_$O#30(=IHDJKU{*E > > > > > > > > > > > znq2D!Ym%bl!@bUtk=L=Jz{iXJS8YqX_HZ>~epKAz;|Ug{j=46gw#fV9jm#=H2vBa > > > > F > > > > > > > > > > > zqc{VeZ9aJ*O|m(R$qV~<UD$Ra(Af(o@p*x@kC3nQm~)`gF07H6Fvnuk@kGM > > > > rT~U&k > > > > > z63%C~>q0HWFP-P- > > > > jXOK}kK%AvQFuPwVJ|_q1I**~ISx@6mv)jFu@9ScjpGp;_667o > > > > > z830i@PHE!H*EWW9DXClZ>WyakQp5)Cd5K$mk8<r%EMzSPO1~jUAY- > > > > R~K*W3(sPjhD > > > > > zVxxqqw7uKqcjNqR2LJImlNHHtF`z49(d37vOCS8{fQJ5OB_6b&I7- > > > > v>eAGhq3z#f1 > > > > > > > > > > > zbzEj}>%N~(@nsTk>Um>1<za^9C_g)2z5|Hf0aC&7O(9op_MM}qF70B#F>~y!r6 > > > > <Eu > > > > > > > > > > > zFJ)uQ+NV9~XYboORJ?;};8GLFN8p5X3yu=2jc?@ut%6*~108P?KmgK4(KXNvKy* > > > > pL > > > > > > > z!KVf>JP@j!sH8hKV);=S15yWfJ;N=NdgwugYx!YmrXm{I%&fK#TU~qH|A#I- > > > > +EImk > > > > > zpotaM0qAm*kA9VSUPJliV6>b$R`a29w=RLI$OA5((38Q_U- > > > > gp8_RqXAGDr*$6Yc<C > > > > > > > > > > > z!A1waJ_hCOLq4C$cd|81&4q@?@0Us`sWP_DQP8j6WB&i42!RWAzfG%<SZBu > > > > F&jbsw > > > > > > > > > > > zcV=sC<2*U)Zvx6&@HPHB7N9WZj^zAA#F%FC(v2MfoYnCX0cE0ops1{ry$ggR6 > > > > NA(M > > > > > > > > > > > z2^+ABiz4||_DBnt_g`NOAgys$^T??YrTCx*9#P7gsj_0wsgw%}Xqr<N{rdWWS!Z > > > > g- > > > > > > > > > > > z4H3qP8xIrMG3{_HBo`K3$qL!mbiXxmITj}Q)l(geS7|Y%c^d&SIuIL<81BIiw@DA > > > > 8 > > > > > z(|T*1(_W3_%- > > > > s1!Tv(Zw;o%;NU=NOK?F+(uv~UO5Jt(>ZsDe6<Q8=2Ov_9_>gm+$F > > > > > > > > > > > za=PD_ejXn3u=GHz!=3g65%;*%m5TnFjrTr2{7yPIC{>vXfpr&Gg{;#;sWSJ(HnZR^ > > > > > > > > > > > zP%n=w&xEgrDM*LrnO*hLBj!dEc|0|899IAuaAz?2JI#nH^vG?g7Q7VS0!wCo<Z > > > > O@^ > > > > > z0KlkE0xHh-H6e^BOp;Ma3_*%o2XMn!Ke~iklAM@k2SzZC`s>rM- > > > > 2nW4G!i@hv}9Ct > > > > > ztTN_#K~bl5i+0oZfV#D4EkU_y8{zv- > > > > hX`i~&TkhTx_KAAlZMXguacb$Fjxx~I@r=Z > > > > > > > > > > > z!;NFfic&3^+z5R!85}UuWhO;Z!ZZL394B?me49=eqOuTdHBR9N^pZ}Io)F9_a&P} > > > > e > > > > > > > > > > > zgn0*m<z+k1`T1D%?8}u2lQx2_4pWcD?*${(tPIM4x*LezJmObkESuVMX6#Av2{ > > > > @)q > > > > > > > > > > > z;%=G&^S5WtA0KNPuIXV?5iorWd9CAqQc9CGggH)_z|f}T&hTT}HJByBTw4uV& > > > > jUGO > > > > > > > > > > > zfaCO#+6fF2N1bE*vTX<ntB`4Z$oawb9h#`$Qkhrb`F#0x2$B;|F}n}#0G7yKJ)3G~ > > > > > > > > > > > zGmb;+#!8?Nu^=B8B}~6_koDD8@oQ0;8LxY8$1bzP8AJ7)q+0q1`mE7ui}P`G@` > > > > CKS > > > > > > > > > > > zAGrqxc(``};NHt^BcAj<@?US^gDtZwO|%L454il+QUjo2Eadr{=wMYx3%+4fL<M > > > > 8r > > > > > zCgthu_mBMfm0Q^Ou~pM>xd%f#Q$S4T0w{R^- > > > > Y(1I8*G={I$F4+ZH`)EHImR;^vulo > > > > > > > > > > > zqEsVwKrT_obLqcU^i)YhN2z>b>5DYGpEo^I_fD@eR5KjES*2j(i^*^&SAK0jogZL > > > > d > > > > > zJoBPN*F*ocb9&zRk?eQZ`|ljO8R|Sr@l&A2#1FN4$?- > > > > j*0040pa7_;kWC_KwXa5Q= > > > > > z@Jl<Qi2U@Wd4o7@R+h}pWQh7Yf;)%&B@-7nJ`- > > > > pAtx4aT(+#=;D6HH83+wW*((szd > > > > > ze*aj?o#`ShhNSL$KGT)e?==07c$=nVR+_2@j7p|_53UWk4- > > > > p<q_m!^m9KMJoar}XP > > > > > z@k8^U2UL?(EBk)#6yEAQ9WzT6y-e+D=3KHcJ4s13@F)e80xE{- > > > > LyIf+zYrt;J=3($ > > > > > zy=b|?FcP<^U*a1C4!G9G8Z`A<(0`- > > > > 5rbNgd!!PF>3VpnFG+GFsh#+<(#y@RjrT!NG > > > > > > > zp)J9QOI}6gdzgjC&|T5<0AA*gpSSj)kj608I{nqe!>FkP(W0L0QjS{FPf<*qrf95| > > > > > > > > > > > z_3?R<@yIi0yQi;SnprC>bm|r@Hait6ce$t0sY6q%CU(YfdKEX1ndOgp&H>?!J+u > > > > Tv > > > > > z_T$ns^dNh;hR}ivc2`(HlrR%NR}YWhuXxS0Cw20jCM<E;@7&)<6E?4- > > > > 2r%#G9248& > > > > > > > > > > > z#6snQt3jV<3;8Q9F3vYgB1LC%%ZPn>#)=Zr%GCX>A`>>euKfT$31(FegZ>YC))nll > > > > > zr7O;hktJmggtyk>XEX`D$=&X6I>LpwNFMPLGb`G#{)Z?&L+Dfq#- > > > > WXYFemoj*{|FR > > > > > zMK>|)y<Hq8Z!o5pqA0FvVtx%x9oUp-@-IL<YZ|4GW- > > gvK2CXJjg~uP4Fm%B- > > > > 0wOEy > > > > > z>)o*On|^rNdNqi6#-ylP;?MR%u}1`}NOh`nx9G^GfUxsGYrkSgoS*7xt$dJ- > > > > bmG`1 > > > > > > > > > > > zq9e&siyn=8E`=eRJG>G$8U>^t54w<Ui>jz>eUS9XZA3_8ueBvjk&Ce;0@%PgzU!- > > > > T > > > > > zawecNLK5|`Rw}A9eW5D8- > > > > SMIPpk6%f0G_g*2NN~bGLK4GxM%KLEp3cipF)r%cziR- > > > > > z?UR<B- > > > > y@PA%#hZ@A2C_#4_!xqUu`zx(HRI2ad)pAN1Y+fGTf7M52ef0<c;ddaZhzT > > > > > > > > > > > zC_Nho>dXp}tMw&EkEI(K?akLs4D<?eUOtNX+rmaoFky3z#;CL{D$Jp<#aTH)9w > > > > hMF > > > > > > > > > > > z;t@rqr(q}>k$5;MgM#vFBOM(KP}+30(<^IfD|;N$Hf|BeE)O=ovxGX=<<B$AZ}a; > > > > V > > > > > z$Rib^)uXhoC;=+7-e-sx3|KJt_9b@ZCSL^Itwf1LXy2Y-tvxli6`j+7j0P8v(r8DK > > > > > zv5C^AeOHat^{btzSvH)_T- > > UyHP3=R5`=uffP`~Y4LlViPGn@0nS46(lLl})yAAUYn > > > > > z@{5}YBdtMfl2&#vHI9=- > > > > fYsgieqAdo`od~$n%ifM1<v=21h=~xCNB*e4U&l?5(^my > > > > > zFsgM- > > jsErSWEYukS^0s${WHgJ)r9>Pdrr%`#S#>zw#pkeJSqxl<3}9YZ!+bPL018- > > > > > zL|CSXw=Jxd5|Jdv$2^^QEnG;igadkzVrjG{IsPX<y6t*y%clEIIPN1- > > s<Qm+b>YoB > > > > > > > > > > > zfK&XpJgYP(y?wH}QBYiTwPEg@vYnUI+3|6iONY#|7#;n%?^~~e3KQ@Vm(03(% > > > > x{&` > > > > > z?JlMf;H&F#- > > ^{UKR{l#LcCA`Ui|P7r>9f6Dgi&*<TD;JAb;J2(uHil|C?pWGgiRTb > > > > > ze%K2mqAW1b`G|haSJ9L;HgFoN`KkVT`~m(nT?j;nbDKeiF6- > > > > ;S@mRVGNqQv1JATd( > > > > > zk|y!Q7bMIPOXfH|e%4qG7lty)bmsKdc4~{CFkU`QoZ1(g>I&)M- > > > > n`$WKrOne+1*Iy > > > > > z;;on-O@4eBKt|r*U5j$PL{sy}X;8agm%wWJxJLJ3H8H2w9xL}+lAx5+`^J- > > ~*;PlD > > > > > > > > > > > zNEBK$y?ueKFmDfMaRHk75QLT0UkDYe`a4bYajq@*yEZMA>7vy15*(sgpxX9xk > > > > S<_b > > > > > zli3orj;~h#tF-9v&gQ8OqxW6T- > > }sAa$hxxEK+qQ{^ikk0P6<&7J5_;)$Crkr$hJMw > > > > > zmW9b{54MgeThpmSd|T^BNAFAVP;&)5ME!RFY;V}- > > > > 76P%Ziwdh5qHZcQ$ifuzLe|Eq > > > > > z4o+(j8-K8KU`}`H9o%%l_{ft)VHlHXa*k7kJvw&G<LG- > > > > dGM13zGiyy)gypmOYg5(j > > > > > > > zdFLMu&UsSfb|TOJ^g`<^RV2aPVlrA?^8xn!4dh2;6<4F+Mhm%={$r|k;4|rQ- > > > > vCM8 > > > > > > > > > > > zo^s?#hlC^jFnEtFMrq(#Wkn%;XG_OpoKa;T7V%d@{JvxQSAYHAPp~h3JDPsF*K > > > > E<- > > > > > > > > > > > zLY&zbZ~B|@;pUVb0~$u7rh30NfgB#!D4gd5IwlHGpeh|$+D_Po=KASOQ~A$;R > > > > BrYG > > > > > > > zrH;Ni8|ZS)y=)#*k&(Jz^kl1Pp^^$9zH(09rr)<|%9_U<sPsL#ojdt_;*{7_yU?$# > > > > > zHsi+rhU7NPo2-T*0<wIsr~lswS&aw-o4l- > > > > |F{svG2NhZV*siLZEK1JdNzm|?qS`CD > > > > > > > > > > > zHel+6UA6W4DtDhN1!$IkY(3f)+|{w^bZ<6eK)IVKAn~U0ra4qL4Zjdw1*o;IGxz@ > > > > I > > > > > zE1+&2B8Z8)yvlVG$SAKk(vXONX(+~^-1FXzG0GpvQOe- > > > > U6qnNFq;jyCV+yTeeIe?M > > > > > > > > > > > zF=ax^az!;(Xu=y1W4lajzkVj4Jw0rrkhO|zT`pTp)T0PWUl7}o804c_)wWNu>M)(< > > > > > > > > > > > zRfP!DM$#G8^^nzII^#Y91Lq)%_wBs@>jOjPYF}0w^Nz~Y{&Y$4YU(#qe7f+oINR > > > > %0 > > > > > zSneZe5EyK0r_Bkn`6XthG59f|Xo6i- > > > > FRL}URYdisz<{CaM6zg|r!KO?%wM2;ud7(O > > > > > > > > > > > z`aPW0(IzOpA8gG_a9lqzr&*EUhPTNSXva#4rR?$b4p1fe;=IM@q(aB=Z!vd|icT > > > > m} > > > > > zGpPUE{#SsKM;tGA5@~9og4;6@QNhN;_xvtc09- > > > > i{RkcWm=QxV#4=QOo$!Oo&57%&p > > > > > > > > > > > z;5H6xtC#a6@RIH0BwLOrK<kt47gWVC$?4D`N^VkJ9hnEFR?h+(XG<oVhLeH)yv > > > > t&O > > > > > zVhP%YJ>qd!{#3X- > > > > ES^d2SW*WfLq3MSUMYN@0anc&jB{JhPy4^7n#vy}enEjqrAEFf > > > > > > > > > > > z@2o#g`S$=uhs@SZJ4+CCl~9$CS9)YiiBZvUdHu?fR|B$d!jfs957AjP*l4u1Y43<m > > > > > > > > > > > zts;j9&7Sr%wK)}cqIR}m87;s8E6l#@u=eLem3~gSwJGQm@6g$9IrZTBv5fVlb(^r > > > > v > > > > > > > > > > > zbfa98pghse(AQ1jWwfsgSo@fj(bhtD5970DT`wo{?1cW51NqGhA(L5L*XB}}6D8 > > > > b_ > > > > > > > > > > > z|Ey&EaWnSu0)OoHzOeFb^KHJ2@Q63ij7Hh3FaeR8MX5^$752g}VhlYLP$>0Jn > > > > Dq14 > > > > > > > > > > > z*J`h~t*11n9~e(RHlxPXC?WpP3H56~Q)@kyDK$hEd_V&0I4H=5%>9Dx(nv}Aa{ > > > > _zG > > > > > z- > > > > > > ge40o9{8bjAT`l*?b9TT<mmOqzLjP6*7|GTs4f$PAYy_Sob(`rl6~XS*MW2mxUJ% > > > > > > > zRDL;<#P}IEu9TkKF*}*FJJCMtL?GirpZDi26FrHl8@Rq8Km|4meIi42QhTLtxjLeT > > > > > > > > > > > zbYtaGJthq(k@oyY@Djp_N9nh8#y`Ybe!^BB_s0I^7_4$#qDn!xhP(2i$JV(qITOp > > > > 9 > > > > > zqiioJFug}7!O_NMq#pugIX;83J?9^g%5->9J0*p`IQ6=jC&wtovz|OC2p^U- > > <2a}; > > > > > z@A|y{W&- > > > > ImypnJAD=1qL_$m>JR{vqs$Y>JCwI3wdBm852pI(`|Zt3YMpw1pVYh5-` > > > > > z85W<vB~$- > > > > U<WG>COBDIVZS+QOO}q$(TQ#Nzn+;_qKSjuf7Lql~0=#qZ@edc3Gqc6w > > > > > > > > > > > zuDOQuCqf!yLs3jl)SkQ_Ib>6(x83F)+CJVOU}ZPflTLdUhY58TyUP5Jnph|V8JT&$ > > > > > z0i}|KN97gmPgsbqeyl>!|HIdR%nl1D7z;7re_vb?e}4Epe!tJsl- > > +wy=_(ZkJg<DT > > > > > > > > > > > zEvEL4A@nTNj`u2D%c+U6GRm7sMUgfrmEU$uppRs#)bXY)X6JQIyX*1oY*GW} > > > > k<IF| > > > > > zaHNTenY}%}0>Ve_- > > 3}%b8Sv`foIqQrrT`Jps((eiB8}y(b9QWd`zJ*gt7u_b3)YqS > > > > > z?rft8TYK|738T20zTZ3BgyQdj<yF!!- > > +<;)C1L4!1c_^;4;S94pF!2d`qPc;WZ|Gm > > > > > > > > > > > z$=p?mdTXZi?WlOrNz?}Hn0kO+BcXq!w&!+3;C?@ulaBw^a$IrbvICn|4oZOjp7J > > > > @Q > > > > > z6PsD=TOH?YVJq7Ch;FwGx#V1npTHz!^HV!(nfI})F4E_bl>$(?srMvD2piEk- > > D}A% > > > > > z<j~7KBcje7v9yRgz`2d^!wHF@gh+a`g5J?Brxf-zvx0$7o%Pb2kw- > > > > cp4adkG{%$o& > > > > > > > > > > > z%dt$oANAhhUA5or11|lcp*|;ww*x8)3VP^z*kA6OpErN=0m))ADYTF@`CT)6la > > > > 8{? > > > > > z+f|ZWf991XRNc$TvQ|@weV=#ElM<i8=Qsn6Rr;}- > > > > n7EUSp2iVM<FUbMZw_i`22q@? > > > > > > > > > > > zs6kr|WS5Gg3(NEg_h1YzK}k#5M~9UYqs%eZ=H<yJ9V4^WrSohg!wRa?csHNr8 > > > > 9x&m > > > > > > > > > > > z{(ZLpi2xlAu@RCsm(4Sx`08)mNv&L8r%^9&=KXXiq!o0uc3c)s_3#dasg&~qSB{b > > > > V > > > > > z8g?eJR!y(dC;=%y-V>f<o<nsoO6GqeD%xHE#XYZHRHI(j7p+CCP- > > > > Ui*0n$KF#F=ub > > > > > > > > > > > zCA%k+Ua0Ux^ZzjSk7Pm<?^iY@oAz8#h_IvYeFI$QirdveGUY0{RKDaglnu=1pe( > > > > wB > > > > > z*40*Kn2|Lvni|*l96DD3|Fz|IIHPh>T($*^maO<uC)t6MZ+}Z|- > > }}*ULjzg&Ifvb) > > > > > > > > > > > zLrpme#6GUjiz)KUncK_9RK5TE3Hpgo)b5S<asRor(EVPDhSB*eVcNWZeHDMh2 > > > > Hc(A > > > > > > > > > > > z^P%@%9RB)C_C;*~yZ4HspGFI0Lk$XKdV!fb#%D{fU>^&ro^xH*#G(uFur6owz > > > > MXtg > > > > > zH^0Zh(t- > > > > EmiaBl>`Tcls+HJnZoyQ30vFByCb0O*`%L)nX5D4}#VfMp)J~NWKw40M$ > > > > > z46D6ToGO~*lIx|Qb75H3?+#X*QJ4HgOgj?bLnD}%eB&%k9(+&PNM- > > > > 6vy1)%G5g&Xm > > > > > > > > > > > zBX`D*Z}!UP+%JV68h}7!&Cyuz&u9V}7g4K{@atIECE=zaGy5se=l;E2KAxQQ7dY`s > > > > > zr3- > > > > > > FihZjNNS)Jd^rnQehLso_+hXq2zxeW8)=t8qkWCCMC<+zh+vXF5M*tI8tPmHQp > > > > > > > > > > > zcIF<>JxmNil^W1!9({@=N~PdvE&Wi)<0FQR5(FAm=R)N;VG|Ne61+HdUTm1sjn > > > > }z{ > > > > > > > > > > > z8d8p$uq*YdNAFH_9Oyf<DX1=yz4b+kSJ%<hu`MRZnK2M|$Wjau(<cw;r1U#JF > > > > <VIN > > > > > z;&6741o<3%PP@Ksaa4OB3)64J7cnWLei+@k8LxE27ubX- > > > > qS4?UH?hja^lyZXxwA;| > > > > > lp0r(+`K^)Y&AL5T(>;a;tp795|91lNzXsubc7WVX{~rvVe^USe > > > > > > > > > > literal 0 > > > > > HcmV?d00001 > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > new file mode 100644 > > > > > index 0000000000..5ef93461ee > > > > > --- /dev/null > > > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > @@ -0,0 +1,52 @@ > > > > > +## @file > > > > > > > > > > +# The default logo bitmap picture shown on setup screen. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > + > > > > > > > > > > +[Defines] > > > > > > > > > > + INF_VERSION = 0x00010005 > > > > > > > > > > + BASE_NAME = LogoDxe > > > > > > > > > > + FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 > > > > > > > > > > + MODULE_TYPE = DXE_DRIVER > > > > > > > > > > + VERSION_STRING = 1.0 > > > > > > > > > > + > > > > > > > > > > + ENTRY_POINT = InitializeLogo > > > > > > > > > > +# > > > > > > > > > > +# This flag specifies whether HII resource section is generated into PE > > > > image. > > > > > > > > > > +# > > > > > > > > > > + UEFI_HII_RESOURCE_SECTION = TRUE > > > > > > > > > > + > > > > > > > > > > +# > > > > > > > > > > +# The following information is for reference only and not required by > > the > > > > build tools. > > > > > > > > > > +# > > > > > > > > > > +# VALID_ARCHITECTURES = IA32 X64 > > > > > > > > > > +# > > > > > > > > > > + > > > > > > > > > > +[Sources] > > > > > > > > > > + Logo.bmp > > > > > > > > > > + Logo.c > > > > > > > > > > + Logo.idf > > > > > > > > > > + > > > > > > > > > > +[Packages] > > > > > > > > > > + MdePkg/MdePkg.dec > > > > > > > > > > + MdeModulePkg/MdeModulePkg.dec > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses] > > > > > > > > > > + UefiBootServicesTableLib > > > > > > > > > > + UefiDriverEntryPoint > > > > > > > > > > + DebugLib > > > > > > > > > > + > > > > > > > > > > +[Protocols] > > > > > > > > > > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > > > > > > > > > > + gEfiHiiImageExProtocolGuid ## CONSUMES > > > > > > > > > > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > > > > > > > > > > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > > > > > > > > > > + > > > > > > > > > > +[Depex] > > > > > > > > > > + gEfiHiiDatabaseProtocolGuid AND > > > > > > > > > > + gEfiHiiImageExProtocolGuid > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > new file mode 100644 > > > > > index 0000000000..1418eb2137 > > > > > --- /dev/null > > > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec > > > > > @@ -0,0 +1,31 @@ > > > > > +## @file > > > > > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > > > > > +# > > > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > > > +# for the build infrastructure. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > + > > > > > > > > > > +[Defines] > > > > > > > > > > + DEC_SPECIFICATION = 0x00010017 > > > > > > > > > > + PACKAGE_NAME = LogoFeaturePkg > > > > > > > > > > + PACKAGE_GUID = A1A87B33-C3E3-497B-978F-2FF7813FEB21 > > > > > > > > > > + PACKAGE_VERSION = 0.1 > > > > > > > > > > + > > > > > > > > > > +[Includes] > > > > > > > > > > + Include > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses] > > > > > > > > > > + > > > > > > > > > > +[Guids] > > > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, > > {0x99, > > > > 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} > > > > > > > > > > + > > > > > > > > > > +[PcdsFeatureFlag] > > > > > > > > > > + > > > > > > gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0 > > > > xA0000001 > > > > > > > > > > + > > > > > > gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA00000 > > > > 02 > > > > > > > > > > diff --git > > > > a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > > new file mode 100644 > > > > > index 0000000000..717e074c69 > > > > > --- /dev/null > > > > > +++ > > b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc > > > > > @@ -0,0 +1,37 @@ > > > > > +## @file > > > > > > > > > > +# This package provides advanced feature functionality for LOGO. > > > > > > > > > > +# This package should only depend on EDK II Core packages. > > > > > > > > > > +# > > > > > > > > > > +# The DEC files are used by the utilities that parse DSC and > > > > > > > > > > +# INF files to generate AutoGen.c and AutoGen.h files > > > > > > > > > > +# for the build infrastructure. > > > > > > > > > > +# > > > > > > > > > > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> > > > > > > > > > > +# > > > > > > > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > +# > > > > > > > > > > +## > > > > > > > > > > + > > > > > > > > > > +[Defines] > > > > > > > > > > + PLATFORM_NAME = LogoFeaturePkg > > > > > > > > > > + PLATFORM_GUID = 0618AB19-9507-4D6A-A0D7- > > 1F43D74736CF > > > > > > > > > > + PLATFORM_VERSION = 0.1 > > > > > > > > > > + DSC_SPECIFICATION = 0x00010005 > > > > > > > > > > + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) > > > > > > > > > > + SUPPORTED_ARCHITECTURES = IA32|X64 > > > > > > > > > > + BUILD_TARGETS = DEBUG|RELEASE|NOOPT > > > > > > > > > > + SKUID_IDENTIFIER = DEFAULT > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses] > > > > > > > > > > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf > > > > > > > > > > + > > > > > > BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRe > > > > pStr.inf > > > > > > > > > > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf > > > > > > > > > > + > > > > > > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo > > > > tServicesTableLib.inf > > > > > > > > > > + > > > > > > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP > > > > oint.inf > > > > > > > > > > + > > > > > > > > > > +[LibraryClasses.common.DXE_DRIVER] > > > > > > > > > > + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > > > > > > > > > > + > > > > > > > > > > +[Components] > > > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf > > > > > > > > > > + UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf > > > > > > > > > > diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > > b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > > new file mode 100644 > > > > > index 0000000000..092a055a2c > > > > > --- /dev/null > > > > > +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md > > > > > @@ -0,0 +1,129 @@ > > > > > +# Overview > > > > > > > > > > +* **Feature Name:** Logo > > > > > > > > > > +* **PI Phase(s) Supported:** DXE > > > > > > > > > > +* **SMM Required?** No > > > > > > > > > > + > > > > > > > > > > +## Purpose > > > > > > > > > > +This feature provides the Logo image and driver that produces > > > > EDKII_PLATFORM_LOGO_PROTOCOL: > > > > > > > > > > + > > > > > > > > > > +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides > > the > > > > image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses > > > > EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > > > > > JPEG file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > + > > > > > > > > > > +# High-Level Theory of Operation > > > > > > > > > > + > > > > > > > > > > +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide > > a > > > > logo picture shown on setup screen. > > > > > > > > > > + > > > > > > > > > > +The Logo file is built in HII package list as EFI resource, the driver uses > > > > EFI_HII_DATABASE_PROTOCOL > > > > > > > > > > +to the publish HII package list to HII Database and get images via > > > > EFI_HII_IMAGE_EX_PROTOCOL. > > > > > > > > > > + > > > > > > > > > > +## Firmware Volumes > > > > > > > > > > + > > > > > > > > > > +* PostMemory > > > > > > > > > > + > > > > > > > > > > +## Modules > > > > > > > > > > + > > > > > > > > > > +A bulleted list of the modules that make up the feature. > > > > > > > > > > + > > > > > > > > > > +* LogoDxe > > > > > > > > > > +* JpegLogoDxe > > > > > > > > > > + > > > > > > > > > > +## LogoDxe > > > > > > > > > > + > > > > > > > > > > +This driver provides a bitmap image via > > > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > + > > > > > > > > > > +## JpegLogoDxe > > > > > > > > > > + > > > > > > > > > > +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the > > jpeg > > > > data and provide a bitmap image via > > > > > > > > > > +EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > + > > > > > > > > > > +## Key Functions > > > > > > > > > > + > > > > > > > > > > +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which > > > > could be used by consumer such as > > > > > Edk2\MdeModulePkg\Library\BootLogoLib. > > > > > > > > > > + > > > > > > > > > > +## Configuration > > > > > > > > > > + > > > > > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > > > > > > > + TRUE: Enable logo feature > > > > > > > > > > + FALSE: Disable logo feature > > > > > > > > > > +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > > > > > > > > > + TRUE: Use jpeg logo > > > > > > > > > > + FALSE: Use bitmap logo > > > > > > > > > > + > > > > > > > > > > +## Data Flows > > > > > > > > > > + > > > > > > > > > > +Architecturally defined data structures and flows for the feature. > > > > > > > > > > + > > > > > > > > > > +### Data flows of LogoDxe > > > > > > > > > > + > > > > > > > > > > +```txt > > > > > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| > > > > > > > > > > +------------ ------------------ ---------------- > > > > > > > > > > + | | | > > > > > > > > > > + | |--bitmap image data->| > > > > > > > > > > + |<---bitmap data--|<-return bitmap data-| > > > > > > > > > > +``` > > > > > > > > > > + > > > > > > > > > > +### Data flows of JpegLogoDxe > > > > > > > > > > + > > > > > > > > > > +```txt > > > > > > > > > > +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | > > > > EFI_HII_IMAGE_DECODER_PROTOCOL | > > > > > > > > > > +------------ ------------------ ---------------- ---------------------------------- > > > > > > > > > > + | | | | > > > > > > > > > > + | |---Jpeg Image data-->|---------decode Jpeg------->| > > > > > > > > > > + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data- > > ---| > > > > > > > > > > +``` > > > > > > > > > > + > > > > > > > > > > +## Control Flows > > > > > > > > > > + > > > > > > > > > > +Consumer gets image from the logo driver via > > > > EDKII_PLATFORM_LOGO_PROTOCOL. > > > > > > > > > > + > > > > > > > > > > +## Build Flows > > > > > > > > > > + > > > > > > > > > > +No any special build flows is needed. > > > > > > > > > > + > > > > > > > > > > +## Test Point Results > > > > > > > > > > + > > > > > > > > > > +Not available. > > > > > > > > > > + > > > > > > > > > > +## Functional Exit Criteria > > > > > > > > > > + > > > > > > > > > > +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() > > return a > > > > default Intel logo. > > > > > > > > > > +* If using jpeg logo, a dex driver which produces > > > > EFI_HII_IMAGE_DECODER_PROTOCOL(name is > > > > > > > > > > +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode > > > > Jpeg data. > > > > > > > > > > + > > > > > > > > > > +## Feature Enabling Checklist > > > > > > > > > > + > > > > > > > > > > +### Option 1 > > > > > > > > > > + > > > > > > > > > > +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to > > > > enable the feature. > > > > > > > > > > + > > > > > > > > > > +```dsc > > > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable > > > > |TRUE > > > > > > > > > > + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable > > |FALSE > > > > > > > > > > + !include Include/AdvancedFeatures.dsc > > > > > > > > > > +``` > > > > > > > > > > + > > > > > > > > > > +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file > > > > > > > > > > + > > > > > > > > > > +```fdf > > > > > > > > > > +!include Include/PreMemory.fdf > > > > > > > > > > +!include Include/PostMemory.fdf > > > > > > > > > > +``` > > > > > > > > > > + > > > > > > > > > > +### Option 2 > > > > > > > > > > + > > > > > > > > > > +* To use bitmap logo, include > > > > "UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc > > file, > > > > and include > > > > > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform > > fdf > > > > file. > > > > > > > > > > + > > > > > > > > > > +* To use jpeg logo, include > > > > "UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform > > dsc > > > > file, and include > > > > > > > > > > +"INF UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in > > > > platform fdf file. > > > > > > > > > > + > > > > > > > > > > +## Performance Impact > > > > > > > > > > + > > > > > > > > > > +* LogoDxe > > > > > > > > > > + * EFI size: 180 KB > > > > > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): > > about > > > > 18 milliseconds > > > > > > > > > > + > > > > > > > > > > +* JpegLogoDxe > > > > > > > > > > + * EFI size: 13.6 KB > > > > > > > > > > + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): > > about > > > > 80 milliseconds > > > > > > > > > > -- > > > > > 2.24.0.windows.2 > > > > > > > > > > > > > > > -=-=-=-=-=-= > > > > > Groups.io Links: You receive all messages sent to this group. > > > > > > > > > > View/Reply Online (#56238): > > > > https://edk2.groups.io/g/devel/message/56238 > > > > > Mute This Topic: https://groups.io/mt/72533665/1712937 > > > > > Group Owner: devel+owner@edk2.groups.io > > > > > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com] > > > > > -=-=-=-=-=-= ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-03-25 8:04 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-03-25 2:43 [Patch V2] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers Heng Luo 2020-03-25 3:53 ` [edk2-devel] " Ni, Ray 2020-03-25 7:01 ` Heng Luo 2020-03-25 7:17 ` Ni, Ray 2020-03-25 7:53 ` Heng Luo 2020-03-25 8:04 ` Ni, Ray
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox