From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 6B31A740047 for ; Mon, 29 Jan 2024 10:37:23 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=XqHz9kMTMPxasAhuUkiyc0Ejb1urf9iRrV/jtn1JLeo=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1706524642; v=1; b=JmZhjRlE4fXUK2PYP1WOgyLW70u+Z/U3pG07Lls5SvebvK0l4oKuQVe6qKYXz8Y3f271omhM Ebd1LlzjAILlAETomW2z3LxYaGD3yLrbX3fpmBtNxEyWwXCRLD1yEed8VwZkq1AZHNCsVZkjb8G 1XEv/Wour5utsAihKe7Cs0Hc= X-Received: by 127.0.0.2 with SMTP id KHwyYY7687511xUHdHMAeqVn; Mon, 29 Jan 2024 02:37:22 -0800 X-Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.54]) by mx.groups.io with SMTP id smtpd.web11.11529.1706524640812022075 for ; Mon, 29 Jan 2024 02:37:21 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XuOrpFb/e9IRNj26J+SCHFGEJLtw/RHddVF+5fNzvmsRjc9oITT0sucHwqUxR5q9NyYhma4asiW1/RPd4Kb66sVy46Q+QpFTVH65/3CaJybKreYmTji/Bocy7fcJlJDvitH9WgKn8mlAAGOTDjLjKZnN7fwpNewQXPHNyX5i7JTHs1m0vBxtzmd0DhL6IRE6dtGRndhOTlWGfTd9aK2CotLXv34mSsyObNSujPM84fBaFfqUIDqopHLRv7qva8cIg6vdod7mjOZOmv7fV+7aQtBPdUa21q4Auk+AqBXWVrcC93GjDWuP1LJIN7NIGUz/yY8B8H0LwDmWh0KIUau/5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qA5zsF1x1jzfXUyhvhNvOpSNWfPUroo5ZGCSkUeSksI=; b=beHH5jkmNztG+pPobqMmltpcMkpSv7wwRY/bcHvLU3N0F2tplPJ+9YFVa8gXvkSmyy0hjTzUnhMWG4+GnTJbZKwQGxwxSzNBRI7xCbrqYN4LoJiFYxR80TtxGHPByWrZ+agZNsgbBtTBGqbR92wbwjoVArOpDGwHrlh18a+zAhAqp8NrRMuDutKHL/LCeinNVqVJFFNPdLcbfInMrBIC/mvHW4xE03dQBKSWID4p9GX+DNGLat1cEKuB8egHWvTjOlSXPmcPI1WtPXYyo76xssnOINW73pRWrt0IDHqQ+tf2pB7VBVaFBBmab2Zig9G7w5nY+BfvEYIbioe2jB4eHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com (2603:10b6:408:200::8) by PH7PR12MB9068.namprd12.prod.outlook.com (2603:10b6:510:1f4::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Mon, 29 Jan 2024 10:37:16 +0000 X-Received: from LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::67bd:f1b9:58a3:d2e6]) by LV8PR12MB9452.namprd12.prod.outlook.com ([fe80::67bd:f1b9:58a3:d2e6%7]) with mapi id 15.20.7228.029; Mon, 29 Jan 2024 10:37:16 +0000 From: "Chang, Abner via groups.io" To: "Zhai, MingXin (Duke)" , "devel@edk2.groups.io" CC: "Yao, Ken" , "Fu, Igniculus" Subject: Re: [edk2-devel] [PATCH V3 01/32] AMD/AmdPlatformPkg: Check in AMD S3 logo Thread-Topic: [PATCH V3 01/32] AMD/AmdPlatformPkg: Check in AMD S3 logo Thread-Index: AQHaUFk+6nzm55l300aN8mYvOz2r17DwnWjQ Date: Mon, 29 Jan 2024 10:37:15 +0000 Message-ID: References: <20240126131125.1881-1-duke.zhai@amd.com> <20240126131125.1881-2-duke.zhai@amd.com> In-Reply-To: <20240126131125.1881-2-duke.zhai@amd.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=e8f9cbda-7558-4cce-a864-0748bf0442ba;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-01-29T10:36:44Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV8PR12MB9452:EE_|PH7PR12MB9068:EE_ x-ms-office365-filtering-correlation-id: c99eab39-0ced-4d88-0bab-08dc20b642ff x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: sJtYUDNW+Pm2+lT107/tzFCpCnHIaudAj8ZuFsNE3kbudCP9NG6XCoBcButWEhs7lx6GGkwXYAY5JfiYI6gjpsoH2/3s+ndJD6vuh5+JA5c338mfeuQVt6AelvrwV2urM9vOgWc1wyVBosV5Op198kag0EnKkcMQXGAmbcZCSvDZs7O7eCRNR02mX6U3GKZvTCz+A7rObBaJ7vly8JY4bwbzQdzeLoa8yDhvQg+1XExHxlkx909HyslLXDMdt1+F4h7CePwe6qiMDOUTqS8/9+209Voj5pSfj95WfDBiliQbTTVQhobq96Fz500FR+MhalAn+5EBxcds2eSVCUaYKagdx2n4a3TqIZcFMEBZ6zl5L2xCmW1ResGsEPOyWy31V5zn2ty42r55O1Nnea1/SOKdkguZ+wtQFjYtdjDwefahBMl65Zl+nex8qD5U/RZW0G81DOb6yNNGI/d+9b73W/HgigiTZv0qT3KT1SPZIPdy3mTM+6fft1p2/TrTa63Sc1khYmi6ajfMR/bZ7gwdp/WI1CYuiWWnJatWTZWuRGbrg5KfF6LwPXWKv3gN6oX1ZciZO7OdlHbkdy7L4TrI7JGAW+CLkh9VSB7NlR/suhMU6kSwtvcZyzStyLFlUS7NfFKZXE/8b+uwpnyu19T0Hg== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?sJrzbreaE6BS0OJZUe+b3PmuE3JaAALyVWwuyRSqPovyKCU+fdpcmDKL0Wq1?= =?us-ascii?Q?3UazA8YqNy1eTicuiFWu4UxLYBvgMJChlqRbggDG3k1AExxG/nh4LYV9CrC4?= =?us-ascii?Q?8HMglMPa6n5wtvS2gv4+w2c9unzLX7gQU7XOeBfSKW+mYZEZW0W5RCugtQEg?= =?us-ascii?Q?W6Z+FvIv/516VUBJ2Ur+dP0APxt6aSu/LM8q+d/C1/noFsStyH0bgAHOWgSV?= =?us-ascii?Q?+Dif848cJLhIv1tm/ArOMCoF2yshex5LiEFaGpyauFala5W9rK/uy180D0se?= =?us-ascii?Q?H1jq07g/e3cRfNz8oHG43Acmp8A/+wjJyJFOxnPdq0dvkXYddN7uS25qufaA?= =?us-ascii?Q?eCYCLuDw/zPBpY44Juot/6kUJ1bUDtCz4DeZjGmaLMzxpIuMao2GPYg3qL1g?= =?us-ascii?Q?S74dJ5sCekLjaJI7b+Mme0FN5GDbVYMorcjuw3MNjFfcIdEWaUBeciemGYAX?= =?us-ascii?Q?fD1zOLo7susdHSCkE3SaLp4b8e9wD4K2K8J6/XSHoYv1Kx3lBq6QLr7ROGxT?= =?us-ascii?Q?3IqJDj5aYP6MxH+GPSOqoAYYtJn0rsKdewMqU5AerYbIJEjWtbzJZZDAnxse?= =?us-ascii?Q?ZO50LHvMBARusARo2lr2kSH9Cpvlo5ACjU/LJWKcjQ39bjrzHw2rYPsm132Z?= =?us-ascii?Q?TuzltzDIIievhtPyjvEHyavotLPaKY3zIkhMCyUf4QJUnk/RcNmiXdELdqyS?= =?us-ascii?Q?/7TqooSzL0pxhbmwa1HXEEZ0C6X9iQwLF/M6/gDWrqVWkSkLgicgB4vz5MVV?= =?us-ascii?Q?z2sVE1iQ+xRUx8sItUX6PcUNAqb3FsUKY1tcQiOi3a98C4Vylh2/XcexDrFq?= =?us-ascii?Q?zsIGJoebnhQmiLpPuS/ltSI5TVSXlTcJhLiVJX9SXy/0eTCc69SaSYqlE0Ez?= =?us-ascii?Q?iNJ5jxaZFvw+hyW8K1W3InK1b/HnbrurEQFKccyvdMfv6zGwLRc5cGbx7tC3?= =?us-ascii?Q?eyc2/An5KrFku3i3f2kJk4PyNzdJX83zZEcVOzjpyT6FJJTP7zThmc0wLpNm?= =?us-ascii?Q?cbqvTFdaWNB8NYHFgYHlzH7IzkmZ8VMeTQAlgUitOFVc2pYKsfHKyF4ZiE85?= =?us-ascii?Q?0Ns+1UrEhVRB49c1xvNcPsA4r1+ctzYonMfNtYmDWucSfrZzMrVbFyxG3fVW?= =?us-ascii?Q?4C0XRzKqTN3xJjCg8a0S+wgOCSx17COtTU9YeAWLvFalkxl3PrJtXar+4Mqt?= =?us-ascii?Q?qRVknQv6NP2vBNXXwe9+G115koSgn+GJUY48dGsq/7ymlwMQ1W1cPJ3BI4oD?= =?us-ascii?Q?54pTg548cT2CKDyWzwcftxIx6808rh2s1rd1Zyv+hvQcGM0f9o/fT04Efd+p?= =?us-ascii?Q?0GggaYJbsRFnyR+3M6TxNW04fnTRuTI+yHoKkpDPmm1SnbBlDbJAT6305ObQ?= =?us-ascii?Q?SF0F4HOFL74Z04UKSKDH4JUlIRokinTiEjge8/yHXrPQs287QEC2puQcgXsg?= =?us-ascii?Q?2IIlN4sCEeVwU87xGfavmjH0t4IYcVVHATQdAg6ZqOq39TPeznDciKBn7ALw?= =?us-ascii?Q?9NI3f85COfCa3AxacQZv1hPZrwLMimlyRCSXEk65yNMcyNrRCP49SkVDBlla?= =?us-ascii?Q?KmWHK9cVjL7Cf9K4Q2A=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9452.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c99eab39-0ced-4d88-0bab-08dc20b642ff X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jan 2024 10:37:15.9596 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Yzt1EJJZXreOOYA3rK2Dro5BsaU9sOfsQDNU8SAG4JgPgrchtJwg3nS27vuHaRJq4KU1fNd2sUr2J2RzaTu34g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9068 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: NBElpmt8W2r3DQzAFAY0OhEcx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=JmZhjRlE; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") [AMD Official Use Only - General] Hi Duke, The entire series is merged. Thanks Abner > -----Original Message----- > From: Zhai, MingXin (Duke) > Sent: Friday, January 26, 2024 9:11 PM > To: devel@edk2.groups.io > Cc: Zhai, MingXin (Duke) ; Yao, Ken > ; Fu, Igniculus ; Chang, Abner > > Subject: [PATCH V3 01/32] AMD/AmdPlatformPkg: Check in AMD S3 logo > > From: Duke Zhai > > BZ #:4640 > In V2: Improve coding style > 1.Remove the leading underscore and use double underscore at trailing i= n C > header files. > 2.Remove old tianocore licenses and redundant license description. > 3.Improve coding style. For example: remove space between @param. > > In V1: > LogoDxe module displays boot logo. > S3LogoDxe module is based on EDK2 LogoDxe module and update AMD S3 > logo. > > Signed-off-by: Eric Xing > Cc: Duke Zhai > Cc: Ken Yao > Cc: Igniculus Fu > Cc: Abner Chang > --- > .../AmdPlatformPkg/Universal/LogoDxe/Logo.c | 198 > ++++++++++++++++++ > .../Universal/LogoDxe/S3Logo.bmp | Bin 0 -> 964114 bytes > .../Universal/LogoDxe/S3Logo.idf | 9 + > .../Universal/LogoDxe/S3LogoDxe.inf | 55 +++++ > 4 files changed, 262 insertions(+) > create mode 100644 > Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/Logo.c > create mode 100644 > Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.bmp > create mode 100644 > Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.idf > create mode 100644 > Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3LogoDxe.inf > > diff --git a/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/Logo.c > b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/Logo.c > new file mode 100644 > index 0000000000..4463ba58eb > --- /dev/null > +++ b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/Logo.c > @@ -0,0 +1,198 @@ > +/** > + Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > +**/ > + > +/** @file > + Logo DXE Driver, install Edk2 Platform Logo protocol. > + > + Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.
> + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "Logo.h" > + > +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; > +EFI_HII_HANDLE mHiiHandle; > +LOGO_ENTRY mLogos[] =3D { > + { > + IMAGE_TOKEN (IMG_LOGO), > + EdkiiPlatformLogoDisplayAttributeCenter, > + 0, > + 0 > + } > +}; > + > +/** > + Load a platform logo image and return its data and attributes. > + > + @param[in] This The pointer to this protocol instanc= e. > + @param[in, out] Instance The visible image instance is found. > + @param[out] Image Points to the image. > + @param[out] Attribute The display attributes of the image = returned. > + @param[out] OffsetX The X offset of the image regarding = the > Attribute. > + @param[out] 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. > + @retval EFI_INVALID_PARAMETER One of the given input parameters are > incorrect > +**/ > +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 =3D=3D NULL) || (Image =3D=3D NULL) || > + (Attribute =3D=3D NULL) || (OffsetX =3D=3D NULL) || (OffsetY =3D= =3D NULL)) > + { > + return EFI_INVALID_PARAMETER; > + } > + > + Current =3D *Instance; > + if (Current >=3D ARRAY_SIZE (mLogos)) { > + return EFI_NOT_FOUND; > + } > + > + (*Instance)++; // Advance to next logo. > + *Attribute =3D mLogos[Current].Attribute; > + *OffsetX =3D mLogos[Current].OffsetX; > + *OffsetY =3D mLogos[Current].OffsetY; > + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, > mLogos[Current].ImageId, Image); > +} > + > +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo =3D { > + GetImage > +}; > + > +// AMD_EDKII_OVERRIDE START > + > +/** > + After console ready before boot option event callback > + > + @param[in] Event The Event this notify function registered to. > + @param[in] Context Pointer to the context data registered to the Ev= ent. > +**/ > +VOID > +EFIAPI > +LogoDxeDisplayEventCallback ( > + IN EFI_EVENT Event, > + IN VOID *Context > + ) > +{ > + DEBUG ((DEBUG_INFO, "AMD logo is displaying.\n")); > + > + BootLogoEnableLogo (); > + gBS->CloseEvent (Event); > +} > + > +/** > + 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 im= age. > + @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; > + EFI_EVENT AfterConsoleReadyBeforeBootOptionEvent; > + > + Status =3D gBS->LocateProtocol ( > + &gEfiHiiDatabaseProtocolGuid, > + NULL, > + (VOID **)&HiiDatabase > + ); > + ASSERT_EFI_ERROR (Status); > + > + Status =3D gBS->LocateProtocol ( > + &gEfiHiiImageExProtocolGuid, > + NULL, > + (VOID **)&mHiiImageEx > + ); > + ASSERT_EFI_ERROR (Status); > + > + // > + // Retrieve HII package list from ImageHandle > + // > + Status =3D 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 =3D HiiDatabase->NewPackageList ( > + HiiDatabase, > + PackageList, > + NULL, > + &mHiiHandle > + ); > + if (!EFI_ERROR (Status)) { > + Handle =3D NULL; > + Status =3D gBS->InstallMultipleProtocolInterfaces ( > + &Handle, > + &gEdkiiPlatformLogoProtocolGuid, > + &mPlatformLogo, > + NULL > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Install protocol failed.\n")); > + return Status; > + } > + } > + > + // > + // Create AfterConsoleReadyBeforeBootOption event callback > + // > + Status =3D gBS->CreateEventEx ( > + EVT_NOTIFY_SIGNAL, > + TPL_CALLBACK, > + LogoDxeDisplayEventCallback, > + NULL, > + (EFI_GUID *)PcdGetPtr (PcdAmdDisplayLogoEventGuid), > + &AfterConsoleReadyBeforeBootOptionEvent > + ); > + ASSERT_EFI_ERROR (Status); > + return Status; > +} > diff --git a/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.bmp > b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.bmp > new file mode 100644 > index > 0000000000000000000000000000000000000000..137f4dcebe4ebd77d5 > 0f35ed3b31bf76c0f5f55d > GIT binary patch > literal 964114 > zcmeI*zjE`um)LP- > CmE~SVz0nu`pl&EZ0BMdw`zPTz7I7nJn7S z@E(#P2?7V_fFLD{^4IUnM +wK1U > zKkat^Ww&qV|KorE^X~u3N19>!_qN- > ~|GT%h?nVBU(cS0g=3DkD_#pSyqmfB$Q@dwi1N > zRR($E@m+>b8NPPAr=3D1LsGRVl&s|;^4yvy(@!`E*2x|88ih9? Ti > zD6da4yvpz +zl;KH+R~g=3D9c$eW*hA+wFPKHMro@98H;Z25j89rtB > z+U?~3-PfZGPcpp9@Fv5%44*Q5?Vfg$&E2C6&3~^lyvgt`!>0^i- > KIT0%IlL1uQI&J > z@Girr3}4-5KRwFplMJsiyvgt`!>0^i9m(sXygteBD#M!$?=3DpPK@YQj>J<98o46ic0 > z$?z`2rwm^m<@=3D+&KFRPZ!yr > $x > zGQ7#~F2kn`U%NNi{ ML)fL;* > zqr5)J@G8Tb4DT|0%J9_{>FcAsKFRPZ!bH$GQ7+1DZ > ^J+ > z72Y4^^+|?T8Qx@gm*G=3D}udbSWKFaHp46ic0$?z`2rwm_h6?*%6l- > DO2US)Wb;a!GL > z8NPO(vi+aCM;V@Ec$MKzhIbj7|Gv7a_4p{SPcpp9@Fv5%44*Q5b=3DB_aQC^> > 9c$MKz > zhIbi0W%%l< s}v > z3~w^L%kU|~S69tHALaE)hF2NhWO(2G`+xlGKIC(6vcBE!r~QBT^V5vUApbS9nt > %91 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKw!SW4}S=3Dh3CyotEP=3Dos3Y0Y$K83)~9oBv}34!?n!~z5g1?E>SmO$VR1q > #~> > zA4A{{Yd@QWz k > znjhxeh`=3DgE%t{al1YQoa|9&etjk!+R by > z)u36kvZy(p*3D5xkslr^9HXsZ@)80Sg~=3Diam;yCzea#T{{B34We{ G > z^>ydIR6$NRgsJrfu3HO8?J > o$_ > zHTBhk=3DEu+Cn0cx>x?jI&Ij6aPz*}LB>lZX@{ObaBG4r%i(3Ft5IA-3!k$F>zo*!0d > z;jCh9fxq6q+5Ytf>SE^4Izh7unM- > 5l=3D~pkA2L(b$bM1Jy#`=3DN+VibW@1S(_Z&l(qA > zj%}l;*o?3-- > Nf0 zE}e(vawFq&O7Lbr`(pmBkxeUs!>t^- > sT+E*vYvVGdEHAM)iLwuXW@y&bI4qJY<^T_ > ze_ z{~&8Tyr}D(TVM-f=3DCZ@{L!a{89Lwj!Rzb`RH5iWsDr(p7FJhnOS=3Dd);HqX3Xc{)r4 > z_CNVhw75t5(5yR2pqcR#W#gQuLsY&qCfm)}KS<=3D9Y~TEeK61@S`}|Sass- > _CtQPb0 > zOw62LTFaL>?f3f!`IG&%^a8$RY`?FsJzjoJl3bUXq$kNW3GSPwH1n^bcHO`t=3D4q > a3 > zH?StRFDBxCx=3DM?DY4kCJx4QBLG4s69Qi&eEkLt>&8=3DjrAL`>P{O?_98O)Gd~44 > E98 > zyUf4+fs-8AG{- > gJX(5@Azn8 zPLc22s@wTdKh`STX$e&TTOD3Ctl8n- > +^*owrjmWA>o3^`OC(4nGg=3D!o!><~a zn41NC-Ds@~C)4wp- > ?JZo(k&qUxT;Ro>1ZZ+G z_ewoZNljK67DS(16EB;;Hsz1<^ul#*XWV`aL=3D@C!Z 5f@ > z3SJ*JEs>z<xSuI?duZ}=3DMw- > gk#)gBOB7Z3FS4nL*lG)9_u)nvDVY)mX > z P{Z5 > zuY!zO+o|>g*Xd`Tx81LD>LyqsIn{9fetN=3DKO(UK;37PjDGp!(I#5ai! zO%GvQEE7pvs8iDUBey`VCkzNh`mxXz5z(&IcFoAiz)>5a>6YRo=3D > u > zr$&?V?Xv>a&riH^t57!{GbNDKJb2d<31ees{PeSrjoq?)nU 9X > z8}Yis(e{Y+rJx@dA5}$gvts7{drrAFaZJLPJbt;ZKFv!_!haX03!-#nu$f8IG42Y^ > z+p6GNLfDYbZ5zS#zKF8=3Dv=3D^SK#fZ!(7~H%p6sQe%!(9SFI > N_ > zPx{SqW2VxvCY#dvtBIO(BW9a;6Q(6fdnRc{w=3Du`OOmkYa4d$wUlJ;aph c) > z9V}ZSVQ4bO=3DLOBEm$~@+=3D1CbZs!t0Rj`szNZ~71N(gmd5i+zZ`R?L*+ h > zM9sNXYF_;bvLop|?+(+Wmbjh |%@Ujf=3DDVbChh z`OKlR%&YO1$gs- > HNWbiyO8?yM<@zO?75lKsC&K*viI~|4_yK99nE9}vMap?tiDF^# > zhGnIVS9EEE`XIMIJ)2$4;IrErwW7(Q2iV$IfYS3xR$<;t%>4P8^Lt{Jh*rhbc@M>Q > zUC5lQq@pT^%m0~}DNYh0tZvmRF>_fA>n=3Djg=3DxWwnLkw$7bI)l1E!?nL^yA@Y > H#KhG > zqFLPF(rq?_u~LPs2(cg=3DUB;};T(O_|BO6(MaAk?~_0E4S4Vp^Gq@S5qYimw&Ze > uJR > zrNW16D!K-=3D 7;aHNe#qYu(0^oeul6ByeNW+~i4WO7 z@w ~lN&#? > zwK4NjO>%X+c ?q*G*>L > z2QGOHXp)m`fLI D > zUoo@v`IeSQ7@FMif}W-tGU;dLD|qIe+%;9FA^FGV1!b7Yk}}&rsk!XISkok@- > ;)?? > z>- > 1Bbn#!MWkj+c4)s$_UeY3o_Rx3i>SUXGT~ > @x > z%q%@CJ Y`kOK3lUtdUX)oRO)gGK%7hQhT3S>oyyNj98 > zvqSZ&Vu?&^pF5@Pq=3DH0qRUr6C>1dc0^Vqz(#d@v3{mDLZz1p$)ZkLHhYLy>N > -F_x9 > zbHuuVG4n9G^5I720l(hMvLeJC#ms&)3wB2RN5e2wJ8lNe?zS)`xr*8uX3&b6* > |S{X > z3TBL(2a{KfnLGVN{=3D%4P?-DAC$-Hq=3Du2U{ OyaerE3K0 > z- > 91W^9h%JI60|l^&5a%Ohm0*4@sEBik=3DY3w<(R*dHe0^=3DH^Ph^@*m5DmT>9 > 0<7zo} > zIk;xb)Vqw!V&*!x{e-2FiiF&2T{9n2R73Re?gmH9bC25P8h;zj=3DB{_KtVQlIX6n7| > zkk%3jYk1jsHfS2R9f!Fo91k;N^fUFy5- > vP@+}H`F5hANmxS7VsRL?~*bN!Gh_qSW! > z2!qntaN{jCHRJO)|CV`huH6>oZjl* Xlf > zoqiz9m=3D!Zu-Z)9tXy|E^y zx%L}XF}so0J}mcGPOA~!R?Ivd(?9uzHu+hUd5_!jj({wYFfoHoZ%)<(^1)P6l > zSXM@in7K3W)(BTpJZ@CftHw3@&9Q=3D3G{&1^Zx vwH4;@~ > zjPdE)f6F|1=3Daja#b>{kVw=3DY=3D{; %b > zEjGzc*+h_@TuI3O=3D~o59h3Af+jL>r3n5lI%omQkR(gR%L$h<8}C5*Lc7F__62XZ > z) > z)Fyw;Zv+|VlF!vfsc2;t>Q+Bx_6wVzn49_67q|ABt36hP*h pe > zOGJ}(=3DcPf@I6!OGR#9KwOkC^(2Ih5RrgnWRSL@HhM$AkLt)f)aMU*hs7EVDo > ^EvwY > zih>7rr4d@q)MjSpE_1KmYNbqaRohByOEI%4^s;CB3x;*{x^m2HeB- > kLPRJx?*0o^e > zd`ErE%(a)gtWB2EJNy3GOu4nT4X)uo?lYIt2tCQm<|gc`Kq1ZI@ob6QQ_Pg8=3D{ > ~u; > zl{A}@B{HuZ+BLO7b8-;nh0MPjGhgKVbo6&@&fQ7NF4%u7&B-iiS!o)C&L!- > ezZpY~ > zoEJJaS(bdZ*(}JX{?mePkj~s%>mAZ32eV_|H#wGU&%8D{ 5+P+B` > z>DOYNlFe>Hzi|8de6$kn#jFZyiS*0QeGN~JW$J#g%E< |crZ > zEBxi7Bm{AL!2CoB*mVsHqKY#liPrkHE(N% > R!1&V > z<@FnlM9Yd01;uZBr iDKEhKd#M2Ro@*K > zzV_IqV`jHK1!wN$3zW&W*T&4EZl?0fJMznvYVkxfm3HBE7maFTlz^n09Gpja+ > 1zCI > z*dQtWWi#@1z=3D{ytjG6M3YN?afc8R6YX?2!t3*t2M>fFOa- > y2B#UTMizRO56d*P3Ir > z*mPT+?wi$z(C^urP$gX|{Sgb}GTCEuC!ft4w6lw1UKHGwj;51hN;#Hqe7bzxzIH > 4Q > z(9zqQn@snNBgL9y`4X`r#8zWw$wRU8{Q*nlTqe>mX8)b*rWF?Y60fMn{i4@ > @y;jWh > zk6w3aD5~sd=3DDQd}(d7Gm`+Q>?mX70?yK!cqFp5A@jIW#znb_!va@zV5wce;Y > R)pAW > z%q$3+`HrR~(icuav&huQv@g`Jb9~J#YRw)OzV?{WVAIZ#<7V$rvez+tnB*|Dwx > 8)_ > zQ_?ejJEG({t;y*lqlGqGmu^{D%r?w1s?fdGW?z#XPH3^(xKXbo&`FZpjhXiMdfSc > 6 > zp3$^KdLF+~jR%(PCZv@~gCaY9k%*xZgmO;Tx(HiY > +2 > zBP0pucj4`p#eKyvH5tzzG|AGjO1r`>|5MWKh=3D3|4v+>~`uK{({!M&j;+tx1|GfN7 > * > zqC!_xij@}0I?5@(q(|WFYwUie`-SZEsI4w$IswcJnF8x=3Dr > zyKZcek`@{h&7HRDfR+A+` vM!M+r > zI7x9jVMT~d$4uqUlPO{@?pY%J8gk1{ZM7+4rlxY9=3DfuqHm)XvX$2}^!ifvcnbb+ > >j > zt@hF+mG+ `Ms#L > zCflK&FR(PM- > m;n(XLpo)M5!gxZvip0m$2ek8e1GUFJ?MbV5MVoC(xz`)`P`3Vw|yP > z>uMCOofvDiBS~}K(rR1T)=3DbA^EQabav;3?GvGJIhHlZn@8nx{+y!{HCwr|wH8|- > JE > z9=3D^- > |)T(OKuGM3va}Q8@2 N > z%3CEDQb(SOF}pnKW2QX0^1HuNJA Is&wp1jGvkn!X&RHn > z!&rLtm}yt# ztq5WEGrL%CuiUC#SBRO;6LvEP=3Daxuc0(TWNi#JBCs@IH}c4*n9dt4{Tsxi|!(p4gJ > zUn|1bd288!91rb-gw-ZDjjv%U?YNgz)GJH(h1;9+;C;_8L7F#14Ne1- > 6(Q6DJTKXw > z#5S7DPJe*QIrnO|(po=3Dms~w()4GKq`%BF9hCDP}nILw5(X~&%`wFx8(`7`>A)w > ~vO > zjN0EZD!}UfOs5J&!9gr)Vy2Tw+-=3DK=3D8!l~eCjE)#VI=3D##d?{BB-{d(-K@5#LigAiw > zO3~teWxD-O9AblYr!&2&- > o=3DU#dQ54T9GZ`L|87z*f=3D# zD=3D~ARNJqS;;6#TgI7ngD#7rj z^R^;HK4u0L$2v0j^_ZFVJVHagbyy<((hh1G4Td?_ikYX9&FD6#cw>egWzW#O> > WJ<3 > zuHMhocXESmTHR`5ro-XI^}*&a jQgXDX=3D4NX%*V0pYomx}*EV!_C > z8bLGsSe(17^fT2na6?Y?E_g|>aoUwp1Fsb`hmCYc%p-- > #mi%_ibi#v@J*V~uyZ(X6 > zc}kGqKkV1!)RE%Y+pkZ3t#}~Fq)4|qp_KLLQ}EO=3DvymI!fY!@eINQ&h{?>fHD*t- > S > zG|#AJo}y`q^yT8T2csrlFJ{UuMA0+P^~qzlnB&b*E2>e!R_ w > zzIwE;222C1Vop}zPwc K|bp#juxO<#hhcM(&|n3+HN2{8W}~?XWgX > z&DhG > V_r > zN1(KB^mA5QQNP0I_4H7-w~I@yzWi@#NvmNSN51Dx=3D&xW$q}`- > <5wPaiym=3D1RG}Pvr > z!tcjS``}#7_j5teR2M9&QdU{_C0Mkg>4*A7yVujt1tMmqYjmxc>4i+S<5tnnbXr > Ut > zfu```l-F{t#u2VZ9WVX452+<__j_7#wmM}tY@<$g+iTjZJ*m)X8vLf^qxV#jr>&lT > zaz{;8)~?gfv=3D7ep_MvrHrZE0 Lb > zdQj_2n0IYgR}nLvES8ktxw1HIPs?vq&Gbn*>2lDUX2>y&$LS1jY Dz > z8F2Nh93j^1n3*;N$!%tzdIK>t-phuxKN+56uP|AtnQ$6b2po- > zpKbifdOrh?&mr#%ik5LhveySu>+m4U- > ZtkG@4%W0I2z;hP&C > zw@%~P4-`$i- > UDwl;y0ezF;lNJdN<$(VrIVUB0RbMksCC9*IaG9M$FW^&$%20^WBGz > zPAXS7v1ZInf2;R+kbApJI#uefyypJQ^?HYfOk+MfX14o|5{sZjl@ltHcQ-s?+_idg > z=3D#53aD${_?jhVTUR`0C6ftYD_!?Qm>=3D>^T3j+vQGe?jxGW2RnJjOv- > jF~^OVsqB=3D7 > zS;Wjq70yMX#w*tu>Q- > QOQH}cCC$BezuAG#8TK zSLkQv@BNB16Hhx^J+$6%#HeGlV`iM68PodV&-`O^Z---5>5xUn4Vh- > cN@~Km#^$1r > z(jI-G1jb)v8=3Do+HL*^Nlgk)sSon@Sm%!`>;qf)YIRWS9ejI{@-JmR$SV4U}`ua9aw > zhzV 0 > z^qIh<^?363mM5&1ZP}Z_)>^Q~((77RiphR0Z3IDaD_@|nw(43j)7q*0C~>}rX? > oOI > zoSTlB^_jDFi9tzEMpulPJ^lRG+~H3}%uFi%G&fe2p18P=3DXe*7G`&n1Xr@2kOY% > W=3Dh > zKe5?q3(zWf>!99>2m@3$EQoGWea!gtvrodHRl$- > EH(9zsKhqSl!b_&>(l!ihxq((4 > zxk5kF*b%5%8fR`bX68bscS1k8rYyV3q|%Q(GNvpMMapr~xv4$v0gj6fV{%At > XK0eU > zbV5la{m@qDSeJ5)7HTbKp9noe&54<2_>p2xPNdy@%rrVla>6NZW0Z(f0g0Io > P{rHo > zeWPvInI8e2KzH4kS@hjV6HMvln4jO&n^ru^A7fknva$;m`M8kuGmRK>- > Y>=3D>=3DoVt8 > z)q{6V{pB~9m^t)>;xZ3fU3w~~-Yr;dH2R{%g+6!d$4sle^r@a-oy3(c;B*E1WnIjM > zN$Y?|d>fuLqn~;l+ia{+UA&`=3Dvz1i`rbh*C8B2*rZQ>SUrU`2__{JyOfr+;BY+3R` > zKeI%s{4>uV=3DAqWK3dgHedW}v$v!oI9k#AYdTp?oWKad$CY I`Q! > zW;XT9`fyiM4wDkFwn^O&SOG5I+n%HuPgtvT`kDFrj&lVPC!S6dGgFiLId;UXIXij > 1 > zm}xfNQ^^yHJU9Kx3Eom0df#eHneX`7w|J>RDFLy<;AAIl#lL>fDwTASs HF > z0QVa)Q@*UB0ueKZA~$x;7d|$Be)+H}Sd&Ait9Rjkrdq}Os&0PiS^rwyuxQzc9y > 0Ie > zy1Dbc@oD#MAhW7WVTe&f!nr|&Wp14X7}}4FO!m`O{=3D$_H8+3CqGxH5MV > &+ihzZ5f{ > zU%nr#y4&S%e#~^1Sn=3D3A- > _Ja$U#c4#N#RH)WZqNEG|x@y71J!h!e(vNyP%(GU7{MA > zPdgIE>N|*;da)GZDz)1>oaiBy#k^VlqRs1F-)kiIy^DqPFs+I^XgCp2>1R$4loIxQ > zpc~R0Mkd{dWKHU`>)K`a^#vHDl6LaX84EtM`BAHnrI)?c_tTe1k*umWb_KQTZ$ > sUP > zMuPZ$4>3~>n#9bZ(1YTRYggKA>)nQRKffI0G2AcHp9&aq6OA~n;3i{cdYkjG?K > 4L5 > zPfVDxlH32NbpcR2I5+osMpd3jSTS?xXPO<_sG5cs&u<}S9+Lb8Gm4ayT~mGA| > 5N?U > zq(;}f1(o)>{Uz|CuIBnNGufn|HbtZ15m%7?el*jl)(M%%d_Md1@8Z=3Du{?!`yQN > KRX > zmYj2lF?yB6%(lN^eQ;V?#xGIcLd-OSR8bpNP7D<- > HzEgPW_Hew!N*HS!xE@Jv|IUm > zKxtH{cbh_VVbi?LsA~qpZhyM`d1`(?(|(3^SPJfUCsUnf@v- > r!IWC)N_QK0nv5`+b > zPst}!+78o-NX|ZP6tO~Ke{60gG|A<8V%Sw$3- > &7?vm#^G`HA99nyfK%5$BxKvNoIs > z&9ddD8R@3}Qp`+mZ>@KWEt{yhd- > jgdwPq8nNr{=3DpV_Vt z)ICfp*#0{hwaO#yJXrC?EBO)2ikat~v|R*YarEQ;mnf|bx>n3oj;#A^{**E$C+6zg > z{vV2&iCTEtW~_mAW5mp?+nYnG^z|) aEv|UShv3Osf1gI > znN}Y1&(DmY;^u#^G1J771IMwPhcWG}QKzR=3D(0aG1K$^+s3VQQ Op;bM > zDwlp a<5$m > ztkSzyKhrQxzEPjAIZ@Co_l;M1)BQ}jhbRB{{r#W?&1_`Q_O ;vz > zELs;GqQ;Pw>9$2%Q- > 6S_Zf(iTXa6RwlGSYJGuBQlE=3D#NNIaMVTv0`R(Y_6U1iRy+n > z+5Hmb4a7`y*D}Lt>JS%3C~A*e#nwaGYf#_q7j0gho|3wJ(M)ysnTrhS8J#+}^Eo > 0t > zkNKNwgu*G{X`yz8x$QZpUQ&MDio9}A8hg?)(l|c1O?8>=3D>+5l<~p26_ > 1>9 > z56!KZ*>nZ1WX^R%eQB=3D)SqopOpJ|cies?nT8OA4Vv##wo>ndq;Lz?9yVHsR3 > W~%!i > zy{@H~&DtC~Zik2H@B91X=3D>4RF)zhqqnQ=3DRd%0S(3g!;p{7XX#U;qXLRi6) W9Pf > zYtdqxpHv)&GMEM#tL(he3Ynaksq74g3|S+mpXMvG<(qTPk`>{c${cP~Fs>Z|4H > =3D)c > z$}niwSMJ}And$FG1X#|f8Z#f{4)f^m<@lXBBjUInhLQ 3U%04 z* {l > z$aEKQF0A!qrj>>G(REIZ39dIdZQodtRl+@vv3TySe$nRD>Srn(<+r!w_S04!3Nz+j > zH& zy%uimRjfu6i(B>m+1P^**~*W6-$Kl^wy*S7quy- > f*lNsFdr8F`lZ%=3D8DiFWpB$bPq > zKlb(H=3DmK4kXhqEQDusFA5+v>IkW pjH)m@ne > z*I*%S)QBmkpkp- > 00Tt+3e+r$wb)L(p{Ee!Ao^$11qqcKC4lNWW zYV0z%8Z)D348|_UTrGA=3DxP~K*b)o$@?nS_~X3o86{yaZkHrb2uHa~40oQ7R > @D;mve > z(7D>y=3DvwbJ?|XkIYX#SdnbtnY`Q>=3D6F7=3DIb7V%_7#LNlDbRvx-Llv`+baTz2CT51s > zY?{4pDwo!f)o#Q)IhpoX=3DTxf7c- > dr4+oo;LGmg1~3SfoS;9~_8R#=3DN_K|FbKANd+D > z5l&wxW}2JlwGM^veCljY^`5SUm^t;BOc^oLKFyd0psuPpZ9(m4+R- > `x?EbKF%eYrX > zlF;jQOb4k2@v_O|u%5da$(4Sywd29L^{IK0zzix)qWWL6*hl^mfcip{xmSsq5}}L > @ > zG!A03^{ES*UW3Rk{>%3osX?N6V@eN8C*?euaFQ}&ru{P{xt!I+OglQ;*Br);_1 > 2Q+ > z*ju8lQw!r|lfQi3-0C~lRiJSXXas`d?*n#1)|$o|pp7-L*{bB)GQqs7#LQ%89%Nwt > z>C9HF-Ca3t->7^N#oa$+@!VVCI*na{8Z-Cl- > 9pjLL*3+}yC}L0I&M~V8Y{nMkSXYz > znCbQq&GS8dL3llvv>tc|^AfG+T_EqX61{4C8=3Dsdc{bs|58c<)i5}fLo+0|jI!yA=3DV > zG @7nw8`&%G6{WNyq1m%Z?~<5pj z3;D65v- > fq)PH=3Dd%m!7cpi?Lp^yW`9Y zey>=3Dx(;b!yMy?Svjs1`0q}S9~ta;KtYZv|P?*ZvSA}Ey$k2-Ev-R~=3D$UNY&SZo4H_ > zG1EOr?ym&qvAVAg>sf8*Dh1)h% 3d?KV=3Dg > z;KzDp$EEx_t`IY&30j+{=3DAeY{o0yp|SM!|(G1CqyYsO5!blr}EcVw ze(B@o<#0I4<5lE2Di05PJBXIl@U4BuDv++3XAVT#+UnHG1j7m{+3J4^E=3DMVQ > % z8*0R|4yNr!lWbW3c#- > S|&R*Y`#P?j~anWOFkQpC8T|5@9$vD!eEv#_$OU4~HtDk8X > z7cuis$4o13bal?SAL++@28_}KvmwQ78e!efR9AC(dGqoy)7tq+2EuJnV60i~Zy# > D8 > z$iGL-%-fik6z!OqIrOSJHg`{G?y|?p=3DSuJYJh{^CG5eYMuR2LR9 znznDlf4grPN4xE13u|v|!fPa{sTb_z{b?#ze)223c+7ON zSCZ*KJB6HEO0An=3Dl6KJaL#CFnxq aO- > z`cH?s3N m > z_QK;%-` *cd{!o_j^@y8T5m#~E#P > zmX>b4ZMv&lUJ*0XQp%TTz71YDW?GfH&6JwHO0?=3DsVy3}q#LRd<9j|58nCXP > tChhFc > zx19 $lLXcb*R~UxKWSsub(9DmS<0bQPmH8qavKEi1 > zF>AGcrdlh*ESNQP+_2Thh?xdyK4yB|%*-RSoZzP&BDa;q=3D?}M?aL{g- > JbkP6I@)G+ > zJJYU6uvE5zX{|9>P6;K!yLU8dMUKNRe+B5|R1uA6cFa_7J$u>DUXNP0tSz4t< > =3Dl{| > zUxLzrR-Q-9G(go@(gZR4S#Zr7^`PQ3h-}O><5#- > @avAVBxygM0P z06V&C8)*1%`K^3d{Q0&nQ``M?Rb+Oo(+kPURadz2zn6@e_9^- > %CvyU@>Q+0Gm}$u6 > zV&;Q;{G oM > zH6tguYbk{raYy6E;rB`1M|F};KV1cy88fqIYx2*^j!L z>g0IN- > 5)cGwwK|%lY>Mv;{LWpQ!rX^XqL63SUzStv8b&Jayw6ZjkJU~CYdm)l > zWcGOUX77DPQ>$%O);9cJrUp!^k}^@#d72qB^QYpoM- > NIyn^_l&na>5`+pL~`#d&VN > zZZZE)mdgE5&IHNNK=3DO%jd81R74-(-DE;sIU-(F%<`3<#$T2W$vOpB?Gna- > t^bMnvf > z^_%mpJ#mJNX)Ta7 *~c > zrkrH*p`50qIfe5wKdR`bTlk4Et-|qe&DV{Yr|;}vdXdD5nS~pxd@K`(oPsuXA?`(| > zb0)eY3nfR{S=3DpQ5?1P_lG5>m#x+lqIY~yc~ob?KuNjqNkoSs=3DR)2v9jLyjb$- > HeOG > z%;$ssd!@3q%?2- > Px|a@_+d4Kky6kCs`6Z^pUn3yY@L^B > z)js(rdG%Xt)J)yO%vquA9F=3DVHj7o7rO}MdBQ1@z?h > GkAh > z&kfQl9SzgCZa;Iym|429>F07)Z$Zo~J33FZ;>|H0iew&~%a?t|D^B}|5ASE+B_H > WN > ztEnbl1~>bDMZ0wBM~0#}W{S4aJleGz)gf%t- > T2D=3DOu39%bgobmw~v7`PUGx~qDi;j > zoHM3XJQl9cj+t``JY1_X- > mc216lt5ace=3D$}n|v^HXkLE}NVZnJsV+%*?u_&hJAgHL > z+6(pVGmJ{FH|a;Kb920z&s!(<0_1SisJzBz&uBt^_bgX+!)*5BtHn$?qI)@fr0351 > zgpyYyrWjEDTXVKCNxE!CpVW-kaK+a43Db-c57(L- > H&VM=3D%uEwH=3Dho>*80Rx(1?HKk > z8D$fGRK1il&^jH>;fhnZ#{76jCBMMd- > ^rYy8F zjQ`|;f$bv$=3DiN|Ww{PhouMje8j-JBmU_`N^pCby_<%~- > NHg2&=3D8?D)q>WSyS>K!V{ > zyOldh#*Udk))mkBnQWFwMW(=3D>PkY9 qAd^g > zvtwqsvAJ>C8gGLtoz8f(izSy+Yra}g_RMf~R?K|<$lk^suA+F{e1uOLA-tGiZ)EP> > zG@U;G%VOs0*MZ!thh>c{=3DP;e0Q<;A1o~EoPar8A}@@lmd1I7z6LmCHTCF5Jp > o_knZ > z#WkQ{*#)B|z2$Lp;<2lQ%uDt&WrNzsg{}0D(aDsQ(pF2%w5u*LGj4ISre_@HH > sw%t > zqmg8&G- > j68_S_ZBq^?|~pP8f*&sbI|uM;va95ZLt!bKmxR?N&7%ff!<+8s^5O|N)| > zQ!cSZMS9x{=3De~OzM}hNnX-tbZx*%pYA1OZxSeoxE#>{aWmxaviX|qh3)Xt8}s9- > uw > zs`7}VAeEUPxl+tDcGF8^=3D8t*qVJ=3D55iiL$&- > q4)Xvp2Cg%WeAYStp*H%8`c{<4IU@ > z@%WsRfcd@tWUW_>nM1k@LuQ%PkXrRfzO=3DIMglYY;m}y;#cA7=3DOnI!k?iP<8 > F-*8W6 > zc4b)G`H7Ot??|E#- > qmDb?CGSdcTXj8VCFOCN_MBeaz1m}b zGt Au6CQI721OwdtV$WtQ&?(;Tksiu~}Dv)LvW3W*5cGnQJe)c&@I~y4NVI > zSo6lu+qmpF>(H#FL~CB&v`?3mTlAT5HGe8*+P$|GVx|N!`$|_- > 5}C zr?ag9J^kdJO%;WnuCdHHcAhGgM1jL}5qGNKkmncrnFYT&U~F0bSSJiu>x>)O$ > h{RN > z{Fh>;9Woc*pV^}>+u1fnmi;A+K8eZevYIN%nO`=3D_RiV3>KjV@^eKRSDne)%Elm > wV7 > z_cIsv7D~2gQty{cRMg%ux%$dbk+8K$dVn~;Dp~87;NbKt*63#nZBu!cbT$u8H > p9|u > z#uo )fE; > zOae8tFCH`P;2LUx$(X1Txx@~_x#vt=3DI(8(>|% > zFW7y%F|+QDG5-SAHDjj#q(QstTsLHLf2Lg;{ksLRXtkL6BUMQHniX- > ZAeUO?Y`U5? > z$?e=3DeZO?a~uccQ+mfS+)#mw4k&3(MjuK$WL^I_px{ItKM)$;Y`Rn+D%@xRf}b > e@#j > zfvguZrO*0sl#n?yj#WlX$$h(@pPAZDB4)P1^;M*zc5P{q!qXr%N6$TjLtOoA7d > Osa > zEoLt5WV$EK`pUT4YhN}qUcu > Wjkk} > zOeL4wJDKkv;kNK{uBH0ViJA3B{r&N5E&;XnmG- > RN`Zjz(Dqgisx1byShqTrjsmO4c > z^nJ(7=3Da=3DKR- > znzs^mxi0C!$_ UX > ztAd84;rK}cnf;LTna^_#SDuVZYDYUYsT;B%c`&b)hpTn#(#AhfbZ}nZ7Ze?{*3{qj > z*|^)i b*Uw1 > zH=3DD<8A3vnqJtx6w{l34ck_TQm#~%)grCoddr%$rK4y4wgOUKOp!?&75pSiNv- > w2t+ > zOtr$?- > ptd!`E6nO+073bn$i7!R`i;;MW@qV(rbU@v+HnIrdL++H~c9pq@Br^96y`=3D > z%q5rOJ94X=3DtOm4|&Sy3|=3DH*??W*f|~Kd;W0f4ZW+hAY3}WAiYZ+aD)pR@Bt > XFJd3x > zw$)AzKE*l9p9WdsH>9k4hShAZ5HnBf1x)Ys!lhb$ap8?0470N6T+O)3 NM; > zt_v(L*Bf7hA4Ha&b2QFpuF>?2uN W; > z$uPBL2ObrP=3DN9R2od`3>_-_m3O6z{+%lTdVZ{d-c-p`a%0_(KA{Ff- > znE7IFtMRU! > zzWgY?4WzVo{8GqVdOma6&v%sK6nyS_PtW`9IJBko3kq)IACX@*w*MAx-- > Dc4PXFZi > zcHw&a#Xr*Z%Nz- > QYRudn?2XO5n_N)rQ(yG@TOo64%*@a(vZz}4S55|RDSZ7(UaN|d > zg%BtZ_%LrTy<~MS$Xxu9Np{xS-^Gc{oNk{uI>{IlHy|*x6!|y;r2_f03Ky^UrCAI< > zH_g)_c<0wfxdJpTlv|nlwF*JPcP{Xo=3Di(}8rw#HZj?TXe?vtBlo2hFERMajOLBJRI > z&5*hDe5N$Kg%7RuecVrYPjS3PbRZ2)z%4pHfIx- > 7@1BaQ$ndmr$T$6e`S5(+k2y?p > z&(uW)Dry&tAm9lYx0PPBI- > ghWWlwoO&DKNmZD?h&3(caFnU=3D@R%(+mRv)Vr`@XH}{ > zg=3D6!kfyyIFKAgw;T;%QJ8V^CcnFw=3D#8Tr#qn~lGW!0#TIOCzn=3Dtov))Y|(`TDry&t > zAYcnTU!?mrW2JWX)ORn`zF6)338?jlnF#zff%|LPY|(`T{#w&udl66tF4VqQ?fnU > ; > z^@o`V{5665Yuaqlg#`Xu(_niMPz5g3zF6)338?jlnF#zff%|LPY|(`T{#w&udl5hY > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY > ** > z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#| > 0 > z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I > { > z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009 > IL > zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0* > ~ > z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILC>Q > uo > DNG4Z* > > literal 0 > HcmV?d00001 > > diff --git a/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.idf > b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.idf > new file mode 100644 > index 0000000000..b5eacfc5eb > --- /dev/null > +++ b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3Logo.idf > @@ -0,0 +1,9 @@ > +// /** @file > +// Platform Logo image definition file. > +// > +// Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > +// > +// > +// **/ > + > +#image IMG_LOGO S3Logo.bmp > diff --git > a/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3LogoDxe.inf > b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3LogoDxe.inf > new file mode 100644 > index 0000000000..25b46e4bff > --- /dev/null > +++ b/Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/S3LogoDxe.inf > @@ -0,0 +1,55 @@ > +## @file > +# The default logo bitmap picture shown on setup screen. > +# > +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. > +# > +## > + > +[Defines] > + INF_VERSION =3D 0x00010005 > + BASE_NAME =3D S3LogoDxe > + FILE_GUID =3D A3193794-FCBC-E9A4-1AE0-DAEA9A49980= 8 > + MODULE_TYPE =3D DXE_DRIVER > + VERSION_STRING =3D 1.0 > + > + ENTRY_POINT =3D InitializeLogo > +# > +# This flag specifies whether HII resource section is generated into PE= image. > +# > + UEFI_HII_RESOURCE_SECTION =3D TRUE > + > +# > +# The following information is for reference only and not required by th= e build > tools. > +# > +# VALID_ARCHITECTURES =3D IA32 X64 > +# > + > +[Sources] > + S3Logo.bmp > + Logo.c > + S3Logo.idf > + > +[Packages] > + AmdPlatformPkg/AmdPlatformPkg.dec > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + > +[LibraryClasses] > + BootLogoLib > + DebugLib > + PcdLib > + UefiBootServicesTableLib > + UefiDriverEntryPoint > + > +[Protocols] > + gEfiHiiDatabaseProtocolGuid ## CONSUMES > + gEfiHiiImageExProtocolGuid ## CONSUMES > + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES > + gEdkiiPlatformLogoProtocolGuid ## PRODUCES > + > +[Pcd] > + gAmdPlatformPkgTokenSpaceGuid.PcdAmdDisplayLogoEventGuid > + > +[Depex] > + gEfiHiiDatabaseProtocolGuid AND > + gEfiHiiImageExProtocolGuid > -- > 2.31.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114679): https://edk2.groups.io/g/devel/message/114679 Mute This Topic: https://groups.io/mt/103975435/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-