From nobody Mon Apr 29 00:08:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+43980+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43980+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563490820; cv=none; d=zoho.com; s=zohoarc; b=VgR8na80EVtTO591JygKAvPOWr1vYSlfccaoo1Qq8aLOhyYXM64odwWFqwywaTadZaTzt3G1jRnhijGPsqWKMhdRnCoi84pHeUDVePtww1kGYXwRjL8eUly9bTZCT8fRSVsRe/8bX1v4y5f7T9dFcomjOfYJW+QNGLcv3UrDRZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563490820; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=jgQrMEp4RVNcgN4zTXdMgkfanoLjw8qOlgW018y8n5k=; b=HIjN9pTi4BkkGHIbBxawFL3LcBdgqsuvaUjmC5eS3REj2DRwd4tFSpCQLBc7pURi0FbKNWCJvIlXQAYoWd0GPz8QnB9s8fHZh7uoJHvQJUDGi6ssDfQ303ypBw23WxwzKNTLertQTW6+Gbx2wmqCk0K2JFpgcp0zLuCLlU+RU70= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43980+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1563490820372396.60632636764865; Thu, 18 Jul 2019 16:00:20 -0700 (PDT) Return-Path: X-Received: from mga14.intel.com (mga14.intel.com []) by groups.io with SMTP; Thu, 18 Jul 2019 16:00:19 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 16:00:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,279,1559545200"; d="scan'208";a="367511655" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 16:00:18 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-devel] [edk2-platforms Patch 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection Date: Thu, 18 Jul 2019 16:00:13 -0700 Message-Id: <20190718230017.14852-2-michael.d.kinney@intel.com> In-Reply-To: <20190718230017.14852-1-michael.d.kinney@intel.com> References: <20190718230017.14852-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,michael.d.kinney@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563490819; bh=Qo4VKvIzWhdr8j3/F2RsVoE9f7Y1hRqDSGP4CSffrx0=; h=Cc:Date:From:Reply-To:Subject:To; b=jjyRMGTTmIVoZYyUe68zw3iod1TZjms/r/XcuPnzA9RKnsaZS7+9VoAM5mXAT03TZ1l TgXAEuRTjcr2YNcXCjIbROmcW2I0CL5dSjtf6FszP/eS76sRSJvlp2BJA9Mb7K4an/Pf/ DmieVbimT7NJhi/WaEWsM5bIL7coCfxYwSQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add boot mode detection back into PlatformPei that was inadvertently removed in the following commit: https://github.com/tianocore/edk2-platforms/commit/d6211390793fbd0a89b14001= c43e0ef942c85425 Boot mode detection at this point is required to detect the boot mode of BOOT_ON_FLASH_UPDATE that is required to detect, coalesce, and process UEFI Capsules. Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney Reviewed-By: Zailiang Sun --- .../Vlv2TbltDevicePkg/PlatformPei/BootMode.c | 92 ++++++++++++++++++- .../Vlv2TbltDevicePkg/PlatformPei/Platform.c | 6 ++ .../Vlv2TbltDevicePkg/PlatformPei/Platform.h | 17 ++++ 3 files changed, 114 insertions(+), 1 deletion(-) diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c index 5269b1ed39..4c0e660b7f 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c @@ -82,7 +82,7 @@ CapsulePpiNotifyCallback ( if (Status =3D=3D EFI_SUCCESS) { if (Capsule->CheckCapsuleUpdate ((EFI_PEI_SERVICES**)PeiServices) = =3D=3D EFI_SUCCESS) { BootMode =3D BOOT_ON_FLASH_UPDATE; - DEBUG ((EFI_D_ERROR, "Setting BootMode to BOOT_ON_FLASH_UPDATE\n")= ); + DEBUG ((DEBUG_ERROR, "Setting BootMode to BOOT_ON_FLASH_UPDATE\n")= ); Status =3D (*PeiServices)->SetBootMode((const EFI_PEI_SERVICES **)= PeiServices, BootMode); ASSERT_EFI_ERROR (Status); } @@ -92,6 +92,96 @@ CapsulePpiNotifyCallback ( return Status; } =20 +EFI_STATUS +UpdateBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + EFI_BOOT_MODE BootMode; + UINT16 SleepType; + CHAR16 *strBootMode; + + Status =3D (*PeiServices)->GetBootMode(PeiServices, &BootMode); + ASSERT_EFI_ERROR (Status); + if (BootMode =3D=3D BOOT_IN_RECOVERY_MODE){ + return Status; + } + + // + // Let's assume things are OK if not told otherwise + // + BootMode =3D BOOT_WITH_FULL_CONFIGURATION; + + if (GetSleepTypeAfterWakeup (PeiServices, &SleepType)) { + switch (SleepType) { + case V_PCH_ACPI_PM1_CNT_S3: + BootMode =3D BOOT_ON_S3_RESUME; + Status =3D (*PeiServices)->NotifyPpi (PeiServices, &mCapsuleNotify= List[0]); + ASSERT_EFI_ERROR (Status); + break; + + case V_PCH_ACPI_PM1_CNT_S4: + BootMode =3D BOOT_ON_S4_RESUME; + break; + + case V_PCH_ACPI_PM1_CNT_S5: + BootMode =3D BOOT_ON_S5_RESUME; + break; + } // switch (SleepType) + } + + if (IsFastBootEnabled (PeiServices)) { + DEBUG ((DEBUG_INFO, "Prioritizing Boot mode to BOOT_WITH_MINIMAL_CONFI= GURATION\n")); + PrioritizeBootMode (&BootMode, BOOT_WITH_MINIMAL_CONFIGURATION); + } + + switch (BootMode) { + case BOOT_WITH_FULL_CONFIGURATION: + strBootMode =3D L"BOOT_WITH_FULL_CONFIGURATION"; + break; + case BOOT_WITH_MINIMAL_CONFIGURATION: + strBootMode =3D L"BOOT_WITH_MINIMAL_CONFIGURATION"; + break; + case BOOT_ASSUMING_NO_CONFIGURATION_CHANGES: + strBootMode =3D L"BOOT_ASSUMING_NO_CONFIGURATION_CHANGES"; + break; + case BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS: + strBootMode =3D L"BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS"; + break; + case BOOT_WITH_DEFAULT_SETTINGS: + strBootMode =3D L"BOOT_WITH_DEFAULT_SETTINGS"; + break; + case BOOT_ON_S4_RESUME: + strBootMode =3D L"BOOT_ON_S4_RESUME"; + break; + case BOOT_ON_S5_RESUME: + strBootMode =3D L"BOOT_ON_S5_RESUME"; + break; + case BOOT_ON_S2_RESUME: + strBootMode =3D L"BOOT_ON_S2_RESUME"; + break; + case BOOT_ON_S3_RESUME: + strBootMode =3D L"BOOT_ON_S3_RESUME"; + + break; + case BOOT_ON_FLASH_UPDATE: + strBootMode =3D L"BOOT_ON_FLASH_UPDATE"; + break; + case BOOT_IN_RECOVERY_MODE: + strBootMode =3D L"BOOT_IN_RECOVERY_MODE"; + break; + default: + strBootMode =3D L"Unknown boot mode"; + } // switch (BootMode) + + DEBUG ((DEBUG_ERROR, "Setting BootMode to %s\n", strBootMode)); + Status =3D (*PeiServices)->SetBootMode(PeiServices, BootMode); + ASSERT_EFI_ERROR (Status); + + return Status; +} + /** Get sleep type after wakeup =20 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c index 90998871dc..1b23bc9740 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c @@ -813,6 +813,12 @@ PeiInitPlatform ( sizeof (EFI_PLATFORM_INFO_HOB) ); =20 + // + // Set the new boot mode for MRC + // + Status =3D UpdateBootMode (PeiServices); + ASSERT_EFI_ERROR (Status); + DEBUG((EFI_D_INFO, "Setup MMIO size ... \n\n")); =20 // diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h index 4f71e519e0..e2e07dc446 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h @@ -21,6 +21,23 @@ typedef struct { =20 #define STALL_PEIM_FROM_THIS(a) CR (a, STALL_CALLBACK_STATE_INFORMATION, S= tallNotify, STALL_PEIM_SIGNATURE) =20 +/** + Peform the boot mode determination logic + If the box is closed, then + 1. If it's first time to boot, it's boot with full config . + 2. If the ChassisIntrution is selected, force to be a boot with full con= fig + 3. Otherwise it's boot with no change. + + @param PeiServices General purpose services available to every PEIM. + @param BootMode The detected boot mode. + + @retval EFI_SUCCESS if the boot mode could be set +**/ +EFI_STATUS +UpdateBootMode ( + IN CONST EFI_PEI_SERVICES **PeiServices + ); + /** This function reset the entire platform, including all processor and dev= ices, and reboots the system. --=20 2.21.0.windows.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 (#43980): https://edk2.groups.io/g/devel/message/43980 Mute This Topic: https://groups.io/mt/32520521/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 00:08:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+43981+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43981+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563490823; cv=none; d=zoho.com; s=zohoarc; b=EkpyeWxI2HqHJ91j1Az0CLhbgW3hsYU+qYpBkJI34bTCRX72wFpJJS9OUL5Y2644O8R17IS9G0Cx4WYnsOKxIdE+H4vL0DpcKGenRyULb6HtY/DCz3hpj+Gq2SjE/oeq5j3Tb8kFcd2xicKkZ8R1rtC7MQpDu+LIMLcXXNZ6z8w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563490823; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=UuXQ4K+o2C1/PZBB1JM3rF4Bk6aBIJy8SRca1wXu6JY=; b=Wt9P8qULBvaZMTteZGYqI5gjYu5q/6Ipe9X3K/Khv6RQAXezk02cHgkpgpaENZOm6DxlP1AfQj+dyRTBFy2Xh5roXHOK6Nx8hURaPdaSP16Gy7Cln46g0eNfzZtOeWwqacBFsox+Sc4fIAWELDHOmnqc23OOOlAAAjhHj18gEQE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43981+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 156349082322485.24639855383032; Thu, 18 Jul 2019 16:00:23 -0700 (PDT) Return-Path: X-Received: from mga14.intel.com (mga14.intel.com []) by groups.io with SMTP; Thu, 18 Jul 2019 16:00:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 16:00:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,279,1559545200"; d="scan'208";a="367511690" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 16:00:19 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-devel] [edk2-platforms Patch 2/5] Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD Date: Thu, 18 Jul 2019 16:00:14 -0700 Message-Id: <20190718230017.14852-3-michael.d.kinney@intel.com> In-Reply-To: <20190718230017.14852-1-michael.d.kinney@intel.com> References: <20190718230017.14852-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,michael.d.kinney@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563490822; bh=wcHuAwD/j0blu9lYZ2R0ur4Kcd/W5zX05qtXNc7e9tU=; h=Cc:Date:From:Reply-To:Subject:To; b=IQ3jqgIlJBipzdCv/95p4e+I6pPdkNDGQUlnvqWU2iAG/SyV2BSr+8uM94iNiJ4Un5e dBlm6b6qlZ/JFhOGPM2qC4YbpgWNgjRZ/l1tbBepaveUVFUP+ObXmO0QhuiXnNPWlaOoV 9qcfie6BJSc0xbo7aiiy7krlNtcE4ypn9OQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Update this platform to not use the FCE tool to init the platform setup variable with default values from HII forms. Instead, use a Structured PCD with field default values extracted from the HII. The default value for the Structured PCD is stored in the VPD region of the FLASH, so it is always available. The platform setup variable is set to the value from the VPD region if the variable does not exist or is the wrong size. This change also removes the need for Linux/GCC binary files use to initialize the NV store. * Update PlatformSetupoDxe VFR to declare the platform setup structure as an efivarstore instead of varstore. * Fix a use after free issue in PlatformSetupDxe that could store a random value into the "OsSelection" when the Load Default and Exit setup menu item is used. * Add PlatformSetupDefault.dsc file that contains the default values for all setup questions. * Update DSC files to declare VPD_TOOL_GUID which is required to generate the binary file used to populate the VPD region * Update DSC files to declare Default Stores for both STANDARD and MANUFACTURING mode. Only STANDARD mode is used right now. * Update FDF files to add a VPD region * Update GCC FDF file to initialize the NvStorageVariable regions the same as the non GCC FDF file. * Update DEC file with platform setup Structured PCD called PcdSetup that is associated with the SYSTEM_CONFIGURATION C structure. * Update PlatformEarlyInit module to detect if the platform setup variable exists or is corrupt. If it does not exist or is corrupt, then set PcdSetNvStoreDefaultId to select STANDARD defaults. This initializes a HOB that contains the platform setup defaults and this HOB is used by the Variable PEIM to return the platform setup variable value. * Remove FCE.exe and BfmLib.exe files Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney --- Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe | Bin 499712 -> 0 bytes Platform/Intel/Vlv2TbltDevicePkg/FCE.exe | Bin 632832 -> 0 bytes .../PlatformInitPei/PlatformEarlyInit.c | 40 ++++-- .../PlatformInitPei/PlatformInitPei.inf | 2 + .../Intel/Vlv2TbltDevicePkg/PlatformPkg.dec | 12 ++ .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 20 ++- .../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 77 +++++++++-- .../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 16 ++- .../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 16 ++- .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 18 ++- .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 14 ++ .../PlatformSetupDefaults.dsc | 130 ++++++++++++++++++ .../PlatformSetupDxe/PlatformSetupDxe.c | 12 +- .../PlatformSetupDxe/Vfr.vfr | 17 +-- .../Stitch/Gcc/NvStorageFtwSpare.bin | Bin 262144 -> 0 bytes .../Stitch/Gcc/NvStorageFtwWorking.bin | Bin 8192 -> 0 bytes .../Stitch/Gcc/NvStorageVariable.bin | Bin 253952 -> 0 bytes Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 21 +-- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 7 +- 19 files changed, 325 insertions(+), 77 deletions(-) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FCE.exe create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.= dsc delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFt= wSpare.bin delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFt= wWorking.bin delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVa= riable.bin diff --git a/Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe b/Platform/Intel/V= lv2TbltDevicePkg/BfmLib.exe deleted file mode 100644 index 4402a78456ae1018915ac4a1fce5d5d5de656652..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499712 zcmeFaeSB2awKqOVCNRK+86Zg1C{aVD1r>$1*hmd2qfr^1iHy?v1{LBE5im^fr9_EC zY9@!V*h00fwotLsmR4FVFBTzSN}@&$La)?vuK}?=3D!=3Dxp>rX^yO-}k%rK4)e^&_4IM z&*$^|Lt8TY?7h$0Yp=3DcD_S!GU|BaQ79EZc<#J>|K9F8sc<$tB}_mlsaC>}ccg`tk; z2fcRAmaOTooiigmZ*kG0>V|zFb?<}j_FxBj_NBvy4I@G;mFAvlI22Y2RIxnvm|@XLi~D>3?PqG zU>g5OAO2_kIywfbGUSnd^1!;REWh>-GaZrZ2Rg<|>XZL;1qV0^KcULl%LitT4e(sA zQ1ADx3nO#yjiBWAFQY%ii+$DjSuYeh9J4O0o-;c#+u=3DCk1~B&BtADLZd=3D>w{P*rmj zFGj{J&;Xh8iy!O1Qir3-N`LnI83jJ0z-JWri~^rg;4=3Dz*MuE>L@EHX@qrhhr_>2Po z|DZs~=3D!|yeZ)wASF<)oQ*A?@1$9z38UvG=3DAn{+ErA+bDAf&|xF!svtIOWfCU+(Pno>EAFJck-G(ia#R?v1>z&`9aicvC;!Fa znE8!pbACyu+4~-d_}(oqvC1+OcAq$Lf-!{^NMA8$8t32~3;RDApYj{ywOh6hM>QF! z_kXF!rp4EZJV%SKP5nslrp3p&3^EU>pLX@r%%9!99r(8$|K8%jI%)=3DQ$p#*Y4}ebi zGNFVkU=3D|!=3D-&`@@;b`q)yUrg`C+_bK8ll4#<{vQgmnw?LgSU(%nBSs`;p+y0V*bvs z6HgeHP-k?Px59i0>;r;%Hu<(=3D4A1mz@^24@OWCBZaLM^nA$dBh1j6Mk@^?medV}UD zRV2WSG8e|;aM1j1vDB|`ikv1WmHnp-slsF|k@X!=3DHD?aVKvq>BkzV}+(1sk;X_UKE z2WKeg24Kkefm>s~wrFjeqvkYeelN(2Ox4_0yiX)py(-J_w*}3;=3DMg=3DyVY?A(F9{t0 zmcF)tc{7B{e(fP?w$bkm#zW0uVlWpl?gR#H73M>Nbs>;yY}oeqJV%3nhi6l0JE*fG zr@bMxy~QU(iu%T*&!apBIzqxc_0f+{oIouv$UNBa=3DY!v4!;)@{OThf<*Q9mnz;M-p ziA{=3DAi}S&$k3d*we&e=3Dib2(TwhzGLjO0c?PJc=3Dz|orUxP&9`4ix>=3D_KNMBL8_-hMm z7DOCZEV+K({c|1D7v4U5ei~y7KhL@W483M+0pQvUtyx&Ob+_*&u;?!Q+lhbAWZCSl zIlBWdg2DHzpMC15Rs9H2Z06Szv4LfAP(T!gAL?XX?}-y>TEb=3DcdJ_+#qo9^ihM_hM zzv)nSr=3D}14ai5B)@``wB=3Dvkznt&m&4w);4u40qw!`6B{!=3DuK zf!hf%_1{O@@O4D*b!OF6dp6a)WcW8kcV-98_bw&3I6a$sjF1`KHN3*yYvnYJ>nS-_ zQ)2i#V*Ufs+5?WrMMmgA^nPb{%~0@LqpQKc3xvu_7D%?&5gCGPquh(?$!z@Z)yB|E z%XVcogkF-Sy^b1Z(wiIvfJV?83w0!BVEl-8IaGQU+K*lB7U5OwXc|HHyf^PveT%Q~ zPJ+4$n#;c^(udkmj`NzN*l#w5b~UWZng->drQf`40_#DSG#kF=3DKsX>$-5fNhiFmjT z@V(i3k#s)p+XC)y27S#6^Z6@JrtdotYB2UQ5cx3%gvJQDD$F65u_78!nn(s>6Dopl z9O0Rw(!2rFC(@2u`=3Dhn{snSGWJ%W1Sn+2sULGv7|&c0~vKD$m8>Im0__Enf)Es|bW zWm8u71c?o%2<;D;zm+=3Df%*-cMChHB0h1M9pHHN>vq`df^tEz_> zd~Pc#E4t@0!@obhxo5`M&5dS}`LDMGQG=3DpJNM(EnSpzI;v{@(~JBqI{i1KH|Vs9^c734n&Y^xCbFm|a>cy)bFZC!*Iec; zxMEJG*@b=3Dzw)lE!f5ku!oY<7ug*K6gzYd5Euy29~)LU2EYeFa%FR=3D`rzjxltA_pN? zeEDFCNx*zfv3dVhCg-xsFSI12y}o<-U>{@%ywGcjmaAoXRw?rMU*cX0Y{=3DE}P!kjl z|ASlBvW!|s9{jG|b+i~zX0F{2QH8Mr)C=3Dgi6iiM!S`LQN$9>iD+M?Pk9TWe6UasxE z{YnRFhUXdf#2uDEFHbxW9OZ{s+(fd%X3T>~ih*MA8AX?CE_}7cmyuQjwgD*vQ zPLf{NH+ky6B#K~tG*KAyudni|w>#jEskaqnlkQ5x-(3k!T^aLtdp3u?S1t7IE;tq#zlgEiIxu*d7{3ajb#uqeV-pY(w`q=3DYi5NE1a-|!WK%{U z-Hu|^>wvg%$!s>#`?OA}K$?CJMA%V|^!4-ZSTH+MQ$078`dWDI?RU~4y5!25d2_T| zFY;Eb=3DUWG2z7BZV@HS4GdudPSFu+4_I{2gXkvQzh%OKE@PGD{X$Hqck+C!q-w+9?^ z!7_?{uJo`oZO9GBAzDrkpactIJSyhwKlYseNfv^%~9eJ*JsI$U+RPwx{ zaM@XzKjy*T^*rnE%7JkEdze-8O0>4iQPXUVw$;CG_U}dbh@5&Apnr8p+x_cBX{YX=3D zYjmljZ2rRA@AS`JlsWrqYm@#>f_`kkE}vBYa^&k(`R2qFtTHEo0YuHYRgQ2zHkVE2 zEB|UZTOk>YVV=3D!plX8H(OrxC@<}}?N0BsS&<*6?R-&q~FjQTU*+>RmB9e9Yf(5~{X zTc)}-lF=3D9Bb<3suiTJ6yR%0l?VOZKboRN|)ci3Q!M!p@JD!M|Nh~6vHVlht@0G6VX z!T=3DLQ^I`hJiy$nhy3vtnbdZ29FtYD#DxgG#IvOiZ!^~?i^ZURV z1vo?cfioO%1|VOlm4X1q6$BB5gY+?^JCwTF3Z{xS7l{UDK#gvDN!;Iopv68_qeV0s zNeHKSD151!LE2^|ho~SN-x-+rIgGQVo>vt^J)gZ-3~;o067=3D)IH?@AI-F*VZ)X&sK z?MTxGGu@1|WrLfLzGm)yj<3~JSI=3DD_e!UfTu#J@H@5#{Lty_VZrN2}DZHuoR*)UO} z!gu>#&7utjBMz@Bs5%knWN47GO-V0u5N+IFVICVL3{}N31tX!(nDLT>kP9aa^c*0+ z6^%YjJ%6!;WpwM20)%g_P0+{S9!+)S6IHAKAA=3Dqqf1 z^VbH8h7yd3rJ1S<%sFZBsm-GILsL;Pugie{(XDClJE>!2%taqUcRXN43ENsqMYCu^ zM2~0J_zYi>;j*TL`9x;E4D^8;U z-=3DPS|`_ZQSfH}WfT8^3|55%V+Xnq|WA8j6sNNqaAY)es5j7< z(Lcs58Gxq zu}8o_2lbSMx)z@em7l|jn9H+0pWZJXJlkC*dt^?!N7brvqc;q5U<#DXP23IQsZl}n z6bj)e6~dDsEs!Nq)1oh!`IPv(7M~0L&I$E;wr7tyfeKUj2k}q8nd9$``440E`xA`FXlHxTQRPo^$+{mtRzTSX2&VJW;l!Y;R z!z@BX(#ipK^sBa?>NO--BVMysp|1fMkb9iJmr{yefXS^EgK&}0QIW&M4_VJDK~Pu1 zyclE^=3D5;g7+lfwn7x2UiNRSv)EV{7CJ5k%f6cc(-S~Blc)sUTr`2lg<4%m*{0l`y) z7~2;~1ecvb^C1;#v;u;Vm)mZ=3DDcVf281uMR$#M%;U>ifdQHQ-_hCRWmVlg~pI-jA&&`HXu0 zIi-`GO#{QOi5v=3DH;R;Q%uxN_-OIBWaHJrp z8BNT$#_+F+-Up2W5nJQglnqNzShBNbkOD~Cjc{@q*0k=3DS1;C}1#QCDz=3DSi>f}EBzh9p?2r4*Hs@}tztR8>}E zs2DDA=3DF%sI7x$s&%^&bPj7T>asTTAh? z-1|Z)MhqhYSSyY0_-aaWMO;K1L$v~`aAn1b&@!%mbepg5b|CmH>zdYpeV%=3Dh>LtEa z@JwYC^O+eZsG!-{s-#Qg)(EYtFz?klzQ?04iZIhYK5oZ--vW({ZbNiRz=3D*R3uvi7=3D zc{~lHdWucZJDk6CbBgmh!*8F(mT;qn!u zi6W#6(S+rpkXKhB|8cCZA1AZIC+XC5tig;E(9cS1Ps1$$+{C*OivNck{HuSDgFP*$ z=3DHR=3D5q2cRSvf+QxD(?YlsTcZiFwIzEBHl(sT!}JjNc_NYx{e<}0VrOkdQiNa?t6om zWjzJ$VykVct1H zvSVTl4EY-f@8e5xnunlSH9%ptnvWG`5+NA$3UBU_05g^%#x7DE>N||w-&?uEt=3Dx|A z0f00ATcZ9>qf0kp9#k1QU26Y zh-1|>9%`@9T{lOEEo6;2NftDJC2G9>J&MeZUE|;eQ4* z#<6{7PS)&^@t|htrS_nC@xLscln&wt0Fk^WyojslGyrg1dn(y7w`zqNea}GIjYR|L zhS{3yatXhGa+}Tn?60x$Y;5orh~u(E5z>hylBe)#Qqx(e&|)An9xlu?n0Obnwsb*{^ zBh%=3DfG^Yn-?souW5HV#jtVmr!z#NhW`9C?+>)*rsA5h~rz|*2el#u_|sBvQ&3O zRJ&aN*VOn3&@7za;2iGLsFC=3D&%=3DA8`eJ*S#9%Ri=3Dqk+^6{W~p7O{{`^IxkR2Hf2Xm zMEJJIiYYb>t=3DqwlB4-;GO{2TAW%t-N>@Ulq0zwpEngB~o2(`;$hHm8%U7DjXLd6sZ7sC znrpjE2avv3r^}J1kIDSYkiP!*>e-Ro!?Mq9+Tw`(&RDo`zS?FoeeQxgB4I}=3DqpYT~ z5|JR|#Gs2x9j{(o>NxAmrH*^>Zx8-mbZM#Moynz+D1OJ`x8s6RM?HRD`ckPQ7kOXD zzh8f)6q`bZrvI0n!91PM*dg5YtFk@>^l3K>**CSZiR zD$IvfmOw3eMT+$>!4HA`z=3D9DL!nh733&{mB2%f(X(`}C;(x_wYphm;gQ4^cgF5~ZS zRlF_yVC`o@M`X)@8v=3DTszZdbNP_LM`-sBNT6Jpx>3Y8@wOxVU$s?=3Dmb-XHt0(2N9(qAK%2f+l7iJU;12pbKW@8Bq6uw-->sSQ9 zAfETKRJU04@IcL?U8G?6UTLr^V0Io?uanY?q>dB#EN3ys#C(zpOz=3DTG+5C=3DrqDKwv z>eQ3MZdxDg$d3%r0jroa;T5c&l+9c4zkqpNt6(^>30u~@P%y)`Sc71%MhSh%P}^M? zy>l>nl?Yv8kSnnw$c38h7+3#X5`b_e|HzUSkhIT!E%yxw7ZWJBME%HyH67B;lyDg% zJ1Q)Z7TCyTi74b9FRZdgDynI%Xi=3Dk{KpCzd++ja)LF?=3D4DK2h$AvjI!5aPb{6)Bf# zw7TU37Q>y!2;P0JqCII9QZq%Nl^e8r53(c-2>lgA@6!7d=3D6QAVIZ#s?lFfsN7h&4F zEMW|Q)?zs~WP;yr5m85X`!eP?QL)MsUdQet;A+khZydtqiXO^}jHntNe%_+QRk{dj z>tHsD&JORh*yloBgc0g+qUiK+w*_!S8bB9{io)JXDheRgqZS9jWYL3OX=3D?(D$dCW2 ziwLj?MQ4NqEFy-xbP+KuMbT;D`4+%uY=3DCtKmth=3DHdU|-d1v6&D9OJ-H3)D3h)cH2l zxk)x_~TJ4;!t88Tz zX~)SLqr>j7?!qy(QzP+Ms-0X_Wjw2pNA~F|kyJYaRF&zhLMr`6R|(qf3}lU>@O-PC z@8}vArP_fUu*wRno%yy^uF=3D98if%(xl}@W2 zr>?S&RTSN@WFb_Ur~7kIZU0Er+3n=3D18sk}mL%&1UxGmMrP*y1lPiGa2^Da;0jT!c5c))j?o)e{Taq8=3DY%&{?M%{D_OXiU&u~?x-D+o;uJRjJ z5k459YIIxe990`p65mO+lg}!n!v$5kKW)0o{8T$5Rh7xCLO%Gpu5y*#&S|Q~Ox7UX z9@aJB>sb96rK;R(wKGRoai-cSV3nfq<5oLUb(MncBUgT5~S_1+WC{Jl3c19DOAOUck0f(po?$OBXgE2FJ(D7;D@># z8y-YF&u01P@En$tT=3D(npvlRHzO1&(%z~7{bY3Bsow`41-Q+5D@lq>#4v*U#WLs++} z!ji6t_V#cB11LP)B(_Pc88=3Dyv+KA4oP1fR%{~z0HwM$a_R0f79OkHh0`y0y!hL?e! z=3D1;8W9`*bk>$#h|ZnzfQBmNoAzG-`Txdltx%M1QVh;DhECkbGt&&bT;VV8j_tI8c- zXHmUaTsb(UE^HO92yc{pI7jpUApix^1lc`}cq=3DTv(CMgnSZ+A4UbsJ#Fre_*!)-DY z-9dALewR&lpDE4){Pb>k6c~u-)VuaL?bQ`{+zQ2qF`Y?`(war&WD6t?E-MZF?*ee{GL(ntR9jS6~0-WM`zE!oZ!JLlvF~@NnA@ zTq!jLGj~5L`06cJ*5LiXD(6U{&x_s{T4SQ(#YANkA%;zhuirf?g~^eiaz)rRUrS4y z%C?*|bHy2o&OCSmPJU8AlHJ+BLRAPdju7_$iJImqaw*ndp|Wh&FT_%TW_=3D;czt8`O zC1Br`+CW4O!R~gP4T&B>{0;2fUEq1RQ51N$XH!F$p9`Gv1NecjSj5gzJa@=3D~0A?G6 zWw`72&t{na=3DPH-JY;lG8Bm0R15VxPOSH^r$J*gQ$83tH;wz4sYTV;zY(jl`=3DnGxLc zcUHwtJcy4Wd&AU>VBt0ak?4Zd0nbuv5JstXh$l7;ue`h~&T%S=3D-YFw)}*!0rln%+D1TV``lb+TH%jPGVFXoAE-!yl=3DM zVRAJ0iUFmn93&1PVeXkMZ%A}Hxj4BHICl_da^@HdXTfe%26ltev1|KfU+ioy8zvZe z1&c8nBhqP*!pPQ4Klr&4!Ie9&E_KYirqnTPda2_X{QC;T#gXOg=3Df7-cj#gryEU(?p zyRPI|U_|gEfh5^=3DWbHSCfG$gX7hFW0=3DUI-aJW~0Nnh4$*k5@&0Zz#0=3Dq;d`PboM^XvQTemZ1ZP7)@oiZ%{E0c1?q zI%Z&(Cx)q0;>&87+9iPJOxy>CMK7=3D^)3aQ6VvW^_`I?rQow&h9l$|KIpV*17*iRh8 z@#;x+;wXrJ@)-8piQ=3D?QG_w<5dn(n5^V2#pM0etOMg3MHPL6+0tvieEc0qTO`mpaR zmlVcE)9=3D_%bcX8eCrZU)^`xRaUrHe^Q6Bna?jZE04cXS4cm7pTA94^jiFo5r72-6G z3%p8HIT97W6Jl7~EZ0>aNII&z$<9VGu7&f{RD=3D|Ed4Jhu^vG*-V-&Q=3Dex_b6~ zf!WrmN43elPNYeXk!nlCDPIhuoI;A?n~CB7H}) zN?v&|4^Tb?&bysiMM>=3D5>;;A(-cB%3Ch`7f^eeLHw^9~5tl<1Z>PgYhC)(yD`tg1U zi+^kk{ya}XoN znnIuP*xkNwE4D12w9!|9^xf-zfK;+~>%z@L5-`7Y zwa_nMR?C(=3D>=3DZf>zE}9FybpT+tJQ?7W=3D?BWT15}AFCB9Bh%Tm0d`P9kOF>+cgFy~A zPXhx5kovi!+z?choB-v>t8LB+FYl)!7`{8~xkYf<&w#f#_8k!5}AEBO!nUDtV8j@r-O+>8C}Z{Tgw2k-wfb*xMd zn{96ehVd6$QS1Gu*M)bZA`Xz%XW{s6z^G&_4?cJ|^R zkSC7#1w7!;-g$4HKq|g`Byq-mk#ZS5oKjbZAu)5tpmanp&GFQ)VMW~3g8hJU9N?t} z)`e`f@sgyaOR5S@$CLVXVXDX#RbKVNKHSH0RC+IW&|u6?yHaZ678KbM-eKUvEi)@E z6LYM6EoB906ZYbO_&WO_i9B`!S>6{5;#d|k_5)zhY*iwgJS}_x#4`Vs4ZFlmD_tM6 z6<6XTPzxIr)xAgKZvk6;A9BpiAuzhQ37{OY#JXktIt)F~f?*$&7yZB6cMSa4g<|ymDE|E!kJ<>dGq=3DS@ z0l-f)e|G!c$lC3D9lx*PCa5N6(T-ZTEb;Jbc7yMz@DgsVfHv%KM5co;J#yUeXvr%N zAhgR%m$GZzjsBx@w!TZuZwGHrItmCpj!P@rAx9ptGXgo#h8=3DQ&(yw6%V}5M3+9uJ+ zZP;Ap^gJ9NNIbTkD6YTkj#5YXFj!3#mcuk%;s{~?!Zcy)fcd3vDlga$GifELZ)1!?Mn?lrH z94?(4ssx|8+_Ix{>3QkokW`X;cXTdYFrDOFNs?+4k51ATW6~H_5iSOThOa4Lj`|ak zoRl1>haYT+gS1&SXVJhNR&RjyCkM^=3DUo@e6lV`FM8HJ1NLOGO-`BHD<`~et6yP6Rk zUt!+&4q;e+1dhU?ngi7opNbmgL9~6cNn;-cG_Dzy`x}EBoKbJjARmOpiX&7IMkt2B}t?Ma(UD^*Y$0>pR8Caz{X>|t&lw^>kNA*!O z3zyqETGV05+1cP+b+ib5&&KH@^0h5`f0Am>oEjo4L$uF2tLloc%Hjn}73PY5#`JoW zV0`S#INc;YPh1Jb4{aiv1Qh-=3Dw(OqAg%50a=3DlxWr{lFSXSZLgQcZCR3c&0F=3D8#l?B zj$AG0H=3D0t68!oZjx+7yINEnC4k&*NH^#Z5onE8a7>w(6u6D-CoyOHJUKxZd3<8)}bE|l3 zuxg08F3AoTXLR`Yu#<^f@CSs6g<8Y2Ql$KyY+D7YZVT0%6snLgeE_Qi%0UiboeADh z2e6Le02bNCuWz&Cgc%A1bG(r}`Umr{ZY+*#b5I<9Hgp_rW!m)#qE3DTO_8`Bf7I~7b+X!x zq}p9ezlFosGex(1^lw(X{Yg`5_>P@4d_o>qBlkx(gR6kn_1G^fCMk_0vE1iKY)c`t zG=3D)sQh0L86GT*e3QQkU90e&BaUtVFC(@(cwAZUMc%-T>owcMdd<@Z(8S2zb;~Q1lJuN>*FPe9W4fTD8GPqR9R6>$a~Ti5B=3Dg} zyhg{_14j}54_Jc7Tcgd>;1GUgB{~6z&^S?kTdAYz_EJa9oKnYwb4wkkRhBwr{_8q9 zKD66+9BStS_%yvBg7Wte(6EDdY4a=3DX$RTv-jtx$Eb-Vs5T!3hipd^8W!P*G~j@i*B zI)Ta^#Ql-qv#KA5Ny0z>hb24V1hOU;P?ZxHIv$@k3{D`+=3DmdU1Cs1H*NjZUpNGuw~ z33Sm341EC2neGHKJaz7O6kTMRWd9L*xIcNjBHV5AKLTf1ShxmmBe(&I1I{=3Duu)x^V zI4@~RP6o?IcNNHDaF1gNlw`M@C@()zcaYvr-3R;|ac;~?<{@Yzo?1_G?{ zLj(~KMG>4gRT;6{SBNJ!jUI?+Qc>_N)bXana3D`wq0#XYai`O{%i2RCZsj|W?C^5R z99Kub+$h-eiIn^vb(D-DOflm%R&gsWhMD>_^(>S6nQ$>d58QN#t@w<58^b0x#X`gm zo^pxbyr&2k1cbUvLWdXQ)?0)DepWAUsHg(<9+U)MgX@M;vrXD!4kK1CW2l7ODz2d* z%t?oU5Io+OWAoI#bd0dwcea3`*p!sHa734&FHo;Z`9Vzg0aqdMI+z7s9Pb{+27^uv zH3B9j<*vopmC}_H>V#XOE)&442;_KgxxCAmiTQ(cINv6mEf~*$S*P+dx|U~kEdyEf z6UU@3MnsS+1b%nPR2SkU42aa~b_nm{w04r`2pYFqXz)tv7^Z|=3DVXUWH!>L#y_~!|u zAO7k0JOHo5mAKi@A0!^OzsmqC95cj?W}$B~5Fig0w(ef0XyEHqGv^ueF%`ZU?OAtQ z7wNV!I*yxBh)Iu}l?Ws4pL^HB>ic;0rhOHL=3Dm_EOlkQhb1ybypqf8995HvT5V1@+_ zK+tcxLduGf8?x z&rZvPQot=3DTI>dqdXR#>J7W3~TlfrYsTUgOVM!WFfdzT8dL{dT-`_zDR-Gu>pH7219 zunQs?54_82yj*EHvaMKG59%GzF%0K|(u@!V#>0xwLseKBf;{mR23v65AXKop3=3Dybc z-me1b7`VvE;h=3DbGpBt~5KKCguUJunERBL~8<>#s{{;S&b08Jw$e{!WmRH`2 zx`PUXDJG*}h_uDyDvXwl$39*cF4BAZ%s1-}(I`O6=3DrHGxmkAha&9Pu12=3D+sGUls@7 zinOxrWV9j_TRc1-X>#w3g%x+Db8!FsOCN}|!MNX)mw~yse>gma*cr}sQW@Xhk9&`u z%J39S-~a|R!GKVU)o@PJ#8d!ru5aL4YO}_vNs#8vVfze#93YUb><)tiP=3D{!_8&{9=3D zZgimM9&Dj!UESqO-kuyK(?|@a3IAEt1J7F}=3DTi?rUtvFm(i!RkA7}C>$uFoPGiZJ# zvp)*Rdk+YH1af|20eBDh#{iP<+Fzv<(+BkA_o}8fMB5f&h>k(aB0Q%!`2{?vF+!gm z%_z6V$bC2JYMqmdG+BG z@kJZI%9g2@pcvQWY%ZIy#{}Jhzz7XE)LR)VyTp>wTP!%1kV^kg_LpdQtTox|Y)kTN zCX0%cUQ8$HD-LJ|+K?BQDn9VLdElj6BtUrr<{>F^TLb@mH3suz*gMK5J)>Pnr(|;* zimh>PMS3wWo454Ir{1rsF@^(TehAU%D^_rwF??7OM0gGJyXdaTG2WuXdvDMioFB(Y z!vhoFJa#wSR8ub4F+I8Id6$JO-9TcO&h~FegF7DZ02zZLswS2`|-;-JM~FBQ49RmK8R@=3D~yK#{H+tqX&V6W8u7wYqcJ7=3D+(V- zKY`e+(n0L^K9o}9k0DL$5wj=3D$Cdv_*5na%Yw8bm7{pmAbQ<#fjPsa2EL(YQ^WQiWR z7m3>iqL(@%6S+8xtshrAJcCLe1fLz3(#4PaqZDV19M)%WF$Fki)3J_xMN@rKLyhT+UNMq z690bB!*8Q5-pdK8(0R8o8qXNxaB^_eu{WcKxE^pk+q0?(SE*s&u`0;S#$2-b6C>JKob=3DtB z!Eu3mz;UyeX{$5=3D0#l3!4kh_*CQA2few%}IrTP?x46?|}N&E)K2J@&M4l6eS9K*7o z(n&DN)EqUJljV5V<9JcA+*1!>@_cC36MHTC77Jlql66tHJ!`|kxC0>YTnfXT&T@iJ zDfq2vs~4!J^IK0Gw?0TaZ()(Eua3lK845%{aw{t;it!#mC1Jd-OwPL0*M+Nl(3NG0 zKcH2;&|@!L(yalT^M=3Du8Xl)XUxA3oN*<581Yw1LGi(OAjJ)yGIK;wZrx@26w;Po@&wY>ne)eyrdy)< zX8P>KDYpdU1!d6ack>Qj_s$~_dRIdL6JYnw1g5??p`4vMEUN4wYIru4X7B9qf-NAc zSvwE8a&}32SkA7D+FJjdG#|^*Kiofu%?L7jm*cP6OaOM=3DC_5xDX%JziKI%-IjS5=3Dl zVTKLm6P!RL2~;qZ7>{TUp08>&mGeV=3DU_YKTPx#dH}Sy$VKVDmfbbtMl@#=3DTJFFJ-+ z5Grao*TJx84{^qHN#+Xhpx`fDAQsPw>sy7#Fbq@Uh{;t^iZGtyO=3DR{LfwL~$|0irN zVY(xtr2qoElE9{x3taplkbeYb-iifOAf4jB@hG-@$jL}wKlk>?yoC!?y#M6+5d!A8 zX-qj#xMWtmNbGsuzEImknWkGiy4Hig88M*U#?0&ksYIn_1(#`Vuu03I^ec47?y?;8 z*o$njLUQZUPt|Kxm`%DApp_ONIesUa@x>3slB1p7Q-^1xiQQ!*y zS1zMSCYrlTM`2X30jHO2ujXQ3LL`i|(e~mbf5y9&^X_p_=3D{Z9?SRkYd1;MMyrECTr{Kz=3DA`7Ia!dius3QlWNjnLEm_-# zwB<*%B28Jdcrsm${7?IT?BxExKs^l8ah1A0p9fI5{j1aRSMAkp@k6zq!D3rkP9Htf zq4npl)B3*dA@tpY{#t$C8_DSV29#TUZ%5kddo$9f>N^#v^#7#$-{Jc$bHH z|B}U9E8MA;=3Dbu9b)k9bcoYJ8!u;Pz!ZF&>mWd%Q2w^ci?SXVX5igJ9d*aXMV3&gD( z^q-NN)7R! zw>(A9^O4@Cb$AidjE7wn5qC6w+HYGaq3@^0$2g6)rKktru9F>nJ(vk&63rQQk1-XK zXt)cApmfVz2XsZg1OPDSztqqk&`zce@pV1xn!U@6BDfDEzv29q|QiVBw|B;jjv^dT@`ERpewjsbQXSs;m3*e$D%eekvpX6dxG%p-mI8~1-YzH1f%-)sB9_v%yO8=3DbNO?>MTx_Y8_o zX+YAmBv;}!|2CssL{z~j{dZ&-OE2%!kxyil_3T5VNNpy~zrDbsc^bX(m4lL8cHtfm zK91=3D3mgKP$i?fpx;-MleazRqSi-jjhdK1sd!7cJjZ4%ys)@Lmv}uN114{TWB{iAFdmJ#{KcxfdgP^Pt0fDI=3D(>=3DHXLPBT zr%`hX*d?h(m1;sG%r)7@zs2+hzlLCUm(eMT!}W4Sp&bvvpsM8O6Z@LBWH%02zLRF z`QbiPAuhuO7q_vRC{%=3Dd*oX%A*00l1z_HA5FH2RM=3D2lf27vcxvaiWd;#uN(4V$b%G z((Id&(^a$1yHk*B)w^LA@?=3D<+9umwkMIRBJG8R~7*A8yUl?3~O!_b^2=3DfgtbvIZ|9 zX+rQm2{_mMiYxAGD3mrxlYn`;#!pqW$QnH&4e2h1i}8YabT9HqivjH{1kG`$%Ne|2 zIy{!;Z&>Ajc|*#>6PUZz%59fiSF{#auuS4*qXw?0w(xt(lvgy-!jt&sgVvkhSMZeY zv2+D|k7;*`?*Su&W$0tg+)z&`fCW7cn@s(u;$h2CS$H3e`U27-07yTNG+7wR*RdXH z{f(a)^YGoy>DXd_iTrga`v?c^@KK`2vsym{{FH@;{E^hAv&$;Kzn}7_sIxiI%%cuZ zy{-I5UM6<4K)LlTffDVxq&P(a*?BrQ-s2Onvpyv?7Da$GEyo%I*Oc3Uia8TxBpMyVysUjLdDDi&&b1T2(=3DW@momHpN2E?;;DaVGw0=3D zSRtg>cUn=3D~;-P&=3DlRvCD$|vG50s-F|}-GR)ZuA@v*q7A&IpFMjt?cig(6{ zwj{9szb(aYr^#$2U%!tlSJK`$Gu}_=3D_c00=3DqZ{d{iPZzWB|fbE@)7LZQlKH7TZY8M zri^!3e+nx&BJd(ufs11!85}512gKWLj67D9?|QCfO>WA}0H*ofxSg@gbsn2|GIJ(<{mmKJB zVl)!TsgN#-U?t)Hq6OS3u3+Wlu`4AzmmuV#;|q8P#)n~Zm=3DrG3CJyjX8kE(ITsD2F z&sB}hX*l+ zPvSBrj}jHACN->A79$`h`Dky9dKI-1?Ufhpeqas8?nhF+g7bv~GU%F72cxKuhrcr? zB^bg@O8<7w$NJQ&t!JVSCu^F%%%g|wpQtQa$l3-eWOxU;I8hjg%cmWnv2XDZFR$uo zg?XWbz%cx31w+I7Io@KZ0E+oZs640#tHOD4e3T*FMeSWst?q(BrB>NmU7)ylp&Zk_ zmC6;f&w%-7p&a*0VRRAX>y}^$Vk+EOgCJi?-xlyWi0}je56?`sP?_FBUh)YHObd`C zyD0_Q`#sM8Z%Bg$zX0+Jk>=3Dc=3D$JefpRL@&* zhh>5@cgRqFJNu32o=3DWyS?WzM;^&NW|b&9}k9jtL0?*{Lq^K zh@c3=3Da6s0JlK~LEd@i9O0-4Wc8a$Nv3Ti-*LR2I>CVq;SKp32|&W>oHSdN8X7EUmwefVI|6sRZAKYgt)44dSXnx9qA4aJ~%R!H&?hxrk{#6SW%&oS9rkcpsqgFrkpQ4?gu>NA{m=3Dr(9NpRYPyD^qx zOBAmZ!sPalM+VSeG@p`yojQ1zyxCferaD)v1)L&y16N@^z$osJ+1Ed>mx@^=3D*nwT%f8(TKVDB18x*sbh?;THUAYOt!eVL zg*6Kz7BgCO0)4FbP`bGeg93H;j=3Dk-Q8_FZ>xO=3DhP@n6W{j(io&D}@20HQjRr-385F zgTD{?s)PZ?_r`lM*W=3Dq`Q*Y1LZ;OY(4JYFB|Lj)P7qJ(0osXkK@K3|&!`9Cs{cl^1 zT^KU$37jW9+1C{Ch+o`)4Ey6jG#T6sOYsnjp^T0pFsZ&Did~N8%TKYYTYo>4U((pD za_W zDX_$^$k4KLU_|s#Y2;2o5%+<+ScL>Q?AEM4HOdnj6=3Ds7Nd$tT6!q%~(hn)uc8M^m# zan-BvGPe78s@+HA)R)L3)c)I4$I`~-e~`=3DPkbCW$dnVGE<}jmEk|__ ztH52QFd)6V$!+?Rl*zXh6iXXxc%Qu9puplQY}i}k<(KmCmsh3WTNa>r4-SjN^63Wf zEStc3@SR8tU-TPh3C^M3Uk7Hn;v3df2jfG%4A)J~m&qFtZqzwf>YzN@`S0L|@M4cK zcpTWE8*IRbtDWP@okRTHX*sTO<*v*e_qcMm&cQ;7pqwHOQqq1OdW((1F&Zd^CqZ2d zIb<-yFXoD7xEm5B{VuqHl{iM+T2*rnl~1^b@`lSeV7g2>Ags@f*HTesbNL!e$Y=3DjR ztFg!hgcL4_;3b?j$4k$tmt>Xqv7lg~PU7%W@A7iiI>}XQzb9%Ggvo?}D;5Fa?lcIY zbO^^Gn;;h#d(banXN%M!1mIst+Sg64dv1B@RC!WmjccxDRY zEZrVE_8#P4LFT@?#}E+UljU_QM-Pq?PxUH6S z_;rGhBA~ia_I{ORb?j9zV;Y}}{PkI%OJ5Ir0@c%F0{zkB|8hOd)(=3DIX8t9aq0$?t**qzkU^12U>>;!F|EsXU`@j@A!X2zWgPWIvlCFL^UKN{EzD`5`umydkh7B zpo!=3D>F?$P`Yd~nEwVsZ6DQF^9H)7HU#)M>|7$fp9z-bvugD2yn<3oEuQDv6pl$Xqe z>7L;0Bmr~gyV4G*ot-=3Dc0jLQp zRCS){8h779>^sUPD)_$64rvy19rRG4h3KPrO}r;B&u)5u2IqJUtRe#toDI%FnpA=3Di zItox|-L+YawECWvim0dY4^;VADYGdKlIWo6dk=3DwVR>zaLVv(A>PQEsgv$`P z;NE-W8Sa%q^Dgx&!QlgL@H<`HaR?yYuyWczM%}o(9&Bbx*JY5t44j;9@MiACo2>IRKilPyy z5Cn#W1AK+i(kIm`;TfVO5guKkGRPw!F-8i53(z&X-c0MoIVvOhqwvkvt3mxLPL0Yq z-hFM_IHvJuhQ8fksRHqZBWIBz!m|L<{OvW;8(>mlejD)z44WFc)6?Om$qV)yv^XYB zB3;PlSb=3Db1gQGCbC4hp7E<9KK1atKUeWnNOJmlqOeWnNQJXFB6>{?Cf^G}RV*;g4r ziDG9N?i@H=3DS6fId7HidyTj!ytajF-F8W`!^9On8=3D56{)$Z&}vP4p&aAO7kdzmCo7O zQIONhi5w441mP3or#x3j0GS>j5kQqcaOc4SMguYB;fbhALvE|R?~z}yA;Z^g9So@x z4#F7>5X;o-k>DBYn`PKwDZRixiB9ZYf*MS|i(n!!#2Ep`BM5c`9 ztBPdD;uis&nv&5+5&$E|jdh#L#=3D^?snyD@h3$_a@<#^?EAgAV97*7PI5FBMd#YJn~%tPs7tmIg(s)Yf;C@ zQ4>c$k(s!Oc0eIWJjU&0{a6`8NeJg+f+Bc#UCmQ{QKI#8^WAJ04gk`fE2M;Fu zT96H-MEDMy_!!t53nP}B_%9)duX_r&t<_$NB3yug7jR8aqp!QcIaqQKJW_qfuz>4a z##C2HS#fo4f@UqTT43NfN8%%-K+*0>NItgCQ4s{pRmkKZ60{3P+W6Us9&D-Wt;Bb^ zB%HW|;l!m-7wD_1Cx5SU88tnP&I$ctfg@LNI1r;?*u=3DQnRZ?DzlVc;$aBn4AVB^VW z64@Xw7O-d<&c51a6s=3DG`iGD(X{GAC7W~H(G>PeTdV=3DD3){a|!;xsZ05FhE)UdA^>=3D zNQ@p;GHVyXVz747YiCZo`U}i~j^2|1-q>f@8$CXH@ea>sX5w3On^tAz50?Y+Alb!g zrHOBYnyPZv1LyM@UkKcep>pi~3txrd!VC|_XS5L6mD3fgL2RX4clz^JrFA+@-{DpF z)*`$z4tfJb&);hTxk@{9@*A~^W4j6m%hTYb>Emc;pLho72Cl{T4?Xn{0X%lR(-uA? zmXW+u8Jk*&m_cq8oB|Xm`KH{UU@Wq8xlFn{L}ig%^4A}|S52hSp?jga4QZVOy`wT!Nd zf@75DpNGf*Mpw9*FR0P=3D%joLN=3D>d!`hregf5imDLW(pzIzGyK3Z(lpji)~ucqo7)=3D zq7XpUfjgI7c`|{8Kl@$3!+VT#Vc5s2Jq(I9L%q0{PUxPhFwm~h1D((fRqPhwgg`?^ zz*?5*lYgQ6K@wk2WlV8=3Da$o8l2sK2G!VOaJJ$Ffa?J)fkzT!^ibtK>7!1>X0^&-KO z0=3DPRb{#TBMFxyV^EFcUj;o#&418dG#hEPE{aJPnqm+TnD!()0IVn4 zGq83LRvZ}@P7W3biJX|f6McgFOl|Wob&NtI*68bLP`H7)`}QCoi;LG)QGW-`cNE7H zFTm>2I;6+5!`Fko;h)#wtbT$>-IbUXqdIh*AJr2iO;7TT#31l`8imgKgg29Kq3ODv z)Gfg(s@1w(q5=3DS2hfz*PHxbTJ3z0YbGI<32QP;TvHEzIy$_zBSbsQc}T2QHMk(Goj zM{;vh&VI%V5tV<*}TfXRLHAw zpXS@Ai?&0w9OM3ByuP<1r(M5V8C&IJL&=3D|F41SD&_@K%>obg)<-T~VAygCXSwJT%w zv!vH)xCl)YyGv421`G(6dGKo8W~HIfsWjpOVegT&h83RveEsUUSL9^MUNEr&4pOX7 zuGXc|+2X`Js-NawfoR}+sH<-l0KWXK9+J?)6$Ru% zjOrZxXtrTe^Ba@EQT>o@Jn_FlQ=3Dp5?0_(sCf_Gx8xj2Yi{$SNDJGljKsXTl9)#G&E z`kXy@VWzyG-;*(#sb8_jC?-txiJUB8z|5mG(XlzR(pW7Wh~-aB{vlDUuw~n@13nIM zWh}0!sfnsa;5djFcL!qeNG4+AaGpRjw;meL@*N?*GV9zE*IbJB0 zB|v?*^ZXww{YKsH*sRXFoQveeNUujTOn(9CrAQYeU5xbgk=3DfM|$BlF6-4Vw6x2%F& z?ulA&Ir;ow6(+Z^6MvU|b?^wRJXP2az%#^;TLa+NktUJsfSF&8Vzm>L~ z=3DFhgVnbxN6IKPBj3nMG;x0smNs;Trnl6w=3Ds?AKskfn3XA7GPk&%TtvfDjo)G;fSU1 zL%T2?qMw9I6V405cG67h+R9Ub?SyXEnHXGJQ_P?Cz~zI1r41fYy8}HzCjHPAUK$}f zJ?-{hIlQT*^b2)p{9T!O$lbPkPa@@&;a zcFjml-WsbsUm05%Ts04Xu_a_0+YG9vTkdq*oO~mBj$mejwzcL58L$@^jE*KC70f>6P{@y8Y)0TYBP%Mxj!rb_>G?~ag~8a{*SP@;$$oYootDM=3D$P@eZP2FkOH|C5gFgXj zD`q?$h27AZPT)Qh>FaN=3Do*lV8ocZwta52W$im&OIPD^gv?=3DUgJe=3DWJIR#~ZacHZ-L zYULAF>CES>)U=3D;lsX2CDyM6=3D0@zhGBjXeI%;r9MkK5~2Y3fTvnZ{#t7^T&DXQG$r} z0pJ0OBK4+9nMdFs12Yu!KVu|Qv5}=3D{w(V8Vu}Aer&L{3bOoCHCCX1I#Q##fl*zzq_AojEX4>cX`G}7LY>89pt*44 zh-cF-xm!y02b(D}yOR!n3^W?pb8#M)Ef{l6lc7OglV}AX@HN%N&{O}U)W~Cn z9Na?y^WGt&V750`ie%{I# ztp_mt#d$X?TT~#yFcCD5V+M}_h)xlONH9!Pn1`%b^uoL9#ZAmb4#z#CJv&0ZYuUBkPHz?qjFH3~6F)>r zlP{n8bqB^~@i2LvT~aeey1luN0~!J%Xc%0BhW&`cO1uaSGq6ShSUd_6L3UG3vX_-H z=3DhewQ(&5UMWglOTAr&Bw(*A%PT?Fih6Nr%~Z?`zXvdRCD6#&sUpRj%$okB@=3DdRCZd zLqrVGQ;}}Z4$%U@x9(*}5fEU6c1NgZt@P1w2aqA%z}?#U3<>Ghjr^$+n%b){B0)KY zEfFQMv{0xIC8K()U^%bmj3fEF5Qq`39icAa8qW@Qp#J6B^X-gEBaix}GUg6QUK%c4 z$yR1zQUPQapW)dd8ZeJChqk)(V3M-6x=3DhJ5k*nLKdWcmm^_nVboRNil*^f5*js}Pt zz6S{h1Im^@I@;<%&(E)1ON0XWPD>DeIM&u)kUDOqi?cx0L?Lq2BN9NyhYRw7WAz9y zMz;fjA;ijJLhR&tf)ysjq{Ho{3YHu)B8dST^C0K8QX2|&1F5S}#&>Zr3{p^+P~EX=3D z5yKpzf6hqCb_`2oJ97DMj#!MGT*<`^RXhCMmx@xY^~u^9;()lTZdl2#2*O?5vi5}Z z&Y9q+mzDk(vq&bw3-l3q)1%%_kbJgI*o(_3OS6*;0KP|$gHVlpu6oZfv5D*c@dPpt zMEy)MkJeGE=3DMWbqomjhM~i%VP6)g!4a0d-4I+N5a-b*_-O}sm9FWX*eEk4i>q6?cjkaB$RuRSOV7`;NdE<_F_MA&`eyib19k% zb=3DDnW5juea7W%tOcCx7unv#xn=3Ddpt22v}a7h!|phVv>}T;vSqMUOsdTO$@Bv1L_7d zXbw;a(KK;QD-F?|d=3D)uL!X<}|!_QDTJ~S^<+-be#1EnPgHc&B^4JY*$cu4BlZKc1J z))rgGTM7>1u=3DZQJb-OK)s9R`isTcRPpJJAjt^{t%FX1C}0#E%N{rpK12KidM1vU1V zPw}Uwq9vEV%N(eg$GHa%+FY793s$(=3DV_uX+M~Dyn<&6Y-9uG)@zyMB%Z&@rO(M@ zfrKCE;pa&0M%*5X1H4k3({ZT|8(}y@<#fH_)-%i-bNcyMhux59((}+yq&WqKQ1P{l zA%bUmQ-}=3D64W(X-ZZB~q{2a!CFwuf=3D|SepDvjmsVAUY=3D_v$GP z2~wwOsQFVw0aRCj#84n{0w*R^Qi%xT)deULolV|sEHgUPKC(6(n z+#t-JIeN$b0Yh+xnk1_)tH|~secU#QHHGdyhqxyUSFJ8X{m25%MbLzshQWG)l=3D!*~ z_HD_ib8A=3D7JPbNumYWV0JJc|bfJ&qXjh$eMwV=3Di};a)L>kJE~{SM*H~e4ItK_`gXuWhp6}mZS|(AV85~3KYsqODMLbfq;!Bp`i%Ki$Z+} zhzPs9+0d44FqX~4 z&pw+MMDP8#pX@&S%$YeeXU?2+=3DFFLy-ELu2x)PAK-;tHx;#MeOc8zx;T$YIk?#zKu zw0RBbtN>B2fDxhBbPNrNuK%)t%Vd?e+B3u$anvR_`ZBM=3DQ~Apei9TH_RpZR?rAd9t zEGA*n@<~hAzRP>{8ayUXnX_di#6N`DBN^;C<jg^N@?<8pLN7$?PUU-SFlnWd<@2 zLJFp5kS`K#yVuf%yfVaxk#F2`V(bQL8w<=3DVn>kZXRTJp~ccC1&orWcwf?6}tLg*kW zj?aQ+#x>E2Q2K5u*><8AG`^dJ#2&Up7t}ZAn^#qGMAEWqY|YIFj%>>r17e zde2|c7^RF)xn;1DSa^fvqE6=3Dtw5fK{alrhZl6nYurVC0q839Q}RRYd(5PRkCmK?Qa zvIR)5(J6zh}KoGKo4O6HI!y5WLpxhQPM7zXfnGUUL|KdmSemDKwHkb_j&k z5JA5WP^Gd)T~sB60FB3W+)rcCz>ayh9;27~R@4kWE3p@^>^YY8TN(WX2%35qPG>u% z)X4Lf4O{OC#C^N+(-&i+OmpR@$08y>0mISQ5mxoC(oRhda$w! zf$jSf-FdPT;DOA+NwN>Klph>M0u}3{y(!SDGN?PVwz^$!WAtz*! zMV9<@5m6pw;E0qQy!~{Fh^~*!njnjTcFijKbV-f$<63#O$wX##B}?T|h$7-Fl4%!; zNklpI@6hfMOR1w!h$sL21uo^sk@f&MA6ug(vZ(opJjkNvIv&=3D_Yh)=3D)mIw^_hu{2V zOg@pus<=3Dd~`rDreD@!Fq(?`}yW*bOPa;j7c<#^HyiHAQLdyKLy2k?Mp#iuyBm>4v4 zQFiA0tefyIziBG7Nx{bABSRHOKNDH`oxTR~uvTCms@VLJEauyBB-^uP*)(sN-PS6B zbJ%sn^0RtbdOz@P0f14j$_ZNAsjQ9oRbc)iKe$0SsSjTDY}J-Nrq!`6kkhNA4vl%{ z5Q_+}ill3_%0OkImVTHmkSQ-##Kg5)czgb1@{I~%=3DrYMy1Bpohvu#VMlKBXC?}wb~ z%6MKYNf;v4c5o|UK>eTk}NXe}KT=3DU2z%1=3DtO)`nd$z5O`t{piz?ln$=3DeszKQ&kjrnGuFMaZF+ugC4jWD1dKey%5LZh3?Cm_PzIov=3DW`FHY{q~@ zwmxV~6+ocGR!>W4Dz&wq77H<~jVez^+;5USiIpWJX0IA`W*OYwl8GiSUVb!YQ}pS@ z+`(w=3DIO(KJ5JvAp3FKIm2c~H{UN!rbBn(SBN{O*#*h0ZQX z?3cs_H<4M>o$Qz`X{>TeZXIvU0dun%5*G6~mPrb>R3?xM$T=3DTFOsOJ$F;KC9?Cd-$hS%rR^s|$Z5Gm z&JQH#a-~>&*53TY_@R{8Q`X*pqF|a{Ve_d*rL5S@44$j&TDsqr8BniDiAtTS{qa#vnQlaQ`6BF-VM!boV zt+J{lde86V_4+oUCi@8vkj)G$GE@8_c>~j|$P@++e=3D|Ms(#}Z%UP|2{yd)d}FMWv=3D z8Gn|S`T+KLX^`jPyd-K+^+PS^O|E+eKJ++AJVd!C=3DE&)uS$oB)CA1-j`lGk@FR<$$S!06`(<%%TEl<6sy=3DR zGV$)5yJiQVuO=3D-Ex%4jCb7qkz-kraUlLP#6&s%;#`V;5|%%Q?`t=3DI%jgVUCYi!1uv zf@$#k31qEvZW2kbQ9d$QlT45~zy49-PWK4K9kfSot!=3DB?&bf4*967L+=3DXRbq^1OlP zr+D7Qv*EeF*4aT>QnLBXkA!1RvzGoru@8Z{-ih2Hf=3D51lboT|&WgG@2Qdf_A#ZETt zS7pPdY%JTgG+8%})Yh7(TB>D^*;=3D)sWdXCAqSl6uEp>8yX=3D_b;OEoPdX=3D}>@$|0$< zrEY>IZEvZDbR>1PEQor01*ZK8PWlqYA^J73wHD^7!s592G8Y1$wtx8UX zw>+3VY4C6Gpq$ACjib+%J+w65E+;T6p~A%{TPyk|~ZXWji;> zI9tVs`R+HQ;)o#5Kc3=3DTE{P9H;yOwEl1&|sLfmGwCc(o*8 za^)C5&UQ(cjC~IbOV?;ml7w)*=3DC4JgwBUo;M{d(rOYOU)_C{*owKmwauS(*eB$nJs z;ty@2h&5@Rxn+^ts#y5c_Dqd->WiubrLQVo-K(JAMj_EoX_Ncfl)6m|s^nOBT^{$H z|H!j*R%H+qXVXaEVt?z}fSvQVgKYDyZn_s>Pd7ct^Ju!s*H7=3Die%Z!tRBiB<*1h)! zQg=3DDx9ibm;(yN(1-dJR=3D(a>Oa4s`3qneNdl__DfTOOd(VG78l070(Oqh+TV2{k2zL zV_PjpEMD;0t3Tu2=3Dj`#bcF_%RCG3O9)2+~)6jN&=3DI6HXPSmbO+<}eYhGYz%cyO`r_ z_QyTV%jA3}$HWu9&LkaZFEIZ4@i|jhF&I?+ZO0#Mw7M)ar&79A${5w6*JN7PhQ9m#2I2)+r=3D8I zMkX{I=3Du!oGc=3DUG%-2kA@bcU3(P{!3|D%@qtXgfsi`kvy5XUT~P(ES2*h6gn0&P(2t z^zD*vBz>}*4wuT@a*DHG(r15x^u>IbcfMv@s9p!AeU*`0rZ{42JF5g{jljI@!l<7x zRU6?vn<=3DV8bZ3nKB`pwChlv;Amko+p=3D%ECg z2HRMO4+G)5YsG%l^jMjfK7M3+;QYwT@7I=3Dr>CFSA9L-NKE=3DM)n0i3Gw05&OrO8M-E z!UxKG3_*{XZ`qjA6U?QRR$l70^73bMTG=3D0ppJX~wD}F02q_bFBDVfb-Ow@!fokQun zsRu2x&b3r^(aPNk-o&m}xwW~|Z4&MyqIHk$(4Q*pzQxFkbNN2zj>|(7+%J*^BZ9yEe6SKrui6{P2)f75;IVbKaWSve`;1F2%B#* zF^{js%4cF3|FF5uFS?_OjEtWB49Hriyb1BO^kr!+UYV{8C++kgMeqS&x+v@aS(%8v zjNQY=3DMMDqgbA48Fh8Y(a0b`5{;fHyCac@`;P(X%|UKi+fwL0QQJJT-`Vc;OIni0cm)Aa1XDdTH<@DEx?7b9q zd4Q>=3D)RZg5EkBzP{A|YH=3DRjLL_PRma(s+h*i9F<+>logFhQMAYnO`xey@t4uPPMc` zGMnRVD`d#uOAFe#bEBchoYF`+T!q65(YPC=3DNH5aFOmS1p8!yRwtbtv~F7BhyKHYbn z&1crVBB|23<`3>WCd>6EqVJ`&tRyTkn_Upl9dFUSZ^vilVO<+Ht*VxVw_H!xacMzq zmo&4=3Di6`NQQQ%A8A6_gZk!-H5{wL#?K1O+e$U@|xckvG^@98Ww<#E1{YPLjY-mK^6 z6z*h+MQ_lCcbRb?oGO)Jm3V>0-T_&q8KB1ym;;Xqph#4EFj$s8qZF3fY8&j!RXs)3nx{uhfX3fiAryw>YgofU|~Df17ho>a}Fk;9Uz-=3DY>;6vkN*_E<1Ek z(8do=3D)rJdRT6y+i@{6mzNnbP@@gAaWf3 z#E#~qt|Kl=3DeKOMgn^?(`b=3Dy<>Q!l*zU#WuRdEw;6MafxLUUtPNH;3iE<2tGM-)0R} z?oGWG`}mx5q)yddot~8{%vpTsV0?UP9{Vchl$3GB`NzVk#Zl@IuCFz%8Lf~44y)C( znL_(I9+@@N{7z~c*KW-VCpz+&k-bA5Kb9JrGdUieb8$(0{G5x+;)QcAo+_~{;UyQ> znR;z#kuBi7qB)Ca4*F?l1k-K}C*I0yekcBvr2&nSI=3DlZ?%-uz|hT=3DzIkmza0joiW{ zuky@GZ^{19N3OWFMGz2zwVi; zu0286)j$3!&GU@C#M}^64c*$XR=3D%0&%_%f=3DR{RVz3l%|yk9NMdSXIw;V&p$4&-vzQ zt9-2~+Mzk9Xb5k1spQrLR(V)k#K=3D!p?M%!q=3D3z)o&z+SMS}CPe$b9=3D9Y0^|%olLoNHi^#cAjCZiQD!01 zM`Oz(dFAQ=3DGQOK1o47VCBC0ztj(qB&q2esucUEG`sJBF{#{z&)(-rBS>7b;5)z+&_4cYUOn2+~p^vXWdMntDR93sP0PI;2NXaJxF@i=3DUMS@9J0((I*n; z6>WTW*M3sPT&}}o$Ey;&);5D!PNDP~`B~acKNd(7kvyy&kYB{k$aiXjd{$2AF6Q0npD_PnjFHpY|Bt=3D{y)XLV6mz=3DsF{%DkQNm887 z+1f$JWHk|wB<)NtD3cNqXYR6z zypmYODI~*nyAqp7`m~p{E3vtp`*w1){Xq-8JDWsbzf%#q5fBAsKhn9B$>%7M;@#Uba8z|)Z;0h?(+4Cb}p@fZV3(Fb981KoOqv8}{{LSKAVSIOh6+VnS@L3^87*9}PEOCeOU z%2XB(lg1nl?HyQSpp-aK25D8KwlO~_k2z?Vn^=3D*@7TDRjM3jUpkIPhKW##cxBnIUj z{-{2wvn%gt{%ME+XtVLwtF+t`vZUm+;G42#=3Db4R~v)q;S1OyLq4Qx~|@gUCOkWoH{UQji}J#Ga{b47Zk+TIm!? zbQ9-`kD(Q%j(}p>@D$ZAT^IYL%QL^V){$+VdGQIUJ&KrlY`U1*t8eByoQ?3eD(4o> z>^vXfhr_)z zs_|b56#BDo2MW#5@3=3DurJQC*176y-mszZy(3JO>rP+}#g!A6`ieWj{77CiK}Ej<_h zEFd}aTdeD8@Ea>Sjc*I89H3HwM(8Vv1S2Cc$U08vZ|pju1y z6br;jeNc^7S?KC8)o4l8Xd0sk<#0##(T2+E;#+YA^-=3DWx?@LKpc=3DPe&XJ)4+h$5B@M?06> zlFtm3{3^pH%R}U?4ktB-lt<(YVF&tBO3Y8@WzMwv+?F@pmbV~K-aW(1Bk)=3Db0MAfh zlBkvfXH_i_OMxg+51pD2vYgoG8!~-K7rJ+t@oeqmL~pU{@^Qtq8+9oLdO*n*ak+}C zWcyIEGcHl4ABQCJ=3D-b8c^Qpj22T`(Tf5Q_fC|MuaDJHiTVN&Y-EAXUO?hEUOi%&cIku2PxM?$R#j?9DY8g#lM$LYO zIu7X_N$lq6>u{a!3eks{q$;X-Rmc*bX> zzOf)^e;nuBPLa7r#oA!G>20DeW%7NN>f0Q3DUm1MAkV;-ezWQLgeey*lohV5f(sM* zCQEB2c|^YDq~vowlcp3PNT+KnokDCmuk^N@(o1!k`DQrUEVF6oCKD9shK6KS;qz(( zL$qkK@RqJS;6P((omB_1lUa+EopeB#+h1bWX6u;>ukK`KS?jF0EI{qlpQL@$U4!Xt zDRpx>1BEihcB9M^HGWb>&61njcrOj)uF>4CxfQ5zO6H7%c2e~W?Nx*3e_QYBAm&&8 z_%GJGopYgF6Ex4P*4%Er-5!cx3$+5~4$C@f?#$DS&N+c@d-c&EQwWWV6Pu^WoN=3D<- zW861{KZ#~T!g@2=3DPSVqI1dPR&AD^J31A9v@U56E=3Dqu4(KpM)&JMFE7@4o9fQNkv_; zYo%EKM1Hin!YhGh zk?j<7DktH3OB9X|?DU9SQhl~^wIva&6tm$APb!Zxz3YHOf@1lH0n{H2qRtV^xzjte zWBD6`(9@1;PRu<}Uj^q1n*xRZ#j0G}E|K5q@?=3Ddn(JG!)NZ`skm!Orz9mu}3auP)J zX+l8sbp*=3D(kDRiJlexWQ^|fhFB`~q}WpL%1)O`Jsy<;2}&hN2vDg6LGLMu z8y*&9?(!{*Qr6Kmf*#GbPGcy2mlm#lQnyz8rXD@yIhP)q?3p!UFMtjH1ge+`zi##^ zrlsW)z=3D%SOvgJZNl58}KRK6gWy9~;h&2$Ay%~rtDyK@A+$6D|9J+I>>Tsf3Zqqbq? zhTjDHz`V-(gN=3D+BimvJb4x4g+bk*xTNkkPJN*cNno5v;jZ0ahAevy$!bGnA6HP@ET z$4t0#xUCTHmhwG^@I8P#B_n`pgFu;UoW3iD7jse$!~$pg2#BH_h;nDm2#7t*)BLJ* zRMF9pfx{4q0oWxZu@j)G9`?J|^dOoWbd@{0>M;e`X?w1RD=3D<7qb2xS^yqUO@5qp?$ zR5m3)#w=3De_3gXN*vni>PHqrg8&C3Gajt8k@R@e8aak9fM4kJkJ)FLoU=3D4ugQn85F1 zm;fn;3BSZJ*-;lXL_#KC+vyo1Cz4qfYo$$fV#M#L4O$){^NI>HSA%y{?G&VO zQhD@WPus%r<+bL_K;@_fTQ{hj)I*$olrNiBMqmqA8zFP8V#`(zDyfwO8nKdg)H?z5 zf_SV^Dktr~qa+kj3%4+B;`CsF7ioc6iU=3DJg z5W=3DM+y*rpS>WRk)*3skQkJ2wAMA@^y)}f7P$KgMG3UmL2N%KRQiSt9x^Y=3DJ^R-Tv< z@?C>E~<{v@SYb}xwq%URtuxj}F;lD87KkaIz)E5Jk`sM@L zXwN?C4#g|Xq%Q|3IGw010q!UPOl zQHs`%jbG2y!t)}%?dgrPmJe4C8-bWM98g0nE5T5Dg9ZP0m3YJNeSc0(T0fY8FmRNUSsqkr$dN+ zRM^C=3D+dUAfW8wX}nk~w&fnTj*p?c;OSE_W2Rn;w4mFj`$sxDHsuUyHpjQvspW+`mC zSh>Mn`v5_TJ2Z9Eu@42F02@>`IF$XZ4 z2r^+H?1AojrxVHHdNxAl$11@*W8f&j>zv1f0RK+`Jk$0_B$L!q*EEvV2#v^ESuja1 zm^p&=3D%4s}uXKdk!n1DYLy(OGyssb_4`!=3DB0@BOJvJiXp;`BF~r6Vp4>^tT3j-v@T? z_j~_bjB;3pLH-c^ABa-5Yez>rH&`}1B7o?qTtqnRXPQ(Hkq>MUNfG9C>@|yMrXYG=3D z26c4xCQd+0H1&p98K}01jtn4LZ^da}^!a+HyVN%0>D!v<1BZ+0LWuZ7*^;lux z$4Y!V({xqnNIvu96ZLbFr*w;TMkn$%eY5gPF;mb~?Tm`L8G^HR26IA$Vru@(iUl*p z0GU4%9G*lTyuuSSt_rdI;SEw&XWMFe&GD2j-*Vm}7AHYEa~^W#&q zzn;&x&&leW$i8iUQ68on<2*lgq2x*CC;3)KL@+`w+di&#En=3DH4irFv!y=3D;jdL9+0c zM*K!TJ0s-tSoT{s@GF12j&8SWoE4u&&IW>zu*X!ux`IO}&oUw#k3}|)Zi7WvO-C_f zhgDW}M_0+I;v!|UZu0`UyCplzq(5X%X5G!)R1`0^#&BYHG20zwA}g~Wjz5UqhO}c5 zMrTB(QEz&ZwS+@NJ?mU^s5FdO!>ehEv8dj;f#&!!@;_COxh=3D_@;KH~CI#&fjZ%|No zNnat#>YPi05Elju3$`b*FC1-72=3D_{*bSg#TH@)kI7IWv91|HWB>6^U9E0 zoTn%#mla?Ar6jo>IC7SlHCL@Ziuvb{h@3>^tT9hQc)taTB6!wvV*9y zrdVQTBblR84b!N$c!9D@;pUmUq-0EJS$mcIy{E~Rd2_YiNfy@St`g{<`$L$}EBSXfNiCNvAh?!W$u7X#3C0FA~xX_gjyyV0`DM54)A^Q-uOE)ti`P z?F%oSPw)k{=3DGgNjrOeV3z)O9Zl4fhmM8<86YyXx*3}U5^ zttxW&0maMfJSb{ho#d-oj;ODMSI-4+^E0<+MmwhfeIAmR=3D|j*dV8<}KCrET6k$5<^eXU} zG`*=3DPd@B|ffh^sEw_B!AGGCFi=3DZa=3DMU%{fmZtnN(^P(}(W;J~Ua%M?U+ro*=3DRX@YY zO1iPeP7-8SQ4O(P90ph*xrzk}-q`!nv70JnZwyxKKn0OTdt@u0MDiB80S1V1q6;=3D0 zBGr?X*OZ<#0KCVp>W|R=3D8^%owwGW4LhxVuK?`({y&*|ODrMVoa@?nNZhxpMRV+GmD z{6^>HC284P59LB}dx`ee0;w}CPcI{ZA*$hkM7bH9+J2yNVo$ig z^7OL-mU?D|RKe%z9$~5D{E9FDd|+n=3D*ep-SZr4oGe&uN#J@B+Fhzm~-^UGH4^0vYH zJpJQ91!m_~0B_?=3D^Y}845>&tkwiQsGew$4j)S3$XL)e#FVc7ZpB(eGQ3b(jmxmQfA z*sO6^#lr5whdYJccPhKr?6eDGvtF)fDB;v#4Ggr`JBsl}q#tW##chl7ncUp|3zyxq zVUAx^oP7li#hl=3Dcz!X3jfA7o3zEDw9BB#Pt4OFms+{kGV8oMqWFCss&8J5_Fg(4h} zULZ7%oc$0^Dv6P?BQuV%l&skyK73&qlyIGyc9iCjx@k+V`Hj?x9D%VSa#H#Ee-STN zSd4whJ@Ui%Wif11wU|Zyc~W{Z%`5#mk_oQqY6^x z8Vp!L5DJj1u&x*z|2%f?wx~%Mnq*K%TzTSK4{z?Ja`9o1=3DU*FmMTlW#E3=3D%RJh^T_4O$AHx^$-HO+2AN#`4 z_Al$fvg9DV6G=3D{xXMxY!XLV}_#UaGI>}w%~{)0a>*&_tM;q$C+r2C~?ykyHyaZHB6PKeZ=3DLl7@bkA0ri22KCRN ztEe#*HNBz-tNJ|hsy-qfxty?&R)PBiTPgV5zfRNSkl=3DTgC2;P$cJvO(TNQBWI(9bT$etwjT7l(H{_olRW4X62|14s-kR2LB&0(Z?60=3DZR zDyJo|XWa|hneM3V^%Zb?jh&d=3DSb}zDnkJ-;*I35~b|U0$6CQRu0c+NFf(V~uQBcwe?Y0w`IoSQqN4p0(I1dM^cIzFA#p{QiQnfeZ zfvWkywrbiHr}$O-FI19ODNcSn{AHay>|h9Wen!dgNC4OPTwF|>W|~`rxO`xXONuZ* zyGbjEwmb)1xB#R7Eow@RY|+yd%Jg&vd}QwG#sZ|SySulToNRN6uFBJ#Wq7k!zA2E=3D zRdGHM>T*U&bd@7NYRV+`tO-{`nZ%Vh9qkm`7W^pCf@*6!SZa}l5)&_!OZ0p#DzU#p zZpxs0(qF;Gl4Q=3DQt_$CSt{Y5NZI#(SIl{??t*NT53~`iwCASdW!$PjtkxW}`M~dXX zlo_6M?d zadmOr5NjYr<^z#z=3Du5|?RJnIzAbR(5nxn4ZQ#d*vZ}0M3CvT81q2ItW@>KBxx3P$m zNok6%9TcO;WRCPQK$MLFC{_oDwr@-|Y}70EOeGh(1c{n6ItrOX>F5xm+Nn20-JnFR z*^sQ^K$GnOqKby_hywM}-UCMI?a>`K-W%#@9mLxRn zmuIgvX*G22*bP~FpwpdP{z8sK95D)dnwe((GAN#%VGF*l405c4T;Du+JBH|+CNvZgc9 z)EOXV84w;Z--8wxWl=3DMH^T@hFr*dG$lH$tC& zfb%DW)^faw2vcTL*EqeRGxAOPmK>S@bCPL5{&{-Bg> zP3r6{i}J~WvKxS-(+BCFRKreBRUPTn3ffTPwI2TKa`B_5D$K7C3O;@dY4J;DbG(l~ zQ>_-jw&_x#tX2-VMJlC&VmIdoSx!)k`N$JA-0s7K5akI9j2~iV`8AYd zIG&V7Vm>l{cE5!HX8Z^}#Es2aJ4?nZngW@waF#L}LO7LBh?7=3Dof*4>6ijG^sYi5Ot z2WyS22>8s2-iy2#H$hkw5rQIYo)AigqY`QcJLZ>#MAG>#A&P%dCnOB@ap&q#PnaQ@ z-0s~8%eoet&VOdNRqbHbAZvee6b@^D5=3DSV!;+|D0)Z>XHz9(SzTA6pGGidqYMi0j)a&aK=3DPBK6HYygLav^XTQnUcjJ z%Dj!c4AeK$F)u8ln&}}2J}nTU%SOORQjevB0d)0Dk3kWC7#sAS{E}2wJTP{S!*o%O z_T#9uFoRo^zpQDolQ0}w#?c1-sfh$C&T7}|%#&4}`UbfG2odD;WIua-O>&_SAA_!Q z#O%}ZR~y^C=3D~$h{1vocvwpPYBr9Jt9UjI?SQRdak!cX&%kFR6AMT#2KWJZk@bhW@J{Ejx@idmTr-eB!<+@qztqZ3`R<*|` zbDbh%uQFT%Y8I99VUyn&7{V6PStw#cRm$RPH3vF&k+>60|1t90m*`c) z+?iF>LkH?`sm=3DizrutaT`#w_L&h6zBdL()YWXfsf;~3I`R@yn1uQ)&NwQ`-c3p`0{`GO)ljq}civeUT6n>`dYxhR+@ooJqM0w^q`MWGY8 zgM1Wkpbp$wlJ50sH*7zEK(FNmP7DzUSqpU97z z5^t7Nk~>RUMXJ|`V}gyaCF(4xL}y9871p9JN=3Ds~=3DBnM|nT{26e4$P9eh?}>wB%OVT z{f3L-SE|9q<*u^|bTe%WBWkQ>(2V3ckhvg5EzG^ zmu9lFRao^zot(tu`uLWK$aZ(yu|3tW-A+4P!=3D53tTPF%=3D zdq)K>GEmm;)MA&8NIYMzmBp~nB6?P7%@$jOH&rH1ogio!NH(CWIxz_lf)(OiW#za> zFJi&q73f>0j!of=3DlevP~M)Wy}oUq1hcO9oLh@_4rs1Tt!eho4lr9aY?roYQVcWEG@ zn9^H?XSPBUI&Ld2k@O}O8F0gSN+>&=3DUHjO4VEGoXM~2zQr#PK5O!Ce1jD%caR$)#@ zT=3D~P?LOL7$VgALdYz`c7^VH7#(2?>YE6p(Z&!siI8flk`N9!I7{{bYJ%CGWKTHzin zd4<=3DCf)TAa$$So3;kUvcsak0F`zu6QKJ9(mx_5pvi%hZoBt)7bNaB5TfZ5c0$BQ?H4Z|0C+ za%^Wo>=3DRtfxoKY^q9yU>QJdZzmkPJFZ{no2=3DN1)*SMFW`VonkM|Bt&fy}VSg#2%@Rc_e3gzw+_Sh-`qOepom5!N z{JiKYSX$~UGAS;1q)7+&)Zz*~E4QE)xzhJf>u-1VG@>VIWWA|BQ^{9Z)e|Q=3D z5}XK_KD{b-v_=3DxVVQ8Xz6M!_4^+TDV_GMnPHD0+pR1T2>3Af8SuLRTdav$m$ij9B? z4X3?fCDMn!y6qUR2V~0O5=3D!SB%<&WgQcLB^bp5k;)4K#V^d`EG+SENRRkYgn(BizX z1o;E#-qR=3D@E^R@WAS!bfA;kWYYDI|9F47pM_(5!Z=3D1IC0F)%1Z76+Tol z7*-!|Q7AiApl+++I$it8HHf5cZvN5hX6sY^uhi$6$8+fuSPgkY`ex*0TWYbz<{G^g zSpjbANF2Q43MzMFUEczCuW6y?!+S-a^x^$h>=3Dctji!lA4&`dbAzX!5R#QeS?k0Hg$TUfrg zxlzB5GV}Kqqxwbpg`9T+h}*BuL97ekGZgV;i`WOYh@}Yg1s^f)M##a`3ag@si;-kB ztH=3D~;i9;ij*gUU=3DpsT9)&e~SB|0KDzA`{tGHOSL@L}B$Isq8$x4X4UbX|W0g>%5$7 zWkjvH_cE!Y#2IX*PTIQZ2sln=3DX+nY*siVf+_DP}EF#s@0)fs&HtMa3&moriB!Vto3 zxl0To{0O_)rzSEm?_s{izvxd>0^XPW;Ao#IK&+( zN&Snt-DHp`$3Wfnup00#JH%^4=3DcR5NG6f=3DAgUgwAzM|))aUX=3DT&6%)RqJ3Tq5yO^n zmkZ%!r_E4liIPa`rzhj&#U=3DKnP&4}T-6a=3DGs5Mc}P-s)?rGjmh`)`d@;w^ui@>lND zndwp9%yjaSixYo}CjJ<$+<(QD@yHcdelmS1$0+aZU_KLymof=3DuDw^0Ax%tCyKQT0I z^=3DUQpL-(gTo|RNi#<*Ejc|j-pQmYru4-HLgTPW##ck=3DW8OZZsD-?#ZY_NCTwEeEuo zm)CNBUh8@Jl-qKCeqvieqC-pH?w8(nK^9h_@)Fzf6CL?dhj02&_uKLk+w!D_Orl9` z@lz?If{K*!SIl38zYu=3D|)T56-!(VFQmwJ*5@9W_kht7S5?_R!p`R?PpkMDlI`}rQ=3D zdw}mjz6aaFZ8SYp&{r_vk|Q-Fjb6mxCH&pMA02qbmCtXvUs@b|wyk&HP{$mKKn@SK zEq2Oa+p;->ZYNC3cEW`B-hN^byj>py%h2A}p!5nJDa-4VeYQ_3q)&EG7a#=3Dq{vMtq zJj~>;^}K>(UurqOAn_Na-djq&{|OW=3Db#q~|ef5|8#9P`6Edj{;18}r}7P@`*mx9Dw z(zDUKFUDmT$U)hwsKdSdJ;2{1{5{U!_xO8?zYhMO^;Bp*mG3gX%lIzgyM*szzKi)T z;=3D71%cAMPCR+KM=3D`3~pyjipgHK9`R_dxn(m(Qw@zVl zPw)}_<>6nWWxqfE-YZ7nm;Lg>)4o&aBIE=3D=3D!qK}$0f<2;Asp&LV>^9#4t9597bz;? zF@;4CD*#f5Gs)`)@mVp^<*`~Kl(|%Du(FdyeiGNu*Ej1g9IV)s&e$?Ye~$?>2Qy0M z_b7~v?^V7eTM5Xq;62ntbbZ}>6`Rw~NDeJ{KU)nZN&0gOIQEkqb^9wfOCSL`=3DINXD zb^FPofl8V~?htcx5Z5a?hRC7yTt83WtgjoY*qpf}T?C!oRx_s%#~~5Ex16Kc@^xyj zN3Ux|Bh-@xHn4JX3DqR#DudaM1efy#c%@F7qRbE6z}(6Sa(Z+;|Lra5zkV_=3DWaa;K zibCx`0G*kmr6kfS9R1>F=3Dn1TB#&XF;@GgN+cr5D87o~&518oo0lBo=3DHHv*3Il1YJK zszChEXkdnGLj^3~g5}p6SqvOeT2JOs1uL*%1@%T20~JiHeCtsW*ANG@u|W%77(gYm zHX@yxQ<}INx(d<#ZE+t<9(cF7T`HQj`1X0G#bE%#DA zI!GZq-9qwwT$gxYJ2`DN!zmvw8RyyenKE=3DJ;n`yUxhc15in@o9SAVacANoCikMlR1 zzenok`$t4G{@72O+kf1Z4l{6vC(KZ5@H9b?u&ee3Ud*FncZ&aLd)va$kg$q|hg*Iq zX7rUu@3ym3ckthGfJ;}2sn!$m2GbwMPGx{eNS(4AzM@5=3DfK3-L;Y8Vghf#(P{kT!U z@&rsqvSLhZVoSz;UTJ3rkiK5%B9-|He9lpUza9ll&U{g%a>6l4acHd@1?*k{6QnW=3D z;x=3DqTYLcUX$x%Jp(y10H2jhNf6fimSNQ>dv7uIy43@0AqAR`jA9HTG&xNHNEYw_@E zN;>h2Hr*P1M@7H*Zdgh{x3`5aWyDd$9*fd|@-2!VPL7{zhN47T&Q)N)Gb{3)qkugw zU=3Dn35j&F9h;wxM`3RshX2~ta3199&h1?*xEsm6UL_OR{cqEWz3_K->tB}mafGe!Z6 zct|Z9$)TQwqk!$k=3D)(?woiFLw^bxkfN7S2NQ^0V#{7}H8!G~Jhht`>Oqk!EjVA9}H z?O0P>>Lm21dDV+ov9oJY>J2UK#TN1;v+`^>tmXyEiJT2 z3+v6F$vM2G&kLBeG|wW(n+=3DEj8VWQc}NeoNDr~%X8b5%e?*3B>!KEEwATEdoWqImQvs9K9b}OnRBtwp z0%rXPFw6lK=3D>c_SbuO5mz#mhL1r}og{#Oke5qGGo0VH0jUoT0qqk;8_ zQUpwtB48-sb3L#=3D3BhLR8|SI(a69Va`JpqH%nyC~672L(U^_Q3kK*^){C4>L62H^H zl=3D6E%zyFKhoB910U=3DHJVg5MAGyMy0v19LgQWBgvj@9q3Po!>S5zJuRS@cUqXe~91p z{Jx9dp6%<}&zw&U0|x9Pu4Y&L`t(E$xQ}WYjlgyyoKGg^{k7&=3D4Zwj`>Q0c2pSS>w z5J9}C0;5*QIUblv5fe6szcJBUt~f9R!6AD&Fk({UDF+@x#JZW_vge&c&hODt88PSV)UQuh!Xqo{!@t z##ozZej?ad`Vb;<-?GYmeU&18c+cG$7w9?C+3#F!cb#Lt56>pYnemr%aW$?_GJl7;55s}gF2iW!)pb$)>M35 zBw5L0#hmHGN&9?;;vWg*X$j^@O^{4=3D+|M{N)A$XC0h;~+AEWLQEoqYAx=3Dr1Mg;IYe z-KkQ+mJGLMc4jl^^wFxof~KWF=3D^El-&KhFk?EInF>@m~!>-h+y=3DL@lbNtwF~J66u7 z7EBk0GO6I6TIgvajJN1>g;O`2FI)BtO$3Jtm+4KA>eiVTzNw<$?Ev6cHbtaGH=3Do8s z%kuL>w^g7lPLx-h1`2ilbY@EV8T}#)sV{_9$bjUmiXy$BFu~zyL#1W7ekqgkm_L>@ z9V>cV=3D3f73b@LVl@)o&ynezqmy83j~`e*MBi>r)3Z-2dei$mu`tzdG1-uC{ip)j{QdDb74Da%XgZTB3Kl zyX(~7)}#I}RMafz-W$+P%j9D~#=3D&I%&vJToNH{(6#ll5Tt%-kHWCxMYy_*D2xvE;7 z*~>xqy#!aKCFUb@j7S6)e~-i0qt;@#Xwq&j6l;fx(?bjfdYxr#?(yTILPgMcq1J+x zp`)s$wXRBKefBBRt)b(dwj!uvSD4!tQjDx^n9uUmL7}p4)W)K{tOc{0xD=3DPZN>?!* zxwptvNe+&SE6yx8b9he7&gbpP`ZR%S=3DdUxz3Islv2xPf7Ko&jriyPg|g3a0$wdNsw zml8o(WsVE2kQHg7g}+TrMgQzvqgCFCr-%wc3H(I_XqrM!7Pb{);1J1f9(YVgjaXJW z>mw3dw|5iroWU5`>J+G?OZd;e5q~GHgAXC1mAVEJZ zTO4;pu?rQ=3D`%MAxX~Ntu>au9FIAvEhX>B-L`Kr(AI^*NK zbQZ~TzPY4Iu)Az*UU*l|KD7aI1X=3DXR`dV6ugwjvkF(VW|&RH*+=3DV|7~gU!DG5Z1uS z%1uc#@ZcqGpAm|k4Roq*2F_;|HKhiM%qb_6)5Y+W12`LLJbL@kPf2@>QOddEJb?fbIsbPjW>!_B2Y97CZtju3&ejpoh*(~G&7)(9p@>1+M(U+v;r zWpUAEqC@O$vj;(odu?xXCKda72w0X-8b;oa=3D1Kc|l99}K^Bs9+&6rRcO!)UVZ>+y? zwDTPvvHkF8ufpK&QsL=3Da=3D&W&a{v*h|kRithc3OmvQiMrWYUkM-HV>E8PKO39m&;>a z&tzJ+sk%|hj1O-;K~{C0A$+t*5b?UznV-6lfkAG^Q|E~BG}igLxdSOMEwNLEqn&GR zRQ@{*2KD%FCxgl7KMjPRWfp!U&~6{tSx9az!hGedY`fFr@}*1MQ=3D*{c8Fx#fjM*ad z?m47|(&7&w<%Wc&xI+~yp^QN(a9pcdPANJHEd?hzl4cqaZm_40Lh;y}Phehn`^6a` zyUOUoG<&8P>pgsiOp9P-D!Rkm#gi5H&I*!*4V?vWn3mjDwUhPpTZJL%^NI1PIcVS3 z$_UzguI+0#vnVPtTh5d^L5i>0kz`eR=3DMX0u{ajdxG2{=3D)JX`Ur^KH^`IF!In88TP9_t7T|QfR9CDR zzNb8C^-N8-e{)K=3DcWzgA$2?h_=3Da|UHe|&yuuS zZJ@s)d%sWit3C(CXUfM6KKvz*w=3DZ`k*9+gXWOglWd>Z|-R+f18ayfvEXSq-QWI0~H ze_Q_L){~+uQIS09@&0XjIIhIK!7WW3<5<nU)RCaW4 zEgl1`m;lUvfB3o9yzvF86jtu(wo+sl_go-*iwxLReE5q(FWllbB+qR~jy<9DEybS#5i*QVY}-yCTg-1l9G{w z;KUJx;WyQ5!7blavXbTG+$<}|VuN7_&6Pz7d-M_K16}4eWVX%9G(?Xhdgk|7>0YB~ z&)OE83DoW}`5wkj+u5JM<*(BsdpC;>6+b(be^y@nr19;s51n;&Ui`T6J+UJ;nc}nN z=3Df@A_<;1hDE{GRnH6=3DEO$M?ivPI1NgmirHHf2o`Dx9r^v6NO@Bt@-pW#rz3Ek!jc7 z&9o>Kdwgk%1S$WQyxk_{|BUi~f+s7};Qc0%`T6Lor^%99HZ5|ojdHjsHnCN9 zLtv!MapNA|N*$16%XRp+-1%b59gQtlW^K75wdLY3a*u0f0#OQ?2*C##A`rr<*tC+p z+qCHird}g9A%1!0nAXX}jjVb(Hn(Mp-G31~!G-yQg_)iDx$Mw5L;)2D=3DmTV<#-CfF zmtA2uVYE!)yZEvzuH2HO7}-x0>(u(D#<|vK3OsI|cTvDESG^Pa@ZQa8eNK|^&`^A9 z(l2Fca>}firO1{g`BEysJp>-{_@=3D*23uD7bo9uiLd(@23pIu}4^ODyZcQYRm*c2g3 z#eQ|!ukH4$Q@)%B_-G6bm7d1jj49eozBr&m9e^c`lU)CNc!Nx1(lRiyx;jFVNsOYQ z(iy;``>;B9)CY>0&TE_JRTzpqdUV-Npi*4tB}UHcXoYCa?HEy;cC*0Om8{u{#aM4rpg`%eSGv|b>ORYa<1zQSp{w3}%Y(t)cD;Qz zukejG3bp-^ZXy$9KfZCQSDyKFuikMnzOmTcZnFS-*H2`Shs`~$c@S1-m1g`2c@Uv# zeBTtPii5q zh2ZM0Dx1t9m^dYpr4c^Y%42P6!l0a+%x$K8)te)}zMl%>Ovl%UQ;yJ%&RWw#iDnBQ zR9QV9A7R>n+ygFYYXW(fZP3xIFBJ&%Kmlu}>iY*ww%Y|=3D~8U(F)Hf0(a*Cj9Z zW)gcYvJ^tZ{|Sm-b@BMZ_q>JuzNEH#L@BR@yewl2z+}>B0Es!8f!}E!=3D11=3D zcwI%Q{V`*V{@_qvu8}}x-$!qI5voBuatI>Yx zJ6HC*Ub?^->~{C;o6iehHC8!Y@{n&%XS@Z*dACf>*Uro`l?&;t1Kg3!=3DIsj2q4V9*u&Eh;SEd6HdxVipVh_ zxS#-#guyx3n|KZL&ER+DHD=3D{QslL>^T8?_fO`SPrXC7hPhrBB^ZIVqOSrku`Bq-*G z1qa>JbhIErFNv($lNIwnFHv%z5A$tvX+u0p+MJnlGV69>`y#4 zk!1DMv?y~aDSF?Rcv{A74<-~%+|9Fepxo$d+7{*?@K4H&BAASuD;lyx6)b;7{g>r5Yr=3D)Qlg*P#G6@)+E{SVrB z@kOcEvNKXNXL0->=3DA`zDrOffIs6=3DL@+x%25gc5)lDiDY}no67nV*hk-Y0y_hRd8Df_i?S2gOqsnnJ2@qDFi*6T zr|_(owN!K;6Js<{lG(i&cJX&;M6~%fOc1Zuo-UQ|wgp3%ZSj_Lu9=3D4YDrYKOl-kMp z2>3EwKSr#yb-ef>eja;q)$_4B*SV27Xy=3DmDmQBAezWAV>sqsIRbs#pt?49-Vg1&-% ziN6lXlF*B@w&B}g?=3DP`bf6C~cg;<78LgMGCvo^HEqsP*c65Kfm@ z`Dbm7Ki4|HfLvv*ONVfLq4+f#Vg0yALOjiy(rg6I>EJupZDL+$K(8U^7n!E2TAF~WBah~UXx+_gR~A~?hkUy z_$Woq=3D5Ho{)A=3DjsuZ+K9{v!Obr{w=3D&e~=3D(c4N0SK;O}<+?v*$HzwZy~yIb(;{-8BH zLbK8K2lZ1I`a*#35A!jdzgqshJw2oD4-#m~^I+a*e~^|NfcxkBgWR$o2gUdJdy2n} z{B7lLJAXU)`xAfk&HusvAVHQI3MJ@o{>u29!JpqZ=3Dl!4U53=3D!#968@-{_-#blkayP z(F6ETmFGP?W4}D}J%mr*T}R2QU-PQgDG)6w)_mEUVz=3DV7F_|OmTa=3Dr?{kOoG3wC?S z=3DyMDnNx4=3DEWjp^cZDjT3+-f{SZ0_^RGV8mg2rgsD9BgNjW+C#KH|{JsM}7p_bEMmz z4}lI7^JGDNn4tFCGgV$4AoXOIr8MTFer+>{$*x=3D5l0Q&Tty!+skcMVk@-QiZmWaM~ z>p#h6H~W4!yz)!3l~?_a;ZmdoyYc^7`rk^SUVR${L2iAQNNrf*l=3D?pG*NOVd7CkNK zbb&B0D(2k!Wr4*OtlpOkMcJt61ADF%eyY-z+q10FTd%Pg<>#O{|7cj2%4!Qh2+piY< zt#930zbJ6#I>nz$wa(>FpTE7b%&Ww4{yY4A&V!cz=3DYh_n|5<|CZ;$f#@lwx5 zvEu8^^?q%kKL)&|f1yB_N3|NcE%`Ah0xij*zh*awj;Q>Y{Qaf>wDtWeg?jaE6$H8U zy^UA3EJI3tf9%(Z`s&K0jMxT&FmLS=3DvgOwIASrGPez6Oi*J-YxFd4JHZ+z9(_m9-u zfH7mFZFb$c>Uw}6{bD<)@{!a#St&2mC0?-k4X9F?eWSoH~{`<9MeCV`N3OHRL%!{v$93L4_1X_|ao;AC;f6%_@~pp_cu6<%=3DFz>Xq*q_a~JU(QfMl- z(0LT5zSIWtyy5h z5^Bw%ZV?A;(-azv&vz9vk_H#K4Stbd6#P(b!2>I^4dwuL+u)tFLmGT)#BK0_UW3hovhm08(aO>N-?&zYjcYzmm>OC3~TM;v)m#o z+#+bL6iypCgJZSgX>%!a3BfL)OJ9XwsjNNm(A_Vs#B{a zD+hxtq%^r3?hL|Tn`6AIZELg8-}swWtF~>m{H{+aO1x0>$boDsG!y^IGXD&&nn_hJ zTDiLjR*p}>{THThCd&mh?el8Q5r2_F(B!gT)Q(E6m+61eg-B%tqQv~(d(nD=3D4v_TR z@yZf=3Da;e`UgulwC{_5FpO9w7BQV8t&{TA&&IzE$|FG7~JWh+>5c1a=3D`>&#pt)-+?x z&nR>bF!#5YgYbU&u;arbEcEi7ZSyVdXr4}iELcjl_wxn&fyicw^jnds>O$5RV!?Yii7&!aZ8@;T5?bFvO z3%hW^*OSeX3(O*Y0+??CX=3D4HV0U$@63$8V;=3Dz8hhXQVb2FSzgP&Edb3QVDUYw-ur| zni(vvoZ?c7Dwnpq-*lT&=3DI0DicAz4iP2?;sp&Ip;y3In}TJtS0=3DNtEU-6^#SI%f+m|w zc-zrj#wTb)_w`b4sb5708IZtx72^n4f3SXFN6B@p> zyJC}D4R`E5+wB(i*Hv1L^ke9?VGSOGHuv-hZEU&eq<%w=3DX}MMTpyasw*Dg7(v-O~) z<8n(HiyQ+wM36ow`#C?9oAX~F$9KKL-b`3>JU~&@<;2_)yS@N{bGgDJ61_fZf3MYr zKt^(lEtx`3$}M!P22Szn^f5o@$+rNq*RzpW>ThV-vZqMn!dxw=3Dbmykcz zn(wXXYg>HA;P6UL@=3D#r1QDx4AfM@0+yIqhWNpkA=3D+Hc)D7W;LSBTWL*OyuBN5req{ zbd8ts*DF1;oRgce9DGi(d<2z~Q>CJ5b7jUWyId-a_j6X|<_u9Or{{LBF>O|+ zKkVgud4&?et6hPu9i1n}`rp&qgtmLft%Lbi?vtiO@43&)$A(-y&aJF?yKVf5%~$wC zAieg>v?_-^9b)ZNP=3D4H2fquU@x5%;B^NruQjV`r0m1j5wDcJdCR7cuiQM#>u!ppd8 zx!3iVuFJGgd?^C(?*4;9C&+cQ{QEjN1e$LP2 z=3DIpx}WH-r25aT8<-@skkMrTraUdSm2%ejju6FGTW&T9Gd31g8rgvH6HoAu>a~5F7*1|hc4=3D&o`cUKo7V^1uc6)rBoc<^4*|HGLO|@VDk?n;X|JJDc zhn?CrgnBWLmhK4jfTh2^KSFJ`FLVm?5SGii)jG43TdKVM`R-K@r#kmCe6Y-2H^?RK#t~>U0;Fg>bL6^I{uXvY|XSd#^>VTI*AH% zYY>Npv^ew(fKJqo#gS>Cvx!i=3D0916oL@r5$q8wnEjCeN!5vtJNu^>DomjV$WOX6UX zud&o%UzwpBslkTmMUTbmh+bB*)pq zaxXgf4l&s4h%8oheTi+T+;!##39M6d1Q<0s^>k)B`w zl>-B8WFehyVI#?G{=3Dlq*F6MZmLW~YKu=3DZ<#i%;66m55?A^929WsiDqUHg@v>z zB(u5ONAV4mpTzVP+t50XQP)@$b37DR=3Dc0g7Pc*+E#?v1R7Sf`S%;qQ`#YaFPgwxyd zPUVN5UD`u{SFQQZCLNKU0F^^N5Nn+&Iahn0cVq=3Do*=3Dx(BiTFMA$coN-bHDdOkF4lq zz0JOGkE|fejV?s)NfH}nC+|jkWW~neM^;eoY_D8FBmw2edoT3J3d)@vMASf*!ch@z z5JVg7krf+89$E2}$3agi2UR`AX&Q;9t#Yr8dt}8&J=3D*^P=3DY|Y<_XY%DPBe9h8lUzS z($Zd!tdLm|IXbGk1&i*{UiC0f$Ow+j;gqoGDpVns1eeO&0OcMHQ0~zHWrCb~QWM#7 z>s}qRPJe57au4CjQGV8$H9yl1Nmi{(HLOcENMPd-*XdU6s;r8{@!fV)ekgN7=3D4iIu zwl?f+p*+sXsM)2eV^?BeylCC@^#~?*qjAhF9KdLIHm`_I)^A!bCz4pVM#Uy; zNYSZ3kKN47Dt4+HQ?w^x!Z%M^lKRJ{-$x35Ctt+{zsnqcCFfnn4)$`)BS-vimu(T) zKcvRb`nkp)Y0S~A7yWRfSa<5eLCQb&)J*KqP3dADi+Ie>bovoQHh@S!2Q_?1{OyR; z#}=3D`}L015z|JKScyH%~uq&B!rrCrI<7CCy#UUxIZfsk8EG9RL2x7RB;+mCT%1|#xW z>L|7(%%K|iR`$+Dre;kt_mt<3=3DBeU;p6zIspXiYGR6{tqdIvw+^c5B)&O9=3D4%;r$(<>KhA zVoTys=3D_Ne2af0Pg>0)`QEyL3N|Hym)__(Vo|9_fJ=3D+LH2z*H(fgDqHT!D>MYX_vM% zSh3M0G=3DL}zu83nntu*0>w9qga$#fVkN)&fdsYPWKwJTjHNNZXuNwK;SsvD(h=3Dtg~q ziEGqq1IFg_e4YD#zvn$kE9^e@kMHC0EoA0B_kHiV=3Dbn4+x#ymH?z!Y7Ac(waIr>xP zZD=3Dssr386&T0J>2*DmMFDPN~?-mrvr;yLw~FR4qqZ7$#3=3D>yykX+O2)YrS1O zzi`;{_ZG{S?C}`CjE^YqsXyR>!})V?0bqUUVS_}27k7HZ;qqVRou>(jDcWX3@$d`}ywahG!X#o~zm|t_(-}Y8|FhRI=3D^|pTvS0H{}e{_}PzdM?L?3G;51O0Q>IQ{cT@iuJzCbpTN z-O#j4vPQ~<4<~`!(|A0IkggDzfmDx3%@m$VS?T^%ayx%2S0JYwY>TbcBx zTx60W(Eg@Atf*pj{hD?A@pI?+q#bFO#z8&Y0qMcpg=3D&&}R!`o;|$cpGaka^Vm4id@{V&Gta=3D8dXq34xAOcXl!IMn5_F z$j=3D(9uepx2!{f>cMu*rXYCsSvpg-qGMysZYcI3&bF%JF09jVVzd1|IGE?ZgYt$C*! z!urg}+9LhXu#FqGCQ6nc7J7Q2pvN!=3DlvLBTShq!?y7d`H(jE*POYp?^5h&5=3DrqJK- zS#14%B#n;oVfL1je0|_>)4zAT=3D&6h3$6H+}zqMj6M`1qm4`szUKFEha)Aoq+h@P@R>P~_`{x@(q3LeJeJdQ^mC@!S#cTz0gq`TWmV!+HHrRS+CtBBu<@3Y8 zXHsXk^C2@Lvh{w)EvkyGciY|Ercc|6J|NkQrVvH6dp+3NzPkbI5U@t?oAZ2IT0d&E zzwd6?+P?cyr63jwgzdWSqgd(WKcgV^YUU?*B{Xf3zs`TOowrTgy3lmhO_7F$~t zw)R)9wNKbyE3Lif=3DD*WgMdOZi%i&x5y|?(N{$=3DH1TKn2k5Q{*nq_yBv@9ksr%Z!hY z_#o6;-q2d^W^el}-H0yfx3-;M^u#HpfP31Dt(_jWmcCQp?y>z?TD$3{ajkXk0jHHh zn+~*8FY?zhNyjjN8ohG^G%F%#@`mAkQazlc+VUMjoPF|2rTm^0Q@t)YQ+^K93)RYc zSiN`|3vhBcLubvGOSC+VpDSL^__?$uGJb}9@f=3D=3D=3DG93+aD-DSaXg8AGY)>=3D{cC-6_ z0jbCAX5Sn(yYEvp_7;8EZnkZJ=3DT)S^`%$;wJJUX79h~n_dT_1RqG$CM1Hhu2t_JxA z?@cZND`I}>l68m!I_vh*dU`)eXR&vEKa(=3D_8O~<}(KfDCu{N&Jlf4gg3N(9N_ou94 z@qY6g6fVkp#tx-ftz6MXoa@J30?Q3*{RDE#>%!rI05G1^J-pFohjQuJa`~LvtR(_z32fnd zuV=3DltU{FL8sLW<|k)&7p4qs8Mli$5QZhCg_uyBD_MK=3DGWUrgWOD~fI9ceh_m&+Z+k z&#@MdWIMK~*c*(9R9}_NY*qr*>sxtqc|B$G%4nz7f%!1cRelTf>|oLlynBe>Tm1U; zY%n@RShg-jwEA3LRKX2FjVDnJB~fi6QTUT6R7q5=3DB&re;1&@KEQ2B{myki5LQlCmt zS!xv1tS`HV;O_?Six+6*EVb}32V!f_gx@}2%5M+8-w6lrkw3!|mH6A;XmY^Yq~FFN z3PeO@PT6opnR61QBPR6TJ?w9|*KPY0?8E?9Mj~-228Re+=3De)~A|^A*ZvBX0JkNi zsUnFx6{nALfE<#vKuDGI%5`xB(Km42hVsN?Yb856mW=3D;cq+Yl#nK_vhI>pAnGb#76 zs?9dw$K97(R;9ZUxCDv2Jf)x>O18;|hk$C=3DccOpn&99h12tk<`rOeg!NY^3)1V;;d z5cJ~wBBW-^OoF^zW(b{8uDK~IGc?NXOP07hmYBpfG(t7^;SAV##<&Eiu zcb_GNs5+%@?@z`Wxc@aL@#AMpaCDl|)gUa#I}%>caY9ab*VOekAD>e5!JyH-Cboyy z?dKr2^D;tD@rs~t-bx_=3D6d~K6dwatB2-yb8M;TDWdFxAmyy{T%$qpLFNgcE&%#L;o z8PzJ>5r4%-4tlN+(&l}a`e)g=3D_0N&+he!M!YB|O0 z_+ubcy({ezdzvnf9r&u42D|(kF1$$8ly5;tUClxXR~5HV>gAhWBVc1+a8!K*BQ&=3D1 zO{rczlzHnJn4$7+dCvFFC{|Zs6R|6%>cT>)Zc3&+KD>p$bA`b~9xdQN3{(h`e&N&| zFC3Mt%D5W_mrjnS`zE-%%~`Usgt*^fF*m>>UWx_Fwe!6PtZFsD`#=3D;6SIA)@INoD} zAr_{<$j^86Vu`9S5cJj(YdB39X^ zoVC#zmdwK-?X1xnuiBP6CDkU#v6XXEH@GUk0}qE)&?>vr zGz}#cVjdC86`_gdMRqEPHE6xJ-&Tf5E0^;iMicT8c$bte4JV1>FsKKo=3D-J${kWHa2 z#J3MJzEk7I_mS?iG~_E#oIj(1Oi0f~))^gN6Y?SViaVE3o8!(gd?s%Hv&(;EJ`0cx z=3D%p&FORDtYBfu>f+U$T3u|<%KNO6$pR5KzHLg8Zev%p0IT2b~R213CfB+8*VaEpH0 zZ#@9*b?w~CWi4wYbQJ?i%jV{f=3D!7*1?l#$B-P3pbl~PD8m#()V_Wr;A&1g~Y&3#rB z;I8apMKX0@)=3D zHd)W&iMA)VV}9(!Eg=3D13b(YVyohy=3DebqN33&g7%*ZBN-*<$Asb{$i~_nm{4k%@78XS20xNOG-*=3Dh$*AN?MyI#pA5)IY^#g5Z%{XT^K7}Nhc$Y*c4xOfacFb=3D^7;`f)l%@e;iTfdXu9l zhnXWNzk7dx@=3DL-|ypLJFBK0r`fo6lZ3{xvomy=3DI+DbLPwyMycin_O{((t&{+zH10o}6y{cdlmi8>23D_|2ZhLBJ{7s9ErCy0 zNQVE8kl}L!B|V3;%v^8cZz4SxW{!}d@r8g4e*}~p`G*m7h`)nBKk-@TF~PCQC$Jp?O$`|iw7Y1?wnZoTFJ;eZ;2^9yh2=3D&!ZRh@5{*Lb? zcER@+$ByFrOMKtP-&6ekns;aO-NfHy{@%d*SVj16LRt7&`Y{N!<{jqhZESU^%kg#R9pTcL=3DT2Ap(6*kAMXBZ~%c=3D^Dw zswx7Q1wEcNKfPa_uk9kkApmO%%_&-21!@lLfY;10bEWe|fT3;;YzB#eukx|- z-KmE(J(jJU?_GC}3RH%9xuhh7nqJTvYrZM<0JgA5{b?@Z@a_l)=3DNoLFEI^L?zm}9B z+!fzIjj_U8!y2Gjy0e;9neG9JraG07FoIT~eBcJ@+-v({%}db3q{WGrXm6;wBy7yT;7%%=3DRH5~*?E7N$MKu@T#frf?#0|6 zayy{c6tJ?lyLmr4`Wr?cL}Jw$ORer&%w;i?xbP8FijOdNJ$ho(yo48!Mdbecw_S1*xKHK}G(9hm9r}J11pMOJr=3D|7^_gE@V-2s{Ja}#<%X2SO2NgdE#tZ$ewqDkic>uLXIsFw%cyCRQOYC=3DFX1fd5 z2kdgyb$V->m?vxdltEsx30zipWb^k+joPNq7*p=3DtMr-mU=3DC@SEy%KTWSKQ?7dqem+ zFZPc4Wn|V3^QVSC6IflY`kC5a#c54o>z{Dw1&5ra3`|mAu*%Qe$NOB~KDE|gl+0+4 zG-v6oFMV?n>&xXXSA+L#kamc>ojO#q(cA9QoCB+0_UnGW5+Bw~CHb|XqHl9B&Fg7> z!_1!jJufG>@6>VNbr312?b@I=3DVc^$RAEXHbzqSQY46Hp3-mJr7P~l^sZ^NKNPq@=3D| z_Qg7fxtNVR;IwshwPyJTCLj9(cfp;;R6~h(hHy9rJ6drz%+=3D>VuANW-X z9xms_-jAM-;1T9`c$lmH$pIen($hcTao?rFLn#AYoLJ~Gr$Lb@xC|uopfIt7KKJ#c zzEHi_C))Gh=3D4EnwhrYr!ww9pp0~V+5RWy0`3VtNFTi*0b)oV`o3#4DZ<&M`Sw`UxT z_85$wej%C7%l$(gq;IRLLr>X`&3xuE_L&z_$?f;0=3DbT|0cUdggBGqxbfL9s(~H>AkQ0qNMkfG1hXiSNZcu?}hnY?+J=3D` z^-p{*lINuUsR2K4P^*z>`iHvO!;`5n2u9+HpVvjy^w&g{6KFCsRkyIGnI z73N?mO7CX*IE3>xSA@!5GNgOlho-KB%*ukDi!4mBLjyC4m8M@lvt<_NG3vcXtPw!- zv_@Zx*_-U_qYbf(bnxfdCQnz4d)IeP_PH#-BGE(Yz)y8_rPc)bz%xAi%$6QLv*nb$ zw$HB&0NbIPwXE5U0)T7kx&B$e8FS{Bml5*5XW%XaVZ4y-7&e0FGwr=3DSo3V#&`aC;% zm)(4u*AIxY&k?2Dh$2%=3D`lTEE1*8~9bkHPMqyyVqLj&@_43^+;Z8^i1cnuTMFQ3zb z1&>uP))*`gLs%Xlq6)M|3e0Pn5f*q$%kd=3Dz>=3DHQ&6fOjJ@AOilvgZm z51j0?x3lX;e*99lZeQU&R>{#(f@L#n1UPTttrDFhu?HslQ*!niHs;5%xen!(@xdMd zZ*OO7M|j`BH(AtJ^WFuAs(G1JpM?Ie-yxbR zWuOXv8+eh~MZ<1?b@OpVIwAc!+)DJtm1oBgErrLNO=3Dh~F$vAu9QOYnKs6oNZyrbGp z=3DQe^DF@g#CLP_h^CpB*5tgx1KO^+6Rh1vSqGA$_m(g(HV=3D`jjbw(^Psw@aStf!~`b zbNiCiuSAqJA`rf;J*_*hq5%8DGu2GID*9}7jWF-C-TI!^9mn zq8$5$k#ekG%&>Zv?j)1|w-z#$jhLOz$%FTOQWTLq7?{F>g^cOlix{x1D&f;u;iJLB zb&!~`jNc;I%uefjft;~X*bF-QE z^3%^@`N^mp+_!xPCT;`d+Lhj>tmof;T&_b86FbClS$k$aTc1~AJ2t`*!((LNgOXjf zk2#^sK(ze?H<5_Ln%`*G!7;TnHc*h}HWP^5FH73fvAM;gdTV=3DQ$;=3DDT$M5(HHMMCF zHBW`P&w>_4yIC4D_+%(?c98fQE5ofuBv$*0XpXaM_szytJ+l<7tyo3NNfBK-m)DDi zmDS#rj70=3Dh^c^Nq-M#AF;a(X-C7Nd%nD}AA%=3DKR5^2+rt+4duPPOVRVau-isnK{&@ z-h=3D?zjzz+#c3(ELKo5EQ?9ivpcY4r$UpAyN%6nZdaa}h5BD2zUxek3bt~@HAnai8{ ze11M(oEPPeG*fw0QO;`MW-(V)dYjeW!XQv)4i32mp{5?Rq2h`t*P-`~K4|Yw`Vg1{ zS1R9$d7FLM1y3M%bss9mn`>MSe@(b%rgcQT`J@t({nL@kN|1n1r zk?r(85ocfx#vnJ#W%E@Oli1y}l(dX~5jbHhNA?RXBwzp{rt&9#xHz`%M~h>R@Hgu} z7ROrnYvpejf1^E%V`Y3#=3D>@rAh~1L*CyJ_lG|}T zd_i1lR?!OXrqd~sitGffoGKbQTZ@OvwlAv}@jB7ruu*LzR(4G=3DPU5EdO214c_Qk+N z2Y#xX-Npg!HfB0+uMW;pu9w%%0t##SjS6tVs2#oOiFmsN@e?bH?W+vhSC!-1G8LqK zSC6UVUGVApvi4d=3DzPl7?eJyURJfb~aqRc9-_CELwNX$R8MG6S4UD>emLT{7H z%vqqa!p5*U@>jtgC(>fHwEHvo!DYz-(#7|HFTNknHMlIr_mT3~6#?)bf0&+e`%Opk zU-W8P!M(GZ12=3DLD^KY*S4pccy)5>#Fi=3D3JA&>m4cJk!RO@@#MA?xMo#=3DS)?T-Cd9M z_uQ$3&~r-LLG7L;q1XiEraPcxe|QH|pNdLucu(5iq&#S#Z+H}2 zdr+TtfRC_O67jFnfdm-JWRbg{DRRG((Kqt`n&i@$_ciNFyWwfsjnVh1IO;;+|HM55uD^%I_V?h-BkV77AK|>t_S)a->K`E4 zCPq)b>9^b{#GuUA?P*wfRDG)bH6LCyIxWT4S78!fth$8Gr#P`hf6F{}Z5Go~EcR~p zQi{Co``6LF^l<##kor#C2aA`fGj64SavWRM{lvH=3D+uK~lzYl+w^U9YuT;|6S$1`DELeT;!#29}k;!*x4LMmed6_0J3VMs~$ zCEI>Yr>&bGyYw>uXh3)VV-xb%&W!ojv9%nW{iF1bvsz!mr6rcU>ppVlzc51KdAkc0 z{`D?g<;Fb{_f$g9_Is!5CDT~jvs?+)vtCC&+jh4cyga{6FJ|vdca6II@0y@nVt2Rv zCD+aMAGtsN=3D_|QzE^FO72QYtnFxS1lQbnI_Ip~+%k^2K>*OwOa3;pTAs|)4dZD!5HA?%-rYqRZOtyW87s~K;zUkTAWfiFh$<~m% zh0pYhGaFN@c*x&geR=3D8{9#YfwE8j^ysThw9qdgQ+zRUBqTiE*Z8oUjFO7EJV8li#t zrY()BVLfo@AvLH6E6gpew}3|e-g1HB5QebH<%NGfqa^MXxU|75SMThaCGl$XIG3}J z611rYfJBbVz5lY)(3QM)y#E?MM}+r%d2Ht;DkL?fcQN~2K5umP(|Fs6e_-VFOO-d4 zKMu3UYF=3D7>=3DK7Q7vdTz4`h$j4KWBw}4AWfCsa@w?744_!4&SFI6u!^sgh%sLw>}-8 z6ni>;yf)TLCj&SBS_k7}_(q)|Jg+G=3DTV-EYJ;mG{D2{%=3DyZjs9s~!8P`s^ydhEM&ooc?>I zWvA-1t6aIl_f|53-$vz${BD`xLe9nN8__UQJs_NVhL4p?Qcvn@f_LT78U?oE_TQ`{@A+t8zsM?$EFmu2KY9tjC&bd9mh8+z22L&T2){P8-X?r-hCgl zpH_&xpLcn&5kxC4(#L!WPD$})oDK7c;BN=3D^4q`0)-P@IiI2pc zH(IUZ>EGaIc%RDvmUb}X7~yJ>VHAU1K5*rS_m5z_qHL*0u)pa`PG7@FS%xeg_%qkO z7w3-jf*ho(WFAh7@X*@;&}lfQj91vbM3oS%K`_0P*hlF7W~Ap!t)2}R~ROCFiW9c z+K_u%xN|q-Yflz!LrC%oLxB!w zxAV%;`}p$=3DqVl=3D^tRL5(M>@abn?ZqDQ+{CQ+hRALkAyhS4Q-#@tO-j`u`1}LF|>($ zZ+E$&4L+A+S3ckq#0x^M^xb@su=3Dj3qS>ep|!fP3yv6iXc1y2Nhg<(Y0+ii2b zs3%*&_X;P zM|xqL8__4U%rSw;p-9w&VfiQzYXl%0(BX5_G!7WNx{AI~Uzp(vP1KGv?R4=3DHC5TPL z*`3mC0%1S`j7|^%22)2e{lZXI{FvZc`i+8!HYSL{C=3DJD{-@mKI_3!^({F(Xpo4B9H zC=3DA8D9mhD^`_fjC^|heQa^~uka;7TvVex1F@Q5q%D&o)hb^HgzGE#@dpQ(w~aZRKS zi$9Yu)^P~(5sxHiig9Q!nYwugGxz^D;?D>bOx&1aWu-SVNvMvGKhySTFyac!X>laF zjSrnw8}Jlhpro3=3D7k@?t#z>o__q^%#@gqrMH@@?=3DCzA# zbHunC5Bx?#VtP~@YdmhP$BEGUuY(hcYp}l)Z{y$5zMjqua#l2mw&CHGX#)LjMm$nZ zfdwquhK;W)zQp(%`XV2_`iR5z`MioWcs)OnoFWeW*G^ZbOwV^HJ&3l^_%S6~+>5Iu zth~i80hd)S&Fw^%QIAF2DAqHdDim!ao(`gI2;%IX$5m|*Yh$Dj#tV{JUCV$oO|Ta`fd`c~dtUQfjG;M1lNZ7}hy zU_#2LX9v^8+SttR4Ss!kHW(cuCc!d9Gl3h_&&i zH>pUqcbko;0UoTM8U964eWXoriqu#rI zo|HsljQ7)&^frCESR3ED&Qt(mZOl3oAogZ_tc^Wa7T2npl{NlBEY#8X-Bq4IZ_qy^ z1;5d+H;kLFk97Vva`wDWdwCq#+>8WZzFnNUUk_#8=3DNUBNY+-rM^2+}$m@LAasdbVZ zD(qeUu$4fao&~P#V)Wf~ocHYJKw^`Q_Kr?3eTTb{yFnc-@Xc5+5g>sUD5YyVR&A2l ziLkxrxuN!0;cJhl1RDpo8Sy60Z$N9zzDJ?wFe{Id=3D5cSTtAmrWoaMyvT@i-6YAZxh zq;+~{GQEGu9RA#0LR<(KC|ny5mcg1~x{Cx*@1623Lz&Qz2fodanOm5z%>-$YuT--C zn?cDZtmI*pS=3DZn6=3DjL(!*>{Bf1nM^z9aKJCFga{jIA9eGD2A!E7rOqulL>OYHf2W*+v8^w9AT`sZ#5ccdd6MwF!`T z8tez15Oj|1q&4*yR*G2OmB$$-K5e-fS^))|U%@_lwWhXWH4D>yoKsXF12g=3DZWMn8$Q z%W8o7P6!zIs&80n7{SfNq!?kYn`ez}HC+~6kpvAr(HQwH4gqg{1b6}G#%L=3D~_gfhb(6wI=3D+IOiT zN0SO~HoE=3DS?}GN66cD36%zTDrmPu&f9q7j6mzm)L33;0y^x7^eSHY3)S)!cb!b_8zjOtU^s_rfjap1XNQyvYG&I zBeUHqv+2M@ML9clk;*c*igAD3{L(W{9v#_!(@(F%j0mLi0a^b;S(D=3Dj1K|S4z=3D7Bo z&Rvsykiv97`|}y85&2Qzhe)~R*4GA|g|zcc@Mv#2&$gc!dQ zufz9F?`<7IWWm{6yJF8e>6&^Flo1^TtJXX z8>J0IV%`|NDuTQr$PWe}=3DNt~C&RH(kl;)H9rpMK7HFXL9-24by>#~h%+sah|p#Or$ zBf=3DCj-C5qdkd>i5$>mI)L^&($ZQN)jsH=3D}2N9JTrm9cIg_#sIq#C*fDB4Imp2rIma zA4KF9Qa2OQ0QIT^v2L@af(;x1bsK3mNgz#O5QXkx7P!y#2=3DT6C0pe$tB2Komyw856 zh~I$d@7E9bxDyBjH>GK!dRMtIC7`Vdg{j`VLNH+jZNEPd&o?P*^ytlp$JgwM z;QNqKIn^7%_v0oMLmwmvJ=3DgoqgAshg%&EIYYk~02b@;lF;6&5#86v66bpqP>-1@Uf zUB{Hx1#RYfACJ}*W_EQ6gtz-kMjKZb9&Yq&1@;C<0&713#nrdT4y+VGOJiTQvGV6g z?Hj%}mZj!;Bby>E4Kt_u)lz}*-Vv?+*1y}*zeMVqSz4F1bVIbRFte-6TKcOmMp|k+ z4%5`q?6F~YYkinn1V0w%3fX-(No=3DJT>N93rVe>=3Dw&rLItHf`8AYM(C;yUHcX^slRY zgeUD*A6Y(DY*g;+JF6y^JNY=3D0n`#e=3D5jb4aG_v}13B$U?>}BZF2U^iefVdj-^>6_{ z#6Sia|=3D(S`_-@u6pRMw=3D52`MWFS9f4yCT4wsi zI7i%YUdF#r?vlH5O}mIo*IYjE?sDb!Cf4pU#cVjoA)r0VxNL-Ft8UQRk6f7!B<{P~ zF&x*)9Ngg74qbQ?GxpGhG!3f=3D?a3{U*DOgSGf$Jk>+024KH-`@^xTUFpUrXQd)?j{ zD_WPjr>vfu_D*aXTE8Sd2Y1lD6YGZB7vs99wB+_B+VyyCDTKrf>0jAn3)i9Uqz9_) zZ3Otet-FMc)s*#ryiyft^kYCJX4J=3D34Y4{k6VjcySSq}_&60kioq69iv2KqeC5KAQ zb-g>iw%h2^ZFC_@Mjynh6Y=3DW2*+drCO;`OvZXF}E+&wP$u8CNnYj+U`YR60RsO2`H zQg}^0HBH^gwu9D6g;&be$7>p(d6&_=3Dr+W2!d{*mu&O6vc5Gu$yW9j;(?kTIM+PxEN zd)6b`z2|>G^qykB_5}S(71pm1eGI55(TV>C z(TP0gh)%RPh^|B<`T>i>+OMFB47Q${S_q>3q@1o^>dnWWF=3DtVa^>L1aa4?j@w(hgb z#qiDY?EWy1SN5FXNT_)Il6cKB$k=3DIQ?5^L) z_j4~YCZ{;gjHZd-rB$<}_CR;kl&hIHp-m%5@${p)#aW5>oAjFDh8HZvj7o5m-}5gU zI{`6_*#|w|_Cev`?m#%`F0<;jx^IGe2cPpe&CJ;?Rt=3D+tX@1ZN-A6c3oqlHYxfh8U zwNcX|rXrl9Yw8ZHem!yq&YoenLp1fwXoyeQiP42KGeqtopi+O~r!HqQW0A^SD=3Dg@6 zO}Rh;LE_(=3DVRtvw^~_inpYmgaz%3723G^491DMO4%zRe;>#F8dFZV#O>@TTqzkAzq ziBGU-RqUAb)2*&V2>w?g_?BtjFVSdyLzqQS(M?g5YVdv%H~m)4y+p?Y_+C<(o^jPN zGnQ{y%0#Ol%C|x6J>^F_u`p5v=3DWrhG4d-Ew;O-d*h#}T;0xzn0;{%1(cNEz-nI*u4{*_V|Lmm)Xw*yVAx?*gk}QP1yZz!WOTV zPT0LOBI2tzoUmV^3g(V6p!#jX?tjGzTfyamxnc<7*<8_Q$_wF{++2Yo(`R#q(rvCl z1z--~nYkiLwN5%rYR+2b3Q#tc1wKNH3FZntm(CSvLh!Wa3W(y*6_zFr4Cjhoky>-b zD}iOMi0CeYthvGnQToEbABNbXNOP67Yp-UE;fc~K_u7mxJh2wPe^{#1Ha~yA8EGK(LJ+^%Mj)tEfyylU-WO}V6C%j7PTnox`}%TOE4B2@5O zi$}r_OTTR};aFpOJc44X^!fCT%IkM?)W!r|rCWO3v@)KGRcoGM4Isax2b3*{B9#6(TQ)em z5ZZ`iJw<;QO*I%E&gYHPGQ+BCF;Yt7j@Uy9330;+YHre$1W0DSt}?w4Ja@v$=3D8HK@ zDZt00T>8E)+}X>aY{63BAsOoS{`du34fNW1;9lLk+xwwTTLaYfr?BzIN*U}A3t^35geO+zqCGi1{O4Nta zd=3DZK3ms}KQl=3DQWuz3kQ*IeINl921#9E{Xd}d9PE-wE|Q+S}s#aaGcGp@8;r!o$fr| z_JWwo*?%IKC@ljwx2V(-&lZ&jAa2ml`@(+iV@=3D52hfp1=3DGBR~vW)GxBy?1UQn)ql_ ze+~NnC-2u>P}j@BS7xuKo{3Gp=3DQs7=3DuF>>nTNU;OQ;7^Awo(~(>pcelNa=3DcSxVYXM zcGCxn%|17M=3D*dkV`!MGF)5pGvb;CA&C~eI2;X{ZnJ%&rC4+9=3DZG=3DuN|XnKVzm_EjU ziY`4A!pugaTY50GS$bGpGsQUTnON658~F;wbgcN3|6uGsG!bV?@%j;|rAfs`m?zk* zIQ+>*&oiks#Uv1)&|eq`Y5#+&G} zJ<0qRO=3Dm&v)cdTaPn(mB@|OU_%82EAtb4Q#8mQ3=3DC>r+Mjv?aNaD~11FpO+zM`UEc3JFyZ86SI{G6o~>EeexT zMlN}AWJVss@E}GWnph`ZgOSbRSd`^53QC^|*Vo6xa2suT-IsK0%!!M!+(nny#0_!F zYd2fC<+bNBPeJ^cR>h=3DYYgKfD+%&=3DKYP(0Xk^TiQ);CiGUMRg}!tL)4po~>;N;N76BfX<)_KtcV%+9JtD_ieX zeZVcHZS^gymOVr?LVpH?Uaf;SK&Qa^YbwQV6eoWxtGg?6FFTZKD%UvY^{n-lJ>)v{ z(`{=3Dd^Pi>=3D+Nvo|ThnW|>dG%(j}8#F6a}R_C#xw;yR~(PGm$=3DNiJYo?kZk@kt*dsk zs`A|gw0|b4gH4p3{pw_1CzsezaasH`8MaRB%G?JKrGsUMo~4<&hi&?~Xzgo=3DS*VKI zG7kk=3Df0Ev&x`}^x1#4Co7Q$J(tOH%Ph8<$o@z?!21mT&s=3DcU(riDdo^Ni(cEowN!Y z*S^*r(wl53?@NE2!}KT`JuHcvCvRoHeRQD3AfmWun|8@olzD)fb9sF#1_t{!yG(J| z)ykFLH1qb!TX8)d9ayMxf%;guuxO{uTPv+`7v7Fvo_?CRwN~faI@C-Fddrw?%iHg@ zyDHZlYj)^l%h6ONq^XJ%QlkUUO5#fv?7|LRW2k{Wmp6?LJZ6&t)77r5>3q^;?mUY( zw4B)@$hN_<^`eVP?`-NF&{1vz`{WWeb%SI&C|K89rYDJV-<7$a_kOS0v$SOQuuZQP zCG*>%b64%d%9N|?%(CQMGv?ZY*$-N`m>1u=3DWp)D7Ku46+cE z*2QAyHx1u7dFx+<#jmaZhEITj;u^ z7pFAsVSj-zfA$+WYz35+09!;Y6COqBJVm#&Z-x<2#2_%|lEx4h?C@S19r&{A6V&&b zCZYTXCFYe_i=3Dzw6rp|#g)GIP+ZAEjg!4$4jPVVPOjnnCyCvBw*Mhi?%TCmVdwqSX( zb*I)-*`_Cn83~jh_c=3Di^Fu-s!yYrr!V-;zxJ6E^4W?39Cc!7+ni@MEJ);&;1&M|vN zZhq)P&c>QgN$K1B(0`aCCSHSF_nN?*sZ=3D&^y?XqwQ+pcN$=3Dl3_cN*F`&L{pBVY3~s zcv~tqvLxoc_82*N##0X~^FzwKixEub^um6t>g1HZy+c0=3Ds;XeGx=3DgEErAKfCKRI#; z5l=3D_qF^86H$h-H<*u3w9IS%)Jf*^Q15A)WY*O{=3DA9Nw3Y^uED+1I9_K;UhfIF2aSU z6(Z}@8vCgkRD;$Xo*O^^ZmifUqv(k5{SfypY78TmeHX-DzWAF%7@yqqi`Crl0z^vTS3F$9ivudqc%jM=3D&1aKO81Z z>!nW`y*FQAt*!Tle{EQHm8+!wvFAw<{qsi7kKt)T{*8<7vSTz4xs~}FS{Eu|I&^D3 zQI+UdgZIqHkM1I29@F|OOD z+cIP2sQ2?fh}tMg)y-91eJoB)E8$!VO?a@wLJy4D8dhuL)u}MRG zJOhFs?U56%juz_r>q)YSm2uo&J1C6pMB$ea2}SK6HClzFjFhyUz8b0P-b_hd=3D8qAJ))i)UbqR#`u4rA(A48Rm@yGbP?d^=3DM7 zVC}toU8KEX=3DG22>d!N7URkybk2cwx~#n)jn?JbJNQ3r@5>P!=3D9c1M z?Y;kwNPEM~sVBqs7C!!}+xxdjUAy4j$k;J{o*S(z%6-$1H6@CJ$*bv_DofhA5fQdG%$!;gw)ey+4%XhPaqT^a+_d+yNL>fu z-LdVxCR$gR+0`Ww-nVZa*IrdNroD<+@apxiZ!n$8IgJ08t(q})K|2Z{K5X2(dqXUl zQ549PQ@x8jRdIOKNqJM|_r*4z^ugx0o63b(TtDiDuTmc0y0+i+Nd*tkCj2$en_dcV zQ$DjxQclfukbIr8L|vLf-IHD2Pia%iuUC~3DxlgsW+PX5WO21H+%$y~V)701Iw|5FZq4YJ|$MteN zJ9PmZCM|hMV$&i$LWYKl?6jpk7p-1qp?97a~o*T$fu>UwK`&s%|d13qKp5 z9~RMxowZefooJ=3DjFFvXL&iNU#|GbzzFshMV+VxuEcJ#5KLcgzHe=3D-T}?TbD^iT?~& zCq9`@imYlXSxSjl>%HDyMrc6Xj1Bi-`txWib@9cqYd0!aeR^=3DFADXH@Uwh!%O-l6dPQWxyV5mMX z_4`9wMcAA2IZ#snZ~#8k^2RRv4F%Btx0;rZ|Hz0qSOt?qhs3;vwT1VS{cok&w^(+} zg<cK)-cxT}pvX8W!U4$-Zf6#088sj*SL`r?#O6@I7M}Ov!S>(+IdxPSA;95W2 z-(mIj^x&K@IM<-NEBU94I^<2304X|%!v;1d12>`$kjTE{Ul}3A*f#RFWdl>ooAPA3 z7Gkjbdwu8JT>CP*8?XChW;TgFQDqlp^OynzKpqnFt!87lVj>r$b0=3DJ3KlqEhzAXSt zuAB$rt8c?hcKx$#ypH7W-gyOZanckhc8$4vLffp#M->|Wog^h6T`~dd%tbUj`6%X7 zT}FX3tOD?0PA08k!ud@@H=3DhQunW4x@F3C<5%r|K zNw%H;>WK~x+UwRXPes?F3UvVEZ9?)BTX@RX{ZfZ1A@*J)w!D`dv1>{4iOqFRJdPta zX^z-%r}{Yg=3D(3Z!=3DEKpu{gRUl&lMhmF~HQKB>9~LW5`~l6K3iQV4R$O25~P4?e!4i4XWuV~Do$8uC99|9@_Jt1 zp-*Bf4)Im!c{-!->U`#xd}T8SFb-=3D+OW)}oWn6i}16Q8#nS4~yAC|gz8U+SuT#dnd zMucU!xzeHZbX&RARQQj=3D1DJBv4m-q)IlUp@G5j|I2c$%!ydhL?*4U+!Ws<4(v&VxB zx}Sy{QIt6^m<{$U8_E&|t@VC5QN?DCD@G&66oYuhVxM)zN~mchv#q^SY9`a)hTJ)8 zVe+xICgIO^elrpxG0_US@mwkXur6Uphwogu^=3D;GC5}yaIa@~`B?A|&9#y!RtgoT|% zsRq}HuKO-IIeh1L>%CJIr?P#6F;ubIr`IVVHt-fiyxk%DDx3Ee3Z;#C7T3eKQ+7p81|f9khr7x9%zZE%}<>`Xq&M6#WICkgWA_{T||Cj%3?2N@_}^pRk?bWSe%jD3WW}Z!D6@ z%tJvAZEMAv&#||9=3D55OvsPl}MJN3KXoAV=3DIS54&ZQ5B8e*H3Z=3DQz4=3D0QRNx3_vo43 z3M;SL^t-_u{Gq=3Dh0HVs*doRD%%4%p~Q>Pod4wFC#npP@fX5 zYbGpPq_yt_%m6#~qlhHZYbxtw&1b^JJ6=3DFzNaU7IuIEfd%XE=3D0l2-5Cp+uBmk0G&4#Ix{2A| zr$uhXg!*vBTci*4ni+zjYauv`&SE#N@KGqVgq_7o9Aw!WU8tG|K6DWM_h-(N7Gf5(vIYq+leD`L$@*~(Oh$KNZlm_W;hy@Vy4kI=3D-MS&0sDQ>C|P2@?}X6;`FY z5n*^nuNwGgDCVd2{moDN1Ze}Ud~}t|L4*&6zTB4Dt>85BfnlIBK2x zstK=3DdasrT0m(7;XU(Dt`IjqOoUz{0CC5!0{1KU zo6Fx){`~GRd&;5I*0KCGm^ebbq1J_B7$fy!xZ=3DYu7>v(MDW#{B!K*S0L}HVEjN_%7 zU8$#zVBa~E>V4JtI9c+P5i_AXQJT+|{IP|E1`|tc>65Lu#6w%3d+id-fzAU|gn^yE(=3DpZLD7r5w)QMX`FX-&u45wJPX7^Swt`xn+4-0HKIn;Vke4-iKIYZX4^ z&4EPT=3DYGSIMtcsJ!f(LS+<#1Qc7$R0Itzsm4ntmo`-AxK9d2yRahad8V~6oTMH0Yq zL&?Sr?e%mXCLn@q|MW}7`r8~S-mM?s*(ZYyImOW^zXRdES6v|CzSp`!C%bG50^#mC z;eImaq(Hd8#XNRH;oi#_@V@xIh;R=3Dxr}j#?3xxN(_lgWv4D1J~%scx;^};^yr}VhF zNis84vT4E0$J1SD2F4BQPc4jWH5JI3)rdUScL zAf4dbt^|%a{U~(ifEf-!iah`v{MFbUQ=3DFz`n^ZVslBcy$x6c!u!qX&&7Psun>xbF-7>O_-yI6sbMNOW~vRad3^e((C=3D zNI_&n>Fw6bLWpI1cIvet}K*Nyd$qU@NrjRF8$7U%*zUo2oxq zEYt1Eki{?auo9-uBul{kR)6cD^yknX$36hk<|1>hIw^WrlP7l*^=3DD>tRZh#2BB>iw031uJW&h%UkN9?i?>|*LBQ1X%gd9QH_*q_gyZ~# z^h*~dGso*U!OgZWDN7Guoy<(qZ*G6dUjvks_cfLa9eQl^rY_d96_;|x1<^M38ACSO z&)FH}$!4zLv-y}@UN5c28k-q^0no0@4J3-?WbD(knHTM0n?B3$cxNsz0E8&D8eOjI zJ1cVSTiK~>@V-$lKF}=3Dl`do*KT>oqZ#s}Wjdv7|yc;tLT!J>=3D*vqQtoZo((kZ;jDo zqc?P+-xyVx-lk79Th|!7g0ZGqQ~FF0=3DVn{pmfx|4ZSl`)gloB*>I7J7kwH{p;;9O7 zeJV`@^Z8XgH+cV2qe?34y=3DToxFg@3ytWUR1)9YA1qc6g;3cTA+ea4Mq<~>NHZZs0< z!L?Xxle=3DrQO|T00W!kkD(|w&L+4dquUH1ye5xaMdqhzf4Bd*P%sbX1uK(T*4 z4P0&FugQ0aJkV9-K_Y?oH-K*auUn0cJUWM<2Q@+iAgJG7%H3TL1A>s=3DX74E}NcWUG z3gAdPw@4dJ=3Dr{XsGRu9i`W9I3E9Hqc(>{TCX9z-SMBOmE9Jj?GeQ3^;KF~U-8?wXk zKGJ3EDR5mjeD&n*twL60mI6IzpXEK2;Z|i5x-!f7q$b9sF1A|4ug1J#Qo?H1Ee}sp zqoy-F#JcygHBurrC?|^6drPZ*BFkUAqSy-q@1sbN=3D~u5+rg*xu+{vKSkXYYMZn?Y! zP=3Doi~Z)kGk_VDN+Qr**4cT9(J7<(a)2p=3D418BB)Cj(CH2`^Sx0>b<6C z1kE3O>781sI$4@UmL?zTP`8psr*fpTg8M=3D(1?{%t`cB2V&99g+v(X!6jSfx-Yf zP=3DL0HTweX5bB-PACdaC|6+PU`Jd4I;JLd4&W#Untt-+xYY6DvjZsgYF1t6K1 zIa5X`%i~5#t}$LywWH;d^fqOWH7_iAS+yg#bVuCf%pNNx-(;tcibJ8ICzlr%+2uX) z!c~RKO0w{BMGr*Q=3Dx}4H1b&A#f?BK{*%j1f11+1;i(FpgD{IgPX7K1h*BCjHnIF@d zmGY<0Ez{MKY^=3Dl?>GLVru=3D0*nOjbjA%Rk7TCi^qGp{k7%U74BW;6cRd(6hF{-NQEh zykqsuoaIS=3D@9tVb<1S8#E6Z|S_UXj~P zT!8JacnNt?-)c=3Dm6&SRhiM*l zL+}KVUo)KIfeE?a(<~9FyV`k9B}A)n=3Dh_urN&TsJ3W$92uX34-bqWMUx!m+Cj!y zhw-8mf6c7Lvhlw*_HB`YnTjAFnw(FtA(1fk{Gyhd=3DmsqYI7KV&eJUV8D)Ds~xAR~5 z*vf|#42E&N_XfLsq1;YI%?}O|P9!EWljdbl+%F zTQQ)k1K_Sk@3vz^VfIV=3DTG#do`_*&723>Ec!TZwjdI#4h+a~(?aa>~ms+e9-drjo> zz>_p6JxTiJZ3=3D4idMWD^N;Umde&tQ2qLRTd)9Q1ir)yeJrk4exb};#vg-Xay4h!g} zgdxT+qKDi@H@Q)r93W5JnFRNUgM~aA4ISyFO3=3DLxQ1?%z)SWNF=3D7lzzJF6b$gvuVs z9cb{bau=3D1?d-v`rQu;XQOoL>qs`qX6V7rgf7r7x4{wjRSH-(gr9nBb4e}zRm z#z{k#+h_WXB20;JHwW(3owD1*xwfb~yX6Yn&01GJZ*?FvBSgsi76?`Hu@d#381WNy z%|KJ4b>}+Rq0#GMAlXuGl0%E?o?iDUUa>1b@BymuvBZ%m*bYop0L{ppezRL_`k`s< z7`O#&sKrZbczvS1?x6NuTJTIBUbOn66g!Lz5oOjw!~4)5M1<4Kr-uqV#CTs zHi+IDVD{nf8Nmj=3D1yX>UPy|$#Mc##fJ4}JF2epj$8YP24r1YI zz?HSE0K3Z7@8t6HgK+)P4$C<$3&HZdQm_xvxgnNODy|P8@7V4-w;UI-!W+3S9SrBN zYCp+A=3Djk}@^wd_cE`XUT2EK|)7dgsl3IqL5-F0EzYrahvCip0^q}=3DoopP}kpozD2N zh$ax^zcRgZQDZ7j8B=3DLHK` zj>nlE(|n@0#36B9>OO1T0pPlGaw7^wG@QG~A_JkkXy*=3DxKK8_k{lv_}|0U~D)33~h z(C62@wiF)OV{(|%<+pS6cBpWpPS3g%dWxGwS4?bJVAGE2U-BS*Y#9VPkY73(Gk`~L z1)<{XB>yZ6sG&?ponJS&x|+ns)K+l!x{vk6dJ9HeQ|-71Zl~l<5l`z}H@;aNsOOm^ zoPE7`KjZ%?efLuboqSxX^9b~neu!D*73n)Vt()$=3DYG+)Ve(&W!6xHHYQ$&~oXy;H1AtOPN@Kope7H&IrTUcyUVfS? zOzkTzdkbmlg@VAz-Sk2gW9mvTR9>`%^g?Bbwan=3D%SDwE2vIjg>RLdFxa?{k*tTkoh zULH3oyCeA~(Kx+OpQFvweS(E!Oy&I9{b-ux{qg$*EK?Pn@3heyw`K)&p690tzkqV5 z`e{OSqw1~qD*Pn<^4^pa3$;{uk1|#v-A2Ar)&HaxsGJ z{DtP!H$?0n2*#0&DpV-$m!142iAm;H6As7@)(^%qFqIH#@H~gZXb*KC?OottaR<3_ zdb$MySFrRf^c%%5FLRtXTmpI+C^1MUZjr(1Q$3qjC$YsXe3M(sq) zgEWy1lmDWx5lMk!!YYHCftK7r(e$l1aAzeYH)`v^rLphU=3D+!?T6k!BLTs?XnsKaf~ zJN<^GFV?26fmOz^&2z+@h_KDOZHk|!o@?AFwyF324S!c!Ahu~f zT^_F7DR-60hJafLO^1147#*JK2+_*?s7%Wc$FP*I?z!RKEAGO(W2^+1JhS^p13@-< zWu}*NR=3D3WKHS3U(Hiu@`d!PS`p=3D)pE z6yMCj|1a|9oZ_2v>b(y{-Yh7-Sy1o2Bl2cx@y$~7=3Dg6C7#W&09z2n0-t+yKYhUmQ) z|HcOmJu`>$70>n5^)-0^?ts9JQP!I3t#u%u zf??khLN{g?ac*!Ypv)taEw-MYxo%OgOR=3Dt2HT~vsfwx+}TnSM$$oJ4s0z9LYRd|&_ zWgNA>6yP@}8vR83y|0*w->?|AnT6UZz3G(HNt+q|v6b^v2|bi~ z&tI%s1BXXnA4Fw&4PD5>ELxXeANm&{aU>q{{sGqvx6q0p{L|;6k zwxUo~I8L*!^NR6UPQw{vIKb#xd6_?LMB*?w)&G>#qE8!teJFK}|?0&YsP{FGfB0%9h^d(#4#ublS=3DU5bW zw9>LoXLU)9GV9>_lVXFBiHH4tipq+j7`1H45Th1~8Xs*r+secb_HwINAMryg zDLh5TmdLHz&9npn(9?>ojkYP!TWk|^j%g_dU%xE+Ew#^2MLFo-vpdS?-wp1 zH?-priyn&X@pJT@x})!?iSd8$3waD!g zr}dWUF<7<*7dA)P1Ujk9_(BYuObfdR1kRmqVPBOVCybnx7AbPF&AIVm?vW&5kI-wD zc0*RmaVjNAjm(^d4$C#rw%Wh=3DcUc`)7M(H`gdR3zTIzTqEwTDc?f#SC4nK zsoTrow#&dyNqHNLVVhD9I);5_aS6lr#ahnyt}9kIJFE^V>I$Xq6YmO+xAy#ycfV*X zhcqacPW8g6J6<>{SCvtJB)2b}9OsCPIOAY1(?8b}-S4otEWl!EDHi*LMc=3D}((OkpoHy~ju+KjTKJeU*m&)mi^!`(K>^~|O&pXarUKuBv zpxl=3Da{w!O!65O1G%e|Gpq3z$5nPSg=3D^mRcc&VR;=3D_oD)r+u~zx_j5Hy>~)$lFzbaTN2J1XqSA!__u$; z!Jqs0oIMP}PdbDj4k|{)8-`mW2tO=3D@??q7g0`%SX=3Duv~lpdb)|Csw4_$Z5O@68vikg!1$jffZ!6b)h&Kfs7aU@NqwCMmJD^@Fw) z*N9gNyL?zal5V!m@~|zvWm{}%3m1CJ?Q2_lFI8-b222Se)<9FmmRkeTI_t)o)>s2Z z^8Wv4=3D6UwnkkIz_zQ5m#=3DGl4XIWu$S%$YMYXU?4Agb0#JOOY{JFKn1O22^FJ#V(J;TzI!m_A~__J(DgwsPaTch1Ym37;P3 zYghspZTS`;^nlV6jt$q%9hTDw;=3D`XI&etEnRZuj^@E;;xyr_t3>jBEyKPw|=3D7*yZM z$Pr(|&_N5}Ff}3E19V;oaWpz&vpHY|;c;=3D@y!;7`xI=3D&!5(ps&%%uhz z2KJ*EpyN-5don^W1sIHcSAh!&`Bx09#T*)^v1FI<0M+ONNKh*`9}2^cN?F^DfVY0nDl|YRM%QKc+gc7T z=3DW{}rD-R@+8M`JRhy`&JN{4Pp!@k5OaC~wS03QjBFopq%2F4Z1+Vf|^Xwc4R=3DvsV1 z>t^x%2U>R^#C*>{wAUZ6LsR)0ZUHMuTj1T@$a8Us(0Ytp>p8f4?Fj)iU)1d$)klu>g}JM_ngQ>^ zu03LqkoZ2kLj}-*rD+~^Oo(yMx{;0GUAXcETk~Cbt0%FNuw<=3Dv?C|tWtLRyJCv=3DnC znM1D$VLuswI3k3thok#5G3_-O01bLt?^&1G2q)`DB{RMYqxK{&mkw!=3DGHW}{nOOhT zyn|iF^tREpx3Y&pJD~Y8be@|NJt1tHcXGK`addwMTn(9uCw@*+515&mpw14?##Yul z2C>oBQbZUbku&i_v1tYJCHYCxA&w1-B4Dc^yFLw^3F`#r;)>L*Jf_4{gJT?f_2 zMA-MraM27`$Pf(gfSfQU?T7yE4>&(NT0*wMO*a+E@G0Etb{f>f9Zl#1+#zCRDS6Q9 zN5NsbdvLL5)8H-uwfbor4^kZUJ&9Gz*QR1cjD6Q};nmx-*TSOtXqmr#38^PC6)m-0 zT55ap#k3^Rnl0hgTRfqQlouz=3DTRm4JPrLvA5M9vnZvg|9`M0Bd-bk|@zM~T_{VjIK zfWaNwfys;V*Lg@_hmOEGbJfIwI}mEU?)=3D7i8BoO;P6TvTXkz~kqo<0!rMP{F7p@#i z+(EkrE$iT_@5vQ=3DBUrU1 zR!LtqsHJ2c?BQxNV^G-+Oa-eT1G^;Wl6e=3DRtc5s32eb_V5+kLk^d@%`^#pp{H_|XsH5J#cWQ1G3kV8$(EKra)-wyB!DUPS2`>6!mM*3~oNN$4b63g+WyQRU+lrZpXQ z$Awq(Tv$X_v{$L$t>@ew=3DV`mogfP>ApYZib7&~`I{p&6N`jjHar4R3fIZuJM(|Q=3Dx zb}0$5l*V50n7~FXTQSMMIk1X>Om%l@+PoYvrE1?KN>QV8(2#)um%B`?3MNVlanqW} zK`AmXgmNvntfs&h7B>-M`Y&WyCZ<8TxLudWNm7>xj|o(2Os3nI9J)3Q6Ie4`qo%qs z(U2MwCRXdNOkt8-194YYQDD|%-Kgq#UBGR20S~7afHS(+s8>o@)p6iD5Jf}k0+?7` zWeVW;qytH%?RuvB{Eg5h6jtYJ1WQTIfW9 zCy-L>*DjUgU%Y=3D&Uu)G*{-w$1f%I!LZ7fdWZUWaz@E8?dby74dp!{wubRvy~=3Dr_JO zK_>KWh70AO;c)f6yU4PXjLEDll5 zLc{H8sa8j`Vh}6XX%wT#ebThqXxe1iIY-40`peJMh)udH~2gSfp}GnA;9t1g@d+YBHpbUeTd;+<`byj9ET>k&z+q z#9*3)(=3DYjet%-4}4?S1+Yd~>#;$Sf{j8+PG5x`9}u6&-24`xHaj?52YNbQj~*@qw| zP&c3e>|P|X%OMfmV@mr5ItYo%# z<=3DB9iB=3D-ci;Db&6`RHUR^6RSRm+-E)Udc`G7|0!msA`dHFQ881+hGl8(_5*D10mQ| zsXhaRjP#=3DJyAO{ch3kUbF?%Ho#g@bTi{&AfC0 z{7W0zDybN>Rwu<0?BwOJSMKTKI;wwLChyXStn+&tGm~RLT8cyN*u)?j1iO}DHg>R! zEvx9&7d)nO5cFt%y>*ykV&UJZaQ268N%drbR!<-ssvoCFt z_N-lMm;7}-AXA5vfr&j}Cab>ju97vRE}4l{RjTBdQB3{neCmmpk*l-tL_#y=3DUwRl z6JG*7^d+!r9JBQ9&+tq+V((Z%mxd@z*N`MSEC~tKLw9OFexJmG#Rjhc@6%U&z@-SB z7Uu82qmLZV3|9}up?27t(05>}CG`YJ+7sYl&DqedVd?1hc3$!fGf z54A;@aIu?8cS;v;#=3Dge#7oqC*j6j>q=3D^Xc9VmEM(*oxB~G%ZKLuNWN6ayfJ3e5u*C z>>L~L?2>MrKttFq|F{{GP0M4-be+nU1t`(}C67eEOY0c+4$``Jx$`+{?5$N-iNmg6;J8P=3DJ(kWtg}ysNS4 zINU1aFGL5q7}q~SccgG5TU9{(V1Y;XWnlkSP9{FC>Rl{v>{Z*h$=3DW z14+ipFVdCoc2$0~nTi*3bdS$d-`DCs1j898_K4sSjWZ-cg z-s*tUUcJ%{a!U?RlNv1@wpA+T??^(C;e6EV-AY|M>=3D@U0u}I9QRPX;x=3DBD<@4E{Qs z`PG+%OABCZBK$YW@E_QpG$0#N?tu+$HZW{RpHMa%oDX5+5`Dr3Yan7AHgtdk#b9F1 zhA&=3DXQzB6)s)KxZzvcdMC{LsZjqiIgP%|pUpUQ3`Mf6}8j4f`{M20^vaUr%6eZhqo zn&>+9hs#`uIlvk*;m;dVh^>-|0+to|zArt6^3)C_wr~R}C^n>oZOqLs;S(rg3MjFJsA9IocyQuWUX*s5gN>{~F1zofzS2Tqk zSR30+O!;4>ZjrN6b{7?|Of)H$E-HpMFt~xalIU2SE;_^A{&F7NS@3kSi~a%P$LXRD zux@|pqBmTunFh1rwHQW{kDb+gJmqJakDYbE<~z#fbG}012<2S0X+BuEnC83ZKc)Fd zKn^+WefY;UKCJJ#r}N10{du7At~q0-M~xAaxBsQ_PI5f- zR~Oeyb?g!J9OGSnbTww2-p8$;DW^+Lhu`q=3DC(;+X6>|^kaQMVpj6Y=3DugXfnVtg2L> zMB8Hy0C=3D1oh#U#}v;6rb`#3#owpL?m(*4d4@hv&|z1PC6$heEqI3(D`=3Dq}J49WU!Z zNgFQB#`$hg8go|W1q?V43%#<54-@6?O$=3DS=3Dd%GESZQIAAT+fDuzO{&1duKi$#e9_V zQO-vtAM^QG9DBA7&~rjqLQa%73xfd9l#$X8$vN!Ymt$jb=3DV!#$nMXl%}wF7u{J`8d&H=3D8Vk`U+?m3{(I;fp z{_p4$zTlLswn&gv89<+KmtB*CW^y1k!9aWlJgPn1XakyBjo9G&g!;}cuo7_2gYGd0 zeo>|_x|cs9T_7|u-g1mpSRT2oFFK6wXqU`3Yag|7o9xETwDrLvhqb;cL8CI%i2|G0 z*33s8zrbnhl_(CKZUCF4l-q5R;2b&BpQuAK1n*Fz4&zk57WA_hK|{I{Q>~5r;H=3DSjm>+Z#yh~I&yzLYV{wA3{ z;Uoi2Cf2-9!-D^Vn7+bJ0cvUWA7HDS6(x@vaGL-ZL(8-#{1{+Oy2w@xo!pan#tURl z4HH~;4%}Gq<2n^({|Gq`48V;{Si@h5om!|Upt2Ynm@h09;DvB@n;kV{t+d&|BwIHx zSKF2NZbcTJvw$GNYr zFnDRF5y-uSK0NYE4qz{H*_Av3(5Cab(Vfp+nGj;{1Qrf$$&U<-43f%r!VLpcrghe^ zshq{=3D=3D>Zm;iNE4icJ?aTptfkPR(s{vIDBr{-z7%P&AiCCrUmN4#lkLJT|+J;K1-B7h0SmO zp-Px^0IgkEnhex!_4cE ziLhtCe^=3Df=3DT-I1@h?P|^|0hXJIA@@_3D!8Ab%Ctz5;p=3DOu?~;3sJCJvZbYqAZ;O-n zY~ND{NW-#&yuH-U$E7^IOVFNW&|cW;Z_e{9#ND@5>c@5l*p>4)m$gw@#TA;+!Jw9O z<&=3D|Hj#*pczOi5e)X_^%;eawnU8W9ak7g>@IY$YP!V+#4k z8cD$SOq{XYeuSw;r;xl8cP1l_rVf%l8$<$@ptml@6tJ2~|Cpd#A+|nFmP`6rT(CM=3D zrO^ZbrJI$QU2-u8GJIDI^JZKtLiME-rK?)9cbdOzH4X!(6Q0L46C;h>qn%EK*5s6o z5&E8MjjYELboW>>zT1+Li`ZCv17f0aLRbP9i!r8T@AN)q7-oA}aY@Ggu>7S2gc5)r`FK zAxmvMFWf4jNB0!+aclYpDo;YyELm&FLN_G`MJGAU?HCRD37WjP3a z94(pru))Z<>-al*p3lf7=3Df>_*=3DZ`pGY1wr3*ofGSms#>V$l}$ z;uJcawv<7o$Ng@sx$jQSJ%?1}=3D@U3&!+Zy(VxvMs;F)?t@)9*%vL1~RRjC9?V&>+R zC3T6v)2i45?-Uonsb<>B+R+bVebsZ;`l?|N|H{$NDa_GXM$Eqj7GOOX0?nj7IcYao z*YlhOkjN@96aSfSmP8~j6p=3D1d{6HgM18tlgW!9GCuD9yXQY%mp^*4l9H+W!siyeYL zLcCZN4beQB1GdWPieet>7}Ux%2+JI0&0wa(lA853YQhcs8{G%~*e)czSac#`Wd$Q_|` zl^)cSn;pJ}KOqFO1q&AwZGh@R>`~TR73;GqHbg7x>Q`?dW~*_2XhSr<0{GCk34a-F zNhs>y(CXhz!l70bw#7yvjrz-KHfZl=3Dfo6Pm)9Q-Pq|qvGE5VUd;w!9T1uQ-qqI%y+ zzF>208zERiLwIj_w4%YP*=3D%Ktt)xRd3_1TO@ylVSjE^|fqi>!_M08AGA(~vT(Z-eEpgBy1k8X>eE)9Mdr2e$Z-F!RgS}NDw(fz|vc3%|<8$wQ2pk(KtU?@)@0Mw#-r+!>b!Xn6Duh zgur}Xmi!uFAI$1U{hPw8H+h0VsbC}bsW!pM8=3D+5S!fRno11v=3D$XUc`yvtc7uvq^71 zg->UJl74*0rsVTb7&SPw0p`u{TXZ+}EHrJz`3TG_8*o?+GaaOgR(g{-P=3DnM}Fy$>r zOe1b|L5IuWN}fJRq~N?d!4|zPJHeBFmasUQt{b>RXEnG#WcXV!A_x3y&rcy}%U7@D zZ1YyxU-bkZ#B9j0G?Zgxb(q6~)q7I$hShs`@mG)BLId+u*umxkjRv5Rd;v=3D!%m6gk zRH?59*v&wY-d5dLPz6td{nwGC&`;HOjz-%%`iCA{K1O&4M>KL0&(?^-lc{kBkO^5a zeyIxNAaP$|FI!N);od03XCrpa(%KsW$FzjZz#Tt`2FYQsdcW@dl6AO=3D+0YC$!^=3DSi zst{Kpls7CIx$#aRLIy9jBq8RVk|T7^?&1yhHtws6lap(2en?x3Roa@mLv zt8%V8hO7FacKP8Zsji&b)@7+#4{B0^y5jb;VW%FBw0^JXBmMnbpTk}#V-@daxNOa1 z>UJp+eHaYHtt>7YMNfVdzmS8l3OdH4?$|!|{*3#0wT}dPgq~{NFb=3Dzpk{mE4s(A=3D2 zfO9!1$iPW}OJa3C1{9{i(7LF0sJh@IGHx4k!D^U(fExWB`~Amn+3!DrIZg-Y>Zy_y zBDdLyQu0FE_;gmbNiHYLkPC?HxHuT9-uXDMAuC)zl>j!L_#r;#eDh^cD!8|E zC&I2$JSDE%{b_w)6)v>goghrYn354r9Sooz%*>i$rW9mmVt)wN%6E)Eqt z3J_k7294wnCJ&ZDA96^Hp2q}s>ke>#U^@eu>SO3Tt`2a>6Pl%-g|Bf(Tc{xe8v!nf z)kwIXM2c2_3-IQo4^7!eG#Y`16hY&BDXb zH6<@$T*VtWMBlD{N*MK#XYG%oHNm*vue9U_D5l;BpT33`%tg4VCF;j;)P*x2HE&?Y zM&?LeNt|4$cq4qOgeM{TWk3@19*u$wUQz=3DRPd1HTgFzhjDXsoJtfq?;Z>%IK_9Py{ z!Y+9m(}$+&{7We|3!t6$Bw=3D{p#c5T~3Y>SxrI=3Di1+(V@&xn;4rr-H<HixNSk?cieCSh6Iuk91qzr_-Xt;yw!h&(-ZS|CN9rhSGyZPwq;lBa2KQr%o34T&b@ULYEDQpWkz@COl)>Zbu%6vAhZz~uRAg%R?(&|LOLzn z+thI8;TG;~swZd*_tz^`+0ThJdf8?p++T-qZ&U4rQUCI^{V}|HvnOZ^_f%;j++QD1 zxWAq*++TMK_f!V9c&$MuY2ww$)HF#skZ>09T7ldtUI&usqZ~Yp%4Fgec%TL0^qnzX6y0(zSR3PDSxM9{Ks zB53`uhgC7wtrWBsuSY93VM!W(^JZq3li-dSbnIpRf+abL9ejZ-dmi_&72()zS&dpU zcR7qATFU$zayc_NvL2gK6yjr- zV3=3D?5EXR#rl+U40;sb^GlB(tW(6?-k8gkkZ>XJz?ALUS}W6y>^9NZ;S#v@boEy+8H zv%oI6wMNp@)T)d3+esQ+q|)-F8u%=3D%<>%7H@{_YjekKIu=3Db8oh+5FX3~dY%{dCcNE!HVD?e^qkGIyGIy}$I_B6NVG{{%*eO@sQ zJ7Y(Y#wr}oaQql$V&T0|8f{O(&%HAUe@wD*m(k8L-u$bp z3=3DOHvpe?()HC4t77}20#H%5o*$WK^0j)xli5gfs5!<2G|fOeX6U|rStwi9iqeb4NJLh@mhTctj2 z=3DS%NQ*r->Pb_5IZBj4NI1u@Cw0SjtjK`l~HO$)T)%^jZR9*E!rbWx1mT{b8|n)MKm zQ_=3DP!a&fJ+=3D^Zw`N9YNKJq5uc@*4HnyDoZbNKJ1hR)-*1Wf9pyxg;hvQ^iT%wgTZ_ zSh+y#KnT;ep62RsOj)Dt>pS2=3D2a(5cpPtw+Q7f3znn06>3%7psV`((#O*$aL?D^*d z_kYU8->JN{<1uZxp7jCC=3DM*&UANs>t@M1dpYxKas6J87jx19q%b%Y64;9{5`vZ1B? zwC_@S&EVgqv>RRD(Vuso)t?8upVcU;AS$k(Dh*=3DzAN?Fck~;`~oTi1P0qEONmRJ01 zxR;836<=3D_gb8G%{aMF6~22XGmK3au*wX)aAfu=3DA(aPgG^vT`?6sq4z5t=3DMs}pL0@1 z(39YZf>qPme0h?*pgz2>*r;czoK3~!KB{VFfJuOfY|XAmDW1e9z*%X$F&x#|cC%FH zZ)wy(?{McN_+wJc%53wwq#F=3DCN$J+`uhJ7L11Fyn>6Q&CHNJ#0&}mT&ET} zq)YjjUCJxnX*H3dV5Yki4XI0EVnyY*DWzDKVvTf>s~zN;r3;y77qTS15E%=3D859#By zh=3D$aKFtI9474i#=3DH)I(RV*83+9qD4O^DC&ZnIXGU3|2`MkDdS{d2Y);h-4qoc2uqDpn)BdmTg zhJq_;{uUeyFNPYtHY32T0#)!KA&`AyAt&*3j%I!Z)x1p1F&~34g$KW1yhT*7zQJ)N z>{V+gu<%X(46bE>Sr}7sTe{#0=3D7)WpZkXKniG@+8D0S`)mDED>0g(C|iJfDu6puos{$lB@1Pj`ZmXzoQdYs`dw1J``iP)S*$X z%*wW)3&B3!WBM(ttNskjTY3{R<`$zXx`L5FWVtw&A8|uYBks!d`X1zo z-F;HPfsIHZS*Sl@-^X;*`zX`o3JKf!+c8)}F4hHc@?;lukbNap5Jb*(>LzzV4zMnW zStxF5nS#10*`Oma2gkI`85_`&E%19+N%PZ7g4nrE9YUXXs^kFcl0?2;k}7E(B~ML0 z3cCgJ4Z3wb4aFf05j}y|TxE5?omMMIpX=3D0ocUcawE=3D#1`Pu_59HAa_ZWunvB1Z)EV zwUi5VxQdFV7uCk1-c7oyc`hfmxgd4Lw8lF@7NJAo$iEX zOFPQdHZEL0*1}x~4zA9|`8n{SEm9)dJ{H-%BzH??hnuso4-t5WI4=3D!wG)*whaqcmVK-c%e!bL?MoFK$ z9$HM+{g{YUBsnz$P%bf zPGVvM1`|V?ZaIep%cX9QZ+#siQPef*MHNd?-Pjjju@0{7aR9A^N2U*y>_h3QO5JIf zJVuvH+F+>R`azF+SE>ap8D|SYWBb%2Z{C5NrT=3D|RCCI)U0VIY%n;4fhQ@`(2uq#u$-?lgdV(eHNY1C1!9cZnAm_ecSH*1~PDz zoJM)5#$w~!$e6vr(KUOL&VVV0nLT~pE~5{<&Q%6ZUX`ea-DPMU$6}dURC_BxsIG=3DtO}cq?CNrldw(&;k0)ZZr-DI;S;AEN0W4H(up>a>98sA zU*Ak4b~pC4)Z|ow@BGo#wpD_qE|B>szpKDxEs4=3Drn2o)9EyMakMfN`ZW?_PCwH?`6 zp5*Od?C^>FATAY5^44}7&j?L0UV})zF42N zowYt2%zwYDB|6NZm3G|{9}P6?mRO0d=3DHfz(+}Ef-{J}*H4H?);@-wlz`M9LOxfmV? z3iPdI1E6bOrl+mb8If`wJYSc0mtEd@>E&SnzgmUdgKDUjuu+@O^_Eq99@)Y$4`A3_Yd?9{zm|o0$$qMlgu! z&>zeEz01CU&lY4|ukV@ck>Q@{A@G=3D%ck-c1%|gi#))+S`4ZV9Tbl=3D|CJTEMK{#{Q9 zh44$p26}|zf$yOxo9G+C=3D}sd{`QXObtjvsLK5d)!X2b9)aSx6*x)wMe1U~NSyBkjd0Rl0l`8wl)Sch?gg!`NHUk(@e9Q%+I2 z5TLdQPXPyJA+=3D1V#h}fm#XaKCpyzv*V|O)I{1#%56&kQEex?RY zZhgWyYA>tC26p^H&^iGCyD82~M+<^ziV8u#IA}S*8ZBm_TK?OGR@A`;at}v|Nn>@r zD5S`0oScLxaTdr-WaW366jKN|i||G>SpoU_Axt_fFOF?58@hWOE5Ice55EYay6pKV zn`5)B5m)O$3Yj!~R+K44{n&-=3D1EC8Avz3jwFU zr=3DKauz@)t)$o*X?V;~vuiq7F&d}WVdXYrRzbTE-FXp)A!2OMEHWVspe%~?8W$R{AG zoQ8CO16|}VW})8yovR_QKa0QUi$M>8Ty}AdvNz>lp-uDn{Vp8#mA!g0z6Qv#=3D9$_A$28~SS@?iRf#W?3DIzLih(Uhcx`~qW&S$xDU0!l zqmt-aF@(_%0~}~W@1Ms}gFc*lf|g##g6^SRk5KfKaO?!fpY46*DE5ETzH2Y9cKw(V{Gxr3EXOt|n>vlN zwM5eLvh*x@*)iz;n&@m`+lsLqT5YOmMBQPg<88)0Qn{X#1p-^xBQjMG9n?jrHZFHM zASRrSpdkYr0j}rZ*T14uK#|*wGGaB*e9|3*oM~w1A%`k>@WCKY9RRIH_(NMBTohAo zOKqOvjd6?Sq>L-0u}_dTgTtLg$2`FgbLJYH3g-}VEbHi5UdiEi`3$_qiYfn5bC(5< z)54UWzD8l#Tcth*gL{mE&q-E3m5sV#cOjb3MN$^hV%<2v_Kz8_D$k<-VE2Ex_BV_4 z0!XXQ#|FkfD+37Ue>Tzk^q_8cT+D>0sD~k6Y@!Do;D8sYB@6ZQ-)IKq+9>gL89<8k z;T6}c$kuA(LUv{w2Jh{xS96N?qrZ7v9HPXI-!d!hK7f`^7oq@pb`DqYvIShtEx@zUQ z+GZ)7E62cH)CvnG+H;&7gqigGwZ3zY)TISaR7v{le*fDD$~+QAbR05GzroaQLLFX% zdFayk#VO#v{N!+ByN(xhDeb_D9XXJ@7mt(8AA&h~OO?7-77e%v=3DtW_QMhhl(*d1GJwLBx6*Yj9m%J*-UdBKDJg za$cj+52Z~3tg@pO8-nmYzab-7fM;g##^mkVSyEkMFOq|AV5A6pD3;1AikNC zXa>p?-@?;G$|)uFMaUaHGlKAFg)JM_D&p;CeFi|8a6Nt@U)D$cd(1s1Pk<7rG=3D1vY z>~HDu+wOCF$cgX0>|%chSW}2us1F@+apEDY(!n3mnnugt7{;w^c&=3D_-y!-*HqS5!{ z*D7C|;prP6pNb#*D)~04i+E*9u+z2e2vXX^1I@ zb`G$Md%SHf+I$3pR&^gwhK%!=3DxuE*0C*@_=3Dj1BxU@d3nGGLdFzlL7>o49bG+doTf7fT5)T;>U%D?30z~7x2g6Tm`9}e$v7|2IV zR)`m*^o0+2Wdt}zZ8KMLUjaWswG3;`zVP!IjTM-34c0L0D*9w-9UNe8{`k7%bxsZg zHQab9>G*743efS(At7oC=3D!UIj0tflwejJvda4=3DwF16_LFN{c#s z480S*-dQZznMdV#a(&YZk*1lRwb!S@!G}y3#Rbdl_zX|*7CRo{$;k@)Ez=3DXc*@nWE zh1c2f2v0~}$;na@j!l4L28M?EQ+$T95uKSFCQpVT!!SAJ?84V@Ge(V8|8}$%es<`e zE&LI#?I`y}v@st<4I-PPF&?L_Z{id0<-u#5a9yy_2{-#1Uc~3bS0Tq*wSjvgEHdp- zG){jVR)kL)_v%0sU$cE*7PU%@FMZ=3Dt;%kWFV{KNfW;;e8>Bi4&K(6fSPlQ)L z;aPKic=3De8q(4;9xFxWS1Hs9`I^Z6p3jY)&y8>`}pXlyo-YvQvnc##fd2B+&lR&ZS6 zRUxD_X0E||;~^VwS_Rav-v0J4o`nlz@@WE03c7E{;c9SO{pmA!;=3DHBC_>idTvIWI* zjpA+>icKQE4T|bo6ryJ$SWC$I@KO|JRcz-7%8t?p^=3D{}kv;p?|1ikP4n<0pnee@Mf z5q7sORsH@2V2zEDu0%Tum98~acu#{p&_A`txyYp6!ql{fN_+#UL2ES0k5JcE|0X=3D~ z!{sf0q+hP{zug#_1&Y=3D+@tG04L~a{ZQEIcp#QdG@?VCR?Cr zGpD%K{Ws3o_M&mnA9^U0VjRP} zpo5TYJy^kYSuZRIlbO*gOb?DS!p4P! zqCOIPJG^Pw@$1WpPn9|XaJ|Q)HJAD+_}!4MpFe5K?2|+q>XHHU^KDRMKrQ*-=3D$6h* zgC-|XZO;MM*y}Cm=3DLs3u!v~f7>f8Gyg*FZN2*krbp`SmeZhGIRSkO83^QIC->6H-u ze8YZMB`$DPLiF=3D5!{Y_2tt;`RObVowexAzqWw^13x_M~g3tam79yv(Vlf(iG8`2T! zu@&?jFM90RwjTR-yk;z$hF%3*o_=3D1lkI@qb{e;680v9628!xYDuT;PKq}2K8I*^;2 z09pal&y51_01t2t<4e`bU%E)4A$5B)v3jA|MT##_Hq(?S zU*C}j5^xh-j%8!_f*zxBjU#sGvDP)TNNrF2ip=3D&8QlmXZjdt8Cl}?T3PiSh$?u0{) zHk-St^#OOc!H|k3V5!}St8HrZiTrbHCINGedbowu7>A^wn}*cXkll%wz+aP;wN8iGEiBD9%;5v55c0N-HHnM1GV~vu*qn z*tA^roN(5{KrsWE>c7yTT$}}3ma5C1b8(i24CDelz{KkF&uCi8MCniHWK)jFCDgp~ z`XpLQ?UNE7v`eT;F99a|rK$A+*@&WkHGO&s{G@+U2x8cdky=3D*{Z0jVAYhZOz(aNgHlU-qNYud! z^g_}&?4}`g1(;ZUv`LeQ?3UmX32mIY1ot2mj9-ocq93dCV7K1w7!z2a%dWM{E=3DVsM zTOFmUPRb_v!Ri`Pm(9fL$R1bo+=3Da5WHWn(&q^lSa1>9MC z@3+w!9QDAshoK9uTImI#rrQa^{mSa@^OoT>eRp{8$B_@N+_bZyatyJh>9J1c%$e<@YVAmr>;NC9hN zFbnm|U!)o$>6dClwDgL&N40ygTU+xEB49tSH*P!ERlLKicYDQJ6FtjzK1pu`y-N;B zXWm!fVgHqmi$+DqMWgoG@=3DK-^$P>eRKUeAx_F`G5J1WvsN71jZe+U5jWR%XoXjteX z_TaT6#TSoUc|TA&oKk3Uf%!5thKf4RG?5_kU@AN#L~-vTqyn6((Xv`gg|X7Hq42*A zb+GCEEj=3DNyRkjceQ`8WMQM=3DowfCC#H*--Oy7xPWREP}G3O}Fbww5yg40lLJr%eg+i z9EgW0>bnpCPB{*+E=3DMH9TTi>nX%Pw0E)t?mBt)AnA=3D*Sjv<)C34pBn1Nh=3D?s&Q%NW zigu9@V?M_0WsU-`$woq$YIL9)T0#Wwa8=3D`BJ@v531tBp-y#g`du%`p8t08jY3R4Y{ z6CWTqh&YiG`64F{AVwDH2k?tNa=3D?}oV~v~$%y40l&?CN$f$WOb2nJeIq<}RBA}zM> zb`g@(1V>u5i?k^41WTmb3??lw8iw0Eko~Zc!dij%*>sBWekHt@855(mxce4!Rfy^- z&sSC2tf~TwIC{acNA5o%Q*u2#o$W}Lwk2N_$0~=3D^S89IFT$5KcxxBru$!%EcvoJ(dVflA80IOHfnXpzQITc^yj|9TMD1IIy1t(}6E9emEM^m^b2);4H<{x@9raaV&dC4}*JB!+=3D7G@+v1 z15Bvwb9m;8wX#67o;Iw~L$pmZ^xEl4q4V3lwpK$1c2G1hvAX3+A(%0(V3E6l9#)eH z?l@t9@jc18IzPO`50&tTfVujUb2Bf6@0B1dg6RlP1}B1I8a)P#x%UJHE4~juJgp{| zTRL9p(>+NrRS#?p@s)1saHS1glK0{rd`ep#rg5^Q&*R4+Gr&5y2bU;}7Tk_HG8FWs zyfy~iU%}QrJQ84}8M{?pg+1IAPg za0b-Zz+GJ%nCC#bxukx!goW`$FPa(k>2QvJTDT`JjJRN_JHPM>m@CMYvxVlADeT=3Dc z1Yw*qkVymW1(438?-IE9tRj!-BA-j(R=3DBf|iv~ZC%$_^v=3DD%LAqs=3DUD{j|?6eWW9F z7n%;cI4knALbEX6wno-JR#2St^^1d7Yp9h4WBE2(!0J~NjN=3D=3D4Ktp=3DUAI}KosvZn? zyGaLHjNi8}+jKpdM58?eTi(Www4CyHuF-HN*wWvMOn);JsGm*;0w4Wj`7eT(i6@!~ z@Hp6q-Fk5>@ZRBQ9-Rs#zJU^X{-CdLDjfol<+?F(nj$y$=3D}tX`_po;N6}ADu4i})a z>oCtO_7&#i9S7T{h?${iP`!sN^Unx?*c@zq2mto}hL2lI8 zntd<$5q92u7a4?!X|G&O*NHrZ{d?gO)HYC~;W)0R!0_0a1K;QH6FCE0Y98Hs=3D6<`* z41J1+L!uNh-&}wQS57nLbG5rN+v|&PZx>g1S+HBL>0&oCp1`a;#%1N@;z?)J7ef8> z@DY%V$hOWJDdi>GFj2K;EWpGG8P-q3{Iod)&r`VAZUH+_q7e^F{pzP~;1>*sJ*{^v zs7GY-^T4|Pmapk(-U+#&fzh9oe6Sy;uU$kw5k}9HOk%D~zR2iFlF3(HnQ((M35Qrf z2D>B8A-G*7GV2g6s4u9h_4dJgJ-ur}>Z$0A1z?GaUdK&uuQemPQXpWSg9Si$v}!(V zyIibb_Xn#7Z?|7@?r~ zV<(Kt$%OE9o=3D-5ok%@ye2{?PfzzXkO6Af*d;>^ zh(mHOoF~PyOzgOI)AIMS+Dti6QK{Bkz>nV69Ki#rX>GRz6Ld01U^HqF@bb})(G}&O zFYzc`H+NhwZc@!~kI{)oX%z*qw39Lz_8f}-rSN;PctspBVfH^$N!Ju1l zA?;)9OH0sdiE9Etq{2)Ps;*y5WG=3DR9z^U>dlO3VGm4A z@NHW!e%++8`v*pzZ3W;P5rmpvV%vsXK-~guJ%M&z1~*W*G!YXZe@vlVh53S#|Vz!5GP)Dv21)2mt0^bRrhOG?d zZ1047&htg!1_H4a??j%*Z5Q@(I*Hr&faFjhxxc(Gwbn3Qc`Qnhu3St%g$Tk+;(17J zYbukk=3D~$QuR|CNGnvlhal6!U*c)CKA2(=3Dg5&zDJvVqXo~do(L2tK*9Eo%i?rtIJglfi z;d-c3CZ(Mq+IXRWj}-9Si{_V-^V1q2dC0D2aI{Qfaq)@9nshNFIu9iHK9Hkw-`9YV z0wItVqJVURe>GTnq1&N#ac&Oz_pZxqMEg4BIkxF84jO=3DWl1R<6tJRy(W9bYpbWx6m zpd@rr6l|CFVzkSNRh%mmHH?$_Sfis5;i7c-#Ctr3!)|dtX6jlJIsF3dXxO{}e#K?n z=3Dr{jTY}@ek-4sNj(!Rp+VlM?VFSJ>1YYyYd1j$0Zg$C!Fpc&4a_EpKEI{n2But~bODcK}pVG`lStjzVrV}ED z*UnN->WgtiAO*+NemXGQ2rZn1K6T~;Ev~eZW+dbgrhUbn1~wET2hMW*t>d_Zi_b^SAgd4__%$POU{bUq-&XrZM>f)g<+x z?tW&GhTk#(JmdPoga2x?)DTR+IJWg<1TVttdl;Uji-ax@Pv5x~JQo@j;NnPKN_w_r z2WS>!{1IoTO_*(dmZg-;GPJ10wD_W>7k~;FILZoMEW$i1lnM8!zvl;ExC-oxc{x)B zOA%oHLHI85jtNqjTDiX*jTE?sN&d@F{&z`1vvUHB{TgGt0yjAom}ghuBehtEXvg?^ zgY!m6oW9_-be+<}vC=3DL>&3TY{XG6aO|M0(IxiXCQ74qtr#1Fu*22)?dx9|di{3^O7 z7`Oh-W(0N@KwZcS7csTQN~R05oetC{u>M8NB!YY#IE2RzJ_s6MB6Y(HX1X){5|)nX zPUrqF(qD<~C8ZM`O;1PAA#OmX+&pzBS*jcQ27Jy~F9$vV*u=3DEO8~6+JRjfEClOg%=3DLzQKE~bkZq!zkqB5*Q z#zJYt)Zx=3DhgXhDtBj3Quo;~N4`fw>6Ez;~4i%d)&F)DB~psc1RG#Mp{=3Dd66J@U#aI zu{n`fu{ptgT`0DbJSEdqmXFCnq7E?*nhS!<95f#a@}xWNY4Cfe8hx9heot z4>>UR1aHxJF9=3D=3D-L(Kf}sfU6Sb(J0sUZy{Vf*0yfD=3D^2B+TP=3Df{8=3Dy&`h`y|V3iD^ z9tuu#a(^@k)vbXEK`PiVD?nHq%X>&z8ADk^v7xsyy2-}q8XF^;&w$9G;3YOjAUo+V zxrl87a}jF=3D2y-|Nl{Fvwj2BM*sEbHh^Y9o0-ry49y`#9+>@p1lt83fb2L{c>_Gifk z2k4;00jt1|*T&SrFYsG^XEAKV?fW4j_nhkMySp`VE3UF)i{UymMCi~aC$!iJZE!*> zoX`#v!jz>l7MqVZHU3iQI3pV!kUA$c+bQS?C$0e@{%ehFaY8$t&?+ai%L%PVh)AYX zu(7GgINZc1jq6Lr-D6;AHl*0j-^dnj*ADh(dpq1f&QYKEeo7sif)8v&BFRPV*dpm# zBVJyOf`6ut#i*ktk%{h`g~y|j8&JFzlV=3DrNMwI&^Bgp;|U#TYlOiM?&n47Dis?;bu z?hH<##hJ2N4bgGhL!(Limt8t-nv=3D%Jf_Gs;gEI#F6%UFrhTPs7eUUoQ$u8{)lZ#+r zO50?|5d%|NgO1Y}NPVi*;sG(3Z!qAmU=3DU}hpBqPG^$G5&~nl3xN=3D{|>1(26iJG3_SJMcn`2 z8;wm8RQMz+^vQ|wCf9|^5C1(46%9E@UEoH=3Df!C;rXV1^rsCd#*`7OpLE5gXckKw_r zH8PK7lQ>W#Ne^m`*nKAHvtkT$il_rke9iR5?xyoIdC3Tk2sg2#Ks}VWU2<$RouxHW zZt}+UdQRNEPAJt4&+hqFoShkaP=3D9Y91^QSO$L>OjxTcUlvhKwB-dtXf`pk7iSnBFq z|5Lp9o)Osasp3@=3DOoH&~6>Bf{Jrj{Uo^0IRhvNgsebLxGU>dR!e}z(UhG5{!LLz)V z+kHjmJ1iEb#KHsw zGl(6VWhxPAUNg;#F&dNk@agfP5>0SS{sZMhxXg$}n(-C>({3V*fKqG*@;Q-}CP7#i z0tBwY7ZfBpV(t!Ca<}V(xa%&0(2B4$nc(J{vh=3DM@;ifJ4;8}Hf8a{xeT~CIko-u}^vGGz*K3UJ*?NZNAyXyJczopevL(WmNzvrr_1F!4JT+}ze zW$M|3a$NQFNj({vcpV&VNq37zW+MX4hv!h=3Dm-kM_hZtXA-#)%%L8F!zNV$cjEYyY~C%yNvToKK z|4bc@6_Pa=3Dnb=3DthtmBjj=3Dyu-9bs`R`)Nd&$T5=3DPO*N_B3@Pf2)oFQCdhbJzsV>m*g zWySc6#yCxJPh~iP;lC6S6E`D6BWR-WS-`-G@JSc&I?%+|{N=3Ddqk^vmOycf-dqnESr zgNt2}BX7=3D-KynstW@W_lyqOgNcw>r7#6es!DiPy!lDs;gZxTV8>qK6iD6xH#gHrhP z)xOC0F~hfo`9(0h#ro<9>4;KU&BT59o-RUqzX>F8;W9-CXHWx*koVDJ!cF{qE)i0W zO50tFVIg~jA>1*FRth)q$*xtbyH>M{Pa4pNTp~n6&QWhcLO6Wlz-vBXF6!2A8b0Yl zIs9k%WEb@CR)mp>M)sgMu}_H*zC|Oq;&V!b@Xd9o~~eIqeDgtr!#T zJ)Yg#kjE%iS7*KVMD{xA5{(Uo2k^y#)Xf^*n0E-Vi61h7aDdIPuwEA2kU^}WkeNas z^A|QszTLZuKsHcq)32p>{nACXkLo#su@-0|AbZzSkT(w19C%GN=3DAwpt!%(dgwRKT# z&H1DnBNNr&_Qb5KF&33L2wDw=3DEkH0DDL_H77@t*Yn4C&692RaOpLteaYI8G2QL?Nh z{0D0m`Nh>)((N989>?@V*u-XyY%@ICb`|^WVrGMXiM@DrhI+90zoxM`objosJ~D_i zO-N(2xQv95W-tW5IG$p0E)6UhszueG8YMN0^D|joQp-p`9yiy>;3=3DczR8YodafXSZ z6=3Dx_K&j&TaO?=3D8IsT=3DEES7UA6oW|lBa*i4XN#`_{1Fsv)!^Zl=3DM$=3Ddd<+vK_a6TK0 zk%{k@0FM~4FO%^Qqhy?K(fAGc3>J?x@GZhO%-l>xK6S>ygDHObD)TZ4j;( z7MHBS_IhM!+?XdUZbNFR6kVT_VsUBoYTYAnWx2);8N@b9zo}L?yq(74xgZ-@eDM)s z@zXAhiA}s+~k_T~zzFk5pr1;!$vS;?q|Oi`zA{ zHs%S7$Gs>h7U8o}U5P_pB1Fky;U?kD)tI6&z<=3DathWqm~;}RYeU>G-2im}cg8X?j+-&YQ)iDciA}ClQ$iD+RM+FWuk=3D(C z`qq-CSXT0Lc0mh*H%k&sk{`krvO)b(=3Dtm4DP`KCtau*Dc!fw<(*fx@}&736HW1=3Ds$ z07*{{5;-AYpT5gst%GJ z0?sc0z^SZfm0PGx1O~QHVVD_N5r(1>4-$r(_>^%|caIkf>k?CaMNQ)s!kRdf7_G0l1X|dt3NQkkaDcAq*UHIPjVr%tgHm z%QH+rS|i8O$??c=3Dl7o?nJFbAVc%~TAVv>WPBQ1JRP%Oe{rJ5#ZO6+D|h}j^TuPQ+Q z6S4R`2v^4PBIM^3-@> zZ1WVu$PCTLP&D3!gyAMWT|D)oi-8QCrs=3D zaB-SP@1h-ntx(Tsua1%0|#ypCcnsOrfAyoKM(u$ypEb6q|jWJR2iqrdHu4 z(kK?=3Ddo;EO)k_p2Q=3D4-x5^3}qodquRMGgsgMjcQX6$34saTpfHi7*t6bRc24iBA{f z^tdSXtR8c1N@>VBY9eHf)B7BF7vn6q45ivoj*D^L9!g3vGV$EF{)}U{y?g4CE{w35 z^-l|mtWabQsr~hJa+8i@)k3hXb$4!CX{eogv4e zbaHeIAvqYC*fkc6bKPh?bur@B5k^N*P%OeH)_-!k1G96sI__E~4sfy(lh>8mv|BFR zQV(09IN8RE@L8!|{xC5>D#|Gg?s{lG&QTUdEpaA>d0SMVbzZ(_GafJ5ceqC<(W_?R zqlu{%^dJdGM&m3d@tI55&pDh=3DkfHZ{XGXxmT~N?-FIZf*Mn-Geti|Lu&Usce&KOJL zqmeeLt*FpK7sV(zKl_}il5~&3*uMyQ*zC`+uz#GPX#9ZW$)}6`Z-FAu-Y;m@W2(*m z8gh=3Dh3S!Y=3De+S;h{wo?ydmlhKF81%rW_vR-(Q;XT_W#>*Q`p~@D*r>dnRT|@eC+i! z_HO|_QtW@5iyS`%pS#$ffMows5Q`2u9C#P|KlEioj+S(C9M2*-7@7DPq+8 zW{A6gbUyn3Xb4!=3Dk=3D6%xfgY(o5Oa~^M|uumlY@Zl0~bbJu_^%qp0ajp3j%t0}ICrY_hZf*kQ7#ld=3DkN`Z>^^)++3oZ(50{6QH1_H8EWPHg*0S8`FfVrs3dP9Mo=3D@dBd z0V%-9#Ae96#KjkIJ3}VJB3`k7%qEnz6sHOvZg?>OoIJ^!jY20>n0u-+f42t=3D7M+jSXf0G~6V+sKH`OUhVl4 zORC>X_-Krna`%sM%-f#B<9Jy?cpq$>VP0Ec&F--(d!w;Upj$A8(A0$HZ9Nj(tg0dBsCyus99DJUU99?pwWgt-Kshc} zy{wlF#mK}v5L{;8DmXUKpqXT}tL&xjvK?k~2KkM^8e7b)0jMGYDj$^jnSb03pbOivti-bGTNR8*MW$^Yi+){ z!W8g%DL{t%>a9hR__kDHSPGf_>IXwN+A1by6uQ!+zfL1a94f860%TC7KDfy#-K(c0 zqAt58G}f6M3)@gY>hIKRr_JSu-Ok2<_?Jn+2R=3Duh+On@TvKy&~0TuBd=3DXz~GoMuIe z3~lp+CX(%G+W%ZBu}lp$q@y>hLpWHxKe8F|rIr{9g`2AyBj3S$Yh(kS=3Dslj~)w&=3DN zMrM5>DIw!o8|XFxX73)zs(@NbU&A;=3D+r8pancDAo%G9t9?S{P@JQME?(jT(He0G0e z7?=3DQYhNAHx5{8@jboGZ#E}nc%kIHs`(2&^wgIrT66pgsr{uFrGEF`HPABbf_10)-aWjsL0W*LSx%P~hiQ2|a4t zG}4gR|AvHgSjK^OvCM+U42`y+92d(R`zvY0$i&W(|2WG)JMmAmOpenc4$Cb3O&ZHA z06oAm^EJ!tc9G*ddI-14K|r$1kTouHIPjVr%th6#H00QvPL3DfB{>+G*ovl3jDe-% zKrAyK1;yfgR;!i&#k?R8T`aR7Vo0+L>>_;)pGDWQXPxD~hO1p7XRIjG3Uwa7XPX~S z%SUe`o;_pi?N0F!!@@%mhN6*sfmOJPPZtlp?IKzL9m+Ld(vWl1VMrB+ha7kp4;8O4 zMB9{3v`yV48Y2^neEoUoZ>!bV7o1sUza2rNfYY=3D)_l}^^S~+U9alcOEp?g3N@Q~5R zzT+atC-m&X<{<)-hxS3LIOK5PH915dJ94=3Dp$HsJWMBgDf7@4?l1bFDT;DzLkP7R$k z)jSjgD;Yd1RpC#Cht6vM32B@{y;E|hhJ5PpNfNv7pG{*IqC-xCJt#Fco(PqHDpM$A)Pe;@)weZk%<`)#{cL5C7kk44p0MV?t9>d z#5F+81wB%nlItSJwX4&}K|pfKCI}OU91gsTQ{D&~a;#4$#{+*RIT)Fkk_%4RiCI55 z#jc?(i?xQi$^XK>#nb8uqn@*K`7RM)QMArFiDq- zNf_2l!ca6m6$xPskEe@CZgWxPbv**xRMC)g)ZAq*syOg2Ci(W~4OQyWsdB-eNEJpV z-as+`pD@XH4y7^44WLJgN$4BFmbC49Y_-WjKr+d62vUbh9C#O#tY2)%u_~P$*>8~? zj7%KGSeK|lTf-*sEYVVmf?{z#tJQ`d3X`O_zOj%vQ69WA+(dTpti5d&Y(+WQ@hnA- z47_&~cC+{mAI8xfILbya8e4^@v-ScD854^lokTJ#XpYqqP^&);zTd+=3D`&Ky zaw5%Zv8W^p!vzIj!#X5`mJy)zf*v87Sp5^CN?rY1aAR|6G_oGADIiG+O#y)_RnFz0 zkEWZc6``lC!JZWZSurk;qY~E3@^zA3BWxSEz8BOONPGlydtHGNv*W;Jy55Hq^**6& zy#rUo!P~-31o6P_ilh*QKxy#GemU!p`!lfuC%EJ#0kQQLqyO2!kw*WtVF@?U=3D)mKP zT!R;9>Kpu&t*L;qFb=3D`%Mg29J_K5M|K36k_W!PU!TwjgGgtv>1)M<-TU#<8i6j>sh zevrF8XqrM%QMEO zG%o`*u8uNMoZt(sOl;u)3Gx<3A^fST9TJNd;R`H6it$sa9yua)gM}qtEh$8Hl$bo+ zBskFUo50w*(q})oI!s>SvV^u`{0=3D>qWUc-Ki$2gR@kzpsb=3Di4q^g&tHs8ZEyICIEi z6&Om|0Y0Ker)AD|s6so8wBfZ<^Af5)8LU@>pl1DElhhPM?WpJgQf7miuL(Wl8KkAaf4!oAZ%td)0 zHZpicx(u#+gEE+riFwi`%$|Ur)Jt#iMT+pHRm3v60S9bk!6aHYu4uHxE)#o8-&d2U zk9#4}OxB5?MD<{Th^LrcOQ4BQnEMw>3ckSHf8wpQMw5lo3HVhhfPqU3a**la*SCxC z*AD&%f%%Dnd4QP?0`n0AQ+5uRI}Hq#%!B1~xq;zP|G{8h+oo}T=3D^QXt7P%Fx^TlWf z=3D;YWM-vc~c`+{FOKo}q)8c2o_1ivs8jpPcy@JW8zf|JcSrgEE$UyAiq#O4Y!~UW7jinE%A@EBO1`jVNnG#t0AoOa04a zFl$7%j>#D@WGHYRF_f>~^M;KWF?>Ysh!J^rOq=3DQX9R8yC`w{*Q#8DB^L`wHsmk>q8~=3Dz$qlc__N=3D-BR;bp< zb$)MSCeGM;aSZ|Z2j`pt1+QoH(}KH(;BFO%t8f_CTdCfHb00`D?b@b~u1WIsRbRqX(BM+WvUppKnut|9qX^ zLGFVLPha1BC+3U(+97I#Ug4UP`9A;vkIIrXn{6knqOW1(f;MPv=3D2fLTvdSbP~ZXm)24sS9hE2b z+cEy&ChG@&B=3DXY`Ol`rQLDYW?Qtm7G9>{(L2awgvcTlD;GmFf(1q7bH)%Ks`y zWL~)U)pXF}&+~4+_A2#jp8*}^fNn?!?P9LHn{T3>>)S^qSM|!J^h4Uwn$y6x#lO~^ zV{nmxChObEz_vC#0w;l*8XYE^!I@A?7`OG&bzqB_wD=3D;EA=3Dksx8<|6J6#Qv1RH+WN z>ZwGId>}$cpGD4v6RU8xv!~D3kd)$BFvkTekDniY{?=3D$koA0T@F^Gok%!sX%5O}!x z)+~BI$A`Qn{6MEc)9VoO1TVq$hLXOJ?;g zP9&Y=3D=3DSy;&yCcm0JCGg@*p9*AZoe=3DJ@l5Q)!=3D~2dRvxK?j^9$PJ~fFv;)PQVxV;ib zx8fMlhRt^$2Aml5nt`eMO5dICHE?tFV4LYA`YvE)I zdE=3Da9OS0XLy+vP|=3D6w0T#JvrCl*P3_zIl@c7B*}*! z_)h5>dn-y7(Sm}Tt=3DTMFsghf4t(9tTZEIU@rHCzHf)oNx+dyeeEv*5m&bq0_nwCf- z`F+1}oR-V*)wMWKCvs~pHj6bjQDdHzyC+#ySgl^bb`_9D zNWHyVm;j@h2)#1sIC>SLfYYlwo+Wy9;E}fAm+CoS6_ZrLiy7r3JcGaY4B)SaJ+J*J zb>?$|8pAcYRa9XMKP%V&P*zSY6*~3d0;i&Wu}&MG6qq^(#H$BD3E8i(Qv{(>b+ADK z0^$+=3DR?s8SuNdWNNP#pqSyfUonrsn7$3Q716(h(g{dI4U>Zb}L_19gF2e7gE7=3D8%- z^cnw)MGxXO1O~R410J6qz;89)FXHD{`+u51R z|5b4)jD<*)BY%iNh!6#L!gGU?(hjok=3D<0s?GL10?t*g_D}NoeTL2@7gtm3B3h7B!yQq zz=3DD=3DLw=3D3Y1ac<3I7zT-5%+2Ozdn@mTbQAs){YFReg&zGEo7 zl4N1y{I4*uX%}R41S~8`P2nRB9Wo(l5s$JsmcH!H?f-#n1&GZmCtW-d+gDJqnej{V z&5M@>RNpvcEG`;{v`@S&fcgp$mulksPrL-!0LxPx!rc|&F%KP|42&7an02LCc-*yp z2+A&KL3AW8D8`KAVGpHuH4P~U^b{Z(7h)!r7DeZxF3a}nc3u(N-a8Fp9Y13q@m7Nu)ZUvZo+e zCJ~^#dC~I`0xuyHnhcc7q;`f}&%U#X1XB>0@C?ZVZBC3J?@MnWDKZb~@UVGEIAFDZ zK^JINdp=3DpMh@*&Nr=3DAc!6j<%8zZO=3DD091GG5_qGTGa=3DXe%U1KD$TR2kqGx!ABW`h} zrcQ1$7;%6mp?$_9{K-*R(yrKA@CLeFPh>qH#I(otn& z4mn}p6~u0Eicdv0peZ;lCVngDC>v^MiJax~-khvn!laBmD>6PZs~Oiz4t*rkuYlc} za*2Y60gLmsVW`Anj(~NTnqUXd8^;+eO9{_|DDnodFBdSg%>s)}Z z0bs605mCAek>xQK7&r5w6M3vgmuJCfb+%KMuIZ`BfFwg6Dp@>q8G_B;UHLdqZfQr~ zN))hm{GvpNC3|ovFKawg*Z5LfM}ig9vjih(CG4X0(z)DRFp-$}MScL(FV0RQ&KWgP{UpWnS zCvyvNwM>DZF^d@pT2&&E6aZBS+Tmq8m;hb+mroCD2Zq@cCvTz6TPS%8!55#%(iPrO zwW79FmXZD^H934m_=3D#8j1#^v!ugp2MjKiEUJXP|aTvCC}=3D%B3p=3D#B!8{8c=3DchR04c z*%C0Q+Jz02M<(zlUln1Py7&*G`HffifWuf@CYTFTMoM^LX7$R|SvG(@SYhw#PB6p- zBL3&F#KXX^Cs$f+ZGv?ir_`{SSxt1o&Qxj9Z_#or3Dl6IS*t=3D(@Ol}D8$G~*ayG@ogx zaLD>o*bfK@O@UEzLF&T@L;R347mCtClQrmhJqg_^ZTU>Xb3c<1+|Mk|K3{k3)sy;? zGs{bcH!Uf-Jb6ty{A>@r7Hjt;@GgNzd>doGm1e(3!yPcVxf7to<&i3JdjCSLD*MYg^W0EcSQhMOcf}Qt{tU$W^y!Q^N zK-z_QpPsZUx%D&AAqQSN&>nlubK}joY_{j+Tz#EXx7b$6m#tDUs^nvl_;w5dXFrwV z6IuvIfZ4h}Qrns3KGbFNq+Or6|I?YPrNSk|0Lt+7t8fb{T>4d9N=3D$8wQQMKIt#6@s z99n+@uz_D6ev3bIzpeN!H#+sUYFYG8tP|_H9*#3GP0S50aZCqa#?g9K9Gmr;u)}|V z$YWV?4Dp&LsN2DC9Cq}n2vbHT@WRY$EhYfu(1d?3Wek@%_DR)W9J9y&7;)@kDGq#i zNiJZK1JfAA4q%;90~T?t!VP#G#<&s3L=3DamtTK&Mut?Tx!LR7vVGAPh1B4nCnEviL^3eCooSwk*we`dAeCIu(V8#tVz3?(y<5 zz%x@k@qKxVaV`dqenoPC>V{B_cNq6n81bYC%v>@3cek!sx_0 z_0H`^o*1`N7{=3Di8fpAcknhlxFc^@VC8Y*UK`2e-Vkpo-{B7S^VVpg#T5ol6xvU<$8 zl4W?G2+@3#%(E5A5ex7YYj0GN^S-Gh^k}H0_s;DiEQGtIl9Ff&P-qfCy@^DH&`bjd z<8~5GF`B(?S{c%S7u!iw=3D+&$KJ`@&BGZXmLTM!txdEjw~gqh1B^u!j;^h8gKti_wi z93k17a&_{zNo6RtH!*D{S{{2~rbpu1Cuhy%DsZ^^mQxN;@9?u&r&qVfhhF=3D8ceV3-=3DciZ}T3Bz`Tk1rtDe=3DnG4Ous_UyVVY;|YN9(7 zJAysNDEr0cf|;VQ7IU?)0B$n3VN^qq%IDz$-qE$k;(BatF|J3|;*1Ed-ygpgV+$&t z^^ePRigpZ~nzXHmpHP4&gV^w17!s0Q z>LiHAi3vE`i|>VdwI+kDv2;F8M}-cz#Q(_8_#xctU-xkDjSMyySNKVeAbzUU%lYg( zsyWdFxZu#PsjkeEmx98~gR6@4wIBgfFieH&!aXzCa8mMe~+iODE$svm)?sD(C4LD#amcA9M|Fa z22UA}`qfdS+jcRS6s2D#G6L<(7R_1F0L|(Zk>QPtotF_An^OL)vRWqBr6{s6EgA;m$)NzaFoX2aMOw!`M$T+^$&B zZ@8iD7&5{lwCU%?K1m_!{tk>{Pi8C zv{4C5ph*=3Dh;T3*>g=3D*cyCASJo=3D)GkIGPG%)*_IpyN+scQ>TOSt0N(LYkP+la4PmKNWN zGe*G~wpHHBhA>eS$4`K9%uR%0Zp4SV%k76L`p`5SDND=3DmZV{|@uaHwm4W`?Pkz*B+Ce&i}PX{qiFy1F1*)B$q>3YZ(>X=3Db2TZ)O-c zP?g*lGC{4oC9v0mpY2IZzg6-=3D71M#aCs8#Q^2-3GknF3!X@;j4|2O0R>-hg2{J;2S zjC;5(<^Ip?j`NHQjxuttvkRYQv!O?OMh*mr z72y->C?KHOy@mI}6jzLm$euE+go-mbBdQp?pbF6|#hDwEBZ%UPU=3DQNJjOJ~%`i!kC zIkBhqsJ<{}V_|=3D_XRjvC+1OK(BY0b-PPVC=3DVoRF9N%W)vC0)mA_H0ObY=3DRB3B^!7~ zRT83+1-$S+2@tC)8iZ%mYROH3sq6>zDCF9qyx~3IuHi?{*r|fkx;Pu50wk_GrZN%cRl9CzUpu394s08*vKy00`A7btB|# z>nktOXyW(uA7oN0k+ZE!5pA!x>&+&F(GyPtlnC?2S`YULuJu%%A$mt6?ulftqvVEc5?8-o^8YOaG_0OkdyCW0S zjR!PTTIt63&P$G(Cn^VEqEjAVmB3A~YaY)i?2WyRNURuZor11TB*KBp_ih!Pz~&Oi z^HmQ(j&B**(5Yfz(@bJJoHGjnhXxGi%dv(x0~z@--uv@{(~&?=3Dgu49FVbS9_!XFw% zi&{(y@`Qq8Amp8q}Smc7gV?i^Af{5%<1I&AuDR$5xLX_=3DjdEGU>}pzgKjuZVhu+) z$geJT!TG&#klluZvO?w+Ju9&!D82+gS1kpYZDFv!LK#TL3RrVIVcW8!a+(L z4q}?pfu?8<5^;{b$3VUugVu#IFp){>1+WRrM6!u>Q-qJ?o2CdK8IGoa>j@tz7CxeV z{4jlrV=3D5M;mXDll_(=3DBHd(_|;7$&Y7fR#*A6Qu^4m1Gm^8VEO8dXWp633QFaO?C@6 zf#qPl9#DtnCJ+^2%7hmiR6umQ?#0Q*n6oD}g{rB$2gj*aH$2P93|8CXN!zPJb^=3Dw? z|H{P)mhF&m{}(*R=3DebXYh~YeK_bwIA(?-q%(m<<(^Oz2Fah`cDTKsZl4*G=3Di{0)r7 z=3D|Cs3MxSt=3DX_Gbj*n$5CoJU0JG^Q_<+8hYbdLx#1WxzR#zXCwdGyMHDBI!n#6v zmB%{p70o|B&qA<}{b;hxP5bc+F0>!rLc=3D%b#XTZElt#|rO}?ttQ?;EJk!FJGz#z9=3D zphl;R6eGE0R_A@nMNNKzjqy{r9gt{j^T$Oy6!x0o>XYH>v%}RV!51RB%RVU37OR` z7rL4>1zb(EL%paDj;*Cf;X<60+3SDN3s+|N7~$wqJ(Ki^pFmG$57YSLzaz4PXgJW1 zuIQ`1av84VQ`7L6x3EID@1oHn=3D?q&ff=3D*x$+HJNm?1B67&VAL952e?zT!+f!>feY> zohtVbOs!6VxGa1gD2}N{tR?R-p@A z=3D-@s@kX>K&Vl*6MdtTB@VF9PKz6d{N9FhthDKLd2c7c;(tO!QX+(7?{o?7VJ(#y~m zbx9M0;niYWNC^b_drykY*L`-rt>j~1Sr;#qhJFpdFW=3DW$}+g?SvoidnxH2*LUs z?pH8+^zh8x5}}`x3?zAs6f904BMD)$f2d`Vra-3>;xb8nUIJ$O29&aYODzmnct&-M~Ghy;l7If(3N z#ryL$VrE&y?A8;mMGR)?@v0IG$#Se3ol^H6GpolYx!BdcLWeb$4sS!l$BCF&5%ev% z8uU0$P8>%Q#%=3DCDAX_s~TDTK%xfpECHj&?evefJl#^(=3DOrKQ%wBK+#?LHX4l46s~& zMMqTOSF)0)Q^-Jm<@uBFt1WsqwfGQzH31ySq2|&EQ${)+e)aHqE^5A2V1qPnmHrpn z9;~mWOZy{af0jc*vA4fJhx*68XtB%iA%y3jQd4awz&U<5dL;3JJpc!k=3DL2}Y1vq9$)JTp(P6(+{&;V4SV( zTY9F|wWVGvjPZ}Xyx1>>@jnW1?Mes7K!fiT!xa^}GCAHHiVkp|5*djl;5wKeZR%c z0Ia<7@x+p&BW;|$^3|X8jBHyi!~6;`HivF?%E%Wu)+y7dZ=3DB>mFDYNJ((xQd! zR}n_;0mpIBp;Kyfh%oYs?6Wf3su+jp|3nPY0vb)3A74P@6mJByT=3DLff+E0El*a+`8 z#dAMgzbXDKi<9^Cgl%ymQ~XU6Tq9hk)Hsn5{^N1~rV-95zTXIMg{9#zBfMpcdxRTB zrCVQl#>bu3kB+p1!J8f(BDwJIcUR$^RQlynEC7^i=3DYB6U)Y|O`Rs16JV&6_DK&zG+MCaC zQTsh2(B5eU+FKp+tqAxQP#2-aTMDi_`z^HELF_r-6L3HXv}eUQ=3D7m_8nt3JGU4LxO zA$G3M4@DLYupf6E#(wPb`rJ)z92RD^)v_>~9C;2z44VHy&(jtYNOO+*9JrlBDmrCk zC25|S)r+4LOu#oF{d=3D&oNgzjB2e1~_t_UZYb8%}fvM?HRVYGRo<5Zp-hEAzr$Z@z=3D zJ1{cQ6!u>P_X8yf+9Nwc>dpN`inYMPELo+Fxr%ivgo&F*A?iGR&|%=3DiSy#%&MOv`1 z=3D@y6%smtL30o!Mec^^_D5}%034JZY>0rw2FaFWFU|5XUZC2H5r9TLHVDhFE-_)8OHvj-k38;=3D|`;3-obL{`V3P33xlPW@Cjk?GV zN(rb39kRPH^5ma|>>k$gg(W+rIY+$%9^{anP8nH_#4xO3DO-SBlv4WF4+Q@I0wHHsI=3D z&;=3DG(MwdXy&%gKRWzbJR&B6^Xt%OfbB-{P5T!qYP#$OwUou{VKR^)yySy)8K`1=3DcZ zje`iCQdfkT)u*x*DJ7%Ea--u=3D0&&9WOoVZQJ^Nes=3D8O>fIP8=3DqD|Y2#uk{789>d;* z{mJRR)85|GezP`EK&Bynn3i}VqStN&Xc*FBR+a% z&7w$?FcF#{)QbBF6SM^lE54Q{M;ESxnHU?R)P*nG?uF7$m!E+Zp8#rt`*|%TIi*{CsDP{QU5F{5<(+ zyaPYm;$^tPWeWJfshY4e_N4-dlLOX=3Dh(Lu1$dPEoR_wkS?6OV8+n}EfsUQ8EJ%G45 ze1u<9WinWpNbSKxs*$f?dqdyy<+1nFuy6Q|gkXiDLY4(GJr=3Dl{pSjo0STg5lGDtiw;N3|@ zoz8^xvCd-CC6ZAz#*3lC>CS(U=3DE8#7V>2fuN6Z3giFo2ojOKmj{?+md7Vf*Xc1!yQ zV+c~;1|(unl_*ici}q_?Fg4P~n|$>TJ+<2*h>Z{9)a~Fl&JffoBWsXcGOM*^mKWq~ zzv29VT0gVqA>);b=3Dhe=3DGoGDYohoRcc?n zEUTcx^vT%v46EGRKvU$&PBd{jFJ-)Vc^QK-pGuJetJLrS!N3J{-%8RNH%&1lhb!Nj z47@=3D`ujNh*oiomyA$89jlk+(zCws<~GlZOxN?zO$FS7aO>wH_|9B0@X3N)k|TR_&B z?)yeB2L%IPlTo4W++y3_Mv3iD;Znpbab^jr=3D`&4rj@QMeQhbj?c~H11R&9EnZNx^B z;jx}63-7X7zpG#43?8PvChs?9Bzhv^?UO}e2#{+ERzDA1Al_iMDNh!tj1tvV1P zPP+0qCnsy=3Df*C^2$V^_OLrh0LXY;-OnA8>0Y?XTa&jwXqpvwQ{bA-41G-43>AE-Sa z?V+%wB04FK!@%2Z@g`gWma)}Ryyw;dxj{%nJdSJROB{d%T>Cfqien$lsl^e+gMT`=3D zwm2#2DP5?Rp7=3D&I1?qMm~;fLlivz3iOILe~iT6FKLB*^ndv`_ynq=3D zL!b*c?TY=3Du!eVb1=3Dt?5A9%~uOA>X&J7Qro~{`;%8XC;bCmP(egq|qdj+@7tx!Sv64 zPR=3Dp8btq#_p{s(FG)M53+sg;9H>FI}rKG<~UCu{B%9sB{q)3@N)4ET9hw|Jyd{jK_ zt2TJ}-U^F{({f8X93Cdy7ToRRJUut(N5RA2t}}QzQpMEo!=3Dq$E2$pHIDvdg}BS?YUWTvzO!{Bgg| z1vA%z`NmfSXPHl-D?XJAXchs1VdM;_aW>=3DaIwP`Ol$%Z1-DtAAT%5cYHZ42D$tiv) z*@4*g7jQboi+lcg$>!@y+3pork!-$7WT_dJGHf*=3D0ksNWVj1IFs_g4~_3Kn!kxYl2 zr`07g!ol?$ouVsq8*{kHwA@zeMki+=3DH)qFwv}4UT`!%NX8iRyWbv|3W-69(lqVu@t zVXJ;hEk9}vNN(8&Y>NNO466ckhjZcFx(_m>Y5G@mzM>b9(zYMcVQxSC;nRjTpI&b9 z$&EDqhsz+ed9JPeJe^aB=3D7!w7#i$P3kkf_#xZ1ROyaV#a+-!%#^9Gyq{iLnzZMiu+ zI)LK&yts*`&gT2MlkfK2e5J@Tn3!~>&AH6U`T5+O*S`*6rM$Qy9&Phoq4PzKF3a;o zB0I9ZQ}!ff3|}I?g_G7sUJIh5u&Vj|Z-|~k%Kwi+td%c?(Sp`YvA!=3Dt;KCx+{I|Y7 z1i%RPVs#LOB2ol)k=3DN%ti>W<6cVjlVh->`*syHi6fRzwR8o<(nHY&n7*wMes(6 zKaPO_j8z1S7tF`n6}}2nDb_uBiYgFbXW;=3DZSEw)6bRFs)6o$<|=3D@^dX)LW9%e?TbOITf*p^&nR=3D|P5`iWr_?jeWN}r7c>4z!I zH*-H1#r^XG#!o?Q5Z0K#YqC~>P>_$ru{_IGCndqNX)p)te+TW0cwcBezYG}|)_W>~ z-AfSRhusHPnugg$yX)a^qk9u4pc)E%nuT5{g+87BC0d>N320WlaD3@@EMtWXpJb|H zN%dsOpWe!3}O#@97_(3 z@C*|aClS{pm;5wN$Et6DHCT#TX|eQWDRm|E2!A7;D&W+r9&mk?{ISk*!-c7aBXJE3L(vKBi+WNAX29-bnisg2KZR))S2_I)Jt(z&06UrMUSE=3D<}DGDjuD zrLqTZ3|QBGDD4@a7wgbUL}nI!CDlTG(RotAYd~5E+$j~DWh;28RPZ8QkACJH`U^6^ z7+k+PXkjp3b0mt%(1TB6o6**RjYGx*41+PRT0Q<4P~oH5+ozybRsdvT-Pxgt1!~~68V~BFI@=3Dd=3D$>uUs8)Ok8=3D1nzJNFUkA*lbyU<8z61TYkI4>lEfWei}_ zhRz;6)0^Ijayf#NDv*zHIe5&t>I1-wJ$P*dqg8vc*j|)DMO;o43;X8>nd=3D{ZsNi_d253UA7HPu}@*#hGDY8nJ z-)y@avJu?Zv47CF05(#%mUG!R&>a#X%3WWz!8hwE1ukeDAyMaQV~9Uy19fl%im zQ%Q;*IUvV>^KOid65T_OT@xT<4?v1&t9^j5eH}aP=3DmX@8UA?(R6GN|=3DSj}vVWD`{c zyvZ56PGU_AGIn1qbckUYdl7*$77yr3uER}Nav%@dmF?_G=3DW7B{N5bvduEZkDbmi~A zDP2iSa#GrDCM7QLxhb{(`k_?Db3gg%Jk3Z4lb+oTx4bmvXp;lRn}@CM_=3Dh zXTC!qzkwM(8-XlEAAs0KUI}u7xMD?`Tp;ht1*ua`RJ*}{9FR_W4U(m(Q?nrF03?Q~ zb`?mb=3DrEA1^2PR5`s196aTF2WghYQJCg;A|**aB~`XO`*^6pUWyDU$3YDK=3DujI1Lb5e-%4ZTs2|`ZsOH@mTSt=3DmHDv zQVWeWFwn-?cdUVdcAUEg(w-_+FlY^00GT!5uhc-iF&d_qH+6WLdWQHnwP33b{3EvD zJBfj5c@MO}n8&+BBb_f|8+m0H&94!v*zD?}7Bh8go?%i>R1=3DF_UF4+KUBptRUHoC+*7zqu#U7kd&tKUk-7OjhpMTw`_%46l!K0BUfG7BxjYc=3D1 zpRkqZO2ikF%|_VpNY$JdTBq)6)eRbe(2aQX`i24!H5OPF_!>slhri`t7x-34{pt-< zPV~>2MtlOO*um5M@kemh^tN~xae%+AfyePQhSejU`&5P0kCy!yaf4Jp=3DkX*#c7Zql5> zq-xXiVm%k)90p>kDnEAc{OAP1Dyj^uwo4=3D0x5Xh03Yu_)oViPnMG@%+qK-{uIg_Ge zoN~^KVt=3D?%?563ufcV`4BQJJvZY^Q>*Uid{eQ;-Oxs(5H>^HG#7S&=3D>HfgSpo{o)q zCpzJN2CdEtz<`U)iI{AN)9|2`&ddcu3W<=3D+9S*23AjDOckdDyg%(~J5at)V=3Dr$K7u>TaEZL_fc zTFE7e@bs;LH#tz)QBZ|nD9!iAKDe4&?|_N?SkH{;DASREBpsRYH%Nx1Z|Bv^jmfpW zOb1u{VlA{ht#{O(gzJ~MoyS|93Ur6m_c83ae3c1=3D5knD^0P34=3DCQu{fBfPRWyCCBi zYe&X5^1crN^*^#0yXxWK zfNzNDv|PwEJ{LcxEI8K5sADzcCK+BO{kY1%Nid8$Krzw#1uo_yxxV$^%1s%t?mf|5)sU@zG=3Da z>%x!2O$=3DdJP#(JXrs$-G@MHDi$HBWEZ|*6OgnNhl3=3DQ%8cAuPTQkXYVuCrgdazBGQiYh#MEO< zi>ka^vE!lf$otq4AwQOd{4&{QdL(E;Hvpmji_#aMZ%JTLC?$7eFM2Yt5{eNL6%~j=3D zR7oKw#N#Oz!m|_v@6J{1X~wf$72oc!`vTg{s5fNm-DLdgArc&XpfxpWI`r3_jC4ZT zH{iM;dV(gtwWUf*#-72*NV?Tj&7dep3U8)I# z1J$pO{|U({wq5Em^W#xikcQ0t!6?-6-sD$lVX00@(V-NA52;ZHm>m&5SI$E~rFl>=3D z23N}Vyp=3DqVVWp{yehXZ$q+Yp2z_-8<07TLA~xxGjofc=3D+0tma-5JLwpgzML(9Ve3cSe{yor`A0?^E@$rR-T;Z1V0q;*m4 zX*M@(i-v%s?wofsCpKjdG6;N92^=3DlTN=3D{(9Ig}$T21hgm4+)-_5s8Sm2m9O&{3lQQWi8#&?sccJQe z0LP=3DrtAxC25DZtVr$GizUy;9P)TNVXmQ(D{wF?D`y&C}Uj$WV}HF?R&IZz7JWBs7G zCR3g^PBFyPC|}J(+5&lXjILy!y1IXMr#_(XH^HmEm~4~|q}0V5&6Z+n!V|irWQxr_ zW`}91JXvIq&UV0I@xE)A8yjN=3D9e^VRW8U=3DLfP@Y?1gwlrrr5Ltf6$G?X$goiB(F5G z)7XXKbRG{m1r}}R1sp7ocCdVUvXNqL^FH`k^G36Yka{1(HQQO3Pu~ zCgbelHl6R|p!}AcHVuyQZ%7(%`lT$&M<%6)Fd4}&+Ikt!<0esna>32yuC~g*Df|w^ zF$63&ah@e&B5cnqla1^%c&75~IL4hroj@ z{d0J9fI2iP4fD;l630SBCXH2)Qts*BTT+wkq+=3Dptr(hw}`U^~2%d1k2 zR9#fdsU-KHu~0TZ04_?8ECPTWN%NT@t~#bakBX(@y`Y|!nu9AK(J|KA;FiS zQ-9sFpuJ;5MYsUCF_)f=3DGUdhIr7=3D~ z=3Drjvp{6_&W+XWzv)icQZQcK2Ov5IqzC`Mf~fGz*)H~m%ww7few=3Dq z&jRHp8C+fv?9y{vJ#2j@3Ojr!K-HuaET5KxXhtwmJVB2Dcu7nW4n$ik907=3Dm2J!f2=3Dx!4mTk zD`82MIeE~TuG|zT=3DYiWLcDiH0NPSXpXt1O!YUTx-sbUAVZw)3&HA_}+`X?yVVQOcG z1?w1)_vMbCNfr=3DhO1j%%MVA!+f85I|&{xq`iTUBt9i>Us^R-#1Q;h?l6pWhOXZ zHTCvI;hY5^SmvD;)v6%sNxq0pLPhDGPA;wy-E$<*EL~ou{;P_V3L;>kebLM5U=3Duyg zsLn72LBqG6U+_oUUr$0FlPSJ5J3O@FZONTjOo-Ed=3DFH3(Nc4%uHl#76bBlcCi_CEI zYBpZM2eJu%LHB%J`vt8i|F0RIpFTUo^LzaN<#%Ryeum%Q;kN|u&&7Ywki-Aw4H=3DR@ zWJtjf{2u175buk!-;PT5&H3&O&*z_?;kkPa;%@(7hUYr`-ht=3D;#QW3m{3HBsSqr#% z`T6-n3x?vaFt2Fn(4&Ut4IMgU=3DumIgd@cJ~fp{z*E4&L&j!dTB+Y?y_60th)*WM?t z%~54GsXzWbk|vMDt_YMw=3DS1kR5}6=3DcbM_HV-L6&>E|Z+}!h!L!ICim)nSCFu<=3DZ?M zIN**LLxz;7`tD% zgx~N(VMzQsn0t)aW0!dQu+0S?Op@d4a16v)Fs-ogc?3AYBb+8Yo#tU6khh9!CXXQ> z1*Hap;QrdSG5Sjb4*8dL*1GL2YhZ6F1y@VN7o!x%fPNYSR8sMi1W!>nyY z%rQ(KS;LEX?+k%*ktB@$>bD)AV~!!iif!bzzd6Q$+ymL%p?;fkq6)Y{ia90=3DQp_~cXPT(r<|z1opDixm}9bC zB<7g+-gLU?Dx6rX%`u&TqaL}P<`_6ViaCbAgP3EKSlKvbRjDuU5d4Ez9L5~;Igp*0 zW2WdEj7pKrtU2aU@SI0O>JnQ{KXXj9gu|(WIKbc5KnzcmtN4_ZJG~0mYvV+)-UK7( zIdkDwGvLHT6ZjD7CMZpyeQyZAQy<>f5ZG5Acy((W*rJK%4VY+PF69zBxQ{A5A5AoL z=3D!GDr?F?Xr8=3Dw!}P_6thvuPIjNv&`Y;ZQUW!TMylKE(t0HXtk$w&B;OIWpnsorpgN zP{|apvGiF9eM3i1nrK!qQ6nFq`#yiSoM%vipY%ic&=3D7oscA4NC4UMd>2wc3;HX3UK zp^ZlDEHDGmMnic8LAoGRv`H)4w#7XLciZBy#EHX2(FZ8WwV+GuP!);n-AT|pSWK$;KZB5gEA(4&n;cO->l0XwomGQbcgzb4a; zGVB#VOms2PY!DO82AXIvO>_6U8iJs+Vxr-MgSAeMR=3DGwDppcmPQ3`>HhW9kloJ#x6 zMpCSpXzHQ-dkt!L)5!ag{0^Rouwen!e;d9O{XAn6h()Sjvw;XisE6Sy)?5goAJ|Dw zhj#}3&BVN<@)nGPe9A_~cRh$%xlX*;=3Dvi2YwTkKnGtx&sr5}auH5uNJXnYollW|^S z>W+lI*~mxOh<*)Ke=3D@}fm@=3DQ2ane|aAJZ7vh(z7z9*{z9_1Q|GUteXvzM6g#V+%S1 zshpUCUX`wYHO)9zP9M^!^r}$XtDrT9A&B_`=3DhdKZX(NJ{CzqTp4Z#m(tZExkcx|;B z^(Ar(Vv{x^9&sZ!9oUFsH#wU4WMJ*qO4x{kx28&NO@ zH4^N8$bbP)8&UA#`d|zkDhBffPWra~f;NglksJK}kZA9T%efZsmz{B-{SVJ&|>QHC*u%PN;CI+l`E1GE}3O{^A z&<|%pZz3~Kj{r657KrvIMLQ1B1nOuJ&Q+HPukW{R+>gGmR-M{9iPU$%0UoivXv9#K zq+v56AC^^gJ#9w9UUQb+S6K@t%QFMRU&prPrw?c|dQ(p@Vl(;;?&Z7y1Q($sX zmBm%51(zY4i0A#r`vVw0_)s5*Y)dQB7Fv;HT5q~htVnXd7Wc`l6{!_z!ArJOsb9iv zOsq(Cup(^{D^i`zA9a{a1(7NP`+8l2)PtI;IvEOe4)U?$46YY4S`WKY?gClY{Zmp! z+Lf*b=3DizA(U^{52dS{>I0$6FF{k3zGf%V4SwY9JInq^B`K`9T_UIiU&-ok*K4VGuN z0gN=3DEU>l!CTW~^app~=3D`=3DTkDpYu4{|y~KoFcAt#L%*}wYm3;sR)fU1P0%6AB5T49| zz^7!2SG(f?8GfY)6`dBvLC` z2}}&Ex=3DoXa^KDYTS>*9M(3P59jQuTtg0Yj}i_-VQ6p|hfo5{AohPgnE9;)M`BO1bo zgasKRA}NeU#6Z2Uf_fSe_53!xA-GT2_rCs9?e@ttxPs z!$%8p8j1ti{BP`VNd;(csn4^zzmGa}{EWFuu#m=3DXUQ z%j<-^O2{kCajMh})?mp3I0YHxrI(|_oN^azu;s#zxIyfQOfPms7nlNdWj`=3D9R#`fM z9nqCGU!8=3Ds1@h_`UCTT*d|-B4A&lgGn9shL6df=3D*qTFb&K5a;p(o<|O4T*e8$dm1A z7!u9w6@?*Di=3Dq9M*$FWc8UYVVyg~b4(s4T*eLt+xHl76L;e`U-|b z-B(b#N|`hy^2XgaFeLJoPGJm*CQZK%fFV%^k<$SJ)?^ezBJ+J5lpmYZromBOEou52 z5($ZhM1iu_84r3hEbD>m?k6N?xXbLMI61(EV=3DrU-~L?B*_9&$#@6LLpsMYccS zk3UVU^%KUI^PNRau7UALy?Un@?=3D)iWV9j!Dj9-#^+vTpA-!6B7ahn;B1Sa1Frq{7F zvN_}6ahcN;S{mzR*;n76Id@7araI2#^!uOYl7CKVAb(M5IkSIKC|it;1fOGUYzOI( zf3?N>94qNeXX^UuH6QM!`+b8L9|d%2T}IvXM9`-vc`vm`0;BcP}1JZ%4#sGuvi_E1 zeB_rS8Xt#|87^thL!^{^O^H?N^b1J8APSv3=3D-3~LWNm+3!E*6u?2mj*rg%jhEnLl# z^uyV-Kk`L-8!(f84j05rMLdqDa0gdzSTdL6D=3D0*iNItQMLXx!g4N86aBJ&Byu4>vc zQNCefqk(h{45XnY+CaMf0N;xjdl zKe~PNX1y9El>YWnr);-<^w7D4@G^=3DOc?0pss7xxnQq+9)n%B7LKCMbzcvI9CwlfP|q&=3Dv~iH2-G_Th ze;dSPE%<}Z*Ns0O$}IKgW*3pj&Gz=3Dw4E`cyezpmp6*n^BU`6UC@K-_M z1hp9)$~GaJA=3D2bvag=3DVwdSvO#aCh}V+m05tL(KHPIPcL8eC~~w)cn0~^el8fE$4-e zlI)ZC@=3Dtu}HecWgP?(Z0a9za4Nw%GjS^Ig_>gTu{PVD=3DM5xjTd1^AH9*69Gxh_AiA ze|+su@A^;(3c;z+6w1!Wi3o4;3s@Ksb~}^`bj^K+sM{9b^SYi7w#9cNh8N#$jkmpw zyGS2&$cT^=3D--##0m%D>K>f0J`XEOUS^#?pvsYUwZJXjc|xX7WglDBam9&w(Y&D-{4 zSKjzeJcZO0{ZTp?Yh!Q0V%c1L7UW|m2#q)29~Y03^}ti#=3Dx2dotf{}kCSbNY9@HRx z9q}H(09gMIQ1Gyb2UeI=3DicNtmS6r=3D1hN0sbAN8(F*pkx73Z&~BeSXzt93CDqDkb7i zqE56S^LHr{KrM+o1g2uT$RZ~Tq9LPX#E6pjy{l|d>cf9BA}O)Tzw}fJ(>UeSU$;Zh z-HOtPWEFsNISK7d3tp(nc;M_!QCtVth-83$-G(@^7E=3D3vOuklvJ(75gZIptRoQ38~ z_(^gL-TY_oK=3DV&QOtv?`1K{YQet8AkTc&=3D?=3DSIRyAS#>A&set-)-jvEC+s(}JC$Xe_%`T?hbp;-D zce@A_j35*#B?JyUQ!@@W?031Dco_p>4Y?tLu~6yynYs0Ix?aHxAPJgpyIgmDJD*d8 zoq))x^Aj(Z=3DjMN!y`Js*MnbPvH)c%toL3>;leri!uGst?P-9+2Fc7n{w*&yz$qaielh~V(JW+ z7;{(SR|gTP19A?y71DSRCz;GU#iVe_YUD4%-y|e&Y@?J=3DI}2Varhrt6cUXi94rq~1 zN?v&Q^z8y&VQo{YnX{BG`4YllGWnUOV;hBSLq$4*6-}gAFM{Q-faOhWqg0n*pTi^Z zpGxr#V2J=3DIdk9wY90n{?XTciItgt4A12J%Lp~k^0rat~SNi#N;bC;*~(rxi)9k9G} zx3+II6X}K?>uP9<2@!f8)pH7cm-x*Y-IqXEj!lv2w6As|rmM!Mkqv8kViWqSI+9%> z$cfLG2*?>Y*&^1P;xrA1x{?$nk=3DVZc+7Tw3=3DIZWmg|+vYX;A_*W3i`2OiH2x7>UqVw7R=3Dbj*AVdK+~v>#(Wig^oewg*i*Xs77G- z#u4R(ckTGK@&aakwh7oUvwnOR9z*I57)a5r_)OeqKc`;9W0jhzKW~k9yo;|^plIBS zr)u>{CvV%M?!56`cnm48{tRqLFheUdoCAI2N0b>Tf$QFD>Lt^|B`Y)hSV#r@vtudQ z0($RL7fSC%%8;&a^yFNbVdXlF*hO4X5&UEq8 z7C?ZcuzDI>S*E_n=3Df)P~6G=3DhxbGjIsn?Hn>MM{@Dtdw09QX3E>QKrKJQE`;!N(w6; z>gziL`6wyy{??@;DU8f5dC@^)k>4Fj;m0J4TW#6jJzx3*bt=3DxyS&E#H6j&285s@~l z)P*Zdt^PyjJe;I3I=3D8r%574?TyckJA3QMDSX=3D0gEjpK6jEn*h-u+FCkz4~vPPfe2Q zQ|@#m1$<+-sGU)DE+@K)m{H1KBovYXdf>6*uF-q!O3H;@zv9Djg5F1L*NJ$lw3AUV8?Zbx{x4}Q#gl!R29i27wXCje!| zHcE*i6mav1t2t}9ZfJkRc2|llsY>0x&j>yj=3D_(ygC|HZaSy5~mFn5>`|AJT^E}>ww z2nCHyirG2NUwC+9y2cG=3DXXfMVyoNXUOEvNi(->=3DlnFRjok{4&~aHoj~1rQUE1~Vj* zWarIXpk$nTCwQ4OoczI> zXJYP5#FvA^#5VGpk8L7XQhaz;*MvkFQcIt}_rr(}m9hw}ElR%w#M!vNN8$O;c*X(} zg%YKp-UoAu?F$RCc@u=3D z_7j>kLp-$^JF|2EM)fyLTQctnq5NyP>0JzlLFA@C&I1d~%1u?N+2w`fT25#>&~|D| za?5F+E?6;J?j4qFzF{S%<-+n;#&d3ndopPevP55nc%r+ZQ)AdBo@>{ffU7P%I-p_a zb^_4EQjkWZn^H%<`WdwMsJD%Chh!7g>2T_BbW=3D{^NC$-#*^v+x`>*Usz!FJo z)7$zFD1Uta8tL>tr+mb~`5yET=3Ds?}VLB4Mv_#IRv_;Ln+T++A$VVfn7E^k2k#v`PU zb;9`(^n}2;JqVh=3D>|pS-Sj84jYRXiQEP_1+v!+O>mF{I1hXUqP87L~&Wbh!lhGSex zuA=3DPjF%xf?ci|Jk!qXgBJ_^83L1ujzR?H1*dW} zgnboNzI)-Bh#>?Wdw0Q=3D-iw011&CkTIbWbw8 zr&_XLC9H>O2X%)T)kTRr#`g$iMW!YbWfY4+eLi$PySnk(o+!pTW`X zo$$ULrB6Pcw0&xk$J69r*_>>CCCLi6ao6**8%kit7O8H@yAJKjkgJ>Y4z9P?f;J8s{Lw!Fqpe$^J@ziW(!V)}g^* z{5vcLc%TuFD=3Dci3fOvs+`T`?NR;7e?wC{^NSm|CAX!pndf>M#dzX|b>_rd7f#^*qL zY!Mjj9XN*YW~Uk`m?>lTDfd>GMbd?0a~Sv~QhOi2a4_+wzG` zpryH^2$;Z|aV3I`=3D7UESY(^Y%c&;84o6Q~sYL@c>(#@!1WCbt24>^O@RMwQKLZ6=3Df z0Z~G*e4Xv(hKlwC#ARR?N2O5Fw7D!HH|z^ku9D}y0X%|Xx|F|59HsL zCsho$Z=3DGI*eHZQ9DuI0<>1E_=3D-dm(;y!jx;+#bDuF6oor+d4CkP25whR)IP-iGU7; ze9$UvMFbVOv^&E=3DHt&2OWP`&e_w_(M-kkO#ccR1#E_p)cc=3Dfrp6f2-i@~8&6#hnNHC+#%maHMQ| zUStCTPJ5o?jo3D0KNpVvb+;K7S+w~RnNwiwv@Jds z_qM&maBo{1@HY2=3DIK8pGW1IILm4xFI5WcN&6v@Igci{_8bH5?CsMw&*mHoG!v}YcQ zo}}(}(yH^F61dCsJPbqj@?ylUGZ=3DN8SFM432{%Y5OMEfWQl%_@@nmGki)aTnsg_;b42mhv-!?15Ok23jz zc1)V6%agh;^m(;)`JFgyIYKUW+h3&a$=3D2mUcU_!(x-KkD#eZn)k~x0x9#0mE1fltP zXaGN_;WMk)beTZ)QQwFOg$DX!9p2hu@V0s@w!N%A_!dYSvr#4HafG=3DFyftDe(13u3 z7z@kx@}6nKZ^d>LBS<080}dz)%YdHZj?>G+kec;l8P!DOJ<_oq`B4-|D3ySMQ<9c+ z6huu~UX-QgA=3DWcE6IfXv$fWeY*=3DeN!sHVy-?nqr}u}Wy(Oz>b<@Lz%j64I2e7^5eG zWl6ua=3Dg=3D>LGuET$kVQB~dk)8Fm|a}HbnjAdV;Se|W}KG@U#p*;Uw)V}XAUbbf2e#M0hu+{N2L15#D&ftnaWNBM;3VKrdZ~p_hK6pg>P9IJyH;5~=3D}q)De3CbL?%H zeLLQlemAox4iuJo`5Zm_20LQSIQFs=3D0}$PX*%uWSDFG!Ur+XnLKpaX;AVT`E-k159lVFZ{z)mHC1dNw{O)?BFHFFrJbk5w?*MJ%H_*yXl zUx$;Igwq|P!r&!(J|NxxOh&-~_SQ}Wvg2qy<kK-nbnN%Sq_pWgBiTh{khp5ocuLggC1`|56cBD=3DZ-IQgVrfE zXl7O|*p6%%X%id9z@K%P{z0=3D2Z5)ZW)>dHlsZz}n0G{U*Rbmnb#hCM^AWjl#LOdi2 zglD)!m7qr4Yg(*cd)}f2Y4n_hR(XX-*92^<&KFN6!=3DQ6$j&3T|YPYU0B$FeOlb+vZ zBfdO#!*!?!PyMhj8@xKWM+W;zky{T*Z(bCc&6|AnqA*Bjb^uDJs#B%f*qFHN%Ey$U^_|*Yfg&Y2?TCOn$PG0u{X5GzixK^iLt$f{<^iAgpi&jfDMX0@caBG@s!6r zCos<}9PeFNU6T(_pAg*zz4RWAcuYNePLX;-n=3DGA_#$!koOeG^K$HJOIAqvKB)UJ6r zv?NnOSxKU)b~W$wqB8FlAUbBaCv%E=3D@cR~H`Vcxn%bhG9htRcgm;tmjCo_|kdr(96 zzvwimxONObe9rx0dH#vWnh37X4Dr8+kUHV@*h;xxW5m z*>3;3nWIjOby!46;30U_5>ap$b0O+)CnHZ~A+l8gQ9OVxpJn23R0mPNVG`ofCr9-) z;W4CMs~CW&01$;0w}Yr)SMy#VD*Rr-4q&hwhzf)IXwt%lQcFLTEIzO${ayB`ZH`7% zSVKnhZG#M=3Drno=3DUjS@r!))G;a2G`C@hSw51f?>R>Xs$h#IK(s5kvOOLTg|E2LlJPh ziD-Mdj1_3goXI3W62=3Dn)+6XZ}Bi}Y;Mx^0>(#Ob9{TqFkl!WVz4)a%qa7s5~Rk6!-dP$T%@#_AuQj zsnMSFLnwn$U#Rfhj2HsK^BksfNo0j)Dz{@ayQT>6#i{Do7{ks8*C`{59HvtCjO4)l zqkBlHr%*)*A87`$aA|YxtYnzVr55D77!EFwn3blg8{HsvN)1w&$`8M7KvGu0=3Duv8% zfZUyaLMEwVxDm)!#bR!0UBGt^uVDNi%PW*RmH9##0yrhk@QT{Sg7-?0KGyFn{Lo2~ z2nfdJdH=3Dd=3DhMgGOS4fx8E$nu#iTMF%AApXqcRAdXUW50TEAbW~J&~|U5}p8p=3D>;>; zUxx2Ygqu(=3D(bsq}R+}&!P&+$Tdr+))?`ItzU>#(vf~o1TS_=3Dnw5C{(UAT!Hc>NFYx zxaMl6aHe)})^)|xpkeLsXRqfg?8lzeE(4g<Ga;x1pf zDs=3Dq~H{Ea}!YB5%ne&>wBDEi_z6I{2C2Fv4j=3Dw>45sTv{hl zGd?mCqzN&v?K?T_5ekX3)D#BvoKH$-X7!bCN)BjQrp2aqp$&aFg=3Dpw&AND=3DN z2mQ)ZtD}iC2KN!9=3Dt@0iG5)Fysgm9C>>Mrf3|lZ3x_2l7yJ;&`*IXl{jaP8j=3DBvyu zDM044O4{|JW5~1?LVG4>M+UrFuL4Z%#B5>S2EAH+*zZK)PGIL*BE?g4Wn_iM&QG4r z!46ImnxIZv?V7K2%E%&OhndyZ zv1Hi?G)zA@L%g2B5zqu2-&%}w@i^_O=3Df!Qur=3DES9kk3L=3D^#pE{m=3DxMs^r=3DV~kK&RBrVrKQkH>6pR?U{l=3D zj}xG~(~D&OL)7z<`g|9HNrA?kz|`sEgt4b-^-t4>*Q||F;r-G|&8s0T!_)?wH*&ni z963i2cW~XwLl^c#EB`9W=3Dd+GaZ;kyA_~TE?2Y8PU#N%A?4f5fb3{IM?A=3DhY4_(d-@ zCBk+oq>qEE`I1G~^I9OV=3D)zLyVpaMr_Ju*0PN~r)he_3Z-Jq-0qDvi11hi&mt3N;G z^x|)E%U*0@gSSeGmdsg#MNFoc$vYDHMh;+#XC=3DiJo@LvmzQzYF`N@2TDV~Qvx@>}f z>E&`32foSpD8mQ?+ean14D3|*Vfx|kLntRSkE&!o-NRCglMi!?iinS?aBsExhAxRg zXqJFjP%(r->LBtuq(~@5g8P|0UuwAD)Qh?a{t0|Uf)V&N9@G>>{Z_Rb!bKKBkL(1| z5V{GWTUWZ|wnE$pTHcB!n8l9 z2*5Yrr2X=3D3u=3DYa?CGtk(WH#-mh|2a4$n0u=3Dv1$L=3DgR~#tr2R+89~t8GUqen2tiS%o zB2F4mgz3M?bx!^(2jth^r2X=3D3koHH8bMg-xkY9ge{-+L?zoyKzf7~GL$2V#JfXo_y z5VyTkF%&$s2xKV-AN6-}b#@`>P7MRvjH4lndt(Q0Aw|@?zZkCha=3D#9)7*J zZl1I&6H2xu=3DitjVec=3D6M%YnJ&C11s*xM1hKBP)>TJ}-We zaG`e`B+(PDDKEjV7r(v(uN`QQz2>=3Dbb1}qW=3DMVT>)_FFhS1qJsOW68rw@HvE;@d`N zweePIPqx#iQOk-N1(TSt_9peDA2Up#gXyx0J_+UoH#4k+=3D!#@csT)!Vd(fKSi75CB zJ;$4A&ZN9dowJJbmDa#Tob-|NJ#bf$u&7HO*OOhm9A)z_6>L&Hs6$fTq;EZ%RYR;) z6x4^^M!e=3D6UB@>eb(CmiZLCzjt5Sax{T|*)tW>_MR)5y-OsrI$cZW%r8!NRC>FL$X zUmYuzcZ0=3DB)zIoJG&#CXLz{2kNvu>2ZH~JJ(w-_cYtR~aObz&}W2N$LV64<$On>Yy z)|U5R6o|aWyF}wkGb}UZxiQr>ozb^t#_9R_ZUlYWl4V zW!rwM9Lav;oAh(VZUu|%bB}FYVd`O=3D=3D6tSt#GjDzY&~?!%hWrKu6j7>bv?vyZmO-v z7*{>kk6=3DCcCS8Vl=3DzzCGkzI$zpJh$tMTh?3Vu%7Wq6(&=3DimUVkFhgYIAl@mD}K@-EQ` zEj_Br>s?JlZT!ZS-ge|`K8O=3DYSkaioc=3DYnySXZfe9ndI<3Wj#?JTZ!%FEQl=3DzM3aI_Wj8S&G{EsOj@klx_QbwvV{xoAg>l z1JmItaWn_265Gh@5dR~)u%1n(_|R9LT6@Y&^aE74TnaR)Daao}C>J8ETHP$Cfr9<} z>t0|22~{kzWP?fZ1$M#~I9xeh1VHHydEV20lOa;1SDMuDE(Rv0+`Sf zy-Y0wFLDszq}K>wDXQ%&1_33=3DVG(fEa3X+j(l4N$sYVhARG!{YgHQ+d`$?2EU;39m zQs8dsE1vb$j&+xf2)f_l)U-x`0}F!EtB}P|R-&;J2u#L#jVX8#%gsh!i|@NCnc@vX ze|7@BIK^-`es}~!OJO3=3Dl{p(0!`OCMA-WLo14nr5zo+?Q3;0J``-vqhh3p^Xf30m4Uf=3D<6# zJQNcT+~P~My)b$@mO1dt!WoR`BiJqZfKCPm@UXEK}@ zJuWB1-oA%0P|+Dz+v4Zeeo9g!X6l`_XWKg7O>?k@A7!*F+#|qYaN~HE9B|^2}8hd+MLf>rU~tKnd$o{BDsvj15AnbsK_U6O_JTBnBZVc7;v@H}!~#@8CD=3DKH#y1ulGPJ zcVe=3D5Ln97Z()_tUsE&TY5Ml>}Hdcxa7lju$CP?DQCq!0B?E6{XW97SF?Gt^dHsP6U zNm0W9!>F+%eE^C{G}?4&J{Vt-YLGpM0EXo7r+}mOXm9+j#Yn7c$ECA)h5IsmCz_)` zK*q{{?lCC#OJ7K<--6vdEUPy@$*KfkeJU7H&y`wE#9Ns+zX1j{}p^ zMqw7PgWsI>S~S!D7FyksP^W51!J73np68NpQ;!6~_?M7ni5cYAs2fF4KMsprm=3D%OQkfEA{)gaxZ|pw62W55s*l*hWwNd zcz*&BYZiom&qmq)Yl`ilw8q`nAwfuWp|v>*wXIVW%)FBXU(?>WivZY`p+ZISfKhmS zH|*~K0|k3uG6+(;kyUG5if=3Da0t!_-}*ciY#YR4^Ldg_L&cf9xGXbXWu8@(xRf0R~< zUY5t8N@dhF086;`Ziww^-z=3D=3DVk+Yu?G`_H?P7}`q{m=3D=3D1wfd0VZdTf3!K!Ixzl>U zE>}CoGUUt+s2IpW#4Wbdp2nBieV_%h56(2vlVq^`xXlcfAPP#fF2;BIM@&sF&DjiaWP{0J;1ar&_>r<` zHEHc=3DRdkX7pRa*^KWlp|(VWdVgFSsr)nz7j>!8?qCXb1d#|J+X#Bwt@Q8M_wj+*tF zGjr4{-dPpJF(%f*we}odM9Q*VD`zHCe4tBC#u=3DBK3-Op}U4(C$hS+xyU~mbpAe>^f zhPQ#F-8h4jtD|XR6O*k1*34YuovwtuCiJT{#*ncK)`{r%Bk!T#2ahP7#TY@vHug#d zw(4Pnp(W0t+nW!p9hYooX=3D5b&=3DzTZ_@K`9AOtEYn1Y}f5J&)r{@wSRY^R;+25CRWC zLe#3S%|W##BVDif4uZ~Ib6m2O4+Y}qIU&!O&(@_FNO#ozf=3D9o;A}+91GhGZs*<;lc z2`Maks+ikhYRA}sY*E463QSsr?R8ZoVedoR52(6vDQ5E#w2$fd3xqcD9vutfJ{<%t zZ8t;OE>8l>tw3D)34+Uyjsawu354WW9_T0!bS0Xrfwd&_#!4NsbTY+=3D+DMrikXcgqxU> z*#`%;JXnf!2;WuXO_lW$b~P>!M@P6}uajM6C0p6dAvE)oAPH%oPFJ*;mNcC~RrN>C z5wKwFWaFfNg`;zNZ3+YXWE3!5lF)BMv zuTIExYfaM{@#<;Ib z9N*xbZW|mdJa-1>bnYY%6c<&ye8ttS1^8^m$9+Pz%a70H_J|9eugwFk!C%9*WfpSkIVgue|d<_&q5TepER-B^-H81 z^BL^&mtsq}q}ug)gdIWH0lc4bVzq1LN!6|{JWm14TljqspF@*T*0{WJxMX}>_Aj50 z1>@X0q;TAbkwAIeNWOYTjUG2{%sB73abqn7BlWXbkKi~`{798tU?S#lI8ov^2k!hh zaJO7Q+^}rHf<+GfdF9X_7fs3W>jIvZeAq{O8jo;TVM7^E$$T-1^(OMT)bqlRCiSoN z*Kl^nVXb~hoC8>B)cEy=3DEA9g26qGJj}Y09wd) z9&ABbmKl#Jv`n262XW3hEk=3Dn6W6@t5xj;Rkfq_tdW}{sl?k7>KLRsC_OOi05C{5vJ zo%o;g_HoR)mWca%xE|9MqcFj`UT8J|;R*b@Em#XfkMm%1(cBjOAG|MXJh$fR*c-_O z=3Db>d@E7;vQhbP=3D(`+Zv%j=3D1~^-_}({sp^p><$s+uFzc=3D619z3;+)vV9`PUVrlE=3DzF zs9fH^Vs!lHdGWRxm2a&0Q{@}c>+sevuMLJPkj~=3Dsw#&mpMRy6!ZBOtudhXsr#^+@U zH}XAvtxMdq(D-E5KPvY|Aqn)<0@)=3D?Qm{%{vSdjuWxq0L>qp&ija40}6~-s?6S1y=3D z_IW>f>P(!3`Wj~&2@aK}0xB5368SC}c#W!}yChB}^O99%$S{S|saIS+(9Wn@iRw+n z`jKHMoWeqH;I$@1V6O`K^;f>4eE}hD(4%wv5Y3Dj=3DH|tAa$R3Y?q~%kg~`|ifNt+QZvW#5Y9b!weo?D_Qfm|>ug=3D=3D>0m^FWc4eeoypSkT6Q zoK%I28nh3rUMldD>}mdouc?WtfCkX^E=3DdLY0LA|lxH)SOy`sFnyYl=3DMAg8`19;YdVT_VbJirZ8Ef6=3DYwr?Yz%UCko+Ls%dEY` zfz1qJBTeBSc#WyiN>zMfTL__JA;4 zQ9q6|*7Sq(&N)?c-i>9D)R!bb-@vxmS4b$A*SfSGgUS|Wvd|=3Dy5{2`_Y z4uQ*)Cy~a&hlMVF)7%CP8HQNQ53B_6H3N7>c#j52_BG>7QFxnqJKX$M^y*Zq2Z?GU zdC-}*AR-LPZWw4~PN2})&|=3D~#)!K{iP%zc3@QaQKF9&Gt0IsQsVXe!^`0lZdAGm?? ziW8R%6feSP)x<5BEHs#;nh6@jb;tNgrTXxV)e-XqnMt0(f#2#PYm{sSj6igR`SS;ugWrO!wJMwto1Vb11?F|*Sb zpSQmao$PDozF+vtJUaSgA&G$K`NVki^Jv`gB1FM#4>)N1G;K&h+tL#d4Vkl6Jz614 zz9*Ptc-vdFXKOe1Y(aIOi9E>2CmCsH7F5@p$aX}6>aPsXL22P4ercmRRjc0A2R^ZX z{b!0dF#S;Zu}i{zF5qRC13d*tiW+M&Jd6zE^Z1Q*R=3DDd;j+1scqF^0hpYS=3D2@FBz} zi}_ty*B8BgBjGCpebJkfV;PA1{LU0Wn2;xn85vSuD`Y><{YU4->-W2&XARUHGzNmv z$*I8MV8jcH2~a6c1cV0a_Ji5O>Y*3Mwzv=3Dxl|sD!kSn@Ks2Gi$t+smuZ3%JJ19w$|aijw6!4Y&wt<6ovBlTBk{CD*M-zVB0ddF8D%&PM=3D>X|kg=3D>BZeLVR{OzKlU1v%5kA$BA53ly$z}X9#p|>1nh2|FWu0tnN5xH?ZBL=3D@mJC;$-i#Iu z)b*<`fpnb}VP){g@pCNfzl#vPa!?*GB`13RFWU zb0D|%%TgUH$(1@u=3D1PpAka`n$zY7EHRg+Jn_|O9m6%4aO2a1D`j4A^?m<*&Q6qF)v zat4qrq^Tm+9b<=3DKN7AK^;4$eU|98llppVAx&4{+;%U+nVV!`mVbYBTLPb#$>w2xKi zzUHMAgz>kpIgF>XB+-03qT@UG4H9??X>5y8crciV zVkl1|A7|oXD>3uNz62BFdddG~iPwfZNvZjmzEg~-RTF+`@h4$Hh3Q`aPGd`&`gk0F z;2Vk~ig|#EZgmtxUpy$dXyv6MPK`i;c$&?uR7 zdOu<4RH=3DCA!?9SuyDVw$~q$mvEr zAcW2@TKO!yPx7#X-|qTFNr74C4KU}H)HMi&Ap(CwDo`s_55a0mvYB~8Cwkif>_$s` zs(O68E~+Ij!v*}~nE47&DNMFll7vfhdY)G>p!!;Ab$TO{geMM(=3DYw_^yr`DLi*|UBp1xUY7Y9FWNk@EeHnI@ zp!Dl-lEQ9oEzgzOYn|?@bE-A#!D*sdyU5(20OM&!?QjU!zd~c)uif%MEQ9L8bTv%- z$z~|ys&B$#5zHBCaElIXGicHa_NUP=3Do>?_sHTJ}hI3(myjyJi0Vy~CS8QGa)2cN9v zc{{MLm9T(-UIh*AXl>Kpb1rYJ_t4outZ3V!IoR2+ff`Ok3~|O{TLyMCAW|4>s^&0j z*U53oTYf>j3eL?%tSp1bX7;~9TBH~wz$9+zP2ACE)%`FQF1mU+e?_(?ZFCR~0K*Qo z=3DTyi*>l+Y^!~UtjK~xO>fG`al5{)zYgiONG3HF#tUUxWAVCa%(KTPg8swyXfbf3w1 zb2Q+=3D5{ylDF#HfKiyn`f?5mnaY^3^`yE0L*Wwt512dz%^9vT`J)MzC!kWVgPLqoMV zUieQL;^X&DgL7%!o$vwB(oeo+{nH9Q%*Iv?BD0pVKQPL_RGPf4Y@k!h%_2;E$qkBIvde#&Y z#uLB8o0t4B`8G4FKfvsG3vo$&Z(ice#JQELymz}R-@B_&efW2ZWc@d!+%H_8ayMo% zvD**rKuu&~gqn=3D0JlXOnJL!vVH6Cw?EqqJvz1|XmfxqfI1z-(~0RJ3^wwmj~PZfPC z{avbi9Zor!1b|%26Mzg&M^ zdN!-E#GMGbZB(QJ$RGE0uxp@qR68+eC2MA&Pp6@K%g~S7KfiMUNw}wR{voK!Py;za zEk^)uMi^E@gJfvQ|2&*r0)xj<80qx9a5raCDzB(ayAnbT8p6A;kU*rhOtB?Gtcs1+ z!CY$4|Na_S|C9hPY`30S$l|FB$1Ge~S5nWtIcRPYff8O5-Jhr_(dEKvqd~yeOzUcU z6m}z1yoq{-bO3!im|Q-n8kY#i>p`?u04%w%9|Z4F*M6341It|)rt}Pmnr0j(WUT5c z1Jis>)lw&(vME6$(zRU=3Dkeybmnj{^?Ejfh2h3o6wHRo|}Xdua-bhW502Sq{Ovl#7S z-BdE(aMbj#fw5R#%{mY}gS&HUX5hQ??vum6`yI2xvJ}h45j!YGxUpX#ds=3D9tgA{ZR zvc5PelL%q2F_vcN_l@pN|li^P#hJ_-61NKgd{#h9ADO)J*zEt*0xRvNU(d49g6qmub8TP zs^(B?@hEiFH9s|7^%~QNUq^P8Fm$kL%cBDc<|#lVYYw5z!)P2$F4S>NgR+kpfPaim zUj?A_Vti?$I)o-Xj1(48aj-#ICypsbr*Wdel|DtX^*0`YCd(DQBwk+zm#c8(RasZI zW^{TKL8z&+?=3D4ykj@Gu*cg zqkoe#XX9mt@zP%?&W*!52zn@7Lf zm?ljI@k{28&mwH-+`%Fw|7r1gy)u8y;RaPi&mWPzf#MtOse|!ogTYe=3DgJtTF3}hmZ zoP5pO0Bj}#p%iSTqS+xbCIV&g`ckrf9ROaB&BL-x>kP<*Y7P)sj|!BH>x$6v7X(QQ3xES$l_ zq`JQ5JiM6utqjh3{=3D#%ss>zvCkUvPaH7%EIl^UjDab+@?=3Dg}r)SY)JYW;WJ$!GdA! z-4?^@(hTc+FPM=3DE&m2Sw+$2|t(kVWSsO-EIE(39kI!9k;NX`F%2{Em7p^Z90BN{i# zlcgAunum%;C<>ovoO6@`q;Ds7HK;`lEie?2lN%H>+<4nK1N%A-c`M%SQO%QNV+Mqt zTzI<>eSc+fSpxg9m@g2veCpWqS}um2s2T%Tk6NTi-cKexXaI4%a-^;Tle{xh74~{L z=3DCDZyhMTAUUAUO7CLXQV49_teNW`M3IRO4AGq@2-LlKaSjl=3DFC0CPf- zY6rl^ApqxvA^`_L!w`U~P~;*9zzstHszZ^B9RTMK0azG{EOY>zGz4H#C~}DdpkJynCYzV-$p-7DbVAT+S8$*#VIsmR10A~H-JQO+C0q~n40MSqc4xsHKo*M$NDik@- z0r2n;fYqVMJO{w?K>&@r8^D!9k@Foei-y273Csl!m>EN0S_G!b0plJ5^N_&IcffS2 z+%{?4y=3DIs}Gm`%q+t1135I=3D5c{J)d3S60<%G2CSzS|@z0q< zV4f71G6#%j2+StJgbQHW>i|3Qr@__VB4DE|Fsx$1v0oYlh8z;&!(do}jq?R(gu?WP zkh`e!hMvYj67}NzTLl$94ddR0UPB9l#{jA?3CMm}FtC`kSl^tp;0!^EY+?lLSNR zRXc!57T2maJAkEJ8B{;C1DNF6kot}tz$7=3D;s+1kTBuj&8wH?4D;gGt`4q%eoYt_|u z0Fx{as!QwuCW(gB96NwXR@JIg>;NWN9aJaS0Z8(21IbS1+hIu6!ch->fXGv(5$@+G zhd(+yjA><5tG#v@({dEos^{!56nZ~LEzbYjVN5HdRIRhan3kimR^4TXG3^FPd$S$J zv@+_{7ws^nwi@nrm7UY^+oc`tHH zI4rVdqymCv@fMB+2$tGCl@TmyeZ>K`WjjiK(TlHSeb?WfihS8h>Q*zKWkQ@=3D(Hfr; z%9+rLw7!^?Gt<272-XjJJ0JPQSCs;ZK4cfE&*pUWdnPBX!TPMp=3D?gk1j#8+O<~j2{ zfNDUx);q+grEhEP`Eq)sD;R;=3D6W2e$Ck^yNSN@M-M2cE-RI$w+jQAV?=3DL`Yx1S5V2 zzzI%(D5MxT>(crZ5v)<+C$~w34VvH3Z`@|1avSj2Kd4oc@l5s8sa7}Db#3f{kd5uY znyzGVFCS~M?C464?c?)8tme^dNCj;VmTRM=3DwtUSLn=3DFjv3?(BoVpnTfJUX9@P=3DtG| z`HaL4NAXtt-BZFd+5I?*gzUm4LJDflHM!z?d>dJ|D|#LhCLb2|ZD%$EbtP3Y6!qU~ z*B`|)&!Aeb!NJ z&RzQ%WWpm7=3D?X-*z=3Db@W`$DggIoE=3Dz#90%L04V6GyIr>+uLX-h`@{tgA7TA+l!tCD zcbZAF4zuQ$d>C8-S5M_wwrkYSj)m$rsD3KTQ&FPSx+|s6qP&S7z?_F3H_-rI08iuW zMu|on)Iu9qucNKiqtQRe`0YaTuzjGCwa9}5x5OH_95Z)7-5R+(yeB(wuieac$H0|^ zZOjbZVmIKfvf$k6f&VgNi&|yauM=3DMtRPX*oI!&)4k5FBV<5eUt3|GS{zQbAemTXSv zSvhG&!BNVbp3*tt4c5i#o6dX_%(t$~9{pJ1&A|%UTJph0V>eb{#SXz?)9-Tx2LNCN zhCKvZNO^Dw09IgFXxjkGh5%p%hC{$MKwt;}RwpG6fN4Vj%0iK#1E63C02X0by4yt@ zeS2^%un5D+WdLZwXV(ybQ$rCDw+*mi2*7Ef$YKY;+93etp-7zr;QAo|Sm!|#XcsYW z2*Bx~2yDn~fYKoVXM`e9o!9^${%&wJKNpH%husEv(+Lo*!g+P9&x5(F#DmMW zXfC@4AmOOyvL#FYbuLSMYt{MBSuMp{lJmlTREM!v@Dcei%Ox{{MPHW7szF@VC|9-q zllrFr-}!A}`VE8lLT}~Rev56Ajl$vBML&{yvyQd?%3{}73|A%7g(QE9i6(SWWue=3DO zCO8hldrUN;ODe~DtZ0Il1XWsOAI;HAD~r8WG{He=3DFPmsWmsJ+}t!QRm7E;feXhKh` z99v{X6MR}wJ*1;;hA;ZAD%)5JGFm(84J9j7?)=3D%Wf7e zuz2Cp*noxZ2Xml17t*AU5m43=3DZ?T;)Q6!nS~)fNe7qo_qzKenQv-EJ2T ze=3Dx7c4ZOYB@DL+w+*aSlb=3D`e354BtKP%k7pGau5(0G7GjNN9vOgk0-+)?-~=3DUkir0 zaXp!ND+QZ%a)AYO?Y>>>Dht!okS%tl3hydRe+G{@JJJEays(?jTXT7;?kGxO_Q(Wo zB`7!eUf>=3DDbRc+In1@sJr$dr}^IQ~8xuH)COZp^iK^`uUS_^$XEPea-=3D9OhSGe6PV zaX}(kbFgt2v4zKQd_$if;`s(OMHaqgkVIfH#%Wf@Erf_L4X2WI`x|#R;vuA8c^wvA zX)^~+*T~{K*!jZ_xnyzSFj=3D$>n*{)~SzP1Df?FBbzFoGj;TQ=3DIQ2Y1JUkg;)_AbCr zVE^8R1|8nEw^5#?{jUD__Jdl*YQNe4r2USgfmSr zV6A$mhvesttd$lbD5j(RkjL%tnl{tkKs=3D;g(%~E;+uD#D#?F5*Q#9hke76iNTuu; z@P`%-^~N+~YSl_RhMBb?EU0eKVK~aLk7I`88>cA}5^GZt0u$@VCfF>}JlJMyBsS6@ z4HDx?tS1^tHid*R5sODNaJ#c*GoD!yTqKy5B^)gV|E>dZfI}V9fvghRe6Rghw?Cw| z*>8cip!%NuMs3dH`c2Q*Pa(hb27CeM_)Beg;Ec(Z;4}7Q>~)D9j~TOF&zOGzh}Hgo z{Gy}%(a8H6nF0Th^FHYczHHm%mNig9oJhV@F-kTwbW^;zWi;L#&9JY5ZNO&cIjA1k z4OaAGm(V)cXr@Tv*B@_I~QW3qEaqu5sjNp908{A7uaQQ|C9v}6bcdwrtaX!Pp1`tsMxq@0S#3#kjgW#&q4=3DiS5s3g(90 z$?WW8%?d2l7nk8y*ReMrYVZ!3wmQI88h~ne4zdoH@oU>SQY;vspa(j{yaL;Z^1A+V z-eKPX`R?CnzYQTMPjnw8awO{~@XCQ|6wm~s1Mq_iAtQ4Xa%Hv<)_1s4_JmC-{~@Xi zUCL$7Qqm`ZUZp71+tdg1r1&xJRC|8L9rnWx%WzF2=3Ds(O;XCLD{<%SeAe1AT@Q}^c& zn9D!uPw&dvcHhkjs%PP7B)3DuLG=3DwC=3D;+WL;SFq)+&;bY(cC_zrsWg*)a#4CicE$! z_kY>VJ;RSaZ9~U8P#mtg>uxp8JyUcfy16^^Ke1DJj#YQ6lyal9l<=3D^f`tCAQ%3e`B z=3Du+-=3DmXa?0q)vSoD)T{|I&6Q=3D96UZ>hqjsH^KEAEPx>=3D=3De0Jmw?oN!)eLB$5ojbFG zj>oXzG=3D^G3k_OFAdXtMAp(bB%=3DVb+kL+ZY4Uey@u@LaNk35>G#x@?kOOIdqKHpOD3 zsOy1QS+ZpVdZSjIZs6f6s5&2lDcB0~dJ=3DIVHQvP4^x*m^V5rk+CGOwF1P<0c*>pXP zySR1(_X*P-wibVLQ!&;KN1QnsCPnbWUOgjnVv zi;jeMJvbBHa%=3Dipd_1VQ?>Nqvu-)lRde=3DjsCQrgT1Tz=3D`cgw%k>^=3DZ2>?QB zlBrfrhpuvmbjM-DB^EcrVkG=3D#ZW)_chSfQxKpaj;Abj_f?`MG_b%s?)p(%t6@x=3Dia zh-JK0NV*I}oUN#}Mj%1>;xuTK!FU+CC#u)Y0T#c{#bP0`&^#FNtX?_whCSu45~HBn z^d(c(wW5sB!)TVlqOL>te224;FbX-ETS(7%MYzXxgTSaus+FsXU!$*S%!>R?x zBZ}aG7zcrGU=3DgeZqlebwxtmNwB}@^l#XM7l-62*jIIK~`UvrCCXw^bS{g7H*W)<;S zs}}vVz6axsVHSo1uOZVZ=3DTFS14}9R5Pid-2vqS9(gSNepkZaWnpn`E}YaSf)F;|+F zA(^@Dy?R(^k-rF?Ydb9YA2)0YncuIp-0_)H7^Uz}->G(C5^~%#beL|8U}3ntNVXwv z$J{HO1FNC;7H|@C7T1j2fj`zsLoISDw`VWH@Tu?@I5^`I?ZV* z9YbuqzQ`4WAuqnCgnKbrfbt)9)Z-jyJ=3D8PvtOj&khxG`y2;h+}olliRonNMKzd5%8 zi$d=3D2ygxO@5agSM;M4}j1b6e%jj%@HqkUveKjqP$S69ENm3c>&Qe{x{adTtrg=3DG}E8;OTV~_Zd|{GcYCGpli$Z ztwpVuR5^Ohl$EK?OvhpqHGxNCoV14>8YBR|%R<0UnGlX5YGCO0DS*Lxzu(&T8EkM_c#l&Owqs=3DLRk$?%q?FTTip*=3DQW; z<$!}wSL+XsYOTP4a|}X&%~NkzT3v}Aw}H(dL>B7wa||(Zvrn4$Sxje1+^B{#TU)HK zZ%Wt}UWU=3DB*73z&r-FYpc5~)h0*6E}BHo;=3D*&I*9-gI-ke)CjekfWF2*w5?)mz6nhp(&+5Zwj50@M z(PkCuFBsRhKVlm=3Dd@WK-7OLuONd(2o48h7i#sK3HSm#n~Qr(Eb>Mac~P(sDne+QZ% zgH;;MCoMGDWvIxLW*DMR44Rb=3DG~dQha-fN=3Dyb5)x6HOb~f#zeMx6o`H%a*Wtd2#_n znNrBgr6E;q@VrVufS#XtvR(aS*qj?IJU0lQbsONDKn`Eys^kgMoYX&B&3Se%o;agj zp}q?~WjCh{tnp+P>Mye`Jm2uLDQwej=3D=3DhU$rAf+W>T%%5_WY565Iw8gHJ*=3DKcv3V$ zWgoY8Mr}O5;K1`M7!Z#3lyl%8z^$8&rw#1D^Aa1+Gl@j@^a}PS*zJqfhig?YqKM}x z{??a4>DWSi>L}#e9RNKrH5%$}Y5Wp!ELusw1s}_(eSEGy>v52;aQ2zM*Hy+dWaGg~ zFnuS$LrU=3DS4qi(5l6#VhiVIIjos^SvBeF_UH$dBQM+1xa0FmKcXmFnl>cO)tO1qOt$YBEA zDQq^sY&peIU64k4p@k-{*VX*RGl6J6VxjqnM)MJz&J@G+DdD~oWI%k~f#&pFG&_mr z!(bmanl`XTlUb(41?dIYrP!`*|LdUD@~E*Xwc+5SC{c2}3H;7g8sh8vNda zXfno9*J>OR@i*R6N@Yx;>9ImhcUHm% z)|FruDhdaYNQB{cE%Cs43~OLV3V=3D+qwiLrIr0zfs+1zJY$PQwYEf%I6?Wk=3DFrX^5-l}pBp&{Qz+|!DTS$!`Z+KprY!_wv$`#Y z?yh8;Hd&Z9X-u0E@R&-kzf-~<-KN_dnBJo2b&D_nR-s;<<-pVi)|fI2Rc2%A86H!2 zNR=3D8ikBl&A3jGQp%P?!O&}`6XHYDl}8kxlmvo;5sJN1lgp$VC#LY?MB(*}0X?>%rl zsk{CrA|YjuSzBuLKc`5e9h!`4fT_corOm@j%_3M8=3D(u!=3D$z!f-HO~9` zt_`fwrG%qCfWKAU{72nH7wiM)nflW=3Dp}o@A;%hhrqYec5tP$i>BG4uq$+rCTh6BOx z=3D&9RkPwY2WsL@UYZD0q2SJ?>87X*3q%*+;;?uc$s)uAETpeGVym6s!OFtnn4U zD1q(twv}zrP6xh!2JIqS3txbt|G}y32DO15_&!r^HR!`!e~L)#qHFSg^tvnK1vh{l zge*Ux<$}Nrh6{Ps-?&OMT=3Df6#4s`h}=3D!#Pk+#(&X-$rx|=3Dl!Dt-3xNj1sM7tOu$Ch z2G-~b=3Dl$R`3*Dp0N{}n9tm&tl^*)xH!Nxlpx%9CYF~VG!QlKx)38<{=3DUk&GvMh&cw zk!slyvw5H|sCc<3JEtD`%jwhdA<_~$64KJU=3Dsl=3DRj2w13z%!?QjHt9H2XqEN)02q) z@Z!%ma-csTW%p>xhC+nq9N)&p%g@K_pJ&5ftNFl0U~Nrlf7DZ~MF#+@P$94_yJ2l$ z-LT9;ZG>A#J+KnGtmOQn$6j2j8xe}#L5u-Y@mJYEXeb`<6@n;wq;FsV#KGCP=3D!wag zjX@k?2XXM3our-kB$k8Dom#m;qYJAJC+F4yU=3D`{sU{!V7}SCYevCRHr_6ooz;1XqFslpI z@ms$5*$oiVTX!ej>x1eXf%RrC6M1`Y{&bOhWoHiFXfgWXdN)nE7p`f`GpCAT;89)U z`HmV_XqiIy8jdUK>tjWyxBg}pRP^Prap2km@aNL9m$Lr9d;uE~o zPl9sb+9+BHEulW>dnR;}*aZ@oy;vo{Be5)Dyj-;y`&;&*UPHjSaArqVX^H%-`(>%h z;&Dn#bBO`_6%Yj{_iRA*;7*4UPieB{ zNxs$eVhX`>{QgaR!$w0*Y5Ya1cJh2p7jWRzd*NL^Ssdnp+Pe0PXX8>iTHDUiTU*q) z`*!egTq}NvZM%@#xMhi&*HOu3Sa;!~^EUyv493y`!S)dz7vkQTnzscYAMu^I@8Kww z?bLbqLKApMPSFFs%|HT9D%;J1(bq(*jNghb9t2fiyjOMzg6bD-qUVEo8-+<<(*uBn z*(Vmo2O;?PLbrHG7R3<#m@E9?FjrXIh;dk#w7Xb9ubB%rfF<%>AabmYK{~qqbJpp0 zPdgUMnQbt3g1-+z#I5aRIw+0>dc_#i*K~kylDV&G2cGu^-i3jn0y_ASsS&U=3DAaRmX5cTwo861;F+VSJKDdIVFMb`aL1vgEzZb_#WIj)YeSRTIvz} z&~P7j(L<)JqHa-OHV=3DZSNiVX>+7z$fBrux>!Cao60hn;lXRw<@ z3#hAKAWwn{na*9{E~SvBg_FYFjEBb)b*>$ce#59Nz%WIlEl(d2`GNk=3D$Kc8ejyGyR zpbs?TjT$ZS3)2VpB6>QclF0YKi-@57g56p4Ed2GhSW4`F7y8M&YnepRj4?KI)@zub z!@veATpE#D^Yi^$T(D-V^kve5pkt)fN^Iz$vN|953e|hsj>*srfu3Q80PR{t-R&3x z+KWdWkj8NgU(+X5=3D@$=3Dv+A6*1sL~I$^k7$MHCvb}wEyp_bUFkg3^nk~^jZCQ#Ab9S z7~^~FBC!tz{{&f>D!(nk(u+;6NiQ-c-ggR|a#$QYo$X!@T-;~(z%XrrC`b49Xbt!4 zj<$FLPNgCL*loeBB-0kX!*nkQ7v0;NBkP#%H8V^OhqGrFXZIGNEx?@WdJD)3dec)r zq#wV)yVza9Q5^+Fo2x5a7kC#87&UxPEMvKYLw)F8X&7lzxnM`OeNbOGL;OLr)fBe@ z)A*dcyS{{WGaEKqE;CI*uZ9+-Kl<66rpSavor#3&#$#S48war>j59v1Ze^0o(X|Q* zecEPApNidDVep)E;X`a~yxJ9RtakM`RJ$&~=3DU#jc<5PyPYJ7f(&rk5azNy;f8vSv9 zc{(DWKLx`8A>NJPLPm{{_>ms|j9Py^^1cP1+wl1^K9AwE0iUPw*^H0gDYo~EY2WwM zTeK>KT>Ve|Ta<4T`@@Z8Uje^!2u3DTkvC?_)**JKaFBPbIL4BG2E$=3Dc)W@K^u>KQv z&OIEN^ldF1^G}7I|HV=3D|v!!&>M@dd87n@RElLA_? zmXxhrIGTNQhcwe2+>@qkOXOQH5pw!aT%bqH%yn7c6xV8lmn5GO1F&tcHcp{K%NajlCg9wU+2vp=3Djd=3Dh)@ zWF*Bf(2%;ja8Qp7)&n%aUge_{m0n4Fsu?DNG@va0H_LhtC1QjUXJ(#)=3DWya?M zBm#%%7t2(TNzquTMSc)_o0$86*d5~@<9*4jwxIb#R^Wf@@<+EtM`42TJ?oy9`3pP` z#t#h8x8kn6bt5EdZ=3DUZ7_q3INhJ(R9W!E40d6px6y8My@l93nQ7A2#)=3D7g@swVMCM3nN<4CoEZ$Z{k#auF_WI)Y!Vlt9 z;fHR$%Eii*ZsUWI6T)Rvpt@MV0ngiL`u5F-lAB%JhlPT#>1%ujBh{;8U(@~iT|6sJ z1UP(Sig-ZRjquIH4J;r-ArLB>)uLvmN+Z4s_+Cs9xCttmj1t>{E=3DmN6;bg4FaH11K z2$iVZxpscceWuPY^GPXY$fgG|V2X(B*XT9?2ISmdWWnUz^ubx!fcns`5~SUOM@Sic zATpf8zEM*0TrS-#N2kEkm;$qmmf#`H2OqAw#|1IPZTip-v;G@0pa&qXT8HW9`1l;P9`8Iur2+_Gv{=3D6deN^CZy z;In{!xO6HehVGN`<>FU2x-f$7#_6(WDvcpnLz2wABvXb6IJ^tz`E^GwEWuHR+cjo% zOSM4aNQp+_Oh?9GT>c% zvmBnf7M)rU@R}P@!HBWu_axmfLz42-Uv%a7NEAF(EVCjRCuFSD;$5I2f5M+Rk->0n zX_N_6n;7*+U*;RL+8FD5Bs-#kPc1r`-Z0L5T^7?&o%I#?9@&l1M9`1CLBAnYWFikp zuVO`797Pke z?1i|P}4kaS%m};S(U13sKrgR6z&%k@zR6oh45Wg$nFg$Q-sO(?*t9FZ-F47SN7kB ze31$?09Nu~3w?K!bPVs-S%J!+3`e~Gy*DSm)_61@g*5Iaoxuw@OTpkUR5U?nWq6A& zp|G z@|3*d_hR%#tynKqG0vh_yw3W88^!FFgP-vHe^M|g_Kn{NU1`9|`Q8{jh)aD8jwP9Z z!IHh57dyu^joO0!4RA{EziC;3m-94&iJ->>n!1%*h?APoB8~6!+t>82?u=3D|*7W&_N zW8#6vBhneW*cqr0+Xwu}?hI*hLvy+_UP3+&vcay~mZ$9=3DAB{*GM}5WUAT(uooRjS| z61+}fcN$EcTxcBK*+PVgg(dpBt8D+=3DZsI`<4X^2jmB`8k-WaYvV#C7skD*~jJ(He7 z&idDj&ip?}lWrh^8Fc-)%R!?QUj@<%=3DQiJ$pEAuCyG%C(9slW$P=3Dz+$vrK)#Bo0WM zN#2P|JyyojW_lP}RBn<~dE%XNqlsuac)8UioJ#>K-ktS8?&N>34$uFFXKZo7&^?H; zwSPUAvGKx8nhP4{VNV0L05lx`^1L#Xe?5ZrF2=3D%e{L3%=3Di_~05V*XV8%S&R;@+XYa z|9QgdjT^0&MfVy0!K;x>&)kMVr76nl8AGY1gGRMI9O5s#b&eRanmnYp*sLHALn=3DZZ zIS7Spgf7#`sle5&S#jUdLP9doEMq9YGn4>UcfhTSvMDDylspFDQYe=3D^^!^8?D7XR{ zFSp*fbLPh)OlEDZcAuLWi+yg-SlPV~cKUGrU2l>gc@G|P&%(WtqfJqNGvyy} zlLJzY@C+2Mq9}lKuk%YO0#GI>Ouc(X zT0`|%^Pz8N-G_JT9BlIU`&RDuT*t{Be#|eR8b( z1zc$dCAmBxZ)_Vx&JE8I*f4L+R&6)1g&|`1Qv`sNelM0>SmE{a_S6F+Enmv5LCV;G zhXpzo1GQfAQ|uQ8u}H#36!aba8Y+nh=3DD9(^y^n!RR{{o1%U@mbwc5!G4#I5UyQtjun3y*U*rSVC@KNsQ?@% zJ--XOHLMB_Ay~8{JlYE!56QjPFi4yfR_mo5zZkwkH4|H64gNt`WJ+ zLZm7ek;AUod8z}qADgOglt)$_i0DKb5$2=3D*HqwcR991Bf+I%fF-0tjv`2^geWl-p2 zsjYpn3!h4%H1Y7!iEBeL7paqM9Ml3Ev)n$z{?MebM_27?t7^CS9Bm9_a2~;2#0R|| zm_gxnf+p_c>x35?oNic}fW@!NmAx3vNH8+~xJaiqnOBc+xf)WRzf#icRq8;jQbosD zbRyOj8lP|iSz0K)HqL>PA*KezL!XH4TOJdk+MyS$yeml8&QS354aBDEn;&E!t;ZDw z(e(t?dqMpa1jNZwt<1c^w%H)3B3RLC_e*5vO%U_L7uKo6`Hs5#A3W@6! z)PdMA69$hU4B9~7H5j$iQAKyuua3trRyrdEfR}RVn?v+?4GtNv-5)bvai5&+<4ES7 zWxg4^5W?YS`Z+V7o;by4d}m{QC*;_+=3Dy7;Bi4Pd69RQV~+QCFPF{$s#>te9U0($X} zp$Xut4uhJW*t46LrREAhTK)n5Sw5sbA9p`qq(Hq`L&C6z45!wh3IG>`VUD%#^rJo=3D z*9-#wfQJ7$AU_UEL%bRv+-G7>uD$Vj71-!-MZXN6>3BGX%VFjoKw0vJ3$&Mw9T-Ue zfJI$Khdl6#1wYkr)m=3DW6Z)y$ItteLtXtvy3@Hts2%{o#^WCe8EW?WL7nuvMJGtp>#Ij zmnCUp@+NeKZ`LY5PhIVC`?j`ow9_$=3Drx9Cu&>Dj3Wq!leV=3Dv`!L(~GN=3D{zq0hTBtYOGj9R?Oy}W%QYcXpSpvXQ0n|)arVktnX1xYtS`t=3D1A+5 zyy%$>`Z9z3@s}8sADt9#W23qv7l$|L*4;SD(Yj1frSpLOAb2myQ_fs{e2QD1=3DIcPfkk#oz%ZD^7R|yEP#u`3>DJ(rE#}6K(-JBCltkw2f2qLqZs^{4#twozJ_E0!=3DW{H=3DC}e1Ks2G8)jL_uhD(oq zuG4@Ib`L3vFvVo1z(p-dgXRT}0B`)exd{t5q1oLSFz^Qo>Bw8FF&e2$ z76()2VwA~hH=3DJcyC5jBh?7lDAb@KF^a7TtcCSe^s{nn!%;)`R(;P^sk>kCJOfM5QI z&FeRu5%DBORhE5^ch3g#fI7O=3D_4oA;;A%1IJ$&(ROD((9RVV`F{W${EusFM8N*Q!6 zf`aC_(3)K&5zNg8Gbhq`mflvnR0$!}b8S|f+>AVvF~?9IW`>8`Q52wkFL>cSrIRtw zGbYfP#?5N3%n7InthpHexP*74j}uDjQrr3NifuRvP=3D-V53pRp(rTL~=3DT zVipRUVr-lOajqt%L}vvs#J6G)s|=3DtIMENKg{_3uqwk* z^UQoG%kyF<_+Fq_6ddF3Qa_NGLzz=3DDC;48e`^fh~pnq4VXG}Zn;u!r^iH3;Mu!s4v zr+B`$Qm&uUE1%3eQXlLM_=3DO?*V}8|>$96m!%_etAB41;+@=3DFAvQ0#lfKdAIIZRe}W z^W^9S7`b@UHYHxko$q>am(5<&L_cn_w+mT^d@^@9U|9l|gYej|5k47?Xg^iv#|y#r zt26A(GZmR1>TI9|z!ryD@TE@yYp}8(+#X)+0Yl;{4|pi`PsOY_qH#!g^T8l_^)bgM@M@^GdqGX~0y{<(Et7%3K}X-`fZ<_5em`1S)` zV;ps>WdeODbDVLP$gq%vwGZkO^auH;@quu?%-~*!REhY;?#Iz)Mh4#-7;vo%473D} zt*bfKQu9?3PAiW*=3Do@F5cf>8#tDirjZ_U$xD9~ z532iEKe~~B*yaCZWBFDd|A_D4Hk;`L3g=3Dqbs%CKzDI`lt!!7iNj%l_ipI=3Di)p! z4$|jmUMBGBQH}LYXU%fCRvfP$_=3Dv6MMb584q3Or z4U-j}jp#>{`7m(D$?67}q9j`dk$hk?kdEOCN+wLz+8o*72hZTc7{-Yqzc` z(aKALv3igjm_Zn5-_4csQV+xV!MJ3e!V)3AAM;zEn%HjOF>zJ?vqDwRh?UFk%pKsF`LR(E zm&&aCXdt6iW-}vTCXXZE7UY|%X#q=3Dn980Dqyd?uIiNK>tV1%2Su!PD?Mh0%M41r(> z4iZcEj*v6p0Nr3faiW+!1NJ7DJyY$v4xcN{XBmElpD(u8cb0Rvjmu9V!M7*JM)^>4 zXj!s&6`sH|4{x{^4=3DsT=3D_XXNmqP^5td=3DnnFAEGo!(v`vZ*bf2-Y){r~uT?!Suu))1 z(XCwwb;IAL^!0v#!Bhm6OTUKH4T%FDxR;_3xwD%07%mG6{bOK*z~#6_>=3DfvJw9iyE z=3DL2grsq5sC8_^tCE3kG)kKGXtBD3&${Mz`%UG^yC_ac!|mqrI=3DldyN7{Qpaa;u=3D!6}1m zTh#35J#^dPwIZmx#DvWa=3DkVHd6r|k!82x}}qs*1IfSw8!fws`gOY7>2v`g_cuPuzv ztAhH}6`QPndg-x&C-`Co*(gr{%I3zu%*2fZDG2Nds)$wc9$oStD@yMe9G@%}(7HWh znL7`i@^iT`@SqiOP)Ed;B*zM54FZIn224(PUzi_%|J>MYN0J2v@xFPnlX2ic2d1E3 z465IWpDQ%OK_COm@q?MiaOj{su%|#@Xa(Q-^ce!%yZxNNbDQW4_MQ5c&LWtC8&9+y zZ9uNrffkajcr0ACQDuH+mk1}wq+9x^J4{bmxnwp_W5}$CWLAVzJ+Vp-XfZ5#?g~cI zdx=3D?|?|RQByFbb!$oY&Fj4b-vhMki`nnk1p(Syx9KEk$Hpp$Ql_)L4 zDi11+BNPn>>zuA~Sj+T^!!xk3?@lmgK=3D+u^^ibZCtl3hlrt8uQaGwE`NEp4l-RL49 zEYm4CIOLwLOf&MNp`nDMIbcQ%#7NJ+CN8aYR|hRR+M}!a{$s2iWN1wXQUcxeSX_e6 z#tMs@#VO6EovNYP-Z;TjWXm#Vvu(yShw~_6!#7;BW!95me9h0G%~0al z+!D8;MDhbDKrtEMdW@A;DVOR}kOWtNJCR(4B;n3Y+{oh+44D1?bc5LmI*qWCSx7lP zH{~3uUK@JJBz)RR_`6$7mAZte(YA2tKAA0D*Ht+l#uDri6li*c{gLm=3DoXoYZY-;^( zG1EhC^;`E9m@{66o5)=3DbGR$k$k2LJQLXLX=3D3A%D;EcoBoO-@vEcR-i+n{Puj9(Mg; zoo|CwkTq(xrEJ_h>|MzPlx9cynKuEI%}C~}^R#xTTU~z}(5F^ufz`;(<3ni zhgqE5cucla=3D7k@X8AjcUv741U(dAg2{PAxb+D7Qqkm1#wKA2d|c~?@vk`*(ry0a3S97kR!_{!pLWol-g z!L{Ehnx_7KCz}IX`t=3DjB+2e{91C&OyBQ>b0g^V&t7X9hjXsjG-W$o|oSa{12{dVWa z=3D(izu9*Y&Lzr)G6o(8v#LQT{3!$dW}Ki}2t6sIwh!ka!40-Y09dKmr<#ON4?Aka$n zRl5|mSRPpx8b>DzAL58)KI-X=3DB-Xh65F-Ml^a&e>)~03$2FfCh$6O1K+j8-MPQFr& z%;IqnV_)y*0uP-?@q35 zo$cU)D#SF%(ZA+22zFO1)fy?CN!5k&XzNdyNF&00RO>ssK^UJF8({8QUUmUhde%-6 zmi{>#dyZ8r%nWg7taFq^k&$RhyE3!sGTz!TU0|U*%ZaXf3d}<{6I3|twVYi8-pmzJ zyEHb#?;AMwU*g>h;cr(4q`lTSh%BMpv$68Rf~^8S=3D0I_5y4r*c_39o@=3DeWo>LLson031knBPi@@5GsW{4lx~r zSZ0fE44}2p6DZmJ_NLYTXnM zegV&1?n?W97t3sl5`q2TiFV7(K+B|?kUP;{yJj^;f^x0A3w>g)JD2Wz9UBPJeJmX- z?Wth6=3D)TJ&<56>kYSGN=3Du@cr}7rGXMD|q8naD4RS6!p1oHoT)sdRdRHjV}|gPbHaW;41N4ut9K`@+k> z`j1yHOB#-8&U2J_4CAl!R2Ez2EQ9!50G3G|Vya@Bv&^;d`hXN^9n=3D(4B@h@ zfyRrrFlyT$Y`lt5Jc#5I_!te#-+L2m7Cg%su$*fZy*9UKu-G$HCT(#pVaC~_#cE|< zw&-u61%!6q*Ys(4()cP4lc5H(q!|FuegG!C*Z)>_G<(6bCV*3H#$Pd6CY(#9}@RLM@S*VXX z9f;tBn`a~ONML#~4TtitNY>+W8XOV)>kptudGC$*yLsyZ-jDFMFK^DsC@o?0ll%H_ zkYj>?rx*k>l4X?Q>7wlJxt8xuJe19E4~o_C1&;L8TMbTc;*p-WBRXSsddOII`Kt#( z5I+--^w$rHHTZ=3D`>Y=3DNvFxLqr^|RxV#YAVUmA=3D54{(ZdINb2-fJkr1Aj5YNSPjIH! z{*;XY0@D}R@ksw4!=3D=3DB%nf@Lpgide8BmFhbSgZY@>NEX!UT!q^ThV?JkHnJ(#p?8K zNBeVo)UG^45T-ZrNKgL@&R8Aqairfq2!iQNJkoO|F(f_g{Wz)7y5p6rw6)IbSA)#q zfiXIVq5JWM<$mKm?k6E5#->F`P!P$P%Gg^&a_=3DVS9Rv+@bK_IC6Bu@tgeg5hh>uX4 zx*xLv=3D1<37CnYY%4}|+Jy2!P3Ban3kaa*w2-GGL;cj*%hWNXs|VKUG)(>9D4pknkg z^fN3k2oX=3D+VTtdi@v=3Dw!xzh%~UJxPL$MfdS6eqJ>kjErAo!;9#;bEHVuE z+F=3D&O(8K68lzAAknOOobqx+c=3DEwXx-8rxCU5coHCce$Z^D8p&{S-*g{>wV1|;7Ed* znFFS#ZS1S`x^$eBXDlwcc1zW?sd-njhMfe+s=3D`u_Bft0#e$#hZg*HqZi9*9${u`_E ze6_60$z%=3DWMe5h!UN(EP;lmwdZ_Gta>X3B%nyZmF|A@n5z#%Ci>Hma#-mHGC`BA}x z-^Ang%c&6vdmVVZ{XaQ)XvmAy#ZEkIc#Q{hQQvsW;8EqkW4z$Okn{xLv9I}g7K}gB zZ~K~`v;#VII7b6W6=3D!N;CfB?f(Y~!I{va&A8+W64n-BP!eux!Ee23)bd+57(@og2@ zcwZUp=3Dyihl`>WRCSVODivGab{*DrF#JAH}f*~pChl>C*#QhZ9Jwy=3D;^`4+T%J0EH< zL!w>pW0RJ6CR_QPXsy6^d|~v`EGf7_pM*BR ziay3@u2twjryeh1H{YvLcA7Mqm9cCUKE%DA0gV(T%Cr3sK-P5W&Jkezg;K6KHZ z{x8WwNF$M&AuYo1_&b**TIFE}zt8YJ$ZdpVGhfguTXd^DF0H~d+VQ^IV-vtt;=3D9lk z5D(B0T-s+F0(`P3eE@wRtOw>uXUE{I4@tSbMSt_C@np2m+2KMPxM z7W`STQ6U{0_~`>{=3D}xpK1EUw@h|HHp&kG=3Du$u!FDX_#O-* zL9&%E@P=3DRdTM|@rC!4OOr}0PyB4e;~0&SHcSBvi1lW&X{62So8#N2_#k+SF&=3Ds><2 z!@AZ-@VvLV72i;;wy9$5W(WiI;=3D#7jObJ*h)w~UGK~?tOKy!~D>Q{@&XT~i{rkL%r zM2aw}R(@lp1Qx?dApOutY$Fq?YK>H)c|8E)JNS)@L6a$Yy~pi}otP}%&Gn37@9S#^9avkY^j6ll< zdZwF3v^ole5B=3DD_<}wt4zqJ^QP*}F|H7S9K<`z7sa0o+13LII%F@j14dMpl3D$tq=3D0C%oeS6(i4g50o0-t}0#>=3DtoX2K|)*JRa ztqf%r@}PmZ2O`j!4Vk5SjglPuB-@g=3Da7&Xwb)RT$LeiuZnoO}CwCj-vS$z|KH=3D_21>#2u>w70A97tpdqTS`APJ=3DwvH-AFzJ9C zpU-#%N%INE)9?*@5r$$iYyq#wWcV%gj5R60swY>Yz%h^)sdL|OOv*OAo(!3bN*pqi z;d#iLe{57Ywg{5V3`vg$O{V{bS=3DS7WOF*31w8o~^R|*A!L2jT?7ehc>NM51-0OfNX%RoCWVc{rh0Fu#Dq+(N;*MZBJ7q@PUOC-Ug*#sU(&C6w6Gj*(t=3D^mDJ*k9gQ zgk(W=3DlOq|j!w89gaC!{;UEuUmLCkr!=3Df(bzYW%vzGSbD6y8##9Uj_b-g*I5Oi&vuP zhcKE2+yoNQ2Gk4GAoR)SQy3cP!xW^sYy%#mC&D3RcLnH{5b@o$unGDzbW-RcSLP%@ zGb_6ta0sslXD|^dh8#VOM_tGydXfy68*n6xOs)AwbD_zu3g*3MZyD!zl2a;=3D0tB_G~9oD@jhs0gv7`AP&OQrF^JPx9

$rQ6mwlbUeQ5fb)uKJZSi#?REmD3aNd=3DGs;cueUm z#t0_7w4e*E>Poe4#f+`T4#t<*JGM8s!AWB)OBf?1MDK&9hHCI;79Z3Z)v9YNflFIO zqWN}&8VG@hlMW_^Kb|IB#i|=3DXqq>8jbJrY~O!1*0MY2lBGuZSx$%qbJjq}&^t>j>W zA^0zMd$L9ZoEAZ8(NnnuqdbB^0-34;j#I4U2-}-qf$2te%Au1!?D93gg622;0QGBc$S^K@{z9gM3RKz#Ypv4k$Of+2I3^9I4LMC)QyN0NGDr4Bhf z+02Mwq)d&%-~``t#=3D)QjyVteq3>_up<$;$EcB6aPY%0`l)EwD}1DodO(T!{b-&elJ zaRLMVRFHV!V#3x%d}x;M6u)KO<3n@XntC#xk}nwH$A<^5bvGjq^e}U%O^MhPQd18i zCAe+#LT0gp-{LKsQw0AqXQgER0O#}6E=3D!tJJJ7JS?P+FS1(G%)&*=3D!$Ow4J74&j>W zR8uj%!dg8|TEiVJb>yFvRt}*tw@U$Ng-*R44%cz2?@Tg6k68z&XZ{uSmjzKGH3w+0 z%74Fv(;?rIHQQjlQj8-IT#m2z9jJDljnBW~^Lu<|zFh5^gU@~Vyzt9v*EWRx9G~yw z^Id#i#pg|YT!n>sh59eQu%NKe4f{)lG~Z$x{62->AK~M2f8t*rV)L^Q1?!jpy4v+O zq?`MzYS($MR=3Db`!SnX;-*hu`Ii1&M5sdhEs_w)EH0?bVOF2v_^hfvly+{%Ri>|Z_~ z3&y#1Na45N6Bc3z0V~Sf}^xBkc0GwphQ;R#{9+U9F{;JN!TkF zVcPYZ4DUlyQczt{{M-R7G+;C8Q~?1$ocDmEWeY+2m!;Pjy16Xinu@-xZyr=3De2WtUX$QV^Z+wpgQSYCdbgtJ%J7L z#J}l`8+NQQO{Xmy#>y_7pj3$LJ4-z?Z!R_*v4qp9+3U58w+v z0p3qnE#}CI#^%4p2no3hzB%zy`cFPSUP^0q#8W?N`HVNWU7r0kMu!h;Ja3y&Y6EzFW?Iq>+ur(e9D znmS9rSc?~X(eN?)#TV}1HemFNGk_phoBU-jB}F^s)Gyxl+Nh*fF~0Cn{$ZrERgCc+ zPa>7a*ZiOC-q(1%XBq-9!^#4I&yuBtCYm3?dwd7Kxq#hvNEWcSfYhu7tRD=3D-(b^jF zBK3dRdmHd5i>q&Z69O&}*q}k9MhF6m1`!1nj9@@kK}k(gqFAkBMO;%qDDEm+KHaQk zS=3DM4}TH0ERRa><7DfY35Ezp2S(1+HD^pRGq0aH7-n?6l#S{IDu|NEVpx%b{A;K$ql z_4az-S1&gAJ@=3DWJGiT16IdkUBnR_8Qtn3Q8@FAf#OHn&tGQH0E*;4zGsdmP8azPSn z4lNNR`0JWO`2tgszxAl*(AWP(=3DFno)rkC_$4&`ffGk?V#$_E(!%7F{ap`-AJ+RVSs z9QqfWmiqt29Qv>=3D_|uz1i-aQl6?3ROZ04_P4&@7|64F$eB~;P2#{bLBp@k$}lD}dO zm50szb5@hw}Af%%RI92P-w^PMSmcs?DMN?3zRQBIZy&&>YIYSdMowhu&~V z_fl*TKC5Ss>uL_oN3xww_$;$YJ)h$B3-KG>%-DIrNuz zAKe`K%L`eS#~d2ZWH_2R^nS^gF^5)rvZ1(-HHR)(VnxQkt2wk%j)i=3D@IdoJHa7Q$U zz9|Pk@{V8*-E6)d-5mOD4b_u5bdmn_|IDF1n?oy3gA_ZeIkfc7|7Q-RFOX{vefr4e z&{sc&IrJtC`!6tu_C4PyKR!Gh$sAhvJUaSQn?tof+@~{#zVd0zp$shmw6e^hPB8_c zYYtufH%_!qaH0(l)(^*Uspn^kS?ckb6LliVr+9K2exsZD%gNdITUqM$>6=3D;Vjckxf z)=3DthE@)GsnCeP&T!t13TOHpq&b5W z0rEV>Jox(@{x;y>r?uNIZJFlF-49#rfoZ-g-ks+AIiA0bwBzyj47{&+XPWQp_&W{% zt_4gP{$7oLlO5FczhJi&d(x+{*XFPOKhs`Y_)9R>C$rbWW6(GSVlz`zQXEEo9wCws z&JXuR@Row;q51IA(TRK?*HHEf?hJ6`wipY07hL@jGUjhwaK6ZT$_xziZ+>J6AV7tv=3DIh#aPmRNGi-(qyW#po=3DH(Flvt$rdA!oINR} zwAfN)rw^WQWx*Elvz~?85K$Hzg4hw%CrMyi9Vu@(?DN51+%-5|qyVnfo-|t>_sytqxE8uQ9gPeOm86EpnfpbDvh> ziAZ{!Oedh=3D=3Dw|+Mj_AS3G>1bnV|>++GgR#c&m5640?%}fz%M*&=3D7{m_8coy2bI?Yt z;gIM&j4(Tyos`&kL506Wr3XLLyI;scMMKU|ZzEKOYnja0fdv(@1COz&jLk;nM`y{5 zMO69%mB!dC){XzL2NADlH#Ej9;ZwNLfX}i{mxs;#%?%` zL|IxJSTzPOFjW)Cy28q{afOvKJf`YL{;o~c{42Cd@(CN)tfZd5Vyb3y171@#6QY~> zi+dvF@UQVh92uxv3wft0*BQC4wqG(y#>f6%eznT2=3DS;^P#)*j-lf{j3M5I)c+!r}M zR1QBQ9JQ`*z}IT^+H^7rXvL18Y^GgZIt9(;p-_XG&u-SXfZJk!Mq4&H&-Ixb#}*gHY|vIfeDR9HyZT4xTvXAiY84`qfL zC#)Wa+F=3Dkox|yGkHq`3SYRiIr7P{B-2_D_Tg8U^5mgt?X1`i9K_McfpO+(I5U;mkB zsJZZ(1zC#vK|%uwT7ynY#Q%M3NX!EKZH%22~$0zhp& zkQd!FxPfiQU1~8&YR+q{>&+xKR~L;d1>mwn0X;AN@PM88=3DECZpjj!sx3#raem_@qN zqY|lA~V!g5JB!l z?80lpu@v>>Q-*LQ*@QdgG!l-9&N6Vk^Q}=3D3+odjoiH8Sl2ZHcvMn%aOe=3DF5fa_Gb` zS#&d5&A0dz%h5c3fs}*{I2vqRz(Hd=3D`WMoa6B7 z&Whmj`YbM|FZC#k0P|Qbmq`Qu3pg@0{lN^EQyD`y<5!;Va<@`)8m)zpLKLP=3Dl zGZV@p@Q3AcJ`+RSjUil93~FHOQn~<(eBD|9@N`!B`YbNjkTcX%&v-h^g*OulJ1hNT z(^t_Iu7_l#tsRI*Al5dcCzztkpU&pt4zTtuv;wx|(3al61B&_0S;U~f46Y?ArIk>fgJG6!~`Ul&;N;sa4x(i97|EZ{*fVEQ8wW&7*4`5(fKa8 z%UO>V3b@=3DNm{`?YxI9^iijwvGtyV9}NmOt-nG8`m@#|X*g@zCOk1WmSt}M+o=3DSoyy zcsL#lvk#K|jXE>nLd}QG{Kfw6G*BB+AMt`s%7W84gTy*GgP0R0w?$3?OG_|4?DlbB z!CANf&aisgfP+8NqOTO_na1HF8W}`YJ3pe2q)dg2=3DXi#o#IYF!z65VbIj{JZp&WUZ zn58z`xX2mM|FEJ(wsTQ^muv?*my)qqL~5?h!-FtJspLTzgFFwy7+iP|#sKgji~*R9 z0F5%W;aFAFchrUibt1#b=3DaP<%euyJYyIs&KFR8k*0V#{ut`&gEB5%abSy8Wt0#*-xi6p^P_(x!*Q>88c=3Drrf!@@@ z!?(yQMQ%fF99C3_`OLP#n-@>zz?c4}t4FgF!>iP&cjf3ywWQn3OL4nbd!u(iU(0!Au$^3L}IWVT6u-Y zFnZWL2m%og7FKr{P19{sKy5#6vzv0`cH~O~k_z z4@H#L0_-G6K#GSdh)s7Abm28cSc+QvLqm~*Y>E^OB}JI%e02o4?zExks?lyE6Lo{P z1J!uUkBX8>{#L0c_IZ2W48sE@;TtgQ$qOUd$tz-cc-#@|jbEs*b5M$Ua|o^F`uSBn zBdqvC&j1!~0tCjV+4xhX-uZ!01Ba);Gz*ba7zpR5>RJ4}cs;?AG5*G5oA6yPc?sp* zJcRu!ORvZYvfuuXHwE2z%m;Xf7Pg-FH00q^KBFx3HJ{@39UxD1Gk-mNn)dWcwN^1~ zuV}~_>Q_&Cdc}qJ@M*utOt0i;_sadJuveJq{OQ!Ld}X&C{m6g>KVBNB%eO@goh$7yru|CQRyETiukiB zG9Mcgi5L@|*N35-mlW%1Od8Xi=3DT2kofJoN!7w125`iTxt((%#F?0!0q=3DvSOTj|@)? zkmF}b@=3D&6lztw8q9FuDWULodX@Q#!tb!R7%ECjLX;sUIT3jErqPt}RtB_l3VqcUr% zBV_breT7<_^(T|rM6e%_gLdxvr$o;TdJ>iscXPp#_-`o`og^pRc#r?0+H8S(zi@pVzvFWq%DhLv4c0 zafOl#?_vM`kDAWTL)rY#$cE@i>})1F??N7ZS}`r`FE)n%B{7}rNAN&M`3B=3DJQ&lK4Q6B>pXx5e%m!X`M5sh(xi|2FJ~o z-x>1l1@sZe&2^q}!)HBi_!Lj>VZEFA>lrt350{**)f78!G~^6b2N~#ci3{%;H?M!! za7hR1@r;`*P9T>s(fJR^$A6!3vkf-{dDNRGkR&s1k{*im)oO~R2mv{67C=3DzA6mj7_ z<7Vr33`Nq}6q$HDDZ)hO5y)8QG6X%u>ZjYd*@cRdN&Z%;mtOaDygK18AId@9AERfr z0dh7 zsK?Xgvj?+*Omu#A5*j#fu$@V;>4fm(F>)_d0Gbcy#r-(0ThA1@R3IUqn^CWv(a5RI zh-{oORYbSq(5^P+%k&g|rChHH^jLvSn{n1%M&mutJt9-BZ+E9;&WFz7H2El_wX9dKl%M4!Qmr*N> z@r%b^-L*hB?9=3De6m00O-?zT1{JP5*a6eg_!_ik(Z)!obBX>03;Zfxhf>^0tK;w&g)^T#E>a4e3{ z^DKO|s`2Dch-M=3DoA~U~n}ZcnlAp*BE;QZ#X`m zBxH0ej?X6_MM|UW+EA@couR8@*>=3DGonFr~T25^+=3DC4)8U(9{*E8;Nu~F!aIs!#GeS zZCs14gHXq>bLa>|VkY>{4hcS^cA(BD?AswDj`rZ!Bfr;p*z!EBtys~eA!n#ZA(`AE z;lg`{#9tmVL!t%sc!tEy134s^=3DHXLgInK4U+`>zJ^A}Awy6V2z&3L<+idhuq*c%5mLdcs+ths1LlGBVQ-r0c zCmu8u*_%y~;{K!v6P=3D~#ZRbpMe@|?)3>Cp?0l$@M=3Dg#hIvm4UL*s1p;xX-O1m0fO@ z2kOr9NS7%!$NSq;LNUQB}A5hgkla8S~D2kekK&sD2k z+e8=3D@C6oNEQaA1pHtNO#qq3Mq;=3D33~Ifd{En57(eSZ3j~mN|UFb{6V}1|ki1nZ*xu zt;|`8q2wWrhMb}P4w2%L#)bDV%hZG+%`VjAVU}MWL((wOIR!HL(@s@vhbu2W`&5NZ z_pUPMoZn?J%WWV@hFS7G6j_LI;-Lru$t?RJQe29-@E&FvyV6i(XEsIF^&v%=3D=3D=3D9GA zvuwb60?c9&bf>BiDoV!qTdBt5*cPU$Kvx#{0tJmsSJC|tG^cxbM~D0Q@I}dpvnd|N z;RVAzsr?rLC(Af|){Miacx*24K>QwQyvsNvJ!GoVx{8%D8ghpEC4`7eCKukrIDO-W zOxsb9hjEtoCYhM%v_Q-J_hFp$?kvWc1CnGI=3DL`=3D;F4nq=3Dr3eAZIO`xpT#C5x9>)3L zYlb2X*%Y}mj}&2|vm1vAoWoBjPbWpeYmxU{vY9ClcBOfv`2%D+nvQH z9Y^4k2|&T}37<8e@ClKNP;GQGe?3agWDix&(8`IWiiVt_z5)5+QpJV$@X7uM3{^Iv z9uJ>f(~DGLqO%Fr{QK}p6Cz@Ibm3VbNrq3RdMI*&R!%HM2uMCz2KnJq#D(|p$*VC# zk&W3Dxh$6yVWRUiCOxMH-JKfOolh!JQ8LEgO7;4$g->`;O$0^q2_(BJO!zXKd?8v( zCo^;xA$)g@!`>Jk7`lt!Oz5sPc#J0>!LM1Id6t?C;3cKU2&J=3DS!5;7}!^(D)-Ee|N z#xPz2T+bpUjF;4)UyWae*X%MSU0b=3Dn@ngUwPO5yXW0B2OmU&dYJXBa~R?`w%5r&b$72S@NcDJ_CZta6#?u;6rOwj;c0BlTv#l_f2{+cQ z$g%20Yy_jo=3D;n2r6pi2#L+rqVza+~@=3Df#uLiJxE`ub(Ek%5Rdt(zSd*n9K*GWKZol z@U6oix=3DsWu@$5Nu$KtAz;v`V59$ktuXhtk&VVn6YLCAp`K3C!Z23@!4T2QUl zVOn7bsTj-ZC3z9X4A0IS<{6enCbAFMoy=3D3E2HHlmP~W1{ExjZfnOhND#84Qckv%Fk zfk@iGc{1Wvip8^1&HWP%p#F@{zO$CnRNUC*93FjyPy2jxIa#yJNZ#jA5C1bA^P3KIMvRHh zSa*)a4ndB*$QTL4=3Dzh^C%Ot@Y``lDbWl-@!%W3Vs8u&W*7QE|-20+APV^KpQ$zNd+ zdDzU~K7p^v38H$wbdIQhj;>91Nd_A*Z1dYuf_MuzzaS#txq($20cMkdDLV?xMgt?a z1RSB9hYif%**iyosWdRJ9tEaD?)ZdNavj(kKhG9 zA(Wl)0)NR1Ykwo#3zI!(G9S|Vh2;eed8s;dzlRrGcs&cV6g6Xs;e{tq5C1c~u=3DNmm zfr+Wp9iZLmjQb5I0geMqvPd_8YXp!9h!Tm;L43Vmlwt;Fe7zO_oaTEI|3-g+bCvk_ z?L*UiKf=3DG-kEZ$d9iHa<8q(I_-`)6kGyXk;f4{=3DNp3Z5$gFMe6&yVrUc%p7@$XlF`2zkf#lO#$1V8gR z&Gz9zU(tx5?;`x0gMW4Sw-^7`;oqk{zd7?N$~M^4{|}3|H;V%46P({%cCh@e!OISo z+|?)W>zx5Pg~JiZCt;_k7KD&xb9D+HcIth^_eW(Jjk429eiY#-dGbKok+X>u0nTN9X&iISHu6PCId!yBC` zarm*3y##cv>*hi+}|(<|>6aw|OI#`DbTgq667x1w!j)rh78 zO@{(ow&4cLFH5<*Wf5R1;w_b1Z2~JID(iKEu864oz(8bI)G8-hrJ|bFl~YGFH2WIT z#{{n?ZMy@--b2 zmJ(t55!-#|9hl~DFFJCejGVHm{>Tu#Fz%7gf|F{@lE}pziVtyw+0=3DEFhtFZILDBaR zL$f1ZATQ8y16wNmWm|bOxhE5E4*eYB@JpJ?6qLKN!oLEMEm35isbET;t>Le%ZwkU@ zN`*Tm7hZ#YaRAkK;_1ks`d9d^(wv{>#c<&PazXDg;~Jb**p`u`flRs^R|Wd#QElX* zQQnxl6&Ew`dO-Bl+)}x`E*P50hg|hLjHir=3DiZEl;ltrGN(vYDM0GG__oA7A%mX(g;q8I?NThm)SbLl3fRGwWy+4fW2*E=3D?=3DAF2YC%d|)qB@v7?QZNc^+ao;l$Uxct8Cvw;uCe281@=3D z!>rdbYjBTqrBu*CEsBx!O+3=3DnvjW*f$a4g;$>BDj6C-!Z1)lyYTq_HKQQMb57ZJ#Z z+jy!v2ZwPtqq%Dfw|#;o-^0D(y9o6zT7dhvoj;%yeTQN+eP8%Y^;-z8Mjwu8p=3D{lE z`Uc)kW_ngK?R0oQJtDitEB2wH92lV1ie|ZoyxCa<0F+xw zboN@R;F=3DRTPE(u1x<@c8&U)unXVE2cruqYheAhN3(iyZHWZV2V5~{&OE$@g|Y+~w< zC3TbYJrK&lVIARtZA?ToTJXRS^mV1$e;zp$F~T-7&s~ydW2!bahgX*JD&YJo-DfK# zCq^f(!1VMPF1(!V;?@{^&f;{2l=3DNJxBy~InFZJh&^{io#q_0o;`I5&Mecuq-HtRM{ zOe{c52jt~=3Do-`fTAp0Vxghs`A&AR9AuEeZ!gmx7TPJIAw)&nj@;)lN^(!8PF7dAti9SapW4SdL!^j__2x=3DG=3DV|nuue(6MOq{ zH`87H69f1+Ua^Z8Srq8egHiKZb7klwV22KbMQPa>B zwHX>UT<|loqClcuK*(Upvrsd}i9pUW#-nDsPUl2&cFCQmlT<&nsL^*SFvIz17g#d} zi%{2mMHmCOTo8!uegpo2xW6lf02L5x3fx=3DChSlJbB#?bt>WBwL zd_N*t_n2tV`hGGHstBE`<4m(tX`N69WYiUP88I@SPDt|du(W5M)Nz~LSO)h4oltnR zOqEZA@jZiKk1ukLIzHkV3@&hJHgZTf1a64knwnVCGht6nF0ihNMW_$&bZdH7h?s7inm?6Ka_4A#Iw+XN>=3DH-F|8(P&JPtq2 z{8qX^b^Pydh}@CM3(>uyNpzSqUTI8iU}}^RzZ_S%rFje8A}D0(#GoCyXqTuhxRYK| zz`y{B7vM@rsGGRo?v5+y)C7fl7m8E1k5D$BBX>RVXcM?JxBU6vl@K6Lb=3DIMGh(bBvwFbgVz_i$*jv_1%ai!E>6tUcsT8I$&2)eT&7ej&Ry^$60yQ)-5 z8yKjBB3e6V0E|A|l!!S3GnP_sq68>$JF&jAkQmN5;t9PKb6^LSG|)=3DQD$?Ocp>mdD zoYp{lRq8IOxhXSJJnIS609;UmERceJDGY&%rYs7e#4jwxOooeZO5{6G0n)g>IE|TH z@XL=3DL6u>kAArTr%@I4EYwP4Xwk`%kfNOEb zsvknoxeTHqL(MLOwAV^+$+Ei7k6``g z#QGoag598X7gqCaE#G8ql0=3DwK=3D;a93ueI|B@TF3%6^1H?MWK(bm6^)$3Fsh{Rz?2s zt=3DY(H`$ts5NL>e3!juXOI>R$?B|W81xE!xJcVEZ>-(62$MLjuR z^yF2E;3}&n^WKmubyp56$w%u#QUflii2aIf`LwmH$kehT5nPd7%K%eL<_3(tyaEV=3D zZOvvO)0vh`HyJ&}kO?qj)vI6jkV!*oGBL9nc8iBhkLPhlEUF@lZakp5z2P13cV(Vf zeoDKox^~YnI?Xf8GncTzXPj%L94-2=3Ddc_P?*cq9?DYc?t<)9U~7`OwHk&AbVV$8J# zA{+~_rbg7U7SZop!nvv6I8^&&y^1CEY0#(;jBEi+V!GMWY_o4O6TdVYVijwLmANZu z_6cmDS}Ucqa#>mz#CG!%m=3D@{N7SsrDe1tg)7NW*&!X*LZgu3J+$Qd>eW86!i3e16L zKLBD2X$9~zS4p7HF)Oe(7PcqBYe}Jz?JBEjT5vk4b2lhjiKP|_s8RQD4 z^fD~<8fLN5;4YZsOwf^FbNCG6GNsd}j)7RzOZvv(I$ASW=3DKK3e@pX;^+(_j>>~(yh zJu2K^{q9zqgA5*c;M-l0-42e27N4Azb67OOo$+8pqN1U!V!KB8B@~WXu|Z55(>(}R zG)NaU0O6XQr8N!F135a*9M&{p+@s^~70lmJe%KeC#ATcB?tZ8R*Vv#LA2kM_;4*}` zpD(yS;m{8g#Oqa)zhi1AsJYex3>JX3PQDP{zk?0yY20GT>f}t6buHGnvSN(a)L}%) zfQ|?25*2k-dZ8$@f3^D6N8HHF-$+J67Yx8fhmc3htUOu<41vtmNisDCA2}68kqTp**@KTbr=3DxOobt#Nw z2XhzQDctm&a1%6xjffKpgGi!geOb+Ox^qS$AGm3~aMMrfJlwQixM@APX=3D7<{eHJ(2 zLQ`UPxB?_ckmtNyEb+BE##~yhSpF7>qBN)!f)^Yk#jPRAVPhFxuTV6|A91I z-|Zct~Z)BX9ws0SP=3DirB{gkSO-d-Id9%V2A2TnLX9Nd~uq^92BYGF?{9 zx(w$yGLYpEgy-kl6U8F4+I5( zE86V71C@@ia8-z_zENj^*l~2dP-XH`<*CWAmcS9n+Wp!YKBA^LV~I>5NQ$-?(3IQG z;4{JEj4_bqs$PNvmb@LQyj1SE2Ga*Zf44u!>^pLQo{GNi+Mj z+nc#NHji*|bTJ0d@x;)Yt+4(0B3Az}{py_Cn0+ID01{mYEp-G79|RK#s#|_&80rh$ zzs7zqhP^Ps7a~VIBeNmSqW2Z_T5u(CUsy;4@4kdXwyHQW74{fecp=3Dj4hKdoOdI_jr z461u?57SGVPAEd#xxT}AOP!q>l?avquDEJt%?RYN=3D<6Yf;;R(=3DlhKS4X$FUk&~w_3 z;D^2)!9#4$@`ZWJ0JD^GIZ@@;Rv+wZ@;=3D$VIt_DMBDhH-*|`X67gVB-vZ}nrxvAc& zKg<(uhXi8Rg3_osdT&9mKJCp~x zNSQ$_a;^udA`enjaST$CfzoAQjNWP#N>O*A!stesU&8mQn*|xZVbG|n@z%IZz9B`6 zLEy6b1i>Y+p+V3=3De?yM_7fz}|s0KDPLANZWr1Mv*;{yU2T8$+PqkjJrj2@bWO?=3D&r1uY+m6%%0 zU1UbM+Uve1cwY^(?vt$h5*2$j1n>S_auc?=3D5>R=3DdKyx5r0PI0Knyb{G!7tDmF#F`D zUId@#tgQJEUq|3;30kRK$gcCgbjA#>KDUof^-Ud9W9v;33|DE&c}GWdamYEi)(+UJ!yoC=3Dpfk`h1*L2d@S;U}rxNqoGO-C<0rr7ACLR zr8-X_%L|hSo7CU{#unxCVKN5~zJezXt~S+7nV?o15;6{XQ?I$pWo zX2l71S^gvxD&SBCHtI)$NuGKztBPgbDpKV}_T7DfrUW8%i_oC}BJX5tP}0D+iQ4uO z@a}mn7(!!Fo*6>unBJ-hi5^u-BtGO*6-+5Kji6XH39OI5jX6(XWMJ+G__jQsnH%`W zz~fV+PhgPAUx7@Jb>8ntehodz0n?m=3D06IWfRbEN-IP+wRb<5NBFa8AeM_cpZe}X9q zG+hR1HJbu#+VO1bG7!KQo~h2qTcSTUtpEs- z@1gT>@irt#ZwLD@nwzkdNCJNSox?CQwO1wKZlY%lvUgFn>hl*ffIB#NU=3DqZ*gUJv^ z#6mG5rps#D1JR#JaaimYm-!dL+=3D10~aoNZv2 z8%9($J#SF^xsu>OJvYqtDEvH(I^?kn zu~t#zFl;N_X#ADvU&2jCG56A%yL@q4SYaq0M6t+F#0UaG-VZqfjT-0K;(BWfn8)gPWLc&djIlU#iXeau2B&Z!Cx9DhfS?;1PZoR zs#Rj8%zH6$Gq*K?0kSp2KgO8{ZbAw^cPcO#PNl2W$9jo-Ki&*+_atiepu@RYwkMwR zB38s@HH9L=3D1`v02WC z2yIB{Z~jSSxU_L}wW`A_X0QaCY$Yv3*eTMy0!R=3Dn{V>eI+wm#>5Z5P(no$%Am{d&` z4k-$12o-3|7*fS%89}=3DiZRGGs`)OB^tof&@8~-#MjeoFQZZem?$zX%8PqU0Q*b8g+ zRI3l5P+_ovFW$`-n?Z){&%tD~qr4UNI=3D$Ra*E+eLeV3j!9Y+smfr!!fF2`tJ$R$4D_B}a=3D|RFwfo5D z(KS}HKavuCHuba!uB&fCXb8Y3rb4?sLsy3xtsqhHoMy8X|B$mcMas0c@bU~y>hq6Bl50t7_~hQ#eK>#hih3*SR%_C@N^fwtGlKe9;5vMy+U zhQpzBH~v48KP}{EW3UB{NjDDgc*>S>~_6fRI>J zG7Y9M6GLap9YXJDqZ31D2IpZegZ|k0#q1t}!+AcWVG+ zBSa0|crdF{lWDG2XO(hV1@#M~3k&lir=3DpVRL|+)HLZP03n<3GZ_#p zrkIk)x+!N%$)NBgNy-E7Vlj&w*Q5LMIN`U*3LcVQ(tyKJ}yUo9HFW_ZzOE4`2(phIhnM>wy&&d<5gInf$tV<-o3j4&qV` z8}&JG$6XAir!<92aZCqEU#gMd2XGcl{E%=3DoGvJ2u*Zv3so&j2AgB}7RT|qYh6c})_ z^^#-gUN^ZXS{VJE{_I`p(ds|){3APuSdSWs1x>j|WL7aWaTx){GA_$ql3?(_3X|tD zjC#vOD|HeUc=3D>vZMSAeIH{5SMqO9c;4GF!>rWS2XI7x;5lj(4?@h9@2Qqs}_Dby<; z%U~#hluo^9x`jOU_|lm6t90Lw=3D*6McKDZID+?sKs68&P7?4Q!O`&*7%tz2T49m@nL z6!}^q4#biiQWa^l>;Q8VL=3DTil?!yAX$o4B}`Gw^sG8O(n9@(CT=3Drm#!*|pUMPM-7` zf*2jFt_FhET0<we#f@G*LNGNo2V%5xo7w}hK77ewfT8AM z0C8wB2*m!#1{o}dtJnP5SZu>rwF!w(u@_nZ0qI#?P_!1MR{%$1Db+h+QE8tRw+h6`nzr@z}g{oQ8!8;Mvbfb?CDhCjT zcCFCY%<85!UZDQm$5qr92h{KJmRTnW>Fny?thXT5FynGzcbgd;TzMJY0ZtoQclg{V z&>haSy2CK_B~)wBOM?k9RZ{&<$8&V&nJo(GFGyqBc)NELIcfs@NG}uahdw_Ef)c72 zhi)K-%Rb;w*c)^dA{u;`z+1_ZUv!?^)f-F@vyjz&M&bObo6qP#h3aQ+Mym^*qrT_n z6%}F?WFHW~1b2LGj#}bos8kEYG1sqZ-3-RKeY?7vNrEGd+>z_lrEWe{B+A$*b#5l# zy;_q_pL#D3m2t6a)&+l%clbXVP1P8F z%zy#?Hx_`7R$}5E^U3T_GoQHgM1E%tZk5!tm|k6uY2$FUt4mIAJx&UC@Zztof8l4T zA8Rxqfa)?ha250PUq1~Fy8bnvz5eXV&-zrAyY1ijnd;Bp-pJ|<65_G{`2>VO`?3Ek zOh#3+q6zFyx1-+b8?PSj+!6dcmQJnU7p~oct+Mih@WE=3DSwQSJh+bKP!7t=3DN-a@KvN z6`H0tNMasGfOJV)NsO6dJZA_kplRlYq~|_qs~FevdsV`2alVAkhrv4B2PouVdG}mu z*~;MGGjhzb5c{t)RC3v+zPXPP&B`jP2#tHGG8t^2`#4kMH@B&6ITVtzDIuncFQI*g zmDOo@PK{7M00?G<_zFUCw@xh{Cu>K_-;MXo3Hn|{4!)@HZ)v1ypBv|->AU8J>#xA8&xI|- zSU7*mYN0xjdfb~7v*#Kn*0dXWh_iL=3DA_w9B*KXw>)_(1twO_lHckJ_PbW=3DQ2J`{s? z{n~xXhw&6jf%sD{8B5i`OrhLGgvv>8?H~h^+lxBBvRVxFw&c5P(+rz5)fa!=3DGvFH z<%=3D0y$}6y!D+bd$g8%f@_Ti3BC=3DYTE=3DwZ8++s(j>mPvMIDv*S(qV~7SZm`ihE7CZ& ze3%CyvIMAbaU+|^jhBiSoaa;F*AOWvKhnLH(@^*oINtScu!7b zC=3DEbpJobrAI^6z{jLdXL=3D~Z`1qY$9&7|i!a${^p_?%o1P%=3DYP+<(BRuJu3?LYXD8NP@axp1=3DXoaV57oVfvbbp;K3lLB z`yb_58zq6U;plyF3IW)`aVx6xh-AW!{77cf8QV~Nt60yuC$BfsrMcm+gy^*udPdwJ zsf}U+AMjmbhn+m}xeb3#$`Dl3qOcyJtjGz7G3!aMr*N=3DQI)>qB+u~5G zT6q}($uJjI158bnbQKDm^c?)h-nZ9AFr%DZ}s}wI}zpZkQt?~h>a*uNks{ADraU$~M2ANIv!54EQ8|SN?WUG7w z|F29wz&b&0o14XLYSW>r7Qv=3DTuzbSsaODx1V^LIRKDyLN^@gA9pD3_T9p@8#!l zeGbthj_>%;RmC?5(D)yAb0)8@@a=3DDg)o%6MS?MlRI%_QXUS6^B-dZW{f!yrqM~P zq%(ZHemIQHivdi5Fy!a#+Rgf}{3;3{F|!urWn_>K{%vGm|MM6Fn9gaIJ)M&c=3DO>D9 zwM49A7%Mm)sMLDE^N7nX7);3+WI`Ngu%~L~92O7ji$l}Lh$DIqMzE)+M0VW{QQ^ui z4H+5>@DMYrUr&@A9@#ZXs@&^b!zwe!$eYcnnqpmLxvla+^qHqhkzI!%D%>hHq^^>g z)l6HZE4yBSlNb+Vzbn$Z0L&sfZ2@Po2BzUOH{5*ZQ5x`=3DHpVzk+$yz=3D`6}VqLXYj4 zxu?K18mM~_9D)phhyKxDpK5TPK_bo~bZp%ZEs@{)@8t0bx3s|Xkq(wP-<0_L)Pl0M zMd#Y&YnVJ8p%kl*Eqj0I$%MR=3DN##hIj-wkj9lc(g2Ve2jWj4p@?&ssn{VNj!AXYa5%Hn#NBD?57&EZ`z2Vt#np`=3DM^oDG(cR96vpV zO@t_&2N6niz*Ia8kCwt*U{3BZ`$}d9?i(u7feo|#r$i4}y2-I4Y^;-Rn12o3YSLQ| zaB~1<^=3DCUXrJ-GEmN>zb`26$&G?#RfMBRCOQ84 zpOzZOm%T4^ljOZj7HSuj{Y}&DB_>JPpj$<{7dteq>Grh!6h!-kFAUut@_tyAD|D-9 zAl-OqssYDH8bJLt$;hO#SHi>1L74Qo-DO(?KiHO>b!?|OURB7#f=3D#J$1OczXM79fT z1_vso(m&_7U8xhC(HPG-(QiMzEgyDzoeD%=3DWzCnEM=3D_>6=3DNCQx!&{z3$*xmFcb7f- z3_p!ZD%A+oDV}@cM?6m|_WBXq2~YH;>8`%LCpsxlJW(g%P)=3D(uwvREBF=3DR#aTr$`?2&x}L2tuoi2a8hBzKc2+(`b7)6Bn2G0B0N!)lv&r zLbwtQ_cZR@-GqI3>kBc8Wdho<2)YRXxp%fTD8YITQx!-~{79mQ%g;p|5dUa&bt zzUxK>Sry=3DnNC_-{wV)#EEvqPj`wBbGX~r+U5%eGON93XRCRw>ME&nuk#rA!V{6pYL=3D}sTx-j1l|Q~9t4h%i(^#wG{FCJ0m0H4=3D&+`R`Y3asb zHFh$dzdDoy! zhlF;G6|TD`w2=3D?F>In(1Q)tCCOa^0Af!h>F3=3DJ7t3vkJ-zI2vm8ic@@g()1AqSaa~ zTj8O#lf)zH!E;F+C`uvCZH8?i@@Q@=3DRJQVCJEoI>UgHkSrlCv`6M`4$Zc-KNp| zvPG}A7rhXHAnM>3Sgqc?NUD&GIG2AQYTv?0bg9N3T0lH1 znoC74!#o$kyL7Br(F3dW-f-I88;1VE{o`~ZZ)K%g_jMu%>mJB)E9PF9-nq)-{xT)+ zMXM3c$be(FJd#dKdmt~Kw=3D(tL%NMu9hH>#-=3DZ4-Ta+X|xtm!RKt2CP-mAE_bK{y^3x4+^DR z2=3DERKrD9{O`z?_eilQwcU=3DqeQ)hq8Y4-DCGy}F~0&pc>B9V1Z3GXT)bhA|Tdx*onE zbhw^@F_9)R*{MOOH$R7Mp6ze|{Q09oS&XyNn$}(n3y39W2M!>}wzJ-qYLTQW2Tt|bI;HrQV9^8J9Ug!&7p)DG z9$4 z*dba3aU{7??}UEk=3D{-2_@DO^ndO-$1I*l9Cb`8?6wy&D=3DBu6219KF}qjur;$$hIh- zZf;Eo0U|vQZ~WHKc2C(*sX);=3Dx?q~txz|ksT>x%)$>oNb=3DYS>Jz!$ne%@f!guTsC0 z`@+Bl&pcwdK)ZrqjI_xHR-5x>^e>9m;|jx0Qwa3Ie)!mG6rAO6)@rvE&p})!?ku+H zokfp!VyC8XwTULP5a?lQ>Z^4P&(t(pMc@bM8llFA2pJ0ThnZF5X(GPn4Zz-11&kxG zsflCi4J|@2+k0?2gE0jrY>0D8Ggt?j@h#)R4L@eMv%a8ny$AzBGaB4&%hE2j<*)F^ z1b4mN#z>+P&9XcYtHLxuJE{8MLg`o?Llm|_^{!1|Xiu(Uf2R|4XisL@ZXmKld$v%^ zZjsQQ!IqWNM>OqkIvCjUTJ%tET-ZYV%W>VJ z&j2Elmx?I}Vi=3DWV1r_sg6BWJg)-84{Jqo?sIs zQYqTk$J-pX?;m0&%!_6>XCIrhPe&@{Z$t6R43?#*tGHcQM|a5wQSgFikjTlec{TG7ug* zB?%Ca?96_+4?;}k=3DygC>tAU*yDCnA9(Z#zu5ypli`sP&BrBiA)^OGC8usMfO&uspR z=3D@^&IUr8O88iYi{RttRgYKiQ+s6tIY(EskTuWW&qC|959xs z7ABnIKoia}xe)l`;&mOVrk-z!7=3DLZ}1s$*EMc6$t6?2~hd$-)@;BfOqk{NE>bz*kA z05ev_Mta(%A$7YXlFS=3D&*s4&sYZi{b(ALHk)*YC=3D`1kJbqZf}DNoMcK>~X9LA0g~X zghf=3D0d?`m;2y`Tw7T?{7L<(y??L~zi>0l0`rZ9ssT1y+LSiz`wAX{g+%2IK}rCDFD%;%FMyZB1^V*k`GB*`!)H_v=3DHV00 zvO>a;$YYTMtGIGY!8P0}C#BlHM@p@64siL# zGfeq+EwK@4s2S~|dPe`HrbJDX4)anL+@)iPv>-1`J3C=3D#t5&y^%Nh=3DX1~!+SVv5;` z7$Ox-r4>7)`*S|{{mCzX@OvCp2oELE84cG}MHw3eKDcfy5sCK0&jorKKyP878x4$G z$COzVX`I`oCLQhP0klcI`V{ZA#?k+Z!m^5%OthabTB zQI0{GiQvP|K_JyF)X#emDmn+*J3G`5k$sNxHt5G`lf&_fjW}`?uUU`aF=3Das$P38~Z z5l%of8F0cECua~w{1~3^W;B_KjinXqvp8Wq#FT{X@rL>d>gYcV^|QLtFzFR29`U`L zNusToSU_mpDhqI?0IYI~h2n0Au1_ZWZo?qU$UeR$V*JgPeT~=3D{#IXIP#QfQfVJnwY zgaBuUEuVp~FOlR^yyBVY;%7X;e`xcyJa}k$*2o1|xta$7=3Dm!6Bf%V{(;6J}O*$mzl zry9D9!`1@AeK|adfuX=3D?J9i3mJt52m8`U~QcZvtsCMwpJRXm}YYYZ}hxz-AEJ*zD* zGHNT<3UjR`bFC|_S)0XN@NETiA@Ywz^6`#VNXM^O=3D@H*jf;&_Cxwo>@+>vz&g) zw@H;chW=3DRwLW!8`D{0Hz^^LX9AzX>qLZ@TgjYcM{z*8rsin2e$84_khe#>$x;CiVu zG(F>g8Eq{$tA~vHCD*daiaqKF^&eW7OU|P7Xu~o#KR(E_ilU}Ofxqz=3DBJghvjW}0U zQ7`Jb--<54OjBnMAqkAaih^6nm1pN!Z35Y$Bi!W>i;VWzXP^#_L`PDHSQlvIFEOa0T0#TkB zVxseqXjy0T`7J!-EXE6T;mKJ7_m>v+3X+H#peoTbMeDXiyBcsC9%;Q~%q3 zqr?l3=3D9dShxWq$r)c|y0Lq3LTGrvsZmteEQ7&Tn}Gu{BxM@#xX=3DUAlkeJ0<1(Ty4* zIO?>hiAaK~>fd_Mm=3DmhhRbQ2DPK@7EQPkE$CZfTLn)J$`e?{;hVsfVVs2zM}nj zt5n;bCJrOS0NKv-zf`&R^80K;Bm6qT*|+CJjt^|0-w?tTx2VbTWl!q#)G2`tH6PKp zYHPEKewI}^_!`+SDP%fn7WrGoH;^hC4)@qMX98f1zo zS;`v)DXE=3DH>d^(*4-uCaM1@C~5bO2=3D_deI#h2Pm5UA$eG%r4Xge72M7^HCDJO&w+@h=3DiG-%NcW9HQj{xn0>^%9On}MhV4rXPQgNgyV-Mx@SX=3D8i{bnoKk%JL*et{Ygm1@^bF>j@`JpyQR_jC`Oebgh`c{ zQWTaj_$WMVo`bE~0RcFkAoS;@ioFZdp9ExGFI7pOdJnE>T3xw!f7 zPl~XhPc`->ux#^%2XU2#)A{}|FlhIce+Pnzr;2zypasoqhCgfwy@`V)2$|$}LnaYF z?!RCFW0_s0t~(A5!O?pgSIPa}(dfGlwF}Vc2&+QEpn>*#Pw|v|u)q*ZNMXV>S$JFD zzQIST5Am=3DH-D=3Dzk&CL(jj=3Dn${#;LwlYR6vonxE&gX|c7)BUjJx-^#$t){sH&i170? z{J7n4di}w+#I{Tg-txOkM{oUxeqLf^)u+qMl-KB+tLcqPA%vr9IvVX21ertO79RB1 z$0^T&=3DFb&kziki$H___its`idR1@BVdVxUy>AzxA;_ard%H8>xQLu)slD?5)Vgg)X03W75)Q1EkbAT2{Qw>PutW7;c-@D2(bCz?XG zH-kyI7VYhZf0{WEHE{~oQ#h{JBCuPq6+f&G|MN8m2JPd2dSgMX`}r#<}J0LJNoe?9U_{pFLE&-Mxqs3^@DB)feU z-?y+x7JOHK27C)X9^Xk8-;XPw_zDd0o!%W^Bd^sYE|f^$M?M3-b3pKqq30)vP`1A<#LRWB^vno>Z?8vyH5X?!xf2$Ke0If`6>VTg$*Ui z8NQXL^=3DnyqO!)ME4dLO@9XZj)oD2WFpwETx+>@L8?uCtbdJ#`ME^LnUhcPbl+PIf5 zY!3J3DWJ{;xgY#KvGv;PZ+O{+jq}zA{eUU}tux<{Ce95t=3Dq7$W;B6w61;`37u5+Zs#m$k2IoDjCpE}Vb zyj-FaG!}1RnAs25H6*0X_*eJU)MGh^E2wsSM4LwDBY)(4b^kVWb3@5Q96cMLBJxs> z7aqNBt5PFEqWeMl#m*Q=3DRtUEO87rDzoYMkzxx_?vP!s)1r~B_67V`g`JrG(8g4j;z zH_+P&oHo*lf>H*|gVu%8putEhIBg2YW-`iyj!d^+2Cqg~&Ywy6`3fy( z|BuBP3u6R_4MXXcj?U`W6znN_^W4e~Ge5u{A-1=3D!yRh@A-f$Pzy%nSd{UN5d7W@T| zwAjTphQ<~d8bzT|`|yyf!g4y>^_Ro~e5`8rdkmKvGBjeG-F!VaPx?`BQnnk@X`t>U z)I{^pXS}_mnZE4$j*w=3DqX3R}`de8MrY-OUeJ$tVD(1Lq=3D$H}%iPhuRxEM%?2IP5%D z4e~ZeL+a+pp6gA$Jk1$N&lbJvr+H15pL(x!OV_)bIizT_e!VR-GGZ_ zuXLhrTbHZ&BxWQpUXUv@_gP!N-XgtL9G2WI(gD~a#bRx*?ODBi#9LUu-H=3DXywS5_p;Bhsb%u*wv)fI4q zgI!7QL8dc%kmD_Whx%sW*L@Fi3k-}sTyMe=3DDKtxW--GM}F@Zfu-6eGMkQQJWZ1>AH za<|NxEb_|TBKu^w*zC!0=3DpIH?&f?IYVrLN?YInv4U}uchRNGs$!Gb+t9#wLJVu-m7 zqjtKbMk|=3Dq!?=3DofJk9RS-r}SJDWxHGZ^>5J(>~o>{GPfKY}OgR#d6*CvZKWKw%iYc z^vN$3TLswAy?w%72)PTk=3D&bL!3l^usZ2OoKO1r*vVh8pZIS_4B3U~UY{tAP+Kbju9 zSp0SSVI{^b@v#Lm6OxbrNnd^Dv9+qVI7Fn9np_G(S6Ew8gyZ0$=3DVH(3Sz_ zXR(rLJmz7;Ll@0GS7JJ8K9fwzcyxNX#k}hRGoqnsNCujpo!`k96f>{CEqR+HkskAz zW{Sq6v(7DMUcQB3FVb9qC)lbHBT}EZ4#QOwD+7O`09O$p_%xk8u^7+`bnMyva1O_C z9`siP=3DdEal#!m|YwB|}o@enk#LlgLrtFF-#y`D=3D`kFrRbH@>9vLrKZ#mROjXXuIG8I`I{Oc6zLi8epM3tH~j<|EBR(9HM6tMX`!*@yj< z>jfh;qDu9dWmzb@hqg$t1jOf(s(M<;>HgW&Kw>R;-6mSsDurHG@j>`x^o0SI!WHLafC3b7929fXCx zQS;zjRh8kv%wa36oNs{C2NQZ7Bs4wK-RSwT{C=3D_JcQ2RUf$=3D7bl^(eK{ue$Am)|xe ztMj^W`SqGS#)mVT%ctsZ-MM@mF{dmEl^=3D!6$DLxhyx;A_`;&6{Xl;ZLE-!JdBiUTO z7vVp^kVoP2Ed2%YsOa-u?K4N=3D_ldfAyR;UAsTRrL$ZU~3k}N(QTVfQqj4gb7rRGQu z(i`=3D2>Q$7K-2lcfkp^_7|Z&j|VK~QUq z`y<$p&^~S7gzeo=3DR|Bj;@@aRcF&r~EMY?Anps^f!3)0*@olJhQ*Is~pEQ8kZd_41_ z7w&l@g|CT%IHT<2MhEVp(E!}p#5wY1cL}cPJ^M4!dj&89bzhJmI+osdBjtlhN2WK- z5!mZ1fwhC-6EcBm43%f1O!K%Ok1oM^UvoEtzpCpw8o@2SV7AOz1wzu*^dj}o1ZT7S z$1eg0BnI#|K41cV#oPez1BqZXcpAS3{g0R9Z>q4dH~;d##@_tG|8#Nj0b>bS(-9v$ znh(LE$EWjeMPYovOg!x9U5Q_$%e^Co?%teh|CkQP%Vb4bb>2xQhc@*A{zfMeE$BtN zQO{$1#$kx)!HXl8B?jxasX5VfIquHXn8R;M9vEI${S$19ey$9yDZ_?haBrmwvq&5p zV>JsOz%X8-+YML$=3D%I@v*P0rp=3DR^;Vh*Tg3Lrqh)`t^y-#I66dx&)c{xAdz>!)=3DqPSgLLEJX3?h3K{2U(`eE?xalAz*Nf$-VWy1T5kkF9xIQyzL zC&a;?7{He*^*jm&G3c3Fvnf89nM~F|-9scd!7392_yK46@!_T#qq1j9VTfc{PZj=3D|AEP+@UDbgvV zFFVKkIdX;RFY?mGkx9akH_ODHm)(=3Dh$wm+6L+Tv{Q)cD&n#w1l7KC#_`~WoTchuj(tM1!6zMx4?$M9J}b|JIpBNXi8Qzfi08@fGzN%)M?S|g2R(#EZnIJ1;}32 z3n0WV8QfSITFYUHtG@W*KJ;H=3Dr+N{8q^v*O54Ju-gRZln>jm^m4Z6mH{tTczA{&-~ zOjW=3De#$xmKIw(cd%I*=3D`c+qwm8@8+O2LU}*Ba;pLr7x3t^6Apgs41K0||i>P3X5O zHCcl&d2%WMk1}-TNtkPya8|0+MG34uNPq1J>#u>-0G?g-tCUW#6CB2aZ4|lja$5w2 z=3DZMH)DWppMw|FAZK%JVH8lhoa&JcgDgEVksNk>T&5{&*`A zMa&zyeFLNA?5tFSbpt@?cJ-ZQ9-yqQiXJKtkJ9O58IdQ71Zoaoyk_)N(c;gaaK401@lmFldl4E$iK-#S27&+Usg zkWe@`P`49LWDr#tU`=3D`Iwt2!__tX|Jz$lsP5EvT%!BuJyoZUIobPnbuizm2h%FQFV z%C8ACM7s(s#ZbC1v`$7_yYk^R^aNip22qr_&m%MiuG0MBscGRoA(~(Ey7_Q3N{Xce}dPg)Q?aMJp1x7iiVgTzZ`-A z1PvgVuVsR7Q&!Nu2mJhHb~$wLiWZ!9`y9_gWNpcV-w~ABeuW#YsHuXII8V4xL zfAM57L~vKWi!m`CE24DX%-V-FBKCZW`TP{7hu3CLTJdWTxc~LUB7U$W~p;{4XQCC8QGvALf#N{06 z$$ADC?8wcr4MLnW$om$N_m`myI99gx>2Y4d@`MV_nrd}D zw*Rd{vw(AYu-VmMj$I)AaHbt!Rh`j8=3DR{8Clvs-hB&%_r`(}$e^d00Tdiy{E^j#m2554hXhHh17BCme+MCcgIax28S^DBHtm!TuGp~4pG5<=3DB` z3KexsZDiw-Skrh2{vHr&5XIy4r>A2SlIAkba<4D>|ed=3DE33 z8DMH>B0pAgq3A+s^-D0f^C8Sp-9M9G%QU|_=3Dc52;Pmf@n^$G#TzoYNM-WBW_2@7p2n^<|D$^QB^Q*gLzknFHdX2U5Rc`f2d(t9!n>Y{@p?Z$#rTWuh`4^( z%-6iY*UG?Ci6meCKla`Qu&V0HA3lKqmlzBxRja611Pp?JfCxU2KrTW{API^1YzRpp z!H~q{ULF<{dXq{Fw=3Dz>{v9%pLwXOe-|7vF($Es1Vj0VSAbZkpIOvT4ccf7PxO>1gn z`F_8(&c5f|M+iPTo$vb^IQyQn&)#dVz4lsbuf6u;932}A>vVLP^I4lN6Lc$eJ?q2MQhBU2^(SjF7%$gM(xF>PY-baSD>X}o zvy5!yEd(T_+ik92C+XU*L4x8~Yz2Nw%=3DkpQ(Kg+5O}BF)0ma&incVy-VBz(E2L#>; zOgAAGn?*oq!=3D2cxh?2_$VgMySXH&ikEwcs-MmV0?ZT<<-WVSD$Q;*LEx#^!25uVLT z;|;Cc_&F+HNosGKS}xtokf8gwB(Gnt*{(v7zk%lJe#!S563bz1io`OiJ;qO9L^~Ne z;S=3D;`YWTc(u`&iXB#JPqkPdSZAn-L#?aOYLW{v_Ok&#EuD9CZF=3Duwe?{3@-`HPV`TeISyxD-f8#dS}LVP6cgB&1gM75Cne6j0DTM zxshltKBngyBX&q}daNxUxr)v2e+QIhQ2LPh1)8^ZznBCMnGtwkFHS{~wNj9Z-)1e( zd)H`0gN?Y;jkwW9-0DUwmXon_Ca^Asp7}v>@O>8ko)K68=3DO73 zpFbuTay`n~gzKxgp2oGeGvrKqJmkEO`z848!u2Cu-$MNACqvHd#3}cK{blLjph1Hr zUv}=3D0Aw!4w{)PpH4;hk^gJ^kw!m=3Dkq&ew3QW|{7_2W7v8i+@?*BnO@qvA?nBNIf0j zW0P8YIZ5td3S+-OKd&mRdjGoHciaQmDKf$C0?TU-L%~Cf;t69I^Gkh7z@?ez<50RU zk_Wv%v2S6{oSjkD&r}rRqm$6LEK>wlg0AvxLa_(;0$p<8gEuhM-_49|e8_ub+rfXOI*N7S$5xf&zlunuZK;w$^n#V9 z(KuHAJRHMp-Ip=3D`>!B9mDB)BLoJD*uWM5&qh&+`%Hjd9_Wn<+Jl&(2H7J3+2_Li7y z^}8j-YgWX{pC~oATrV^L)F9P*7uF}b!1tqzl0%CWEw>L+i1*;M|5)fg*wb?E96P$L zHs3Dhdm22D7=3Dau%;T5W9w6iF`3-g^?u2f?cJ3}3SJ`RP1w#0A*tGhHRfDuy?O1PighV1fCG2Fn%$xX;Lb6Z@8aOL{0r@Bv<34Oy3UZ2q zX)PrcXem5q)4vEyD?Uln-oUgdK{pSZFC_}uZc~2~sk`xITJ2upQj1-VJX<;$qD$4A zx#8vUay>ov4r9agUmoqfGBQ1-*{HU#-0@;?2M0oHE(C(;AFoj!bUhpJ zE5aFblBP*gFVwGF4{yO69AVgpAD_6EL{3HAVf3v1NG!1BVPc@n0@orD3u;NS2AZ0; z{T~6>Csnia?z|T<@->00+^RcKGv)5~&|U52yHaY{fq@#M ztz~;?M|?&ym~HLl+ta{o2bgUD^RjstS{AuFigvW)yJS2Y6?J&&T4~+xJE3X1??8~) zMb-mkeRP3Jy#o=3D6W`T5#QZih*Qb8<6?)Y+FjSDtiVw*VnhvM5VfU^NhE5Dy@eq8~T z*VXZM0vHUjy9alj@-{Y2w?}&7?y%&)D;4lN77^>L>!u?%QIM2jU(q?_X8(?x{b6L+ z@qG9iq5gR8d{oazmpN%gg1B(-pR!z7s2!X0vDFc-3|Q1KKuug|*V<9uicO5zQHvJ=3D z^Ch$d_$q#Nyv&8`Zf1%VJz(0=3DyA;zU7Av~1#5{hr3wI0PCQ84@R3TM+XiG=3DY7Tv%s zZ8AsU`p%^jd%!O*Jn!*8P_OQvBJjxAJ9U#glOmqA*|%MgXn^i1TvwgkabtmN_fA6L zDu6Uen2SjPD}-q6p_qoeDSkyU}9 z_MKGO-=3DLq8Qzs*4@TRCQ7Mn!%`1eiFd~(>3`7&=3DY#=3D4WgJNZ^;#&mr7O#;B{b^#EJ zH8FQ~IkP-$`pVErwDIgZf8$(<)tZ6`r%vQ1wv%bt3AT;JO|g0BuyoGFF1)*-p5tfX zwfMcTKj=3D;Amh9^YUb`vJSRq}(F!k?eYRS9KZ*~8p`aVP}2 z$5f%m?fxoROC$sHXjIT6fTKl*=3DP8_0>K6Z9?Mrc;4oO6%y%pN%oJ4f8q7m6 z?C3Prs3|aGV_2ZY_W2>Ko9>rkKPk(QgJe(|hhauuD>?xG^9!HL=3Dzr$Ms00fdX(1S3 zMXB!QyeC6&HjDc}yauItx8H*iM2Gbn?0!kS2KV3xB^H~J?@D{%zI!Xv`R#1gpO)cj z^Fd)sMkmw<)AK0D`1Dwe)?A7C6?PJl2k7Ccy@n%kG40HqOxRGz($D|Dx#` z7eE|IVWPhm7%?8)x!%18+3taj$1kPaE<$(MY?tToXV+B6LR*EfpAxx?xLxbw>$I$g zAa!>XZQWM1CGW}dEz$QbjO5-C`rNkA)@MSWn;g%6CbV@jj_?wn)S8-D+YBlq@ydx=3D zYkmT`0p`D<%I-3^uTY@Z11L-YF|l5E&6BGT7n4)pFrTk(5OZ3QF!(Yscw4PNR=3Dxdq z=3Du=3D$}p82O+Q)gG&s*yC>$1mm0ONwWX8c!cEil=3D2N#0is#3~*N*R_ z9TIp@{4yl?LM4E}=3D_wDihm^&SAb&@UVYGWeyWVv2F?;=3Dnj-9-Lb8OVVhfp>4C&gyG zqG`ci;s^T}DjSPsBVCF4ll6XSiFy8Xf6H_`>8L9;KTS^eD`2)}GstWUcmzXpJj$G^ z_N&RW0N;i&$M+-DUHD~v#Cinifaky%^fz=3DIt%RVy`$EV$;m0AT6<26~$Z5jwjW33r z@wjfodnfS0{;~!QPRo!zMEq77pFM2HP{92q;7`V{y|<$zv3K~<4C=3DH87vs>lH$Nfk z1hAacyan?RCtz&FzN(|xBQ{EF_XAj%WWnztVSFB5{)sQKGb^`PM5)9K0~`+gk*J-C z&O)O11p+o6h~fFKkSM-hgV(T+$2nWT3$0U6z*EtYt*`PCJK^xr<=3D33kdC0=3Dn_nZJy z+_k&CEgLO{V+tf0+KGqh(aMQ2KHAApcKxc3^l0Ty0HHc5@$gbMseo%UxdER}#7BqE(8_z6GKUr4gVJ!Xg#)|as{SD>wbapp^0X0Vg-(N2aA4!&kaHgy{hWr^c}C2|nkIwq&IbTR~Y zU6|Exc_=3DpTE|hnO0MOd}RT{`$Uh8l16f18nHGKtIP3y|}Y^-QI`u$w^FJrx-z)u9hvpU%Atg=3DT>AB>)pBHv&rS3}yhq zcA&46FR1^EQqf!qeF3w$)I6d$i%gLgGM8O&Y$w%hDH=3Dqzc?^eM;K6kXO-~f|b4WSL zY_?^#qg}f19Y&RKz}$mm9Aw@lzx&O0`Q2?=3D<+sah!mkxzNUV^ajrbBi%Nih6pKjlI zkW}S4WaFd}^-zlTHbzG~8Bz!&CtERgfXT7{o{i2{+{uV&CquO27`7rok!kuVkY-ti z0vR3cWaxyi*8)*XAUYKK>r=3D6vi%Bl?-j!|(qxQG5gKsNjQ<>Ki@ei0)((%((hV$wZ z@%zmZ#K&(MfT{Nry9`Xt_-H3Xhx@cqMPPS@GX%(;9*fP8!fx~x_9{9h9W9ocP$GV} z*@yUnDD*sWNN*BGM>`pU(mw#tE0vVg8MSd20cFr|jE{CQboePEwk4scl%rmha`ZYP zb$bZ|QpaDkE_5vKoXBP7Pmmoj_!+UCW2J3gxWcwgmw64M5yy-b4VPl`u=3Dv^BSGmNgE6s~O3XhOvSd!W^q7s1KRI(#*5I4~1fC5&3^G9O z9yOyO*)q1or)gtthtX@{yr?soIZ#|Xm5L$u1|mz$4}B2N2ShVZ>y1Spa6uIXOes_Y zyWDq2ptzN599iMHCSZPnbU>xO?T~bg44v>P9WmaRuK{X%+itgk_)Ek(BnBtqbrd}e znjSz(eD6Rg!a>!eW&tTOfRH{xpy@2g=3Dx8UyWUcThll!#-Bch!Q!K=3D~Z&NEQEuKpC`M>t|NxKX~ik}5dVtiJB?A=3DW5^CSiQElc5uym#j&q)BN5=3D zq_|?ac9ir*_u{$OY*j`8lFwocD~SBE9K153HsE$Zd3ewf7yGH8x`YgBhv10N8 zhLSs1kSwIeawtnM#1Z|un?Jygi($II2%1|>f?D~CL1Czsc(~z$m~mO6R;Mx_hxQ3_ z^f#2am+hFL^J09olVP%Xeh<_8%yT|RI~nq1B};r;8nm=3D<%}AGPb}=3D`&hQHLJ(N4Jw zpIrNfIPEb0LI)z>I7@>?!S@e>?jo!Vm@_`w$uJr79Zc`ToX^othR4F(4lK4aH!$a~ zVlH>U{2>?f-=3DWRAe}#7gV!n;AGGNa5XeYyD%v+h>hdH04oeZ7uqO{U1&F!FO3v&Z=3D z{wn5j7tX8Q;$nUoFpp170E&$BOU?%H7-sP~I}hRvQkW1>RsL#KJDvh0mkn zQ6ppLLdvT7%;l6aRX8irTg69{II-AVinIxeh|>b-F@@~XQp`Tm$k%(-v)By17vrOy z3{iFL^>xg0=3DpH%^xuwi1gZ^y)T0%`%@QjXjGECV1TVwzsIHoH2Y61Z*`Kt<^clbt{ zP-FvHXXh-T$l}X9iWH+mOQ47Ebx|d%837o1tt|)#Ajt}rn}H;Zk9IOl8t>k~2sY!RoeZ6Dy+?K|tvWJpH%NvrWn!@qoeT>J;S5cZ3Z3twoeZ7u zcwx2`!fg4%Y_H7nnC*4AV7sql6AxhV6tcK{dEoTX)8OU6e#89L#W ziF#wJFeHsACwzgkd;oxM!f(X*XeUF;GErS9sGcsUZn?xGZ!4VV17JDBSI7!qA&if9 zGE5TIsZ8z{Rz^fS8R9F9=3D8H4Pgf6>YF6=3Dr|*!4|tr`5T?q1#kA6zBV*24wB2k~Sb| zpY)}D8fnQv?7FT-BfzBcmc3c`ude^wkTxS<5y4pqec0+Y7vsP3KAEDjlSjUJrGmWe zXF(@>bBx#J-I+W;igm9z+bVf3S|M){$XFNE0_nz z$v>NWPtS{eUpT!_-9BK%J{-ICtD{Ge2VN%RK@J}7h2zcp#vT1TWW?rC9&&~qfxXe! zPRE%TVI1uIMj$*F;mGjKa!d#lJHUhPCjh(>PJ!sYx!C>?KUpzg3C~Fh<%h8Mfu}(? zOH#?jPv&fWjk&fy2Ph!a!8p8;Kmhqhi0>+NP|h6gi(e*bB^$of(l?H|aJ)6DYO5k2 z^};d0eepar2bcma*4I58>QQJkRKI;QH1Bq`242Pjy*GY~nLi;FW@3RT^d0hdw*ePH z1F<8(DD>gSTT<~ps(H|SSZD(LEG_yYF3$&I-Tuxa?(-ex&+94`mT*!M;>FPD-3w_d zdDD<%^V&ifZ6sDLrg2nzIX|p`dCosdPmizZY|DRJ)*?Fi(W+KURd;ArUz2peYBj66 zORCx}OEiV7OuNtd8$=3DiN$>vNyh`&`3e`i5N2?C=3DE)TR3lM!JZXWJTXAPFbj!%F%Z9 zN_%K;N6}u+VjVL9&11q@@zatd+Wa2p-*%l)7?gyOU9Jz5j{MxcLEEoK{B@a#yb9KbleSm@LK5T2F zY6AUXd-=3Dm1p@)GdE3(LeF9CHFJw$cqm-kOXK9V9hp`OAO-MmItG~v-0lb!B+_u!Qzpm_SV|o1{|n354V>;&=3DGooJ7ExRejt!{`<2XH z^Z-=3DME-QCZm6L_i(jG|B9=3Dbn{?;_iJ!la?rR${Qx-3GqTl9!F{YU=3DwsLiZtiN74OB zT$9``_u7mE=3D_>kr@wFZR?*2dI&E%#L*4alVO?%NjeubNv7kAm#^YP-Yj-p-2+);jy zBHv%j-(~aqTK+C9qD0Gg=3DMl36QM8Zn>)IX1p=3D-CN>)P!d<=3DflKci_`cDoh!eYnz|B zwsjP318uv>s@gE9CuC->G)%l+T2fTr3btfl{5s_drb=3D|g3p6K^At&5Ol*wsc&L+(n z)SOJU&)I-DcHv$h7GD^j?_IOJ5}_aNfm!8H@l0bJ+cDn|S>zkySI_`rWzz9hOK z#1}Cbv+Tos&%*;dz76 zW!ZP3q)b?rvc7IES9Y(Q1b;Br+@qM&o`zxNo{KSYzGOD1z$AseyCk8cu=3Dk_DQ)+X=3D zGh}@^P7iQ*{~wZV#OBj45Ed7{-wbC2ejdXQTn@eF#d#i;xV#E=3D zh<}Q?=3Dfn61+qo;;+ZaDhG1zS}=3Dqe#G_M1m9mV$qap+CyM)Rtd@^6gUg|3c+68r(vk zkscy>t=3Dx%|Xi)AG1D_{%x|sjT&AYt|ZAH&Y&O{7ZL+9&|^c@iV>A#k(77uh!#kyor4Y^r>b zzhY!Q4z5|^i+qWZr>q%jX8R&L5osr&UIgM~s-WevCJcEPkvNN>LL5ZHCv7W#W6NfI0sbU}SB7s!cun}6?mYm)Eg0@f znD>PivJ&Poyh*`^ApcFqec{tYJc-%`DpB2>&4`~tShaH@cz9J}ewhFlZ%BcK>A|8S z=3DGRD2j9cX5+5$7;RMu&f$jA37w%E)7lEYt~sBC;J&=3D6Uk3YEk5I3ZOzBmE*$#TI8=3Db|FT34G5ECcw+tu980QNm}q@ z!oUJX=3D4ThX|yzx z%ZV}Pjbd^f+0Gix%(g|uXZxt%I6eV#jIQPS^;D@Nw;+gMl$bxF!%`_=3Dlkd3e-H<0&s5zWtWgC2@9G8rtyHRRtyR01be8z(|x%nh$VcwP9^_&Q->NdE(9B9{0$o5Qk? zd3ub+_0S5SNW17znJ5PKjM!L?@;-x}N%UKdf{D*b;v6gJSGjM4$^>SzG64qg7L9S5 z!b-iTWQD$CVVglvq&xcTSpA(3PGVIlEmEkQ@iaHD^>suj-Q^IW>+)J(L`=3Dr@@<-XR zx-yHSqVih5s42S4iBO*?JU%IYf#!h0LJLZh9x^YmS-Z?tP@4ETG%X2LX=3DK57 zgNJWk>m2A3#Th4Sh2Bj;7@N3`;*ZRCGtj_UE$?!RS!h?(%x_1ydDrN?+j*`OMpjUc z2eTG%qx(bnsU1BBUSj0C8$|3rbr5=3DkQEtrbjLBxqNH-?Jn77$u1l*V^#vEddJIb+Zjsvf# z8H-(Q(ak$9&bxgm0AYU{s+2!Ss?>)nff(R~qusv;+twPl+{eI%-ET1FkQ;M9V_ss+ z0XODLjM>eY{ccPvW4_0jE;pu`G50X$2{&d1V`wJSKJ3OUK}`I!D)Wi$ug{m5FAWxz zBxb;Ok%nY1g)IYv7wdyy5`f#Lq4}tJsz7&azLI4H*nJxpb_*2OK7cZ$W4bn|?1r?L zu#N6>3xAP<`ZNu-Oa|B(7|L?}M&vfY(r=3D?q?8iyUS?6WL|2o9Y_Fb z{3)`4PlM2YF&y+uH5Ds=3D8T-di6S&-fIaJyR-j zXXBU!DFz7x!-sbqJ>OY?Io$=3D$Rk*g};s{^=3DrJoQn2sky^bXjo4@}Jk0dir*j`ByBS zg8-atw#yB_lbiCNcvpVUL?PEEYt9e>Jvu`pMZxCo0HLZv46dQ zaro9t7^|rc%WA4#fD#V>J0Pd3qsPpjLXOsz8S6P96RVZA0C2^bBmC;*Q}s4&Z*ttK9=3DxtO8mmwCO2X(BhF6rh8OYCb@2SoH7#zn z7;vUc3il0_4bJ1kIcm}Fi*TGVrp<;z1D3x5emV#&z)vsZ$ERpo$1i^aR#LC_0W${q#AK zVQ?Y?qK?{Ka^qb*gGfvn`fuddUgHgO9ohuGQ)ukG)?tu9_80DMeY(}~>eZBuc}n&6|gWJM}>EXN13pXJM|^(EH%Uk>P{=3D9#w@ zEE8OZ1Y9c14G_iV0pFW@VKwq&zTp!|65wiH0L`G{22QfpOk%l|)xne52aiAj`>wOf8#u|&0y3KF( z9y9zSO&bha#KZ7W<=3DBSyXZ(-6G@wSWS&Miv$Z16db&N^{^bbHPe!04PSSCM_%rn@` zB=3DA4nKG+mHYWnWzdlz7}j=3DT^{{b)ej0#sNVzll<5%pYNW-hpqd^Zrh>5V5{0fd!mN zi2oHhiP%li_%Td#p5BXR&X{uMEFX!w8}kFCc2A@=3DzeejP(OAZlQ(3iA@L`geD_J@4 z+P`J<{(>+(BKzlsXCa&)zB=3D9@-#Ek6U9Kq6@$dfpjD1^PoxNob7HH;f%SnRNeJb=3DC z5Pl{ri-%zLnxBGaQdDmD+aMvJJ>!hif)ht0bRXcGM2nlLdk$sWCNIf~6^?}E)noIx z4nTg1eBBhRrAJ|PEUdg|`tD+oZwuO<2{ zL|f+LN#bd97N@QGj2`6LYc8^x3=3D2$kg<}2#Eo29CH6S*bAKx$um;)!vgD}4Ims}Z0 zG@inX#9|DPna3NPFcgUs#K4)qv-p+pSoyoy{Xm|>L9$$ohObU=3DTrmRN1ir=3D~@@0{+ zUqg_|ub%}JTdxE(e7CK)An%^1aXMf0wTaQEPo4N2%noczGc$n*X*U_a&xW`!8c>XX zOGCaQ4zjyUlg)QK^6@PCS4ZZx4#^?`Psc~o)mi#D3`%nN-M|`J zcO-1RTVkQT_6RJjIKoQknbO8o^?S{w1ZD*a?BillMl9T&nP%PhrN09Xhk=3DS@8;oo` zw_-0R9o@e5L1|$H`}#P%Pn?Pa$0CdfcFm<`f&vpLo1uSf8^JObx8+{*WoQz7_sJra z!WmenYAgE!?MPJi0rWEF#T;S(>v0Hw^tD`U>!cd!WS9%z`aD08zU1cPk)R}wyM57i z@298fDIr zdu|ZQHQ$7qM{8nn51li6%`!lWpUwUq{3yo?mzW>tdMJGn%oU$2spZH}NtR87I?$gZ zk9)MiS2YhF7pfg2#HDv;R53EWsny_a5nB`M=3D#G`!1u;|rHw;cV)bjJq}vRb z;>`QKW-YKLPqAAl05`F5e~g-1llwnu#~|);#C1P{fW(PxV1>tMq4m6fMDK+tIdYE=3D zpnHR^VQwAJ0Y!8IislIG$i0df5dv*6HFqA(?m_a^E@%L;zu|JaRJFd@>1F~;S2tc&=3Dn#j@=3DDPT3HNTI&D z*)Kq@NuEO_*;%Zy&dt(Vo0mXGCV>^49FBEuWL%Qk18AM%Q-6kR#rgsul6j!?O3Zpg z`M?=3D6x#pl!7hM((MSXx=3D%sGIcLKKzPd(AJ<5s)o%O_QdD(tz{x9;W5V@Za^N{T|ZV zG5I_+63LwGpj)h|@j_`R_QE|t&eI}!tz33)Uiv3laL1A9W)5PJ26XLnB6D!QA11Q~-veehfpGjf9$2tObF=3D}hAG62A z$Q!b*ENZgg5QFx;n8ztT!J~}PKbh?h2}G6)1!0PYTjqKPvJ2{B{RHGG{y3o*!&n7R zeTMfhgK;1vXUebyK4ZqMP)n}ItPdi~CG4Ky4Z7=3D5}(RW@~Zn zqij{4I6z^`kKx!pvnEmc3N5`3r2~mUtguiy|GzDj<5yxW2SBoyVgu#w3+NB9CuH5gH0Qe;$YMj09+d@C+1cU|X zVW+CTN;v3hp8zvZk@qSG#Yc^p>nps0((xKC9 zT?rvfC@xOGmLP%(gXR|Ww|tKU`ez-YVVQzg?xDi%G8aQosk_W#NEd$}MyZ5&q8}n$ zJ$bFKpw_ir!pFU)6D+~xZEo@};iX^Gd>+p}H9a@H0SCi!lP!+GH*@c23&HuYLQcG| z9AX)57?2Wd&Zb0oF2B^{W?AwHQZham?n{QLjlC{{qk&-ebr24weFfGjltj?O5Z_;r z^>HDH%$m(ia~UY%#~6nPCL7*yRG`<~rJ&BFUZSr|7W@VAA<%P3CJN&2p@8Vq z$HJY^57Gh|{mUao63rn1bmi$Myp@c96n6K^Q}i&HUwR%h8AT=3D9=3D3LZ7d<+M^t#l^d z&m&SRTFREUCM0aew2IoX=3D+DtEe*B|{Cwbnf8(<;QI~C&UH77g*^H3%q$YQqx$1g9V zn#lYzN8ofAaeYPIFI>SS&Ig1o4?)A4V)F_N3T4Y7pbyyc>-d4J^_YJ~`&fD|O2J3I z`2?Soe$XY$lSQg1$cugx%E7|o3@PmU=3D%MTkZ@v7{LxBO_j~w9r3hp3Vk+*YC#~vSw zw)}BhK&T8567M}O{|N{g~zRU2STmm=3DM}$+ zXZJ&Dwb_U?O;97k>+(H$@_Mh?jznO7^7;|ng4d70tf3vnIoTfhJ|T9(^>oPh3Hbp; zVA|I{FPCfMdteH+m%ynA;pl5$7Olz zv(Yg;9Y{<|f*vKDuL$)$OLTybth%=3D3(*0s6fE{e0py4ZyA5%JA?vWQ;~JQ0heF>nJBO{>^$@n70()K^ zz2^_3qp#wa7JfT3dg#ard&rsiII(bQ>h&6_7mXA@9h)UJ3aUw3t@l}U3l!2`%b&f%uKEc6^gn_>y+_NR{up7)q%@>o zaxT&;C5B>@$OUcXXTSvisQ`KM0e zBtJgoe;g-0pD+11Q7lOj^A?_l##*_xZDypK(sfp#=3DcQQ(B4+{hCh<%h6}VB-ECVA$bId=3DA#*A;|ba zbCuXd*b3f<^I#v#m-Apc=3DfY3`HUqO1` z<5T`emtNj`mtOt|p_e~G=3D;eu~qwI=3D7v}btwU-P26~ zVGJZr5%%&Q#DpLA#tZSR?_AbgACAiRqc_dEt2>P*~^W;qBkI$(Y#Zd%|$dVlKtGw3+`AZRS0? zZRU$m9`{E`oB1Q8&HNG4W^P3EQioEnJ@=3D95zQGy$RN+T78&6L#jUX$?j?+&1Ocm~< zy@N?@`Hs2Sdk&4>(>vM+ z-Dhtm_xA||P`=3DF%WxEfW+1l5d#P=3DTX#U4$CA3bdAKSl74Ky|aUJ>5gNM3%K+y@dey zO(uYak6Qm0iXEC3YFKdH7j$t+;K~Yn^g@oOG)JO5+PTMBp4yQ6wh$k!a>n}7EKaSj zr5EWDIL3Pz#rx<*I2Qcj1LcP~d93`jo%_R2%I84v81*}0p!^uKr{<3yhJD@R&S0>M zo|$QyzHauNZ91I-U*0V{Nz!Ay92 z5qu&6SbH(yuiSQeA>I(;z*NC%NTJGFe$o2Y)l>*D@<5=3DYSUGdV{jjdM_i)~J&%~l5 z8!>L{!G=3D}YwL`PVQnNU4^d&5Pm9GQR8ktCM2%Q^)p+>2bdd=3DgQwgQ>rF*GB(p?EG4 zBY^_XplQWT>T_qPe6f82O+2fghX0d}%w2aA`-u#sEz6e*a2e8HmaJU~}8a?7~DLvl#Lo)u; zhxy@s0_a)nsTg+(>#FMxj>CM4P0qx$sQ=3D{l*(Is zfc0m>2l3q$bQDx^Sz%h)gRwwR$lqgLCk3|oDml`O?5C2~3|Ps}LpV`jrb>Pl^*^pk zX0B0^eRB@K1JgS=3DjB{KA=3D5H~vi^^efX}}D{3!W3k!@ywVyPT46nfVw6@T|SU!SsiB zn8Kigj}J|v<^WHsP}%wl21uaIVPjvbLo;QkM9U=3DJ|54d zFbaK{o=3D*9Otcviu7OR|p4q-}G&Iu2!s~>uOny{DpA%{!Wdku!IXiN^L5{g0O$L(LN z4w!~C&mt*hw%0tz^$ifJ(;!HhhOOPZ-GtvjLQAckk_puMCSRi8qZ8?)4NplS8NgZ! zjWoBt0n|9TYkk!2IQiLB3Zc%>J{%_xG)fhEobKw!A9F6dH!H7oB8MeVm`_T?;Jnr| z7$N#NEZYHk%s;`(m5;D1Z~O}Nru!nV^*@C?AhFIs!_YmF75-$r5qe#y;a#k0Mh=3DwjXakO{2bARgU431=3DN) zT@b97qhXo1DGywBlKXB(9G|PDl10Z<2)I7+q&{-{qi3C$Wj#*cvjrHWlKuLjhwZ=3DS z5|Z_sxa3m(HVXW0>5^+^%WBz#6wSA90_Gh1CP6XohwL?%p!gJu!Dj9=3DSElkMb{VFi z;ME6>M84u66aHmn7tfVGLR0u3;mGno!ja`Yx{fSgggUbP5#q@5M~EZKA0f&`BK)0! zwU;jL9? zfmEHMx{2PBv z2Vm(T{z~eX*`eH9;jig4pTh&{E^twge5w8zA;oA8s)e;_@_|&VFuc{387W>pzbnDE zm**dpxk_?G_LZbRN;wbU%q))Edb7B|BVZ=3DV!(i^{R=3D?>`#DZU0Je)f7QW(gq59tAj zBT0`%0kiDaVj`#DNB(m0Nl70?`fZ^!(xs&zD|q8e6T0L@=3DRK7A=3DBbQjCeZ}&M4y4+ zzl8?@8J~4Vff~dbo*|JB^eh_!gRpW5zWeB_nBsv;RvOqRH!5xZ{-|GmarLLd+&w94 z%#ia~pei!2e!%EKKR^7vpC1NA#!J0}Qg0l2n~Q@h2n803xdx2fA2+bRt}Bn41#5=3Dj zID@=3Dm$d40iFyV)0U{qiHH4-sJyK4QYZjj(i(1@GRNU2AvWyHAL-}sLm6{L89UbQsV*~oQYzYGr=3D1MqH z!ch{QF5zeigA$IFFkiw+5>AzHhJ>>uyj;S$5*A9hP{PF$7E4$r;WZN8AmIuLt0kI90+K63&wFatY^3SSaB_2^ULPEMb|1*GPDSgexShmataBdI_5( z3`@8{!c7uxk+4<5Z4z#maEF9@=3DqiE+Vu4MyKDXFw;}!QOkd0N zSEQ$ZqkEP=3D{UM}Z&h$M?k$yyK`UKvGk!}jp1xk_bzkcK5O?=3DG(U;Umyx?xOL#&n%X z$A12=3De}ARGUn%fc3jCDj19baBaf% z1zcap^$4zKa2>?;CazvwL$4X;jKVb**X6j%aMj{khieP2?YMT~`Yx_VaqY$R5-x-5 zZCrz{9p;>hYYeU#xaQ(2#RxW10-AzV-6O8whkQQ!n;&vSNfpXW49E_CkwdZ9D&$UHAu!8~W~ zZ{|6NYC}%2vcQXX@0zcAe+h5l#Nj7+ou(_%9=3DKLHRZhLr=3D(IRBe4X?>8SnU)kGEl` z87V5AwNB7E7azV1I!l~#XEFXwkTexZIV*6cU!%aSa&Ah3ktuh+a{=3DHsI@Kt_zOQh~ zQ11E84bD`A6Qq>GyZYqVhi zKMNPz56(r0?(+whEpYC`buX@6xOU(QH8(dlUm9Fnv$nB$W3aNmzOkw@T-VreX>es_ zwT)hh*qegkjZHO^vF^ZG)Ud9yzOLGrI@nToOU3sl^eq~Et1R`2cjsh!P>^g zoBZilRo2x zv{dSBYY@a2mNo%?J|r#u-FRobl)VIb)*n|HDxu`hRD3T)y&E9InmF6|POW!Exrsn^k^5ZZ4!^q9TP(g8U{?gLY^5U{ZOP2%-LuH}) zWud}LgO#hoHO-<}RmJC@2M%PbQz|CspkoPE*Mw`T!eG&GE#kuvoyw-B`a10;g6o?b z!!^NhqwOgaU`<1HuyIwewx+TvxH7V8RZX)f?Ee*b3?w*cvi|X0S+fc~?#D?m7h+4e zvN@cIX5^s%HTVoby9)6CV)O&^oliq@%baVWli4FILN8eXja?vpL!szqKToI2jp|ju zep&^)#;3YOus*sTCsbA973kNk9`dw~h*iY)q0O)g@tJIt)zZ=3DxfYaiv!#!=3D) z@xCY3eYVWwv31EO^D0wDYpWU~=3D!Fxy;ds&vAa2sa99!v#${S%d0ec zvI^a7lG>aUY>BMo&^9=3D3!=3D!Y*juAG-)u~w$1KouBuaYr&YPw^Bc0N0KaxD8>LPy!3*c)IKjfoaOI`J%g43M365*Y0S{e(_8|?L zL4!s-s}F=3D@QtNe4dU@8X9T$-|#!a4f4T^UPt-0rV1nO%lZ)$zaLH7(&_LuBnrn3NbTRi~st88$<(u0e9MbCrRZIt)_Vm1FIu1TWMHZ`GlF zDPN7!<{aPAOJe2K>bm5&mm`Jk+mRJ?;>e{A8kQW%QHDP~ErCoU8~8oMj+ut^)U(U+ zy99LhU{P`hf~{ULJ976djl#;cm8;RCtAVM5(%QPJ+5v~A;Az@HNjxo?8XCj4yz$40c(Z8jpLb=3D_6I6b?!_p7ybt%-RWlNXf0D<&aOP zZ&;?i*AnT2w=3Dto>J{lGbj4_2=3DB z+pAJ|D*4%MKf1*yS22y?{1eM< zf#%|`+TxsxQkm&5J@cuyqdh>5y#fEmNDEH{oQs@kxKD?ut=3D09)6bRG?j&?G`4wdEPFG`N((T{q?Jf3%8#Eeq)DnwS&S5JjY~PE zQrV|8+B7;FR^j%TI#yE3kShJBA}^)BtwoD_RHDD0b0_`HwoOJ|ZGAYtpiD83wzIYx z@5g|L*kb&n9M&UkBicpN=3DZj>rm96a;L<;uetC7d*wI<W=3DR(BgBUbO4 z+*H$rHyrSbho{Gnneeo{<)Acb3)acDfo*ZAMxx%S@HoOG$JIcxlmZsJCKo#|h2>k- zi2cz=3D-)cX^x>NS4L3y7l9rhjdA7{ssWyij~9$Mf=3D&`8U-RC1&TX@Hd38fbg10~Bw( zvI-Pozm*zm<-S7RkiYE+hdGk@%C;%_uTE%ni?lcUfbnT@mM(UTUM;j=3DiJY9FV~*sQ z^z@a`K{~dm1$51k9H)6WUTaE}Z*4L=3D>&QN*41Ei|B{Q8F@?`U|Rcu{SC7%*WzE_Kw zRUXYX)68n@*b|2yZW~;t1$g zkEi+0MEnb)pH^E~TOtVWP91bfGg5JO*8b(ApP)V4f`80ITZ8YZVQ87NPo;#=3D4hTzo z(>89xKT@6}6xNMWt@7|GP_hj7YmtXKL~ZXNppg4Ge&8rW=3D}R2e14fGrNA(6bAxZfy6z1buD*CC7j!EdPIsQvLH8+wpiMg*^*7!*Z9Ue?yYw zeHe(DWYhMH+Q!zhNynDG88y{(_jekkdzyQn+5`Uot<9&PZTjDtAxo&dY( zqGQnMFR2rcjkk`sLM}IIucNx>Qq+fk>3ZRVa3#5}!Ez6PFxyPXM@#_)RZ{U(_eK`%=3DP`S1ySXJ4;nY5KP z!Roq}ruxc_m`ua+m*sU0vp2YSS-+Im{*~w*)w)%FO&=3D$6w4mND%OQ4LME>%|sMSbC zp9uZl8v&KRRUKz7mtJ@_%CYvi#l!QD(c7I|O8@xih~C0t)s(Mkk#Lr+#kETM_wycq zX_>L|>}z^!)S^`D%yB{+nwo1`TCg&G;1;oT_+agk$wvF=3DZ8CZCWKd51u>N)#m_I&_ z_86#?eW07q6MTnBAUPT~5E7Ch4*M2{xDD}2u}dp&YgfL~`p zd)pLzLm%}GNzf-FM*V*3E8t8OcWBVJs-78oAT$+y;PeTQ#+m(LeDAG0_GU$G|GP@O zk-BcjySLE&@M-s^&jJ#TU3rjNmbWrN`!~)$(MQHVd#|fDv^>Uf4F^3f{PX;m-r5ev zv+vRwYP<8nftJu!@my1%N{M7xn%fUClV)6iHc{=3Dt71NMGA7;z(jw?-+BB;xyH&j>O zu&yfH*jV3k16J8otgNrTp{1sNRmFx`GZ}G1OLNr?)hkywH-&Y23GFrpemVMUg9ynx zH{ouT^t0q9+ZRv+a`%PmMV9FKemFv6+n)b)2eN5=3DO^v#57)tPB^}rF72|gyX3v(&yg26|Ip3)( z@hs0Be}1mQD*~*m@eAIX-yAMnxw^Ebsj)eHX>eJ%nX8P@g0iY9*w`GjI}xgCE1N5^ z3cR_6OLsIOWl{B-r)N3iR_Xe|)HlffW(I7v*^qhOk3p@J>V-lFdUq|=3DX~`@Tm{!hI zqj+;P?E5I?i@*c^nPiU0$d8qfbIv4k2aftFlObyFmbqV>>iQN3ssZb$o<6UJ>=3DUhT zB)#wIk4{CX4QE(6icF`|pQk?}-w#~>V`0Ynr@sGi^|uz#|5V*=3DJ9z!D3Agf z!2{E+zZxmec%>YhUY^dUj#t}{dj`q-Yr$#bahD#i{Y(GSwH#8ff5$&xQwYwqGcEMd zB+u3KU)BeaIq*Y#{t|N;|8sLaTuos4tO0#Sau2pl ztP$D)c09ZU{Kk1CY6v@uSC0cZv;Xw!mtY!d^BVNt3g_6q28vbmbI!%nwxPC~44kY^q(_E&i~S@=3D z1)R_I_L6g4yHesRamP_FeT(eLIZMm&FlT!CREf8qt;cm@glh5N9*0`7$GNkC>$SKC zX^D8+SWC`*b1cF??@8@2&Fdc@=3D(?`-RU;Fm6wcanT?G9?td(6;!j&WqVv%sw6?=3DE9 zn=3DO{KWocL1v3X-+EW?owYpHtI8{=3Dr-#oDh$nd!D{RaMIstW$Z}f(vK4zZcD1Of%0Z zU$SUEwxj@4|Gs%0nWU}-Bc`ONuKKbV4%GHGJ?GeU&70Rk)=3Do^v+NMo^wrkf~R)w+kP(~W`IdfHluBx%{>`Fp!gr;jvy)}mV<|2|1wBxE6uA|hp z%x{R)*Sms>uR09nX8V!O;GxdYK_jz6q0kWiT|5=3Ds$IQW5#n%iAIG0SFy1W=3D?H3Wll z#Ajed?F#%k&W5H9_zNI~gA+9P4b%Ys@zKHlwhTwVY_BSj z8tzD;jjWy{Z+(NVtFx;t^O2gf7)r%VT%c{hKDSAFUR{gBIei=3D zjx=3DFc9#R)zyi!$Jk4;|9b(JfzeS%xrxC6m1r>_f3R9!<|xDH#mZ;@OnWiXE)C~zo% zs|i~gu)DP~*n(Xk_1M@@jcpfl5<;++87ifiN+8hE!fkncJvkU$vl(s1 ztpSd!%KAycjg66DOKoGM9=3DmlaTX3cVmhQJSMw+W?n43>hq-td=3D1i;Wk#+ zaPa2hwGrFo>g$8DNnq6~Zk1tiH%CC8@J5RZJZ_PC?0;V!Y-~a+k#GWMvNVzGJCKca zOdncSEY&4M;#|{QzcJWSxei$>tC~rk%HXOr z1N`H!|5DzpRHh`^5{!4gbG{HE!AN3glqDxY8q|4Z4QnUt!|FiJ-6$WIA~)pY!ZJ@l z7U;PdLG05GUWko9j+LXL#_9+-e+gXHi8$-SmP#Pd)mIn7e_+>Nd3(6nSNhl41fBC> z!?IVVokMHZ=3DBHnVwh&i!(Raf$HvAU+WLS?Q5K|6)V6_i>??%KWd$YN=3Di)#piuvPtb z2Z^RMPS7#fPy-IPn>sDM-HO@vsHqIPjbb&0t3SY1HO=3DHi?1B;gPcR}HB2k7cZX4I4 z{|I_cP}jOiOcTQTY6Q4G-g2Fsg6e9Zh%Hr9WlAAunVhDA_{4E6c3%})#R{>l1hI6*SUS)8nSleDf?w{oBi za8X!po47Eb4V?L|mbE%ocH>dCQbPQiH37p4wGRm1ZU4#wX9cc>xJKjZyL*9CH=3DW+c z+M8-xnq04=3D?o;~zrrx3-Rd)%|>ZJY6(L)nx!`12R@2$0iC}%CtKmk<>TEHZtm#JQA z#Mvu55RqniWpe|X!SOq8?FhSnzbU<@4x~NR)9E-xb?gipSA~OD*HP;S=3DTDp%EUZ}> zSsh$lx3ami8OuPA!!Nm1O$8|ix+#+%@_76Oe@<@!_foQ29OB zOX_bj4S%7HHo)OdVz0J*o=3DT^GU83OP{{) zHR#iI_j+oa4vbhoS_oX5%`uqnETo6tNyKy1z*TP+cS{kQkNCELf9$hO$M}5YQ=3Db5L zRO-%gyOLf{@8T{k@63WiJaO)Xd%bk$Bj@dOj89y(96!z$yG$k7I9o1iaU!n# zOMmmhuq6zoBg^ABn0}O-P%>9#I>)#k1%~IGkUQeUypboJe9EX#oO;^npFHEt(Py1~PVn3@=3DZzgV{`~w2 z7fhUV;p8b(FPb)e#>F!)nKk>;%PzlS&Xscu=3DFKk*Ex2moqECH#anX{c#U-W7%F3@^ ze$BPlU4O%kpQ%_;xw5LdX4UH2x-~b|uWe{-y1BU}99g%1!^T@ayJ_>Sx1pUWVcwn=3D zs{=3DTT!q(9@br`A4!97p((=3D|{vXg{{*M(6spm>a=3DQ>wPfOXUsj_@KH;lKIOTY^qr_L zGg*qb#>LL%e%y6Zd(UeBKWCj%OS1Zr_2y~~`bVt>qz~6?PxZ!T_A&A#I9-WH9#GGg z`o4nF&I7~tJdrImVR003Adt#a#9=3DYUqST4hj#gKu^ODu7nck>=3DwQ#tno_}gjG=3DKxV zc?R;S?s?VKy59V;?mhLtXRA%YW%YP^isW5(y8BhvCbJc6pW&x?>VEIbknRcw_)E8c z?7B*>w@k)Dy?#2Mft|?chwYq)f2V*yRdUT(US|AkzpAqA$IF|)RlI01YT3LS<6MTT z|9aa#hda}_yAbu3FjKw#-cG`{bzcOIruT!qsnjNxtUXuv&_l}dGqt;yjxogEEUu2ynJ24Hey|{PVt_e)GL;c*O1zEoF+DB=3Dj@u~Ei z2fa)QQ2KG*)CJJzwvM{1j=3DRWpt~>%;N8zxBdVWO^?`(^xO!#wCYWn9_<+S^ruu!tuudrsnT^tBxOcNy`;8!q%&kWuaEYt?CA;R_-fk~ z$UU>i-!7@Sj<+tU`Hr_X6_Y1@fOh%c!e`@?tc~ljQ|(6Kl#8$`jr-QDt-?7j+K<{| z^jY(ne-#OSOzy?G$CN#ZYG|uLsFhRoTe5CSmz2~NNySO~O^$jf_xuYra8jpOCphr@ z=3D}_sC&|-Ld3u*mhkM`QS4On;yKU8wMa9wqn^JKJx7Sy-!C`tY z(1gd8mb6+n!j7qN$77jhzp2H&e#lx<)0~SzZT@kNo3pw0l!N4FweAT+ZDqBol1HqT zHg-LL1B&R%06R9oOfU{Yp-t&QqMlccZ@r)jCm+}}pibpldih``9fMb!CH|US)kzmU?#1 znta0A`RDOTBepOt4doZFZM`v-mO7g8pZ+Ki>83nNPJKjpv~*cJ+(S zoN?}~|MSR>RXaOc>7PG&t`lW46(4Fro%2s#Ymhv4CH*yTD(!4;zV}WnV|wpNd6IlY z4a!j=3D*8q{HxUPp!Jc+?i54*mHt>%ZDDv|lekmNdO%sO{XMRjxCIx0er=3D4w$QTc5ro z{&`RR%Z_)3m99!=3DkH;N3b}c&LaJ`dyY`ysxk2j~GZB@tl)2Ua|AERleLx-~N+UD$` zct)51xjx}bWsCIZyYlD1IVu0miTqn0y~;U&YaO`pSaOm2Ua4hq((xO)$+ih~g07bF7NRgS^nyYu*V~ z^ipt7AXma@�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 K9QaSjfqw%w5I}YS diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FCE.exe b/Platform/Intel/Vlv2= TbltDevicePkg/FCE.exe deleted file mode 100644 index 18300115d08320c40843a8c6ff69e37db83d6a5e..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632832 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 Lg&0HZ;^N+JO)$Bh-Vbe3wO*Oqd{UaiQ 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 - Variable, - L"SetupRecovery", - &gEfiSetupVariableGuid, - NULL, - &VariableSize, - SystemConfiguration - ); - ASSERT_EFI_ERROR (Status); - } =20 - return Status; + if (EFI_ERROR (Status)) { + return Status; + } + if (VariableSize !=3D sizeof(SYSTEM_CONFIGURATION)) { + // + // The setup variable is corrupted + // + return EFI_NOT_FOUND; + } + return EFI_SUCCESS; } =20 EFI_STATUS @@ -856,7 +852,21 @@ PlatformEarlyInitEntry ( // // Get setup variable. This can only be done after BootMode is updated // - GetSetupVariable (PeiServices, &SystemConfiguration); + Status =3D GetSetupVariable (PeiServices, &SystemConfiguration); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "PlatformEarlyInitEntry: Setup Variable does not e= xist.\n")); + DEBUG ((DEBUG_INFO, "PlatformEarlyInitEntry: Set PcdNvStoreDefaultId t= o STANDARD\n")); + // + // Set the default NV store to STANDARD defaults + // + PcdSet16S (PcdSetNvStoreDefaultId, 0x0000); + + // + // Get setup variable. Must succeed at this point. + // + Status =3D GetSetupVariable (PeiServices, &SystemConfiguration); + ASSERT_EFI_ERROR (Status); + } =20 CheckOsSelection(PeiServices, &SystemConfiguration); =20 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitP= ei.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.i= nf index 8350cf47b7..9ddeaf53f4 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf @@ -102,6 +102,8 @@ [Pcd.common] [Pcd] gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable gPlatformModuleTokenSpaceGuid.PcdBootState + gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId + gPlatformModuleTokenSpaceGuid.PcdSetup =20 [Depex] gEfiPeiReadOnlyVariable2PpiGuid AND gPeiCachePpiGuid diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec b/Platform/In= tel/Vlv2TbltDevicePkg/PlatformPkg.dec index 970d2db42a..8745a5b2ab 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec @@ -168,6 +168,18 @@ [PcdsDynamic,PcdsDynamicEx] # @Prompt Boot State Flag gPlatformModuleTokenSpaceGuid.PcdBootState|TRUE|BOOLEAN|0x80000004 =20 +[PcdsFixedAtBuild,PcdsPatchableInModule,PcdsDynamic,PcdsDynamicEx] + gPlatformModuleTokenSpaceGuid.PcdSetup|{0}|SYSTEM_CONFIGURATION|0x800000= 05 { + + Include/Guid/SetupVariable.h + + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + BoardModulePkg/BoardModulePkg.dec + Vlv2TbltDevicePkg/PlatformPkg.dec + Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec + } + # #device firmware update support # diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/In= tel/Vlv2TbltDevicePkg/PlatformPkg.fdf index dd4550dd88..c59973cbe9 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf @@ -18,21 +18,23 @@ [Defines] DEFINE FLASH_REGION_VLVMICROCODE_SIZE =3D 0x000400= 00 DEFINE FLASH_REGION_VLVMICROCODE_BASE =3D 0xFFC000= 00 =20 -DEFINE FLASH_REGION_VPD_OFFSET =3D 0x004400= 00 -DEFINE FLASH_REGION_VPD_SIZE =3D 0x0003E0= 00 +DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET =3D 0x004400= 00 +DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE =3D 0x0003E0= 00 =20 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET =3D 0x0047E0= 00 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE =3D 0x000020= 00 =20 - DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET =3D 0x004800= 00 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE =3D 0x000400= 00 =20 DEFINE FLASH_REGION_FVMAIN_OFFSET =3D 0x005100= 00 DEFINE FLASH_REGION_FVMAIN_SIZE =3D 0x002100= 00 =20 -DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007200= 00 -DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000700= 00 +DEFINE FLASH_REGION_VPD_OFFSET =3D 0x007200= 00 +DEFINE FLASH_REGION_VPD_SIZE =3D 0x000100= 00 + +DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007300= 00 +DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000600= 00 =20 DEFINE FLASH_REGION_FV_RECOVERY_OFFSET =3D 0x007900= 00 DEFINE FLASH_REGION_FV_RECOVERY_SIZE =3D 0x000700= 00 @@ -99,7 +101,7 @@ [FD.Vlv] $(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE) gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleToke= nSpaceGuid.PcdFlashMicroCodeSize FV =3D MICROCODE_FV -$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE) +$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIA= BLE_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageVariableSize #NV_VARIABLE_STORE DATA =3D { @@ -166,6 +168,10 @@ [FD.Vlv] gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpace= Guid.PcdFlashFvMainSize FV =3D FVMAIN_COMPACT =20 +$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE) +gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress +FILE =3D $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-= 468E-850A-24F7A8D38E08.bin + # # FV Recovery#2 # @@ -742,7 +748,7 @@ [Rule.Common.SEC] [Rule.Common.SEC.BINARY] FILE SEC =3D $(NAMED_GUID) RELOCS_STRIPPED { PE32 PE32 Align =3D 8 |.efi - RAW BIN Align =3D 16 |.com + RAW BIN Align =3D 16 |.com } =20 [Rule.Common.PEI_CORE] diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Platform= /Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf index b6e8e40582..c59973cbe9 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf @@ -18,21 +18,23 @@ [Defines] DEFINE FLASH_REGION_VLVMICROCODE_SIZE =3D 0x000400= 00 DEFINE FLASH_REGION_VLVMICROCODE_BASE =3D 0xFFC000= 00 =20 -DEFINE FLASH_REGION_VPD_OFFSET =3D 0x004400= 00 -DEFINE FLASH_REGION_VPD_SIZE =3D 0x0003E0= 00 +DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET =3D 0x004400= 00 +DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE =3D 0x0003E0= 00 =20 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET =3D 0x0047E0= 00 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE =3D 0x000020= 00 =20 - DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET =3D 0x004800= 00 DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE =3D 0x000400= 00 =20 DEFINE FLASH_REGION_FVMAIN_OFFSET =3D 0x005100= 00 DEFINE FLASH_REGION_FVMAIN_SIZE =3D 0x002100= 00 =20 -DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007200= 00 -DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000700= 00 +DEFINE FLASH_REGION_VPD_OFFSET =3D 0x007200= 00 +DEFINE FLASH_REGION_VPD_SIZE =3D 0x000100= 00 + +DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007300= 00 +DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000600= 00 =20 DEFINE FLASH_REGION_FV_RECOVERY_OFFSET =3D 0x007900= 00 DEFINE FLASH_REGION_FV_RECOVERY_SIZE =3D 0x000700= 00 @@ -92,24 +94,72 @@ [FD.Vlv] 0x0000|0x1000 FILE=3DVlv2TbltDevicePkg/Stitch/IFWIHeader/IFWI_HEADER.bin =20 -# + # # CPU Microcodes # =20 $(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE) gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleToke= nSpaceGuid.PcdFlashMicroCodeSize FV =3D MICROCODE_FV -$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE) +$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIA= BLE_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageVariableSize -FILE =3D Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin +#NV_VARIABLE_STORE +DATA =3D { + ## This is the EFI_FIRMWARE_VOLUME_HEADER + # ZeroVector [] + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + # FileSystemGuid: gEfiSystemNvDataFvGuid =3D + # { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0= x4F, 0x50 }} + 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C, + 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50, + # FvLength: 0x80000 + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + #Signature "_FVH" #Attributes + 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00, + #HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision + 0x48, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x00, 0x02, + #Blockmap[0]: 7 Blocks * 0x10000 Bytes / Block + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + #Blockmap[1]: End + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ## This is the VARIABLE_STORE_HEADER +!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE + #Signature: gEfiAuthenticatedVariableGuid =3D + # { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0= x77, 0x92 }} + 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43, + 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92, +!else + #Signature: gEfiVariableGuid =3D + # { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0= xfe, 0x7d }} + 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41, + 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d, +!endif + #Size: 0x3E000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariable= Size) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) =3D 0x03DFB8 + # This can speed up the Variable Dispatch a bit. + 0xB8, 0xDF, 0x03, 0x00, + #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32 + 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +} + =20 $(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET)|$(FLASH_REGION_N= VSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModu= lePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize -FILE =3D Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin +#NV_FTW_WORKING +DATA =3D { + # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature =3D gEdkiiWorkingBl= ockSignatureGuid =3D + # { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0= x1b, 0x95 }} + 0x2B, 0x29, 0x58, 0x9E, 0x68, 0x7C, 0x7D, 0x49, + 0xA0, 0xCE, 0x65, 0x0, 0xFD, 0x9F, 0x1B, 0x95, + + # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Res= erved + 0xE2, 0x33, 0xF2, 0x3, 0xFE, 0xFF, 0xFF, 0xFF, + # WriteQueueSize: UINT64 #Size: 0x2000 - 0x20 (FTW_WORKING_HEADER) =3D 0= x1FE0 + 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +} =20 $(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET)|$(FLASH_REGION_NVS= TORAGE_SUBREGION_NV_FTW_SPARE_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize -FILE =3D Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin =20 # # Main Block @@ -118,6 +168,10 @@ [FD.Vlv] gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpace= Guid.PcdFlashFvMainSize FV =3D FVMAIN_COMPACT =20 +$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE) +gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress +FILE =3D $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-= 468E-850A-24F7A8D38E08.bin + # # FV Recovery#2 # @@ -223,7 +277,10 @@ [FV.FVRECOVERY2] READ_LOCK_STATUS =3D TRUE FvNameGuid =3D B73FE497-B92E-416e-8326-45AD0D270092 =20 + + INF Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf + INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchSmbusArpDisabled.inf INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/VlvInitPeim.inf INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchInitPeim.inf diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc index 0f9651cfba..43b340fdee 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc @@ -22,6 +22,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT + VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -51,6 +52,10 @@ [Defines] [SkuIds] 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. =20 +[DefaultStores] + 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. + 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. + ##########################################################################= ###### # # Library Class section - list of all Library Classes needed by this Platf= orm. @@ -720,6 +725,15 @@ [PcdsDynamicExDefault.X64.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 +[PcdsDynamicExVpd.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* + +[PcdsDynamicExHii.common.DEFAULT.STANDARD] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + +[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + [Components.IA32] =20 Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf @@ -772,7 +786,7 @@ [Components.IA32] SecurityPkg/Tcg/TcgPei/TcgPei.inf { PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf -} + } !endif =20 Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf { diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Platf= orm/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc index 257bba7485..76146c7e19 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc @@ -22,6 +22,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT + VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -53,6 +54,10 @@ [Defines] [SkuIds] 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. =20 +[DefaultStores] + 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. + 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. + ##########################################################################= ###### # # Library Class section - list of all Library Classes needed by this Platf= orm. @@ -722,6 +727,15 @@ [PcdsDynamicExDefault.X64.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 +[PcdsDynamicExVpd.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* + +[PcdsDynamicExHii.common.DEFAULT.STANDARD] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + +[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + [Components.IA32] =20 Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf @@ -1239,8 +1253,6 @@ [BuildOptions] DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D !endif =20 - - !if $(PCIESC_ENABLE) =3D=3D TRUE DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -DPCIESC_SUPPORT=3D1 !else diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc index 23e296d432..9c36a660f8 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc @@ -22,6 +22,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT + VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -51,6 +52,10 @@ [Defines] [SkuIds] 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. =20 +[DefaultStores] + 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. + 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. + ##########################################################################= ###### # # Library Class section - list of all Library Classes needed by this Platf= orm. @@ -720,6 +725,15 @@ [PcdsDynamicExDefault.X64.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 +[PcdsDynamicExVpd.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* + +[PcdsDynamicExHii.common.DEFAULT.STANDARD] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + +[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + [Components.IA32] =20 Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf @@ -772,7 +786,7 @@ [Components.IA32] SecurityPkg/Tcg/TcgPei/TcgPei.inf { PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf -} + } !endif =20 Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf { @@ -1224,8 +1238,6 @@ [BuildOptions] DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D !endif =20 - - !if $(PCIESC_ENABLE) =3D=3D TRUE DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D /DPCIESC_SUPPORT=3D1 !else diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform= /Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc index e0fd767dea..ec90d0851d 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc @@ -22,6 +22,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT + VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -53,6 +54,10 @@ [Defines] [SkuIds] 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. =20 +[DefaultStores] + 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. + 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. + ##########################################################################= ###### # # Library Class section - list of all Library Classes needed by this Platf= orm. @@ -722,6 +727,15 @@ [PcdsDynamicExDefault.X64.DEFAULT] gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 +[PcdsDynamicExVpd.common.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* + +[PcdsDynamicExHii.common.DEFAULT.STANDARD] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + +[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] + !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc + [Components.IA32] =20 Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc b/P= latform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc new file mode 100644 index 0000000000..eff13c9607 --- /dev/null +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc @@ -0,0 +1,130 @@ +#/** @file +# Platform Setup Default Settings +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +#**/ + + gPlatformModuleTokenSpaceGuid.PcdSetup|L"Setup"|gEfiSetupVariableGuid|0x= 00|{0x00}|NV,BS + gPlatformModuleTokenSpaceGuid.PcdSetup.ACPIMemDbg|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.AlsEnable|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaDs|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaPme|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaVCiEnable|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.BootDisplayDevice|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.BootNetwork|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.CfioPnpSettings|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.CriticalThermalTripPoint|0xc8 + gPlatformModuleTokenSpaceGuid.PcdSetup.DisableActiveTripPoints|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.DisableCodec262|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.ENDBG2|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.ETpm|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.EhciPllCfgEnable|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.EnableClockSpreadSpec|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.EnableDigitalThermalSensor|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.ExISupport|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.FastBoot|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.GOPBrightnessLevel|0x5 + gPlatformModuleTokenSpaceGuid.PcdSetup.GOPEnable|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.GTTSize|0x2 + gPlatformModuleTokenSpaceGuid.PcdSetup.GpioWakeCapability|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.HdmiCodec|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Hpet|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Hsic0|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.I2CTouchAd|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.ISPDevSel|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.ISPEn|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[0]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[1]|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[2]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[3]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdApertureSize|0x2 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdDvmt50PreAlloc|0x2 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdDvmt50TotalAlloc|0x2 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdFlatPanel|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdLcdIBia|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.IgdLcdIGmchBlc|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.Igd|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Lan|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LidStatus|0x2 + gPlatformModuleTokenSpaceGuid.PcdSetup.LmMemSize|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LogBootTime|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpeAudioReportedByDSDT|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.Lpe|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssDma0Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssDma1Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart0Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart0FlowControlEnabled|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart1Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart1FlowControlEnabled|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssI2C5Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssI2C6Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPciModeEnabled|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPwm0Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPwm1Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdCardDDR50Enabled|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdCardSDR25Enabled|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdcardEnabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdioEnabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSpiEnabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45DDR50Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45HS200Enabled|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45RetuneTimerValue|0x8 + gPlatformModuleTokenSpaceGuid.PcdSetup.MeasuredBootEnable|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.MmioSize|0x4 + gPlatformModuleTokenSpaceGuid.PcdSetup.PDMConfig|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PanelScaling|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTc1Value|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTc2Value|0x5 + gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveThermalTripPoint|0xb4 + gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTspValue|0x32 + gPlatformModuleTokenSpaceGuid.PcdSetup.PavpMode|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchAzalia|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchEhciDebug|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchFSAOn|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsb20|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsb30Mode|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbOtg|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPerPortCtl|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[0]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[1]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[2]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[3]|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbRmh|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbVbusOn|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcieDynamicGating|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[0]|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[1]|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[2]|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[3]|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PcuUart1|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.PnpSettings|0x3 + gPlatformModuleTokenSpaceGuid.PcdSetup.PrimaryVideoAdaptor|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.PunitBIOSConfig|0x3 + gPlatformModuleTokenSpaceGuid.PcdSetup.QuietBoot|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.RtcBattery|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.SAR1|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Sata0HotPlugCap|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Sata1HotPlugCap|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.SataTestMode|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.SataType|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.Sata|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.SdCardRemovable|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.SecureBoot|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.SecureErase|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.SlpLanLowDc|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.SpiRwProtect|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.StateAfterG3|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.TristateLpc|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.UartInterface|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.UsbAutoMode|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.UsbXhciLpmSupport|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.UsbXhciSupport|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.UtsEnable|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.WakeOnLanS5|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.WittEnable|0x0 + gPlatformModuleTokenSpaceGuid.PcdSetup.eMMCBootMode|0x1 + gPlatformModuleTokenSpaceGuid.PcdSetup.fTPM|0x0 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetu= pDxe.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe= .c index 0bfa3e7cf4..e7eb3f6e6a 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c @@ -1,13 +1,9 @@ /** @file =20 - Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.
- = =20 + Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent =20 - = =20 - -Module Name: - **/ =20 #include "PlatformSetupDxe.h" @@ -621,8 +617,6 @@ SystemConfigCallback ( ); } =20 - FreePool (FakeNvData); - DataSize =3D sizeof(OsSelection); Status =3D gRT->GetVariable( L"OsSelection", @@ -643,6 +637,8 @@ SystemConfigCallback ( ); } =20 + FreePool (FakeNvData); + // // Reset system // diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr b/Pl= atform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr index 77976322de..872816658f 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr @@ -1,16 +1,13 @@ // +// Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.
// -// -// Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.
-// = =20 // SPDX-License-Identifier: BSD-2-Clause-Patent +// =20 -// = =20 -// -// +#include +#include #include "Configuration.h" #include "PlatformSetupDxeStrDefs.h" -#include "Guid/SetupVariable.h" =20 formset guid =3D SYSTEM_CONFIGURATION_GUID, @@ -20,7 +17,11 @@ formset subclass =3D 0, =20 =20 - varstore SYSTEM_CONFIGURATION, name =3D Setup, guid =3D SYSTEM_CONFIGURA= TION_GUID; + efivarstore SYSTEM_CONFIGURATION, + attribute =3D EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLAT= ILE, + name =3D Setup, + guid =3D SYSTEM_CONFIGURATION_GUID; + form formid =3D ROOT_FORM_ID, title =3D STRING_TOKEN(STR_SYSTEM_SETUP_TITLE); =20 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.= bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin deleted file mode 100644 index 7145947da44cf9920d9c5933187dc96540ecd5ad..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262144 zcmeIuF#!Mo0K%aDspoA6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA Wz<>b*1`HT5V8DO@0|pEj_<;c*e>=3Dqh diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorkin= g.bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin deleted file mode 100644 index dcb92498b93463a07d6dd695cf30ae9320414671..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuu?;{_6hP6R7(<~Jr73J+0f`|PLyL*bAV$#hh$$53R<}M?+0OkiHtW`f0uR>?&48dcu)1GOZ!foY3SNNeSF*P-N&y# ztBBP-y}K{1m>(6zo~0|(Q}c#wMDyemXWJ%BX}wT)YkStrXo{9- zj@tCQCDoUu@3vSOjj=3DG6r%fR+umZVUIoEP^n#7!;5yQIPWuKlJv*6T>rjZlspPbHL z%XQyf%dX^sJ!7I1AV6TS2$b{xG&W(Z8WnMOcGc!bvuc_TZW;Id!N58a z^8506n3h7OW&n7sE2FzR)4gOz?2K*2 zc)zNYn8L3PDY^e|#VHy5A2pUhQDG^z9y~ z)%1>?$qX-45^7(GY&M&pSeja)B|m=3DtR{^~!pYPDymZ|*G`0Z)>omrTuLd5_8 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/= Vlv2TbltDevicePkg/bld_vlv.bat index 99c1068663..e804ed37e3 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat +++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat @@ -229,7 +229,7 @@ if "%GenReport%"=3D=3D"TRUE" ( ::********************************************************************** =20 echo BOARD_ID =3D MNW2MAX > %BUILD_PATH%/BiosId.env -echo BOARD_REV =3D 1 >> %BUILD_PATH%/BiosId.env +echo BOARD_REV =3D W >> %BUILD_PATH%/BiosId.env if "%Arch%"=3D=3D"IA32" ( echo BOARD_EXT =3D I32 >> %BUILD_PATH%/BiosId.env ) @@ -259,24 +259,11 @@ call build %Build_Flags% =20 if %ERRORLEVEL% NEQ 0 goto BldFail =20 +copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM + ::********************************************************************** -:: Post Build processing and cleanup +:: Build Capsules ::********************************************************************** - -echo Running fce... - -pushd %PLATFORM_PACKAGE% -:: Extract Hii data from build and store in HiiDefaultData.txt -%PLATFORM_PACKAGE%\fce read -i %BUILD_PATH%\FV\Vlv.fd > %BUILD_PATH%\FV\Hi= iDefaultData.txt - -:: save changes to VlvXXX.fd -%PLATFORM_PACKAGE%\fce update -i %BUILD_PATH%\FV\Vlv.fd -s %BUILD_PATH%\FV= \HiiDefaultData.txt -o %BUILD_PATH%\FV\Vlv.ROM -popd - -if %ERRORLEVEL% NEQ 0 goto BldFail -::echo FD successfully updated with default Hii values. - -@REM build capsule here if "%Arch%"=3D=3D"X64" ( echo Invoking EDK2 build for capsules... echo build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/V= lv2TbltDevicePkg/bld_vlv.sh index 0d1ea60ac6..8d96152285 100755 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh +++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh @@ -189,7 +189,7 @@ fi ##********************************************************************** =20 echo BOARD_ID =3D MNW2MAX > $BUILD_PATH/BiosId.env -echo BOARD_REV =3D 1 >> $BUILD_PATH/BiosId.env +echo BOARD_REV =3D L >> $BUILD_PATH/BiosId.env if [ $Arch =3D=3D "IA32" ]; then echo BOARD_EXT =3D I32 >> $BUILD_PATH/BiosId.env fi @@ -214,11 +214,6 @@ echo "Invoking EDK2 build..." echo build $Build_Flags build $Build_Flags =20 -##********************************************************************** -## Post Build processing and cleanup -##********************************************************************** -echo Skip "Running fce..." - cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM =20 ##********************************************************************** --=20 2.21.0.windows.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 (#43981): https://edk2.groups.io/g/devel/message/43981 Mute This Topic: https://groups.io/mt/32520522/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 00:08:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+43982+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43982+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563490823; cv=none; d=zoho.com; s=zohoarc; b=ZGDvgu/4E+cQGKKPne3NftX7HsiXMeZqi9hEywdhlH5WMdQ2v+ok6dzaqrQt+R+uUjHgk9y1lj287cpSu4ZN3iCN+0FZkyy00BMkTETr0Wz348KHrZCuvKzxW/D7Hj7vNq8L8XbnEfIsCe8SLyao8kd2Rl7omaUd0CU7S2mWsfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563490823; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=ZWslXYPLcBa+Fgi2rJ/JpkmuLogFuefRAuFm1WD7tl4=; b=V/0R3TAm7Hd6PtocgdRp87zWNk2r29CRgjINcyu4jSNjW5m2/JKPV59S+g65IQjdYOP7RRMWiuSi3hzumUgU8mdWE/GU8RdUdSraOoYoRT2avux6dY1SPXkvGF2wOps9vHHoiKqJEqDgSYWtDpNY1R9D22p+a4+/ci/1yhWpLv8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43982+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 15634908237243.0659047956388576; Thu, 18 Jul 2019 16:00:23 -0700 (PDT) Return-Path: X-Received: from mga14.intel.com (mga14.intel.com []) by groups.io with SMTP; Thu, 18 Jul 2019 16:00:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 16:00:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,279,1559545200"; d="scan'208";a="367511709" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 16:00:20 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-devel] [edk2-platforms Patch 3/5] Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files Date: Thu, 18 Jul 2019 16:00:15 -0700 Message-Id: <20190718230017.14852-4-michael.d.kinney@intel.com> In-Reply-To: <20190718230017.14852-1-michael.d.kinney@intel.com> References: <20190718230017.14852-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,michael.d.kinney@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563490822; bh=FxI58EYoST1DnyZ0ThA9YNHloaomHDv4EO5/wnHYhoc=; h=Cc:Date:From:Reply-To:Subject:To; b=ED8X6z8kHi/Jjxqnldph2yHQnZrvF8+OgYXLVHiZ6UJV90L30kZqjvr2ROBF0dkZZkq s/NdoGMDyWIxyzaF4P1EAu2CBNmm/absgI8zBDuJe8ZCkZVNw/42b0MB10xiKDpEbkOYW gSlO4wVCF0JoRIMN/1w4drzsml2aksdO7bE= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" * Consolidate DSC/FDF files to remove Linux/GCC specific ones. Since the FCE tool is no longer required, the FDF files for building under all supported Host OS environments are now the same. * Update the IA32 and X64 build output directories to use a consistent naming convention. * Make small adjustment to FV layout so everything still fits when SOURCE_DEBUG_ENABLE is TRUE. * Remove unused directories that are not referenced by any DSC/FDF files. Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney --- .../SystemFirmwareDescriptor.aslc | 83 -- .../SystemFirmwareDescriptor.inf | 40 - .../SystemFirmwareDescriptorPei.c | 60 - .../SystemFirmwareUpdateConfig.ini | 66 - .../SystemFirmwareUpdateConfigGcc.ini | 66 - .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 6 +- .../Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf | 52 - ...CapsuleGcc.dsc =3D> PlatformCapsuleIA32.dsc} | 7 +- ...formCapsule.dsc =3D> PlatformCapsuleX64.dsc} | 4 +- .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 8 +- .../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 971 ------------ .../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 1286 ---------------- .../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1301 ----------------- .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 60 +- .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 62 +- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 20 +- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 24 +- 17 files changed, 89 insertions(+), 4027 deletions(-) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/System= FirmwareDescriptor/SystemFirmwareDescriptor.aslc delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/System= FirmwareDescriptor/SystemFirmwareDescriptor.inf delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/System= FirmwareDescriptor/SystemFirmwareDescriptorPei.c delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/System= FirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/System= FirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf rename Platform/Intel/Vlv2TbltDevicePkg/{PlatformCapsuleGcc.dsc =3D> Platf= ormCapsuleIA32.dsc} (90%) rename Platform/Intel/Vlv2TbltDevicePkg/{PlatformCapsule.dsc =3D> Platform= CapsuleX64.dsc} (91%) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwar= eDescriptor/SystemFirmwareDescriptor.aslc b/Platform/Intel/Vlv2TbltDevicePk= g/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc deleted file mode 100644 index 884da36b97..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescri= ptor/SystemFirmwareDescriptor.aslc +++ /dev/null @@ -1,83 +0,0 @@ -/** @file - System Firmware descriptor. - - Copyright (c) 2016, Intel Corporation. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include -#include -#include - -#define PACKAGE_VERSION 0xFFFFFFFF -#define PACKAGE_VERSION_STRING L"Unknown" - -#define CURRENT_FIRMWARE_VERSION 0x00000002 -#define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002" -#define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001 - -#define IMAGE_ID SIGNATURE_64('V', 'L', 'V', '2= ', '_', '_', 'F', 'd') -#define IMAGE_ID_STRING L"Vlv2Fd" - -// PcdSystemFmpCapsuleImageTypeIdGuid -#define IMAGE_TYPE_ID_GUID { 0x4096267b, 0xda0a, 0x42eb, = { 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4 } } - -typedef struct { - EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor; - // real string data - CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_S= TRING)/sizeof(CHAR16)]; - CHAR16 VersionNameStr[sizeof(CURRENT_FI= RMWARE_VERSION_STRING)/sizeof(CHAR16)]; - CHAR16 PackageVersionNameStr[sizeof(PAC= KAGE_VERSION_STRING)/sizeof(CHAR16)]; -} IMAGE_DESCRIPTOR; - -IMAGE_DESCRIPTOR mImageDescriptor =3D -{ - { - EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE, - sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR), - sizeof(IMAGE_DESCRIPTOR), - PACKAGE_VERSION, // PackageVersi= on - OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersi= onName - 1, // ImageIndex; - {0x0}, // Reserved - IMAGE_TYPE_ID_GUID, // ImageTypeId; - IMAGE_ID, // ImageId; - OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName; - CURRENT_FIRMWARE_VERSION, // Version; - OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName; - {0x0}, // Reserved2 - FixedPcdGet32(PcdFlashAreaSize), // Size; - IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | - IMAGE_ATTRIBUTE_RESET_REQUIRED | - IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | - IMAGE_ATTRIBUTE_IN_USE, // AttributesSu= pported; - IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | - IMAGE_ATTRIBUTE_RESET_REQUIRED | - IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | - IMAGE_ATTRIBUTE_IN_USE, // AttributesSe= tting; - 0x0, // Compatibilit= ies; - LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSuppor= tedImageVersion; - 0x00000000, // LastAttemptV= ersion; - 0, // LastAttemptS= tatus; - {0x0}, // Reserved3 - 0, // HardwareInst= ance; - }, - // real string data - {IMAGE_ID_STRING}, - {CURRENT_FIRMWARE_VERSION_STRING}, - {PACKAGE_VERSION_STRING}, -}; - - -VOID* -ReferenceAcpiTable ( - VOID - ) -{ - // - // Reference the table being generated to prevent the optimizer from - // removing the data structure from the executable - // - return (VOID*)&mImageDescriptor; -} diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwar= eDescriptor/SystemFirmwareDescriptor.inf b/Platform/Intel/Vlv2TbltDevicePkg= /Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf deleted file mode 100644 index dd85c86d95..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescri= ptor/SystemFirmwareDescriptor.inf +++ /dev/null @@ -1,40 +0,0 @@ -## @file -# System Firmware descriptor. -# -# Copyright (c) 2016, Intel Corporation. All rights reserved.
-# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D SystemFirmwareDescriptor - FILE_GUID =3D 90B2B846-CA6D-4D6E-A8D3-C140A8E110AC - MODULE_TYPE =3D PEIM - VERSION_STRING =3D 1.0 - ENTRY_POINT =3D SystemFirmwareDescriptorPeimEntry - -[Sources] - SystemFirmwareDescriptorPei.c - SystemFirmwareDescriptor.aslc - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - SignedCapsulePkg/SignedCapsulePkg.dec - Vlv2TbltDevicePkg/PlatformPkg.dec - -[LibraryClasses] - PcdLib - PeiServicesLib - DebugLib - PeimEntryPoint - -[FixedPcd] - gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize - -[Pcd] - gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor - -[Depex] - TRUE diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwar= eDescriptor/SystemFirmwareDescriptorPei.c b/Platform/Intel/Vlv2TbltDevicePk= g/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c deleted file mode 100644 index d21ee52184..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescri= ptor/SystemFirmwareDescriptorPei.c +++ /dev/null @@ -1,60 +0,0 @@ -/** @file - System Firmware descriptor producer. - - Copyright (c) 2016, Intel Corporation. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include -#include -#include -#include -#include -#include - -/** - Entrypoint for SystemFirmwareDescriptor PEIM. - - @param[in] FileHandle Handle of the file being invoked. - @param[in] PeiServices Describes the list of possible PEI Services. - - @retval EFI_SUCCESS PPI successfully installed. -**/ -EFI_STATUS -EFIAPI -SystemFirmwareDescriptorPeimEntry ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -{ - EFI_STATUS Status; - EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR *Descriptor; - UINTN Size; - UINTN Index; - UINT32 AuthenticationStatus; - - // - // Search RAW section. - // - Index =3D 0; - while (TRUE) { - Status =3D PeiServicesFfsFindSectionData3(EFI_SECTION_RAW, Index, File= Handle, (VOID **)&Descriptor, &AuthenticationStatus); - if (EFI_ERROR(Status)) { - // Should not happen, must something wrong in FDF. - ASSERT(FALSE); - return EFI_NOT_FOUND; - } - if (Descriptor->Signature =3D=3D EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTO= R_SIGNATURE) { - break; - } - Index++; - } - - DEBUG((DEBUG_INFO, "EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR size - 0x%x\n= ", Descriptor->Length)); - - Size =3D Descriptor->Length; - PcdSetPtrS (PcdEdkiiSystemFirmwareImageDescriptor, &Size, Descriptor); - - return EFI_SUCCESS; -} diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwar= eUpdateConfig/SystemFirmwareUpdateConfig.ini b/Platform/Intel/Vlv2TbltDevic= ePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.= ini deleted file mode 100644 index 126cd123b1..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdate= Config/SystemFirmwareUpdateConfig.ini +++ /dev/null @@ -1,66 +0,0 @@ -## @file -# -# Copyright (c) 2016, Intel Corporation. All rights reserved.
-# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Head] -NumOfUpdate =3D 6 -NumOfRecovery =3D 1 -Update0 =3D Vlv2FvMicrocode -Update1 =3D Vlv2FvBinary -Update2 =3D Vlv2FvMain -Update3 =3D Vlv2FvRecovery2 -Update4 =3D Vlv2FvRecovery -Update5 =3D Vlv2FvNvRam -Recovery0 =3D Vlv2FvMain - -[Vlv2FvMicrocode] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00000000 # Base address offset on flash -Length =3D 0x00040000 # Length -ImageOffset =3D 0x00000000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvNvRam] -FirmwareType =3D 1 # NvRam -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00040000 # Base address offset on flash -Length =3D 0x00080000 # Length -ImageOffset =3D 0x00040000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvBinary] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x000C0000 # Base address offset on flash -Length =3D 0x00050000 # Length -ImageOffset =3D 0x000C0000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvMain] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00110000 # Base address offset on flash -Length =3D 0x00210000 # Length -ImageOffset =3D 0x00110000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvRecovery2] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00320000 # Base address offset on flash -Length =3D 0x00070000 # Length -ImageOffset =3D 0x00320000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvRecovery] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00390000 # Base address offset on flash -Length =3D 0x00070000 # Length -ImageOffset =3D 0x00390000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwar= eUpdateConfig/SystemFirmwareUpdateConfigGcc.ini b/Platform/Intel/Vlv2TbltDe= vicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConf= igGcc.ini deleted file mode 100644 index e22f136f8e..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdate= Config/SystemFirmwareUpdateConfigGcc.ini +++ /dev/null @@ -1,66 +0,0 @@ -## @file -# -# Copyright (c) 2016, Intel Corporation. All rights reserved.
-# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Head] -NumOfUpdate =3D 6 -NumOfRecovery =3D 1 -Update0 =3D Vlv2FvMicrocode -Update1 =3D Vlv2FvBinary -Update2 =3D Vlv2FvMain -Update3 =3D Vlv2FvRecovery2 -Update4 =3D Vlv2FvRecovery -Update5 =3D Vlv2FvNvRam -Recovery0 =3D Vlv2FvMain - -[Vlv2FvMicrocode] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00000000 # Base address offset on flash -Length =3D 0x00040000 # Length -ImageOffset =3D 0x00000000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvNvRam] -FirmwareType =3D 1 # NvRam -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00040000 # Base address offset on flash -Length =3D 0x00080000 # Length -ImageOffset =3D 0x00040000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvBinary] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x000C0000 # Base address offset on flash -Length =3D 0x00050000 # Length -ImageOffset =3D 0x000C0000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvMain] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00110000 # Base address offset on flash -Length =3D 0x00215000 # Length -ImageOffset =3D 0x00110000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvRecovery2] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00325000 # Base address offset on flash -Length =3D 0x0006B000 # Length -ImageOffset =3D 0x00325000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - -[Vlv2FvRecovery] -FirmwareType =3D 0 # SystemFirmware -AddressType =3D 0 # 0 - relative address, 1 - absolute address. -BaseAddress =3D 0x00390000 # Base address offset on flash -Length =3D 0x00070000 # Length -ImageOffset =3D 0x00390000 # Image offset of this SystemFirmware image -FileGuid =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirm= wareFileGuid - diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf index 43dd987eaf..d8b0074d6a 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf @@ -1,7 +1,7 @@ ## @file # FDF file of Platform capsule. # -# Copyright (c) 2016 Intel Corporation. +# Copyright (c) 2016 - 2019, Intel Corporation. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -29,10 +29,6 @@ [FV.SystemFirmwareUpdateCargo] $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM } =20 -FILE RAW =3D 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsu= leConfigFileGuid - Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFir= mwareUpdateConfig.ini - } - [FmpPayload.FmpPayloadSystemFirmwareRsa2048] IMAGE_HEADER_INIT_VERSION =3D 0x02 IMAGE_TYPE_ID =3D 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSy= stemFmpCapsuleImageTypeIdGuid diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf deleted file mode 100644 index 7917be3d68..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf +++ /dev/null @@ -1,52 +0,0 @@ -## @file -# FDF file of Platform capsule. -# -# Copyright (c) 2016 Intel Corporation. -# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[FV.SystemFirmwareUpdateCargo] -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - -FILE RAW =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwa= reFileGuid - $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM - } - -FILE RAW =3D 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsu= leConfigFileGuid - Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFir= mwareUpdateConfigGcc.ini - } - -[FmpPayload.FmpPayloadSystemFirmwareRsa2048] -IMAGE_HEADER_INIT_VERSION =3D 0x02 -IMAGE_TYPE_ID =3D 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSy= stemFmpCapsuleImageTypeIdGuid -IMAGE_INDEX =3D 0x1 -HARDWARE_INSTANCE =3D 0x0 -MONOTONIC_COUNT =3D 0x2 -CERTIFICATE_GUID =3D A7717414-C616-4977-9420-844712A735BF # RSA20= 48SHA256 - -FILE DATA =3D $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)= /FV/SYSTEMFIRMWAREUPDATECARGO.Fv - -[Capsule.Vlv2Rec] -CAPSULE_GUID =3D 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEf= iFmpCapsuleGuid -CAPSULE_FLAGS =3D PersistAcrossReset,InitiateReset -CAPSULE_HEADER_SIZE =3D 0x20 -CAPSULE_HEADER_INIT_VERSION =3D 0x1 - -FMP_PAYLOAD =3D FmpPayloadSystemFirmwareRsa2048 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc similarity index 90% rename from Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc rename to Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc index 1856ac349b..bcac59f00a 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc @@ -1,18 +1,19 @@ #/** @file # Platform capsule description. # -# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # +# #**/ =20 [Defines] PLATFORM_NAME =3D Vlv2TbltDevicePkg PLATFORM_GUID =3D EE87F258-6ECC-4415-B1D8-23771BEE26E7 PLATFORM_VERSION =3D 0.1 - FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformCapsuleGcc.= fdf - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkg + FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformCapsule.fdf + OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgIA32 SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc similarity index 91% rename from Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc rename to Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc index 524bb74e2a..11d50666c0 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc @@ -1,7 +1,7 @@ #/** @file # Platform capsule description. # -# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -13,7 +13,7 @@ [Defines] PLATFORM_GUID =3D EE87F258-6ECC-4415-B1D8-23771BEE26E7 PLATFORM_VERSION =3D 0.1 FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformCapsule.fdf - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkg + OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgX64 SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/In= tel/Vlv2TbltDevicePkg/PlatformPkg.fdf index c59973cbe9..e958c1ebf2 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf @@ -28,13 +28,13 @@ [Defines] DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE =3D 0x000400= 00 =20 DEFINE FLASH_REGION_FVMAIN_OFFSET =3D 0x005100= 00 -DEFINE FLASH_REGION_FVMAIN_SIZE =3D 0x002100= 00 +DEFINE FLASH_REGION_FVMAIN_SIZE =3D 0x002200= 00 =20 -DEFINE FLASH_REGION_VPD_OFFSET =3D 0x007200= 00 +DEFINE FLASH_REGION_VPD_OFFSET =3D 0x007300= 00 DEFINE FLASH_REGION_VPD_SIZE =3D 0x000100= 00 =20 -DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007300= 00 -DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000600= 00 +DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007400= 00 +DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000500= 00 =20 DEFINE FLASH_REGION_FV_RECOVERY_OFFSET =3D 0x007900= 00 DEFINE FLASH_REGION_FV_RECOVERY_SIZE =3D 0x000700= 00 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Platform= /Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf deleted file mode 100644 index c59973cbe9..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf +++ /dev/null @@ -1,971 +0,0 @@ -#/** @file -# FDF file of Platform. -# -# Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] -DEFINE FLASH_BASE =3D 0xFF800000 #The base address of the 8Mb FL= ASH Device. -DEFINE FLASH_SIZE =3D 0x00800000 #The flash size in bytes of the= 8Mb FLASH Device. -DEFINE FLASH_BLOCK_SIZE =3D 0x1000 #The block size in bytes of the= 8Mb FLASH Device. -DEFINE FLASH_NUM_BLOCKS =3D 0x800 #The number of blocks in 8Mb FL= ASH Device. - -DEFINE FLASH_REGION_VLVMICROCODE_OFFSET =3D 0x004000= 00 -DEFINE FLASH_REGION_VLVMICROCODE_SIZE =3D 0x000400= 00 -DEFINE FLASH_REGION_VLVMICROCODE_BASE =3D 0xFFC000= 00 - -DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET =3D 0x004400= 00 -DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE =3D 0x0003E0= 00 - -DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET =3D 0x0047E0= 00 -DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE =3D 0x000020= 00 - -DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET =3D 0x004800= 00 -DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE =3D 0x000400= 00 - -DEFINE FLASH_REGION_FVMAIN_OFFSET =3D 0x005100= 00 -DEFINE FLASH_REGION_FVMAIN_SIZE =3D 0x002100= 00 - -DEFINE FLASH_REGION_VPD_OFFSET =3D 0x007200= 00 -DEFINE FLASH_REGION_VPD_SIZE =3D 0x000100= 00 - -DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET =3D 0x007300= 00 -DEFINE FLASH_REGION_FV_RECOVERY2_SIZE =3D 0x000600= 00 - -DEFINE FLASH_REGION_FV_RECOVERY_OFFSET =3D 0x007900= 00 -DEFINE FLASH_REGION_FV_RECOVERY_SIZE =3D 0x000700= 00 - -##########################################################################= ###### -# -# FD Section -# The [FD] Section is made up of the definition statements and a -# description of what goes into the Flash Device Image. Each FD section -# defines one flash "device" image. A flash device image may be one of -# the following: Removable media bootable image (like a boot floppy -# image,) an Option ROM image (that would be "flashed" into an add-in -# card,) a System "Flash" image (that would be burned into a system's -# flash) or an Update ("Capsule") image that will be used to update and -# existing system flash. -# -##########################################################################= ###### -[FD.Vlv] -BaseAddress =3D $(FLASH_BASE)|gPlatformModuleTokenSpaceGuid.PcdFlashArea= BaseAddress #The base address of the 3Mb FLASH Device. -Size =3D $(FLASH_SIZE)|gPlatformModuleTokenSpaceGuid.PcdFlashArea= Size #The flash size in bytes of the 3Mb FLASH Device. -ErasePolarity =3D 1 -BlockSize =3D $(FLASH_BLOCK_SIZE) #The block size in bytes of= the 3Mb FLASH Device. -NumBlocks =3D $(FLASH_NUM_BLOCKS) #The number of blocks in 3M= b FLASH Device. - -# -#Flash location override based on actual flash map -# -SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaBaseAddress =3D $= (FLASH_BASE) -SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize =3D $= (FLASH_SIZE) - -SET gPlatformModuleTokenSpaceGuid.PcdBiosRomBase =3D $= (FLASH_BASE) -SET gPlatformModuleTokenSpaceGuid.PcdBiosRomSize =3D $= (FLASH_SIZE) - -SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress =3D $(FLASH_REGI= ON_VLVMICROCODE_BASE) + 0x60 -SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize =3D $(FLASH_R= EGION_VLVMICROCODE_SIZE) - 0x60 - -##########################################################################= ###### -# -# Following are lists of FD Region layout which correspond to the location= s of different -# images within the flash device. -# -# Regions must be defined in ascending order and may not overlap. -# -# A Layout Region start with a eight digit hex offset (leading "0x" requir= ed) followed by -# the pipe "|" character, followed by the size of the region, also in hex = with the leading -# "0x" characters. Like: -# Offset|Size -# PcdOffsetCName|PcdSizeCName -# RegionType -# Fv Size can be adjusted; FVMAIN_COMPACT can be reduced to 0x120000, and = FV_RECOVERY can be enlarged to 0x80000 -# -##########################################################################= ###### - - # - # IFWI Header - # -0x0000|0x1000 -FILE=3DVlv2TbltDevicePkg/Stitch/IFWIHeader/IFWI_HEADER.bin - - # - # CPU Microcodes - # - -$(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE) -gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleToke= nSpaceGuid.PcdFlashMicroCodeSize -FV =3D MICROCODE_FV -$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIA= BLE_SIZE) -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageVariableSize -#NV_VARIABLE_STORE -DATA =3D { - ## This is the EFI_FIRMWARE_VOLUME_HEADER - # ZeroVector [] - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - # FileSystemGuid: gEfiSystemNvDataFvGuid =3D - # { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0= x4F, 0x50 }} - 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C, - 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50, - # FvLength: 0x80000 - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - #Signature "_FVH" #Attributes - 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00, - #HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision - 0x48, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x00, 0x02, - #Blockmap[0]: 7 Blocks * 0x10000 Bytes / Block - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - #Blockmap[1]: End - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ## This is the VARIABLE_STORE_HEADER -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - #Signature: gEfiAuthenticatedVariableGuid =3D - # { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0= x77, 0x92 }} - 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43, - 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92, -!else - #Signature: gEfiVariableGuid =3D - # { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0= xfe, 0x7d }} - 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41, - 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d, -!endif - #Size: 0x3E000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariable= Size) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) =3D 0x03DFB8 - # This can speed up the Variable Dispatch a bit. - 0xB8, 0xDF, 0x03, 0x00, - #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32 - 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -} - - -$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET)|$(FLASH_REGION_N= VSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE) -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModu= lePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize -#NV_FTW_WORKING -DATA =3D { - # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature =3D gEdkiiWorkingBl= ockSignatureGuid =3D - # { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0= x1b, 0x95 }} - 0x2B, 0x29, 0x58, 0x9E, 0x68, 0x7C, 0x7D, 0x49, - 0xA0, 0xCE, 0x65, 0x0, 0xFD, 0x9F, 0x1B, 0x95, - - # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Res= erved - 0xE2, 0x33, 0xF2, 0x3, 0xFE, 0xFF, 0xFF, 0xFF, - # WriteQueueSize: UINT64 #Size: 0x2000 - 0x20 (FTW_WORKING_HEADER) =3D 0= x1FE0 - 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -} - -$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET)|$(FLASH_REGION_NVS= TORAGE_SUBREGION_NV_FTW_SPARE_SIZE) -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize - - # - # Main Block - # -$(FLASH_REGION_FVMAIN_OFFSET)|$(FLASH_REGION_FVMAIN_SIZE) -gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpace= Guid.PcdFlashFvMainSize -FV =3D FVMAIN_COMPACT - -$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE) -gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress -FILE =3D $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-= 468E-850A-24F7A8D38E08.bin - - # - # FV Recovery#2 - # -$(FLASH_REGION_FV_RECOVERY2_OFFSET)|$(FLASH_REGION_FV_RECOVERY2_SIZE) -gPlatformModuleTokenSpaceGuid.PcdFlashFvRecovery2Base|gPlatformModuleToken= SpaceGuid.PcdFlashFvRecovery2Size -FV =3D FVRECOVERY2 - - # - # FV Recovery - # -$(FLASH_REGION_FV_RECOVERY_OFFSET)|$(FLASH_REGION_FV_RECOVERY_SIZE) -gPlatformModuleTokenSpaceGuid.PcdFlashFvRecoveryBase|gPlatformModuleTokenS= paceGuid.PcdFlashFvRecoverySize -FV =3D FVRECOVERY - -##########################################################################= ###### -# -# FV Section -# -# [FV] section is used to define what components or modules are placed wit= hin a flash -# device file. This section also defines order the components and modules= are positioned -# within the image. The [FV] section consists of define statements, set s= tatements and -# module statements. -# -##########################################################################= ###### -[FV.MICROCODE_FV] -BlockSize =3D $(FLASH_BLOCK_SIZE) -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D FALSE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - -FILE RAW =3D 197DB236-F856-4924-90F8-CDF12FB875F3 { - $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/$(DXE_ARCHITECTURE)/Micr= ocodeUpdates.bin -} - -!if $(RECOVERY_ENABLE) -[FV.FVRECOVERY_COMPONENTS] -FvAlignment =3D 16 #FV alignment and FV attributes setting. -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA= 32/PchUsb.inf -INF MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf -INF MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf -INF MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf -INF FatPkg/FatPei/FatPei.inf -INF MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf -INF SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPe= i.inf -!endif - -##########################################################################= ###### -# -# FV Section -# -# [FV] section is used to define what components or modules are placed wit= hin a flash -# device file. This section also defines order the components and modules= are positioned -# within the image. The [FV] section consists of define statements, set s= tatements and -# module statements. -# -##########################################################################= ###### -[FV.FVRECOVERY2] -BlockSize =3D $(FLASH_BLOCK_SIZE) -FvAlignment =3D 16 #FV alignment and FV attributes setting. -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE -FvNameGuid =3D B73FE497-B92E-416e-8326-45AD0D270092 - - - -INF Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchSmbusArpDisabled.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/VlvInitPeim.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchInitPeim.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchSpiPeim.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PeiSmmAccess.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PeiSmmControl.inf -INF UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf -INF UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf - -!if $(TPM_ENABLED) =3D=3D TRUE -INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf -INF SecurityPkg/Tcg/TcgPei/TcgPei.inf -INF SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf -!endif -INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf - -!if $(ACPI50_ENABLE) =3D=3D TRUE - INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwareP= erformancePei.inf -!endif -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE -INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRout= erPei.inf -!endif - -!if $(RECOVERY_ENABLE) -FILE FV_IMAGE =3D 1E9D7604-EF45-46a0-BD8A-71AC78C17AC1 { - SECTION PEI_DEPEX_EXP =3D {gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBoo= tInRecoveryModePpiGuid} - SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF { # LZMA COMPRESS= GUID - SECTION FV_IMAGE =3D FVRECOVERY_COMPONENTS - } -} -!endif - -[FV.FVRECOVERY] -BlockSize =3D $(FLASH_BLOCK_SIZE) -FvAlignment =3D 16 #FV alignment and FV attributes setting. -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE -FvNameGuid =3D B73FE497-B92E-416e-8326-45AD0D270091 - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/SecCore.inf -INF MdeModulePkg/Core/Pei/PeiMain.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/CpuPeim.inf -INF MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf -INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf - -INF Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/SeCUma.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - INF SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf -!endif - - -!if $(CAPSULE_ENABLE) =3D=3D TRUE -INF MdeModulePkg/Universal/CapsulePei/CapsulePei.inf -!if $(DXE_ARCHITECTURE) =3D=3D "X64" -INF MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf -!endif -!endif - -!if $(PCIESC_ENABLE) =3D=3D TRUE -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/PchEarlyInitPeim.inf -!endif -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA3= 2/MemoryInit.inf - -INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf - -[FV.FVMAIN] -BlockSize =3D $(FLASH_BLOCK_SIZE) -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE -FvNameGuid =3D A881D567-6CB0-4eee-8435-2E72D33E45B5 - -APRIORI DXE { - INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf - INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStat= usCodeRouterRuntimeDxe.inf - INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandl= erRuntimeDxe.inf - } - -# -# gBiosIdGuid -# -FILE FREEFORM =3D C3E36D09-8294-4b97-A857-D5288FE33E28 { - SECTION RAW =3D $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/BiosId= .bin - } - - # - # EDK II Related Platform codes - # - -INF MdeModulePkg/Core/Dxe/DxeMain.inf -INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf -!if $(ACPI50_ENABLE) =3D=3D TRUE -INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwareP= erformanceDxe.inf -INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwareP= erformanceSmm.inf -!endif - - -INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf -INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusC= odeRouterRuntimeDxe.inf -INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerR= untimeDxe.inf -INF MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRout= erSmm.inf -INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf -INF UefiCpuPkg/CpuDxe/CpuDxe.inf -INF UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf -INF MdeModulePkg/Universal/Metronome/Metronome.inf -INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf -INF MdeModulePkg/Logo/LogoDxe.inf -INF MdeModulePkg/Application/UiApp/UiApp.inf -INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf -INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf -INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf - -INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf -INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf -INF Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf -INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchSpiSmm.inf -!if $(SECURE_BOOT_ENABLE) -INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfig= Dxe.inf -!endif - -INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf - -INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRunt= imeDxe.inf -INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe= .inf -INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf -INF Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf - - -INF Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf - -INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.= inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/Dptf.inf - - # - # EDK II Related Silicon codes - # -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchS3SupportDxe.inf - -INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/SmmControl.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchSmbusDxe.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchReset.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchInitDxe.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchInitSmm.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchSmiDispatcher.inf -!if $(PCIESC_ENABLE) =3D=3D TRUE -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchPcieSmm.inf -!endif - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchSpiRuntime.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchPolicyInitDxe.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PchBiosWriteProtect.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/SmmAccess.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PciHostBridge.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/VlvInitDxe.inf -!if $(TPM_ENABLED) =3D=3D TRUE -INF SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf -INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf -INF RuleOverride =3D DRIVER_ACPITABLE SecurityPkg/Tcg/TcgSmm/TcgSmm.inf -!endif - -# -# EDK II Related Platform codes -# -INF Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf -INF Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf -INF Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf -INF Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf -INF Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf -INF Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PlatformCpuPolicy.inf -INF Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf -!if $(GOP_DRIVER_ENABLE) =3D=3D TRUE - INF Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf - FILE DRIVER =3D FF0C8745-3270-4439-B74F-3E45F8C77064 { - SECTION DXE_DEPEX_EXP =3D {gPlatformGOPPolicyGuid} - SECTION PE32 =3D Vlv2SocBinPkg/GOP/7.2.1011/RELEASE_VS2008x86/$(DXE_ARCH= ITECTURE)/IntelGopDriver.efi - SECTION UI =3D "IntelGopDriver" -} -!endif - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PnpDxe.inf - # - # SMM - # -INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf -INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf -INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf - -INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf -INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf -INF UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/PowerManagement2.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/DigitalThermalSensor.inf -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/GraphicDxeInitSmm.inf - - # - # ACPI - # -INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDx= e.inf -INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf -INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf -INF RuleOverride =3D ACPITABLE2 Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/Po= werManagement/AcpiTables/PowerManagementAcpiTables.inf - -INF RuleOverride =3D ACPITABLE Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTab= les.inf - -INF Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf - -INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsR= esourceTableDxe.inf - - # - # PCI - # -INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf - -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/ISPDxe.inf - - -# -# ISA -# -INF Vlv2TbltDevicePkg/PcuSio/PcuSio.inf -!if $(SOURCE_DEBUG_ENABLE) !=3D TRUE -INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf -!endif - -# -# eMMC/SD Card -# -INF MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf -INF MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf -INF MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf - -# -# IDE/SCSI/AHCI -# -INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf - -INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf - -INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf -!if $(SATA_ENABLE) =3D=3D TRUE -INF RuleOverride =3D BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(D= XE_ARCHITECTURE)/SataController.inf -# - -# -INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf -INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf -!if $(SCSI_ENABLE) =3D=3D TRUE -INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf -INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -!endif -# -!endif -# Console -# -INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf -INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf -INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.i= nf -INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf -INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf -INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf -INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf - # - # USB - # -!if $(USB_ENABLE) =3D=3D TRUE -INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf -INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf -INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf -INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf -INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf -INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf -INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf -!endif - - - # - # SMBIOS - # -INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf -INF Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf - -# -# FAT file system -# -INF FatPkg/EnhancedFatDxe/Fat.inf - -# -# UEFI Shell -# -INF ShellPkg/Application/Shell/Shell.inf - -# -# dp command -# -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE -INF ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf -!endif - -!if $(GOP_DRIVER_ENABLE) =3D=3D TRUE -FILE FREEFORM =3D 878AC2CC-5343-46F2-B563-51F89DAF56BA { - SECTION RAW =3D Vlv2SocBinPkg/GOP/7.2.1011/VBT/MNW2/Vbt.bin - SECTION UI =3D "IntelGopVbt" -} -!endif - -# -# Network Modules -# -!include NetworkPkg/Network.fdf.inc - -!if $(NETWORK_ENABLE) =3D=3D TRUE - FILE DRIVER =3D 22DE1691-D65D-456a-993E-A253DD1F308C { - SECTION PE32 =3D Vlv2SocBinPkg/UNDI/RtkUndiDxe/$(DXE_ARCHITECTURE)/Rtk= UndiDxe.efi - SECTION UI =3D "RtkUndiDxe" - } - !if $(DXE_ARCHITECTURE) =3D=3D "X64" - FILE DRIVER =3D 7C7467E9-8BB3-4BF1-8694-6FED7D25D13E { - SECTION PE32 =3D Vlv2SocBinPkg/UNDI/I211PcieUndiDxe/$(DXE_ARCHITECTU= RE)/E7006X3.EFI - SECTION UI =3D "E7006X3" - } - !endif -!endif - -!if $(CAPSULE_ENABLE) -INF MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf - -# -# Minnow Max System Firmware FMP -# -INF FILE_GUID =3D $(FMP_MINNOW_MAX_SYSTEM) FmpDevicePkg/FmpDxe/FmpDxe.inf - -# -# Sample Device FMP -# -INF FILE_GUID =3D $(FMP_GREEN_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.i= nf -INF FILE_GUID =3D $(FMP_BLUE_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.i= nf -INF FILE_GUID =3D $(FMP_RED_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.i= nf - -!endif - -!if $(MICOCODE_CAPSULE_ENABLE) -INF IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe= .inf -!endif - -!if $(RECOVERY_ENABLE) -FILE FREEFORM =3D PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sh= a256TestPublicKeyFileGuid) { - SECTION RAW =3D BaseTools/Source/Python/Rsa2048Sha256Sign/TestSigning= PublicKey.bin - SECTION UI =3D "Rsa2048Sha256TestSigningPublicKey" - } -!endif - -[FV.FVMAIN_COMPACT] -BlockSize =3D $(FLASH_BLOCK_SIZE) -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - - - -FILE FV_IMAGE =3D 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { -!if $(LZMA_ENABLE) =3D=3D TRUE -# LZMA Compress - SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQU= IRED =3D TRUE { - SECTION FV_IMAGE =3D FVMAIN - } -!else -!if $(DXE_COMPRESS_ENABLE) =3D=3D TRUE -# Tiano Compress - SECTION GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQU= IRED =3D TRUE { - SECTION FV_IMAGE =3D FVMAIN - } -!else -# No Compress - SECTION COMPRESS PI_NONE { - SECTION FV_IMAGE =3D FVMAIN - } -!endif -!endif - } - -[FV.SETUP_DATA] -BlockSize =3D $(FLASH_BLOCK_SIZE) -#NumBlocks =3D 0x10 -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - -##########################################################################= ###### -# -# Rules are use with the [FV] section's module INF type to define -# how an FFS file is created for a given INF file. The following Rule are = the default -# rules for the different module type. User can add the customized rules t= o define the -# content of the FFS file. -# -##########################################################################= ###### -[Rule.Common.SEC] - FILE SEC =3D $(NAMED_GUID) RELOCS_STRIPPED { - PE32 PE32 Align =3D 8 $(INF_OUTPUT)/$(MODULE_NAME).efi - RAW BIN Align =3D 16 |.com - } - -[Rule.Common.SEC.BINARY] - FILE SEC =3D $(NAMED_GUID) RELOCS_STRIPPED { - PE32 PE32 Align =3D 8 |.efi - RAW BIN Align =3D 16 |.com - } - -[Rule.Common.PEI_CORE] - FILE PEI_CORE =3D $(NAMED_GUID) { - PE32 PE32 Align =3D Auto $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBER) - } - -[Rule.Common.PEIM] - FILE PEIM =3D $(NAMED_GUID) { - PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 Align =3D Auto $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMB= ER) - } - -[Rule.Common.PEIM.BINARY] - FILE PEIM =3D $(NAMED_GUID) { - PEI_DEPEX PEI_DEPEX Optional |.depex - PE32 PE32 Align =3D Auto |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMB= ER) - } - -[Rule.Common.PEIM.BIOSID] - FILE PEIM =3D $(NAMED_GUID) { - RAW BIN BiosId.bin - PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 Align =3D Auto $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMB= ER) - } - -[Rule.Common.USER_DEFINED.APINIT] - FILE RAW =3D $(NAMED_GUID) Fixed Align=3D4K { - RAW SEC_BIN |.com - } -#cjia 2011-07-21 -[Rule.Common.USER_DEFINED.LEGACY16] - FILE FREEFORM =3D $(NAMED_GUID) { - UI STRING=3D"$(MODULE_NAME)" Optional - RAW BIN |.bin - } -#cjia - -[Rule.Common.USER_DEFINED.ASM16] - FILE FREEFORM =3D $(NAMED_GUID) { - UI STRING=3D"$(MODULE_NAME)" Optional - RAW BIN |.com - } - -[Rule.Common.DXE_CORE] - FILE DXE_CORE =3D $(NAMED_GUID) { - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.UEFI_DRIVER] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.UEFI_DRIVER.BINARY] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional |.depex - PE32 PE32 |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.UEFI_DRIVER.NATIVE_BINARY] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(WORKSPACE)/Vlv2TbltDevicePkg/Intel= GopDepex/IntelGopDriver.depex - PE32 PE32 |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_DRIVER] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_DRIVER.BINARY] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional |.depex - PE32 PE32 |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_DRIVER.DRIVER_ACPITABLE] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - RAW ACPI Optional |.acpi - RAW ASL Optional |.aml - } - -[Rule.Common.DXE_RUNTIME_DRIVER] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_RUNTIME_DRIVER.BINARY] - FILE DRIVER =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional |.depex - PE32 PE32 |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_SMM_DRIVER] - FILE SMM =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_SMM_DRIVER.BINARY] - FILE SMM =3D $(NAMED_GUID) { - SMM_DEPEX SMM_DEPEX |.depex - PE32 PE32 |.efi - RAW BIN Optional |.aml - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.DXE_SMM_DRIVER.DRIVER_ACPITABLE] - FILE SMM =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - RAW ACPI Optional |.acpi - RAW ASL Optional |.aml - } - -[Rule.Common.SMM_CORE] - FILE SMM_CORE =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.SMM_CORE.BINARY] - FILE SMM_CORE =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional |.depex - PE32 PE32 |.efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.UEFI_APPLICATION] - FILE APPLICATION =3D $(NAMED_GUID) { - DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.UEFI_APPLICATION.UI] - FILE APPLICATION =3D $(NAMED_GUID) { - PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"Enter Setup" - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } - -[Rule.Common.USER_DEFINED] - FILE FREEFORM =3D $(NAMED_GUID) { - UI STRING=3D"$(MODULE_NAME)" Optional - RAW BIN |.bin - } - -[Rule.Common.USER_DEFINED.BINARY] - FILE FREEFORM =3D $(NAMED_GUID) { - UI STRING=3D"$(MODULE_NAME)" Optional - RAW BIN |.bin - } - -[Rule.Common.USER_DEFINED.ACPITABLE] - FILE FREEFORM =3D $(NAMED_GUID) { - RAW ACPI Optional |.acpi - RAW ASL Optional |.aml - } - -[Rule.Common.USER_DEFINED.ACPITABLE2] - FILE FREEFORM =3D $(NAMED_GUID) { - RAW ASL Optional |.aml - } - -[Rule.Common.ACPITABLE] - FILE FREEFORM =3D $(NAMED_GUID) { - RAW ACPI Optional |.acpi - RAW ASL Optional |.aml - } - -[Rule.Common.PEIM.FMP_IMAGE_DESC] - FILE PEIM =3D $(NAMED_GUID) { - RAW BIN |.acpi - PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex - PE32 PE32 Align=3D4K $(INF_OUTPUT)/$(MODULE_NAME).efi - UI STRING=3D"$(MODULE_NAME)" Optional - VERSION STRING=3D"$(INF_VERSION)" Optional BUILD_NUM=3D$(BUILD_NUMBE= R) - } diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc deleted file mode 100644 index 43b340fdee..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc +++ /dev/null @@ -1,1286 +0,0 @@ -#/** @file -# Platform description. -# -# Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -##########################################################################= ###### -# -# Defines Section - statements that will be processed to create a Makefile. -# -##########################################################################= ###### -[Defines] - PLATFORM_NAME =3D Vlv2TbltDevicePkg - PLATFORM_GUID =3D 465B0A0B-7AC1-443b-8F67-7B8DEC14= 5F90 - PLATFORM_VERSION =3D 0.1 - DSC_SPECIFICATION =3D 0x00010005 - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgIA32 - SUPPORTED_ARCHITECTURES =3D IA32 - BUILD_TARGETS =3D DEBUG|RELEASE - SKUID_IDENTIFIER =3D DEFAULT - VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 - - DEFINE RC_BINARY_RELEASE =3D TRUE - # - # Platform On/Off features are defined here - # - !include Vlv2TbltDevicePkg/PlatformPkgConfig.dsc - - DEFINE DXE_ARCHITECTURE =3D IA32 - - FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformPkgGcc= .fdf -!if $(LFMA_ENABLE) =3D=3D TRUE - FIX_LOAD_TOP_MEMORY_ADDRESS =3D 0xFFFFFFFFFFFFFFFF - DEFINE TOP_MEMORY_ADDRESS =3D 0xFFFFFFFFFFFFFFFF -!else - FIX_LOAD_TOP_MEMORY_ADDRESS =3D 0x0 - DEFINE TOP_MEMORY_ADDRESS =3D 0x0 -!endif - - DEFINE PLATFORM_PCIEXPRESS_BASE =3D 0E0000000 - -##########################################################################= ###### -# -# SKU Identification section - list of all SKU IDs supported by this -# Platform. -# -##########################################################################= ###### -[SkuIds] - 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. - -[DefaultStores] - 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. - 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. - -##########################################################################= ###### -# -# Library Class section - list of all Library Classes needed by this Platf= orm. -# -##########################################################################= ###### -[LibraryClasses.common] - # - # Entry point - # - PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf - PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf - DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf - UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf - UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiA= pplicationEntryPoint.inf - - # - # Basic - # - BaseLib|MdePkg/Library/BaseLib/BaseLib.inf -!if $(SSE2_ENABLE) =3D=3D TRUE - BaseMemoryLib|MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf -!else - BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf -!endif - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf - IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf - PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf - PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.i= nf - PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf - PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf - CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMain= tenanceLib.inf - PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf - PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeC= offGetEntryPointLib.inf -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - PchPlatformLib|Vlv2TbltDevicePkg/Library/PchPlatformLib/PchPlatformLib.i= nf -!endif - # - # UEFI & PI - # - UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf - UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/U= efiRuntimeServicesTableLib.inf - UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf - UefiLib|MdePkg/Library/UefiLib/UefiLib.inf - HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServic= esLib.inf - DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf - UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiTianoCust= omDecompressLib.inf - PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/= PeiServicesTablePointerLibIdt.inf - PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf - DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf - DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableL= ib.inf - UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf - UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf - BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.i= nf - SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf - FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLib.i= nf - UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManag= erLib.inf - # - # Framework - # -!if $(S3_ENABLE) =3D=3D TRUE - S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScrip= tLib.inf -!else - S3BootScriptLib|MdePkg/Library/BaseS3BootScriptLibNull/BaseS3BootScriptL= ibNull.inf -!endif - S3IoLib|MdePkg/Library/BaseS3IoLib/BaseS3IoLib.inf - S3PciLib|MdePkg/Library/BaseS3PciLib/BaseS3PciLib.inf - - # - # Generic Modules - # -!if $(USB_ENABLE) =3D=3D TRUE - UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf -!endif -!if $(SCSI_ENABLE) =3D=3D TRUE - UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf -!endif - - OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf -!if $(CAPSULE_ENABLE) =3D=3D TRUE - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf -!else - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf -!endif - FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAu= thenticationLibNull.inf - IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf - PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/Platfor= mFlashAccessLib/PlatformFlashAccessLib.inf - MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/Platfo= rmFlashAccessLib/PlatformFlashAccessLib.inf - DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGr= aphics/DisplayUpdateProgressLibGraphics.inf - SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchroniza= tionLib.inf - SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeS= ecurityManagementLib.inf - IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf - DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseD= ebugPrintErrorLevelLib.inf - - # - # CPU - # - MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf - LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuE= xceptionHandlerLib.inf - MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf - - # - # ICH - # - SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf - SmmLib|Vlv2TbltDevicePkg/Library/PchSmmLib/PchSmmLib.inf - - # - # Platform - # - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf - ResetSystemLib|Vlv2TbltDevicePkg/Library/ResetSystemLib/ResetSystemLib.i= nf - - PlatformCmosLib|Vlv2TbltDevicePkg/Library/PlatformCmosLib/PlatformCmosLi= b.inf - - # - # Misc - # - MonoStatusCodeLib|Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf -!if $(TARGET) =3D=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull= .inf -!else - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!endif - - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf -!if $(TPM_ENABLED) =3D=3D TRUE - TpmCommLib|SecurityPkg/Library/TpmCommLib/TpmCommLib.inf - Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf - Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf -!endif - - PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatfor= mHookLibNull.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDeb= ug/PeCoffExtraActionLibDebug.inf - DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibS= erialPort/DebugCommunicationLibSerialPort.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!else - PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeC= offExtraActionLibNull.inf - DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.i= nf -!endif - - # - # CryptLib - # -!if $(TPM_ENABLED) =3D=3D TRUE - TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasure= mentLib.inf -!else - TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurem= entLibNull.inf -!endif - - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf - - StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf - -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecu= reLibNull.inf - AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf -!else - AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLib= Null.inf -!endif - - FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf - - VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf - ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf - FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf - IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf -!if $(NETWORK_TLS_ENABLE) =3D=3D TRUE - TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf -!endif - Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf - Tcg2PhysicalPresenceLib|SecurityPkg/Library/DxeTcg2PhysicalPresenceLib/D= xeTcg2PhysicalPresenceLib.inf - Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibN= ull.inf - - BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf - -[LibraryClasses.IA32.SEC] -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf -!endif - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - -[LibraryClasses.IA32.PEIM, LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA= 32.SEC] - # - # PEI phase common - # - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf - MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAlloc= ationLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiRepor= tStatusCodeLib.inf - ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExt= ractGuidedSectionLib.inf - MultiPlatformLib|Vlv2TbltDevicePkg/Library/MultiPlatformLib/MultiPlatfor= mLib.inf - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiC= puExceptionHandlerLib.inf - MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf - -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.= inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(TARGET) =3D=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull= .inf -!else - DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug= LibReportStatusCode.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!endif - - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf - HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terPei.inf -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib= .inf -!endif - -[LibraryClasses.IA32] - # - # DXE phase common - # - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf - ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExt= ractGuidedSectionLib.inf - - Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf -!if $(TPM_ENABLED) =3D=3D TRUE - TcgPhysicalPresenceLib|SecurityPkg/Library/DxeTcgPhysicalPresenceLib/Dxe= TcgPhysicalPresenceLib.inf -!endif - - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf - EfiRegTableLib|Vlv2TbltDevicePkg/Library/EfiRegTableLib/EfiRegTableLib.i= nf - HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terDxe.inf - -[LibraryClasses.IA32.DXE_DRIVER] - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/Customize= dDisplayLib.inf -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.= inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - - FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLibDx= e.inf - -[LibraryClasses.IA32.DXE_CORE] - HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf - MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeC= oreMemoryAllocationLib.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerform= anceLib.inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -[LibraryClasses.IA32.DXE_SMM_DRIVER] - MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.= inf - SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableL= ib.inf - ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf - MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf - SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCp= uPlatformHookLibNull.inf - SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib= .inf - - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf - !if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - !endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuE= xceptionHandlerLib.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - TcgPpVendorLib|SecurityPkg/Library/TcgPpVendorLibNull/TcgPpVendorLibNull= .inf -!endif - -[LibraryClasses.IA32.SMM_CORE] - MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/Pi= SmmCoreMemoryAllocationLib.inf - SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/Pi= SmmCoreSmmServicesTableLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf - SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/S= mmCorePlatformHookLibNull.inf - SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf -!endif - - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - -[LibraryClasses.IA32.DXE_RUNTIME_DRIVER] - ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/R= untimeDxeReportStatusCodeLib.inf -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE || $(TPM_ENABLED) =3D=3D TRUE - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -!if $(CAPSULE_ENABLE) =3D=3D TRUE - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf -!endif - -[LibraryClasses.common.UEFI_DRIVER] - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -[LibraryClasses.IA32.UEFI_APPLICATION] - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -##########################################################################= ###### -# -# Pcd Section - list of all EDK II PCD Entries defined by this Platform -# -##########################################################################= ###### -[PcdsFeatureFlag.common] -!if $(MINI_BIOS_ENABLE) =3D=3D FALSE - gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|TRUE -!else - gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|FALSE -!endif -# -# If PcdDxeIplSwitchToLongMode is TRUE, DxeIpl will load a 64-bit DxeCore = and switch to long mode to hand over to DxeCore. -# - gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE - - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserGrayOutTextStatement|TRUE - -!if $(CAPSULE_RESET_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst= |FALSE -!if $(TARGET) =3D=3D RELEASE - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE -!if $(ISA_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|FALSE -!endif -!if $(USB_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|FALSE -!endif -!if $(RAM_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|FALSE -!endif - - -!if $(VARIABLE_INFO_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|FALSE -!endif - -!if $(SOURCE_DEBUG_ENABLE) - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug|TRUE -!endif - - gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|TRUE - -[PcdsFixedAtBuild.common] -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x22000 -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x4000 -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x00000800 - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x400 - gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE - gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport|FALSE -!if $(S4_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FAL= SE -!endif -!if $(TARGET) =3D=3D RELEASE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3 -!else - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 -!endif -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1 - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|60 -!endif - - gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable|$(TOP_MEM= ORY_ADDRESS) - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor|0x0 - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor|0x01 - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 - gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE - gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|2 -!endif - - # - # Set SMM stack size to 16 KB. - # - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x4000 - - gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c= , 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0= x31 } - - # - # Clear unused single certificate PCD - # - gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer|{0} - - # - # Lock all updatable firmware devices at End of DXE - # - gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEndOfDxe= EventGroupGuid)} -# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEventRe= adyToBootGuid)} - - # - # Set PcdFmpDeviceTestKeySha256Digest to {0} to disable test key detecti= on - # -# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest|{0} - -[PcdsFixedAtBuild.IA32] -!if $(TARGET) =3D=3D RELEASE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3 -!else - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 -!endif - -!if $(RECOVERY_ENABLE) - gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap" -!endif - -[PcdsPatchableInModule.common] - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6 - gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRES= S_BASE) - - ########################################################################= ############################### - # - # Begin of MRC parameters - # - - ## Memory Parameter Patchable. - # FALSE - MRC Parameters are fixed for MinnowBoard Max
- # TRUE - MRC Parameters are patchable by following PCDs
- # @Prompt Memory Parameter Patchable. - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdMemoryParameterPatchable|FALSE - - ## Memory Down or DIMM slot. - # 0 - DIMM
- # 1 - Memory Down
- # @Prompt Enable Memory Down - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableMemoryDown|1 - - ## The speed of DRAM. - # 0 - 800 MHz
- # 1 - 1066 MHz
- # 2 - 1333 MHz
- # 3 - 1600 MHz
- # @Prompt DRAM Speed - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDramSpeed|1 - - ## DRAM Type. - # 0 - DDR3
- # 1 - DDR3L
- # 2 - DDR3U
- # 3 - DDR3All
- # 4 - LPDDR2
- # 5 - LPDDR3
- # 6 - DDR4
- # @Prompt DRAM Type - # @ValidList 0x80000001 | 0, 1, 2, 3, 4, 5, 6 - gVlvRefCodePkgTokenSpaceGuid.PcdDramType|1 - - ## Please populate DIMM slot 0 if only one DIMM is supported. - # 0 - Disable
- # 1 - Enable
- # @Prompt DIMM 0 Enable - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm0|1 - - ## DIMM 1 has to be identical to DIMM 0. - # 0 - Disable
- # 1 - Enable
- # @Prompt DIMM 1 Enable Type - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm1|0 - - ## DRAM device data width. - # 0 - x8
- # 1 - x16
- # 2 - x32
- # @Prompt DIMM_DWIDTH - # @ValidList 0x80000001 | 0, 1, 2 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmDataWidth|1 - - ## DRAM device data density. - # 0 - 1 Gbit
- # 1 - 2 Gbit
- # 2 - 4 Gbit
- # 3 - 8 Gbit
- # @Prompt DIMM_Density - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmDensity|2 - - ## DRAM device data bus width. - # 0 - 8 bits
- # 1 - 16 bits
- # 2 - 32 bits
- # 3 - 64 bits
- # @Prompt DIMM_BusWidth - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmBusWidth|3 - - ## Ranks Per DIMM or Sides Per DIMM. - # 0 - 1 Rank
- # 1 - 2 Ranks
- # @Prompt DIMM_Sides - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdRankPerDimm|0 - - ## tCL.

- # @Prompt tCL - gVlvRefCodePkgTokenSpaceGuid.PcdTcl|11 - - ## tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc. - # @Prompt tRP_tRCD - gVlvRefCodePkgTokenSpaceGuid.PcdTrpTrcd|11 - - ## tWR in DRAM clk. - # @Prompt tWR - gVlvRefCodePkgTokenSpaceGuid.PcdTwr|12 - - ## tWTR in DRAM clk. - # @Prompt tWTR - gVlvRefCodePkgTokenSpaceGuid.PcdTwtr|6 - - ## tRRD in DRAM clk. - # @Prompt tRRD - gVlvRefCodePkgTokenSpaceGuid.PcdTrrd|6 - - ## tRTP in DRAM clk. - # @Prompt tRTP - gVlvRefCodePkgTokenSpaceGuid.PcdTrtp|6 - - ## tFAW in DRAM clk. - # @Prompt tFAW - gVlvRefCodePkgTokenSpaceGuid.PcdTfaw|32 - - # - # End of MRC parameters. - # - ########################################################################= ####################### - -[PcdsDynamicHii.common.DEFAULT] - gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVar= iableGuid|0x0|5 # Variable: L"Timeout" - gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|L"HwErrRecSupport"|= gEfiGlobalVariableGuid|0x0|1 # Variable: L"HwErrRecSupport" - gPlatformModuleTokenSpaceGuid.PcdBootState|L"BootState"|gPlatformModuleT= okenSpaceGuid|0x0|TRUE - -[PcdsDynamicDefault.common.DEFAULT] - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0 - !if $(TPM_ENABLED) =3D=3D TRUE - gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x7b, 0x3a, 0xcd, 0x= 72, 0xA5, 0xFE, 0x5e, 0x4f, 0x91, 0x65, 0x4d, 0xd1, 0x21, 0x87, 0xbb, 0x13} - !endif - - ## This PCD defines the video horizontal resolution. - # This PCD could be set to 0 then video resolution could be at highest = resolution. - #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 - ## This PCD defines the video vertical resolution. - # This PCD could be set to 0 then video resolution could be at highest = resolution. - #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 - - ## This PCD defines the Console output column and the default value is 2= 5 according to UEFI spec. - # This PCD could be set to 0 then console output could be at max column= and max row. - gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|31 - ## This PCD defines the Console output row and the default value is 80 a= ccording to UEFI spec. - # This PCD could be set to 0 then console output could be at max column= and max row. - gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|100 - - ## The PCD is used to specify the video horizontal resolution of text se= tup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|800 - ## The PCD is used to specify the video vertical resolution of text setu= p. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|600 - ## The PCD is used to specify the console output column of text setup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|100 - ## The PCD is used to specify the console output column of text setup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|31 - -!if $(TPM_ENABLED) =3D=3D TRUE - gEfiSecurityPkgTokenSpaceGuid.PcdTpmInitializationPolicy|1 - gEfiSecurityPkgTokenSpaceGuid.PcdTpmScrtmPolicy|1 -!endif - -[PcdsDynamicExDefault.common.DEFAULT] - gEfiVLVTokenSpaceGuid.PcdTCSmbaIoBaseAddress|0x1040 - gEfiVLVTokenSpaceGuid.PcdEmmcManufacturerId|0 - gEfiVLVTokenSpaceGuid.PcdProductSerialNumber|0 - gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable|TRUE - gEfiVLVTokenSpaceGuid.PcdFTPMErrorOccur|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMErrorSkip|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMCommand|0 - gEfiVLVTokenSpaceGuid.PcdFTPMResponse|0 - gEfiVLVTokenSpaceGuid.PcdFTPMNotRespond|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMStatus|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0 - gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0 - gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 - gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 - gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] -!if $(RECOVERY_ENABLE) - gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID(= "AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 -!endif - -[PcdsDynamicExVpd.common.DEFAULT] - gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* - -[PcdsDynamicExHii.common.DEFAULT.STANDARD] - !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc - -[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] - !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc - -[Components.IA32] - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf - - MdeModulePkg/Core/Pei/PeiMain.inf { -!if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E -!endif - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } - - Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf { -!if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E -!endif - } - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MemoryInit.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } - -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SeCUma.inf -!endif - -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf { - !if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E - !endif - } -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf{ - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgen= tLib.inf - PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePla= tformHookLibNull.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } -!endif - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf - SecurityPkg/Tcg/TcgPei/TcgPei.inf { - - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif - - Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6 - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } - Vlv2TbltDevicePkg/FvInfoPei/FvInfoPei.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf -!if $(PCIESC_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchEarlyInitPeim.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } -!endif - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf - - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSpiPeim.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmAccess.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmControl.inf - MdeModulePkg/Universal/PCD/Pei/Pcd.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/CpuPeim.inf - UefiCpuPkg/CpuIoPei/CpuIoPei.inf - UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf - UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf - -!if $(RECOVERY_ENABLE) - # - # Recovery - # - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf - MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf - MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf - MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf - FatPkg/FatPei/FatPei.inf - MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf - SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.i= nf { - - FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048= Sha256/FmpAuthenticationLibRsa2048Sha256.inf - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif - -!if $(CAPSULE_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/CapsulePei/CapsulePei.inf -!endif - MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { - -!if $(LZMA_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompress= Lib.inf -!endif - } - - MdeModulePkg/Universal/Variable/Pei/VariablePei.inf - MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf { - - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif -!if $(ACPI50_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerf= ormancePei.inf{ - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } - -!endif -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouter= Pei.inf -!endif -[Components.IA32] - # - # EDK II Related Platform codes - # - MdeModulePkg/Core/Dxe/DxeMain.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - -!if $(DXE_CRC32_SECTION_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32Gu= idedSectionExtractLib.inf -!endif -!if $(LZMA_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompre= ssLib.inf -!endif -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - } - MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - } - UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf - - MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCod= eRouterRuntimeDxe.inf - MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRun= timeDxe.inf { - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - } - - MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouter= Smm.inf - MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf{ - -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificatio= nLib.inf -!endif - -!if $(TPM_ENABLED) =3D=3D TRUE - NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.i= nf -!endif - } - MdeModulePkg/Universal/Metronome/Metronome.inf - - MdeModulePkg/Universal/BdsDxe/BdsDxe.inf { - - PlatformBootManagerLib|Vlv2TbltDevicePkg/Library/DxePlatformBootMana= gerLib/DxePlatformBootManagerLib.inf - } - MdeModulePkg/Logo/LogoDxe.inf - MdeModulePkg/Application/UiApp/UiApp.inf { - - NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf - NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf - NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanc= eManagerUiLib.inf - } - - MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf - MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf - MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { - - NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } - Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf - MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiSmm= .inf -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDx= e.inf { - - PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/Platform= SecureLibNull.inf - - # - # Specify GUID gEfiIfrBootMaintenanceGuid, to install Secure Boot Co= nfiguration menu - # into Boot Maintenance Manager menu - # - *_*_*_VFR_FLAGS =3D -g b2dedc91-d59f-48d2-898a-12490c74a4e0 - } -!endif - MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf { - - FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - } - - MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf - PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.i= nf - MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf - - Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf - - Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf - - MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchS3Supp= ortDxe.inf - PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmContro= l.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmbusD= xe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchReset.= inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitDx= e.inf{ - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043 - } - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitSm= m.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmiDis= patcher.inf - -!if $(PCIESC_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPcieSm= m.inf -!endif - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiRun= time.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPolicy= InitDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchBiosWr= iteProtect.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmAccess= .inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PciHostBr= idge.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/VlvInitDx= e.inf - - # - # Performance Application; Set PERFORMANCE_ENABLE=3DTRUE for normal boot= performance and smm performance data - # -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf { - - gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE - } -!endif - - Vlv2TbltDevicePkg/VlvPlatformInitDxe/VlvPlatformInitDxe.inf{ - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/Dptf.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PnpDxe.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - - SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - - # - # specify GUID gEfiIfrNotInTPVPageGuid, this page will not - # be showed in TPV page. - # - *_*_*_VFR_FLAGS =3D -g e58809f8-fbc1-48e2-883a-a30fdc4b441e - } - - SecurityPkg/Tcg/TcgDxe/TcgDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - SecurityPkg/Tcg/TcgSmm/TcgSmm.inf -!endif - # - # EDK II Related Platform codes - # - Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf{ - - !if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeria= lPort.inf - !endif - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf - Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf - Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf - - Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf - Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PlatformC= puPolicy.inf - Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf -!if $(GOP_DRIVER_ENABLE) =3D=3D TRUE - Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf - -!endif - - - # - # SMM - # - MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf - MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf - UefiCpuPkg/CpuDxe/CpuDxe.inf - UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf - UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf - UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf - MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf - UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PowerMana= gement2.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/DigitalTh= ermalSensor.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/GraphicDx= eInitSmm.inf - - # - # ACPI - # - MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe= .inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043 - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27 - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf - - MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf - Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/PowerManagement/AcpiTables/Power= ManagementAcpiTables.inf - - Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTables.inf - - Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf - - MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsRes= ourceTableDxe.inf - - # - # PCI - # - MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf - - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/ISPDxe.inf - - - # - # ISA - # - Vlv2TbltDevicePkg/PcuSio/PcuSio.inf - MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf - -!if $(ACPI50_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerf= ormanceDxe.inf { - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerf= ormanceSmm.inf { - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } -!endif - -# -# eMMC/SD Card -# - MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf - MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf - MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf - -# -# IDE/SCSI/AHCI -# - MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf - MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf - MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf - MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf - FatPkg/EnhancedFatDxe/Fat.inf - ShellPkg/Application/Shell/Shell.inf { - - ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellComman= dLib.inf - NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1Co= mmandsLib.inf - NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1= CommandsLib.inf - NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1= CommandsLib.inf - HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandlePar= singLib.inf - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcf= gCommandLib.inf - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF - gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE - gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 - } -!if $(SATA_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SataContr= oller.inf -!endif - MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf -!if $(SCSI_ENABLE) =3D=3D TRUE - MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf - MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -!endif -# -# Console -# - MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf - MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf - MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf - MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf - MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf - MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf - - # - # USB - # -!if $(USB_ENABLE) =3D=3D TRUE - MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf - MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf - MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf - MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf - MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf - MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf - -!endif - - # - # SMBIOS - # - MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf - Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf - - # - # CPU/FW Microde - # - Vlv2SocBinPkg/Microcode/MicrocodeUpdates.inf { - - *_*_*_GENFW_FLAGS =3D -a 0x800 -p 0xFF - } - - - # - # Network Stacks - # -!include NetworkPkg/Network.dsc.inc - -!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf - MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf -!endif - -!if $(CAPSULE_ENABLE) - !include Vlv2TbltDevicePkg/FmpMinnowMaxSystem.dsc - !include Vlv2TbltDevicePkg/FmpGreenSampleDevice.dsc - !include Vlv2TbltDevicePkg/FmpBlueSampleDevice.dsc - !include Vlv2TbltDevicePkg/FmpRedSampleDevice.dsc -!endif - -!if $(MICOCODE_CAPSULE_ENABLE) - IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.in= f { - - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } -!endif - -[BuildOptions] -# -# Define Build Options both for EDK and EDKII drivers. -# - -# -# Define token for different Platform -# -!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -DCLKGEN_CONFIG_EXTRA=3D1 -!else - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -!endif - -!if $(PCIESC_ENABLE) =3D=3D TRUE - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -DPCIESC_SUPPORT=3D1 -!else - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -!endif - - DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS =3D $(CLKGEN_CONFIG_EXTRA_BUI= LD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION) - - GCC:*_*_*_CC_FLAGS =3D -Wno-missing-braces -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - MSFT:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - INTEL:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D -!else - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D -!endif - -# -# Force PE/COFF sections to be aligned at 4KB boundaries to support page l= evel -# protection of DXE_RUNTIME_DRIVER modules -# -[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] - MSFT:*_*_*_DLINK_FLAGS =3D /ALIGN:4096 - GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 - -# -# Force PE/COFF sections to be aligned at 4KB boundaries to support page l= evel -# protection of DXE_SMM_DRIVER/SMM_CORE modules -# -[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_C= ORE] - MSFT:*_*_*_DLINK_FLAGS =3D /ALIGN:4096 - GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 - -[BuildOptions.Common.EDKII] - *_*_IA32_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - - *_*_X64_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOUR= CE_LEVEL_DEBUG_BUILD_OPTIONS) - *_*_X64_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Platf= orm/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc deleted file mode 100644 index 76146c7e19..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc +++ /dev/null @@ -1,1301 +0,0 @@ -#/** @file -# Platform description. -# -# Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -##########################################################################= ###### -# -# Defines Section - statements that will be processed to create a Makefile. -# -##########################################################################= ###### -[Defines] - PLATFORM_NAME =3D Vlv2TbltDevicePkg - PLATFORM_GUID =3D 465B0A0B-7AC1-443b-8F67-7B8DEC14= 5F90 - PLATFORM_VERSION =3D 0.1 - DSC_SPECIFICATION =3D 0x00010005 - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkg - SUPPORTED_ARCHITECTURES =3D IA32|X64 - BUILD_TARGETS =3D DEBUG|RELEASE - SKUID_IDENTIFIER =3D DEFAULT - VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 - - DEFINE RC_BINARY_RELEASE =3D TRUE - # - # Platform On/Off features are defined here - # - !include Vlv2TbltDevicePkg/PlatformPkgConfig.dsc - - DEFINE PLATFORMX64_ENABLE =3D TRUE - - DEFINE DXE_ARCHITECTURE =3D X64 - - FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformPkgGcc= .fdf -!if $(LFMA_ENABLE) =3D=3D TRUE - FIX_LOAD_TOP_MEMORY_ADDRESS =3D 0xFFFFFFFFFFFFFFFF - DEFINE TOP_MEMORY_ADDRESS =3D 0xFFFFFFFFFFFFFFFF -!else - FIX_LOAD_TOP_MEMORY_ADDRESS =3D 0x0 - DEFINE TOP_MEMORY_ADDRESS =3D 0x0 -!endif - - DEFINE PLATFORM_PCIEXPRESS_BASE =3D 0E0000000 - -##########################################################################= ###### -# -# SKU Identification section - list of all SKU IDs supported by this -# Platform. -# -##########################################################################= ###### -[SkuIds] - 0|DEFAULT # The entry: 0|DEFAULT is reserved and always req= uired. - -[DefaultStores] - 0|STANDARD # UEFI Standard default 0|STANDARD is reserved. - 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is r= eserved. - -##########################################################################= ###### -# -# Library Class section - list of all Library Classes needed by this Platf= orm. -# -##########################################################################= ###### -[LibraryClasses.common] - # - # Entry point - # - PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf - PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf - DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf - UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf - UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiA= pplicationEntryPoint.inf - - # - # Basic - # - BaseLib|MdePkg/Library/BaseLib/BaseLib.inf -!if $(SSE2_ENABLE) =3D=3D TRUE - BaseMemoryLib|MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf -!else - BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf -!endif - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf - IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf - PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf - PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.i= nf - PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf - PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf - CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMain= tenanceLib.inf - PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf - PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeC= offGetEntryPointLib.inf -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - PchPlatformLib|Vlv2TbltDevicePkg/Library/PchPlatformLib/PchPlatformLib.i= nf -!endif - # - # UEFI & PI - # - UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf - UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/U= efiRuntimeServicesTableLib.inf - UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf - UefiLib|MdePkg/Library/UefiLib/UefiLib.inf - HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServic= esLib.inf - DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf - UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiTianoCust= omDecompressLib.inf - PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/= PeiServicesTablePointerLibIdt.inf - PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf - DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf - DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableL= ib.inf - UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf - UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf - BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.i= nf - SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf - FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLib.i= nf - UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManag= erLib.inf - # - # Framework - # -!if $(S3_ENABLE) =3D=3D TRUE - S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScrip= tLib.inf -!else - S3BootScriptLib|MdePkg/Library/BaseS3BootScriptLibNull/BaseS3BootScriptL= ibNull.inf -!endif - S3IoLib|MdePkg/Library/BaseS3IoLib/BaseS3IoLib.inf - S3PciLib|MdePkg/Library/BaseS3PciLib/BaseS3PciLib.inf - - # - # Generic Modules - # -!if $(USB_ENABLE) =3D=3D TRUE - UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf -!endif -!if $(SCSI_ENABLE) =3D=3D TRUE - UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf -!endif - - OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHo= okStatusCodeLibNull.inf -!if $(CAPSULE_ENABLE) =3D=3D TRUE - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf -!else - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf -!endif - FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAu= thenticationLibNull.inf - IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf - PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/Platfor= mFlashAccessLib/PlatformFlashAccessLib.inf - MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/Platfo= rmFlashAccessLib/PlatformFlashAccessLib.inf - DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGr= aphics/DisplayUpdateProgressLibGraphics.inf - SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchroniza= tionLib.inf - SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeS= ecurityManagementLib.inf - IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf - DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseD= ebugPrintErrorLevelLib.inf - - # - # CPU - # - MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf - LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuE= xceptionHandlerLib.inf - MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf - - # - # ICH - # - SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf - SmmLib|Vlv2TbltDevicePkg/Library/PchSmmLib/PchSmmLib.inf - - # - # Platform - # - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf - ResetSystemLib|Vlv2TbltDevicePkg/Library/ResetSystemLib/ResetSystemLib.i= nf - - PlatformCmosLib|Vlv2TbltDevicePkg/Library/PlatformCmosLib/PlatformCmosLi= b.inf - - # - # Misc - # - MonoStatusCodeLib|Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf -!if $(TARGET) =3D=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull= .inf -!else - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!endif - - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf -!if $(TPM_ENABLED) =3D=3D TRUE - TpmCommLib|SecurityPkg/Library/TpmCommLib/TpmCommLib.inf - Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf - Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf -!endif - - PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatfor= mHookLibNull.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDeb= ug/PeCoffExtraActionLibDebug.inf - DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibS= erialPort/DebugCommunicationLibSerialPort.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!else - PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeC= offExtraActionLibNull.inf - DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.i= nf -!endif - - # - # CryptLib - # -!if $(TPM_ENABLED) =3D=3D TRUE - TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasure= mentLib.inf -!else - TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurem= entLibNull.inf -!endif - - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf - - StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf - -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecu= reLibNull.inf - AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf -!else - AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLib= Null.inf -!endif - - FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf - - VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf - ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf - FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf - IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf -!if $(NETWORK_TLS_ENABLE) =3D=3D TRUE - TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf -!endif - Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf - Tcg2PhysicalPresenceLib|SecurityPkg/Library/DxeTcg2PhysicalPresenceLib/D= xeTcg2PhysicalPresenceLib.inf - Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibN= ull.inf - - BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf - -[LibraryClasses.IA32.SEC] -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf -!endif - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - -[LibraryClasses.IA32.PEIM, LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA= 32.SEC] - # - # PEI phase common - # - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf - MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAlloc= ationLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiRepor= tStatusCodeLib.inf - ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExt= ractGuidedSectionLib.inf - MultiPlatformLib|Vlv2TbltDevicePkg/Library/MultiPlatformLib/MultiPlatfor= mLib.inf - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiC= puExceptionHandlerLib.inf - MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf - -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.= inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(TARGET) =3D=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull= .inf -!else - DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug= LibReportStatusCode.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf -!endif - - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf - HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terPei.inf -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib= .inf -!endif - -[LibraryClasses.X64] - # - # DXE phase common - # - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf - ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExt= ractGuidedSectionLib.inf - - Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf -!if $(TPM_ENABLED) =3D=3D TRUE - TcgPhysicalPresenceLib|SecurityPkg/Library/DxeTcgPhysicalPresenceLib/Dxe= TcgPhysicalPresenceLib.inf -!endif - - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf - EfiRegTableLib|Vlv2TbltDevicePkg/Library/EfiRegTableLib/EfiRegTableLib.i= nf - HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terDxe.inf - -[LibraryClasses.X64.DXE_DRIVER] - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/Customize= dDisplayLib.inf -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.= inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - - FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLibDx= e.inf - -[LibraryClasses.X64.DXE_CORE] - HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf - MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeC= oreMemoryAllocationLib.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerform= anceLib.inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -[LibraryClasses.X64.DXE_SMM_DRIVER] - MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.= inf - SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableL= ib.inf - ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf - MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf - LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf - SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCp= uPlatformHookLibNull.inf - SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib= .inf - - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf - !if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf - !endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTime= rLib.inf -!endif - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuE= xceptionHandlerLib.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - TcgPpVendorLib|SecurityPkg/Library/TcgPpVendorLibNull/TcgPpVendorLibNull= .inf -!endif - -[LibraryClasses.X64.SMM_CORE] - MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/Pi= SmmCoreMemoryAllocationLib.inf - SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/Pi= SmmCoreSmmServicesTableLib.inf - ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf - SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/S= mmCorePlatformHookLibNull.inf - SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf -!endif - - PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - -[LibraryClasses.X64.DXE_RUNTIME_DRIVER] - ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/R= untimeDxeReportStatusCodeLib.inf -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE || $(TPM_ENABLED) =3D=3D TRUE - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -!if $(CAPSULE_ENABLE) =3D=3D TRUE - CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf -!endif - -[LibraryClasses.common.UEFI_DRIVER] - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -[LibraryClasses.X64.UEFI_APPLICATION] - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf -!endif - -##########################################################################= ###### -# -# Pcd Section - list of all EDK II PCD Entries defined by this Platform -# -##########################################################################= ###### -[PcdsFeatureFlag.common] -!if $(MINI_BIOS_ENABLE) =3D=3D FALSE - gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|TRUE -!else - gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|FALSE -!endif -# -# If PcdDxeIplSwitchToLongMode is TRUE, DxeIpl will load a 64-bit DxeCore = and switch to long mode to hand over to DxeCore. -# - gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE - - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserGrayOutTextStatement|TRUE - -!if $(CAPSULE_RESET_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst= |FALSE -!if $(TARGET) =3D=3D RELEASE - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE -!if $(ISA_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|FALSE -!endif -!if $(USB_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|FALSE -!endif -!if $(RAM_SERIAL_STATUS_CODE_ENABLE) =3D=3D TRUE - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|TRUE -!else - gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|FALSE -!endif - - -!if $(VARIABLE_INFO_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|FALSE -!endif - -!if $(SOURCE_DEBUG_ENABLE) - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug|TRUE -!endif - - gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|TRUE - -[PcdsFixedAtBuild.common] -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x22000 -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x4000 -!endif - gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x00000800 - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x400 - gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE - gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport|FALSE -!if $(S4_ENABLE) =3D=3D TRUE - gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|TRUE -!else - gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FAL= SE -!endif -!if $(TARGET) =3D=3D RELEASE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3 -!else - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 -!endif -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1 - gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|60 -!endif - - gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable|$(TOP_MEM= ORY_ADDRESS) - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor|0x0 - gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor|0x01 - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 - gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE - gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|2 -!endif - - # - # Set SMM stack size to 16 KB. - # - gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x4000 - - gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c= , 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0= x31 } - - # - # Clear unused single certificate PCD - # - gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer|{0} - - # - # Lock all updatable firmware devices at End of DXE - # - gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEndOfDxe= EventGroupGuid)} -# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEventRe= adyToBootGuid)} - - # - # Set PcdFmpDeviceTestKeySha256Digest to {0} to disable test key detecti= on - # -# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest|{0} - -[PcdsFixedAtBuild.IA32] -!if $(TARGET) =3D=3D RELEASE - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3 -!else - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 -!endif - -!if $(RECOVERY_ENABLE) - gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap" -!endif - -[PcdsPatchableInModule.common] - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6 - gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRES= S_BASE) - - ########################################################################= ############################### - # - # Begin of MRC parameters - # - - ## Memory Parameter Patchable. - # FALSE - MRC Parameters are fixed for MinnowBoard Max
- # TRUE - MRC Parameters are patchable by following PCDs
- # @Prompt Memory Parameter Patchable. - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdMemoryParameterPatchable|FALSE - - ## Memory Down or DIMM slot. - # 0 - DIMM
- # 1 - Memory Down
- # @Prompt Enable Memory Down - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableMemoryDown|1 - - ## The speed of DRAM. - # 0 - 800 MHz
- # 1 - 1066 MHz
- # 2 - 1333 MHz
- # 3 - 1600 MHz
- # @Prompt DRAM Speed - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDramSpeed|1 - - ## DRAM Type. - # 0 - DDR3
- # 1 - DDR3L
- # 2 - DDR3U
- # 3 - DDR3All
- # 4 - LPDDR2
- # 5 - LPDDR3
- # 6 - DDR4
- # @Prompt DRAM Type - # @ValidList 0x80000001 | 0, 1, 2, 3, 4, 5, 6 - gVlvRefCodePkgTokenSpaceGuid.PcdDramType|1 - - ## Please populate DIMM slot 0 if only one DIMM is supported. - # 0 - Disable
- # 1 - Enable
- # @Prompt DIMM 0 Enable - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm0|1 - - ## DIMM 1 has to be identical to DIMM 0. - # 0 - Disable
- # 1 - Enable
- # @Prompt DIMM 1 Enable Type - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm1|0 - - ## DRAM device data width. - # 0 - x8
- # 1 - x16
- # 2 - x32
- # @Prompt DIMM_DWIDTH - # @ValidList 0x80000001 | 0, 1, 2 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmDataWidth|1 - - ## DRAM device data density. - # 0 - 1 Gbit
- # 1 - 2 Gbit
- # 2 - 4 Gbit
- # 3 - 8 Gbit
- # @Prompt DIMM_Density - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmDensity|2 - - ## DRAM device data bus width. - # 0 - 8 bits
- # 1 - 16 bits
- # 2 - 32 bits
- # 3 - 64 bits
- # @Prompt DIMM_BusWidth - # @ValidList 0x80000001 | 0, 1, 2, 3 - gVlvRefCodePkgTokenSpaceGuid.PcdDimmBusWidth|3 - - ## Ranks Per DIMM or Sides Per DIMM. - # 0 - 1 Rank
- # 1 - 2 Ranks
- # @Prompt DIMM_Sides - # @ValidList 0x80000001 | 0, 1 - gVlvRefCodePkgTokenSpaceGuid.PcdRankPerDimm|0 - - ## tCL.

- # @Prompt tCL - gVlvRefCodePkgTokenSpaceGuid.PcdTcl|11 - - ## tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc. - # @Prompt tRP_tRCD - gVlvRefCodePkgTokenSpaceGuid.PcdTrpTrcd|11 - - ## tWR in DRAM clk. - # @Prompt tWR - gVlvRefCodePkgTokenSpaceGuid.PcdTwr|12 - - ## tWTR in DRAM clk. - # @Prompt tWTR - gVlvRefCodePkgTokenSpaceGuid.PcdTwtr|6 - - ## tRRD in DRAM clk. - # @Prompt tRRD - gVlvRefCodePkgTokenSpaceGuid.PcdTrrd|6 - - ## tRTP in DRAM clk. - # @Prompt tRTP - gVlvRefCodePkgTokenSpaceGuid.PcdTrtp|6 - - ## tFAW in DRAM clk. - # @Prompt tFAW - gVlvRefCodePkgTokenSpaceGuid.PcdTfaw|32 - - # - # End of MRC parameters. - # - ########################################################################= ####################### - -[PcdsDynamicHii.common.DEFAULT] - gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVar= iableGuid|0x0|5 # Variable: L"Timeout" - gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|L"HwErrRecSupport"|= gEfiGlobalVariableGuid|0x0|1 # Variable: L"HwErrRecSupport" - gPlatformModuleTokenSpaceGuid.PcdBootState|L"BootState"|gPlatformModuleT= okenSpaceGuid|0x0|TRUE - -[PcdsDynamicDefault.common.DEFAULT] - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0 - !if $(TPM_ENABLED) =3D=3D TRUE - gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x7b, 0x3a, 0xcd, 0x= 72, 0xA5, 0xFE, 0x5e, 0x4f, 0x91, 0x65, 0x4d, 0xd1, 0x21, 0x87, 0xbb, 0x13} - !endif - - ## This PCD defines the video horizontal resolution. - # This PCD could be set to 0 then video resolution could be at highest = resolution. - #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 - ## This PCD defines the video vertical resolution. - # This PCD could be set to 0 then video resolution could be at highest = resolution. - #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 - - ## This PCD defines the Console output column and the default value is 2= 5 according to UEFI spec. - # This PCD could be set to 0 then console output could be at max column= and max row. - gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|31 - ## This PCD defines the Console output row and the default value is 80 a= ccording to UEFI spec. - # This PCD could be set to 0 then console output could be at max column= and max row. - gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|100 - - ## The PCD is used to specify the video horizontal resolution of text se= tup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|800 - ## The PCD is used to specify the video vertical resolution of text setu= p. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|600 - ## The PCD is used to specify the console output column of text setup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|100 - ## The PCD is used to specify the console output column of text setup. - gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|31 - -!if $(TPM_ENABLED) =3D=3D TRUE - gEfiSecurityPkgTokenSpaceGuid.PcdTpmInitializationPolicy|1 - gEfiSecurityPkgTokenSpaceGuid.PcdTpmScrtmPolicy|1 -!endif - -[PcdsDynamicExDefault.common.DEFAULT] - gEfiVLVTokenSpaceGuid.PcdTCSmbaIoBaseAddress|0x1040 - gEfiVLVTokenSpaceGuid.PcdEmmcManufacturerId|0 - gEfiVLVTokenSpaceGuid.PcdProductSerialNumber|0 - gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable|TRUE - gEfiVLVTokenSpaceGuid.PcdFTPMErrorOccur|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMErrorSkip|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMCommand|0 - gEfiVLVTokenSpaceGuid.PcdFTPMResponse|0 - gEfiVLVTokenSpaceGuid.PcdFTPMNotRespond|FALSE - gEfiVLVTokenSpaceGuid.PcdFTPMStatus|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr|0 - gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0 - gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0 - gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 - gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 - gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] -!if $(RECOVERY_ENABLE) - gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID(= "AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 -!endif - -[PcdsDynamicExVpd.common.DEFAULT] - gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|* - -[PcdsDynamicExHii.common.DEFAULT.STANDARD] - !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc - -[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING] - !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc - -[Components.IA32] - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf - - MdeModulePkg/Core/Pei/PeiMain.inf { -!if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E -!endif - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } - - Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf { -!if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E -!endif - } - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MemoryInit.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } - -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SeCUma.inf -!endif - -!if $(RC_BINARY_RELEASE) =3D=3D TRUE - Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf { - !if $(TARGET) =3D=3D DEBUG - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E - !endif - } -!endif - -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf{ - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgen= tLib.inf - PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePla= tformHookLibNull.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } -!endif - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf - SecurityPkg/Tcg/TcgPei/TcgPei.inf { - - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif - - Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6 - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } - Vlv2TbltDevicePkg/FvInfoPei/FvInfoPei.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf -!if $(PCIESC_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchEarlyInitPeim.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - } -!endif - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf - - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSpiPeim.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmAccess.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmControl.inf - MdeModulePkg/Universal/PCD/Pei/Pcd.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/CpuPeim.inf - UefiCpuPkg/CpuIoPei/CpuIoPei.inf - UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf - UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf - -!if $(RECOVERY_ENABLE) - # - # Recovery - # - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf - MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf - MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf - MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf - FatPkg/FatPei/FatPei.inf - MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf - SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.i= nf { - - FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048= Sha256/FmpAuthenticationLibRsa2048Sha256.inf - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif - -!if $(CAPSULE_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/CapsulePei/CapsulePei.inf -!endif - MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { - -!if $(LZMA_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompress= Lib.inf -!endif - } - - MdeModulePkg/Universal/Variable/Pei/VariablePei.inf - MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf { - - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - } -!endif -!if $(ACPI50_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerf= ormancePei.inf{ - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } - -!endif -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouter= Pei.inf -!endif -[Components.X64] - # - # EDK II Related Platform codes - # - MdeModulePkg/Core/Dxe/DxeMain.inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046 - -!if $(DXE_CRC32_SECTION_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32Gu= idedSectionExtractLib.inf -!endif -!if $(LZMA_ENABLE) =3D=3D TRUE - NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompre= ssLib.inf -!endif -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - } - MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { - - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - } - UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf - - MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCod= eRouterRuntimeDxe.inf - MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRun= timeDxe.inf { - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - } - -!if $(CAPSULE_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf { - - PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf - MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryA= llocationLib.inf - HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf - CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/Sec= PeiCpuExceptionHandlerLib.inf -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgen= tLib.inf -!endif - } -!endif - - MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouter= Smm.inf - MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf{ - -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificatio= nLib.inf -!endif - -!if $(TPM_ENABLED) =3D=3D TRUE - NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.i= nf -!endif - } - MdeModulePkg/Universal/Metronome/Metronome.inf - - MdeModulePkg/Universal/BdsDxe/BdsDxe.inf { - - PlatformBootManagerLib|Vlv2TbltDevicePkg/Library/DxePlatformBootMana= gerLib/DxePlatformBootManagerLib.inf - } - MdeModulePkg/Logo/LogoDxe.inf - MdeModulePkg/Application/UiApp/UiApp.inf { - - NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf - NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf - NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanc= eManagerUiLib.inf - } - - MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf - MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf - MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { - - NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } - Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf - MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiSmm= .inf -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE - SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDx= e.inf { - - PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/Platform= SecureLibNull.inf - - # - # Specify GUID gEfiIfrBootMaintenanceGuid, to install Secure Boot Co= nfiguration menu - # into Boot Maintenance Manager menu - # - *_*_*_VFR_FLAGS =3D -g b2dedc91-d59f-48d2-898a-12490c74a4e0 - } -!endif - MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf { - - FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - } - - MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf - PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.i= nf - MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf - - Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf - - Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf - - MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchS3Supp= ortDxe.inf - PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmContro= l.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmbusD= xe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchReset.= inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitDx= e.inf{ - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043 - } - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitSm= m.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmiDis= patcher.inf - -!if $(PCIESC_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPcieSm= m.inf -!endif - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiRun= time.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPolicy= InitDxe.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchBiosWr= iteProtect.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmAccess= .inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PciHostBr= idge.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/VlvInitDx= e.inf - - # - # Performance Application; Set PERFORMANCE_ENABLE=3DTRUE for normal boot= performance and smm performance data - # -!if $(PERFORMANCE_ENABLE) =3D=3D TRUE - ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf { - - gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE - } -!endif - - Vlv2TbltDevicePkg/VlvPlatformInitDxe/VlvPlatformInitDxe.inf{ - -!if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf -!endif - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/Dptf.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PnpDxe.inf - -!if $(TPM_ENABLED) =3D=3D TRUE - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - - SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - - # - # specify GUID gEfiIfrNotInTPVPageGuid, this page will not - # be showed in TPV page. - # - *_*_*_VFR_FLAGS =3D -g e58809f8-fbc1-48e2-883a-a30fdc4b441e - } - - SecurityPkg/Tcg/TcgDxe/TcgDxe.inf { - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - SecurityPkg/Tcg/TcgSmm/TcgSmm.inf -!endif - # - # EDK II Related Platform codes - # - Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf{ - - !if $(TARGET) !=3D RELEASE - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeria= lPort.inf - !endif - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf - Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf - Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf - - Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf - Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PlatformC= puPolicy.inf - Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf -!if $(GOP_DRIVER_ENABLE) =3D=3D TRUE - Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf - -!endif - - - # - # SMM - # - MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf - MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf - UefiCpuPkg/CpuDxe/CpuDxe.inf - UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf - UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf - UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf - MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf - UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PowerMana= gement2.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/DigitalTh= ermalSensor.inf - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/GraphicDx= eInitSmm.inf - - # - # ACPI - # - MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe= .inf { - - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043 - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27 - - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - } - MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf - - MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf - Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/PowerManagement/AcpiTables/Power= ManagementAcpiTables.inf - - Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTables.inf - - Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf - - MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsRes= ourceTableDxe.inf - - # - # PCI - # - MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf - - - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/ISPDxe.inf - - - # - # ISA - # - Vlv2TbltDevicePkg/PcuSio/PcuSio.inf - MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf - -!if $(ACPI50_ENABLE) =3D=3D TRUE - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerf= ormanceDxe.inf { - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } - MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerf= ormanceSmm.inf { - - TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpi= TimerLib.inf - } -!endif - -# -# eMMC/SD Card -# - MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf - MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf - MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf - -# -# IDE/SCSI/AHCI -# - MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf - MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf - MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf - MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf - FatPkg/EnhancedFatDxe/Fat.inf - ShellPkg/Application/Shell/Shell.inf { - - ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellComman= dLib.inf - NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1Co= mmandsLib.inf - NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comm= andsLib.inf - NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1= CommandsLib.inf - NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1= CommandsLib.inf - HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandlePar= singLib.inf - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcf= gCommandLib.inf - - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF - gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE - gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 - } -!if $(SATA_ENABLE) =3D=3D TRUE - Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SataContr= oller.inf -!endif - MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf -!if $(SCSI_ENABLE) =3D=3D TRUE - MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf - MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf -!endif -# -# Console -# - MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf - MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf - MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf - MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf - MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf - MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf - - # - # USB - # -!if $(USB_ENABLE) =3D=3D TRUE - MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf - MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf - MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf - MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf - MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf - MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf - -!endif - - # - # SMBIOS - # - MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf - Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf - - # - # CPU/FW Microde - # - Vlv2SocBinPkg/Microcode/MicrocodeUpdates.inf { - - *_*_*_GENFW_FLAGS =3D -a 0x800 -p 0xFF - } - - - # - # Network Stacks - # -!include NetworkPkg/Network.dsc.inc - -!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf - MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf -!endif - -!if $(CAPSULE_ENABLE) - !include Vlv2TbltDevicePkg/FmpMinnowMaxSystem.dsc - !include Vlv2TbltDevicePkg/FmpGreenSampleDevice.dsc - !include Vlv2TbltDevicePkg/FmpBlueSampleDevice.dsc - !include Vlv2TbltDevicePkg/FmpRedSampleDevice.dsc -!endif - -!if $(MICOCODE_CAPSULE_ENABLE) - IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.in= f { - - DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPor= t.inf - PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf - SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerial= PortLib16550.inf - } -!endif - -[BuildOptions] -# -# Define Build Options both for EDK and EDKII drivers. -# - -# -# Define token for different Platform -# -!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -DCLKGEN_CONFIG_EXTRA=3D1 -!else - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -!endif - -!if $(PCIESC_ENABLE) =3D=3D TRUE - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -DPCIESC_SUPPORT=3D1 -!else - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -!endif - - DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS =3D $(CLKGEN_CONFIG_EXTRA_BUI= LD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION) - - GCC:*_*_*_CC_FLAGS =3D -Wno-missing-braces -!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE - MSFT:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - INTEL:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D -!else - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D -!endif - -# -# Force PE/COFF sections to be aligned at 4KB boundaries to support page l= evel -# protection of DXE_RUNTIME_DRIVER modules -# -[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] - MSFT:*_*_*_DLINK_FLAGS =3D /ALIGN:4096 - GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 - -# -# Force PE/COFF sections to be aligned at 4KB boundaries to support page l= evel -# protection of DXE_SMM_DRIVER/SMM_CORE modules -# -[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_C= ORE] - MSFT:*_*_*_DLINK_FLAGS =3D /ALIGN:4096 - GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 - -[BuildOptions.Common.EDKII] - *_*_IA32_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - - *_*_X64_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOUR= CE_LEVEL_DEBUG_BUILD_OPTIONS) - *_*_X64_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc index 9c36a660f8..6be194c732 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc @@ -1228,33 +1228,15 @@ [BuildOptions] # # Define Build Options both for EDK and EDKII drivers. # +GCC:*_*_*_CC_FLAGS =3D -Wno-missing-braces =20 # # Define token for different Platform # -!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D /DCLKGEN_CONFIG_EXTRA=3D1 -!else - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -!endif - -!if $(PCIESC_ENABLE) =3D=3D TRUE - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D /DPCIESC_SUPPORT=3D1 -!else - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -!endif - - DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS =3D $(CLKGEN_CONFIG_EXTRA_BUI= LD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION) - !if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE MSFT:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable INTEL:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable -!if $(TARGET) =3D=3D DEBUG - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D /Od /Oy- -!endif -!else - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D !endif =20 # @@ -1274,14 +1256,34 @@ [BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOpt= ions.common.EDKII.SMM_CORE] GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 =20 [BuildOptions.Common.EDKII] - *_*_IA32_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) +!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE + MSFT:*_*_*_CC_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_VFRPP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_APP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_PP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_ASLPP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_CC_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_VFRPP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_APP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_PP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_ASLPP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 +!endif =20 - *_*_X64_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOUR= CE_LEVEL_DEBUG_BUILD_OPTIONS) - *_*_X64_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) +!if $(PCIESC_ENABLE) =3D=3D TRUE + MSFT:*_*_*_CC_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_VFRPP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_APP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_PP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_ASLPP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + GCC:*_*_*_CC_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_VFRPP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_APP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_PP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_ASLPP_FLAGS =3D -DPCIESC_SUPPORT=3D1 +!endif + +!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE + !if $(TARGET) =3D=3D DEBUG + MSFT:*_*_X64_CC_FLAGS =3D /Od /Oy- + !endif +!endif diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform= /Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc index ec90d0851d..1d098c9cfe 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc @@ -18,7 +18,7 @@ [Defines] PLATFORM_GUID =3D 465B0A0B-7AC1-443b-8F67-7B8DEC14= 5F90 PLATFORM_VERSION =3D 0.1 DSC_SPECIFICATION =3D 0x00010005 - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkg + OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgX64 SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT @@ -1243,33 +1243,15 @@ [BuildOptions] # # Define Build Options both for EDK and EDKII drivers. # +GCC:*_*_*_CC_FLAGS =3D -Wno-missing-braces =20 # # Define token for different Platform # -!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D /DCLKGEN_CONFIG_EXTRA=3D1 -!else - DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =3D -!endif - -!if $(PCIESC_ENABLE) =3D=3D TRUE - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D /DPCIESC_SUPPORT=3D1 -!else - DEFINE PCIESC_SUPPORT_BUILD_OPTION =3D -!endif - - DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS =3D $(CLKGEN_CONFIG_EXTRA_BUI= LD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION) - !if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE MSFT:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable INTEL:*_*_X64_GENFW_FLAGS =3D --keepexceptiontable -!if $(TARGET) =3D=3D DEBUG - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D /Od /Oy- -!endif -!else - DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =3D !endif =20 # @@ -1289,14 +1271,34 @@ [BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOpt= ions.common.EDKII.SMM_CORE] GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 =20 [BuildOptions.Common.EDKII] - *_*_IA32_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_IA32_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) +!if $(CLKGEN_CONFIG_EXTRA_ENABLE) =3D=3D TRUE + MSFT:*_*_*_CC_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_VFRPP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_APP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_PP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + MSFT:*_*_*_ASLPP_FLAGS =3D /DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_CC_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_VFRPP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_APP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_PP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 + GCC:*_*_*_ASLPP_FLAGS =3D -DCLKGEN_CONFIG_EXTRA=3D1 +!endif =20 - *_*_X64_CC_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOUR= CE_LEVEL_DEBUG_BUILD_OPTIONS) - *_*_X64_VFRPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_APP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_PP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) - *_*_X64_ASLPP_FLAGS =3D $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) +!if $(PCIESC_ENABLE) =3D=3D TRUE + MSFT:*_*_*_CC_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_VFRPP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_APP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_PP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + MSFT:*_*_*_ASLPP_FLAGS =3D /DPCIESC_SUPPORT=3D1 + GCC:*_*_*_CC_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_VFRPP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_APP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_PP_FLAGS =3D -DPCIESC_SUPPORT=3D1 + GCC:*_*_*_ASLPP_FLAGS =3D -DPCIESC_SUPPORT=3D1 +!endif + +!if $(SOURCE_DEBUG_ENABLE) =3D=3D TRUE + !if $(TARGET) =3D=3D DEBUG + MSFT:*_*_X64_CC_FLAGS =3D /Od /Oy- + !endif +!endif diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/= Vlv2TbltDevicePkg/bld_vlv.bat index e804ed37e3..fb634c490c 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat +++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat @@ -179,13 +179,8 @@ if defined VS140COMNTOOLS ( =20 echo Ensuring correct build directory is present if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build -if "%Arch%"=3D=3D"IA32" ( - if not exist %WORKSPACE%\Build\%PLATFORM_NAME%IA32 mkdir %WORKSPACE%\Bui= ld\%PLATFORM_NAME%IA32 - set BUILD_PATH=3D%WORKSPACE%\Build\%PLATFORM_NAME%IA32\%TARGET%_%TOOL_CH= AIN_TAG% -) else ( - if not exist %WORKSPACE%\Build\%PLATFORM_NAME% mkdir %WORKSPACE%\Build\%= PLATFORM_NAME% - set BUILD_PATH=3D%WORKSPACE%\Build\%PLATFORM_NAME%\%TARGET%_%TOOL_CHAIN_= TAG% -) +if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Bui= ld\%PLATFORM_NAME%%Arch% +set BUILD_PATH=3D%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CH= AIN_TAG% if not exist %BUILD_PATH% mkdir %BUILD_PATH% =20 ::********************************************************************** @@ -215,8 +210,9 @@ if "%Arch%"=3D=3D"IA32" ( set Build_Flags=3D%Build_Flags% -a IA32 -a X64 ) set Build_Flags=3D%Build_Flags% -t %TOOL_CHAIN_TAG% -set Build_Flags=3D%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc set Build_Flags=3D%Build_Flags% -n %build_threads% +set Capsule_Build_Flags=3D%Build_Flags% +set Build_Flags=3D%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc if "%GenLog%"=3D=3D"TRUE" ( set Build_Flags=3D%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log ) @@ -264,11 +260,9 @@ copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM ::********************************************************************** :: Build Capsules ::********************************************************************** -if "%Arch%"=3D=3D"X64" ( - echo Invoking EDK2 build for capsules... - echo build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc - call build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc -) +echo Invoking EDK2 build for capsules... +echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arc= h%.dsc +call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arc= h%.dsc =20 goto Exit =20 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/V= lv2TbltDevicePkg/bld_vlv.sh index 8d96152285..c8db91c6dc 100755 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh +++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh @@ -134,17 +134,10 @@ if [ ! -d ${WORKSPACE}/Build ]; then mkdir ${WORKSPACE}/Build fi =20 -if [ $Arch =3D=3D "IA32" ]; then - if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 ]; then - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 - fi - BUILD_PATH=3D${WORKSPACE}/Build/${PLATFORM_NAME}IA32/${TARGET}_${TOOL_CH= AIN_TAG} -else - if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME} ]; then - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME} - fi - BUILD_PATH=3D${WORKSPACE}/Build/${PLATFORM_NAME}/${TARGET}_${TOOL_CHAIN_= TAG} +if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then + mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} fi +BUILD_PATH=3D${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_C= HAIN_TAG} =20 if [ ! -d $BUILD_PATH ]; then mkdir $BUILD_PATH @@ -175,8 +168,9 @@ else Build_Flags=3D"$Build_Flags -a IA32 -a X64" fi Build_Flags=3D"$Build_Flags -t $TOOL_CHAIN_TAG" -Build_Flags=3D"$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkgGcc${Arch}.= dsc" Build_Flags=3D"$Build_Flags -n $build_threads" +Capsule_Build_Flags=3D"$Build_Flags" +Build_Flags=3D"$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc" if [ $GenLog =3D=3D "TRUE" ]; then Build_Flags=3D"$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log" fi @@ -219,11 +213,9 @@ cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM ##********************************************************************** ## Build Capsules ##********************************************************************** -if [ $Arch =3D=3D "X64" ]; then - echo "Invoking EDK2 build for capsules..." - echo build -t $TOOL_CHAIN_TAG -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.d= sc - build -t $TOOL_CHAIN_TAG -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc -fi +echo "Invoking EDK2 build for capsules..." +echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arc= h}.dsc +build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arc= h}.dsc =20 echo echo -------------------- The EDKII BIOS build has successfully completed.= -------------------- --=20 2.21.0.windows.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 (#43982): https://edk2.groups.io/g/devel/message/43982 Mute This Topic: https://groups.io/mt/32520523/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 00:08:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+43983+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43983+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563490823; cv=none; d=zoho.com; s=zohoarc; b=DVnAOGk+SBv/WRXFDLPDTkTb22iMecUl1ik3nsT6zryehk4xi1hzkLxDn/ZZ2oVbDFwjAVMjgUvIKavRbJG3+c+OylKj/1/m2MakAp+T3HjH372eGRGPTE4sp0WjmWnqmmPGlLHTOqVl+0Ev0P7zO7KCVpLvXmJ/qUa82PYTMnw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563490823; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=5ff0iPU63vDNa66eFr6a4Czow552Amwq69wD8SH52R0=; b=jWnhJCZoTffjU5Fk6+QBH9d/lRHaix2sVU2MBaKSkul3o4274GCuXWHaNxsMUPFoR8dtT5LY8bJZ/SNhPpyfttUmQt2kM1SYF+NKqMMRED9yuP48Hxc81rurenNDZSItwXF5WgeGvjrQNZ6Z7LOPmes2D66E8r362t1kRHESDCc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43983+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1563490823801471.354723805703; Thu, 18 Jul 2019 16:00:23 -0700 (PDT) Return-Path: X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Thu, 18 Jul 2019 16:00:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 16:00:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,279,1559545200"; d="scan'208";a="367511712" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 16:00:21 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-devel] [edk2-platforms Patch 4/5] Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python Date: Thu, 18 Jul 2019 16:00:16 -0700 Message-Id: <20190718230017.14852-5-michael.d.kinney@intel.com> In-Reply-To: <20190718230017.14852-1-michael.d.kinney@intel.com> References: <20190718230017.14852-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,michael.d.kinney@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563490823; bh=cyeiuCacRW7x3s2AkbGH9DwGOKVOp+Rjh9dkL4a28CY=; h=Cc:Date:From:Reply-To:Subject:To; b=gHIBMQNPozZaWRXJckTPsBtbI/WCXWKw7AFc2Gpk24xSeatjo3GH75jd5odyxdLAYDV 9iiNMrYrfcatg++0S1ojTWRTYQnzL7FGdHx7Rv0rL0IYzXmYW7NZ/VMaWaa8wExNx5121 nyhBpLMgRPO4iAQXJl3PAqGRFD8o6W3GAVY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Convert all the BAT/sh files used to generate capsules to OS independent Python script. Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney Reviewed-By: Zailiang Sun --- .../Capsule/GenerateCapsule/GenCapsuleAll.bat | 35 -- .../Capsule/GenerateCapsule/GenCapsuleAll.py | 397 ++++++++++++++++++ .../Capsule/GenerateCapsule/GenCapsuleAll.sh | 33 -- .../GenerateCapsule/GenCapsuleMinnowMax.bat | 131 ------ .../GenerateCapsule/GenCapsuleMinnowMax.sh | 59 --- .../GenCapsuleMinnowMaxRelease.bat | 131 ------ .../GenCapsuleMinnowMaxRelease.sh | 64 --- .../GenerateCapsule/GenCapsuleSampleColor.bat | 137 ------ .../GenerateCapsule/GenCapsuleSampleColor.sh | 70 --- .../Feature/Capsule/GenerateCapsule/Lvfs.ddf | 14 - .../LvfsGenCapsuleMinnowMax.bat | 139 ------ .../LvfsGenCapsuleMinnowMaxRelease.bat | 139 ------ .../LvfsGenCapsuleSampleColor.bat | 145 ------- .../GenerateCapsule/template.metainfo.xml | 27 -- .../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 2 +- .../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 2 +- 16 files changed, 399 insertions(+), 1126 deletions(-) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleAll.bat create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleAll.py delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleAll.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleMinnowMax.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleMinnowMax.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleMinnowMaxRelease.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleMinnowMaxRelease.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleSampleColor.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/GenCapsuleSampleColor.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/Lvfs.ddf delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/LvfsGenCapsuleMinnowMax.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/LvfsGenCapsuleMinnowMaxRelease.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/LvfsGenCapsuleSampleColor.bat delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Genera= teCapsule/template.metainfo.xml diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleAll.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Gen= erateCapsule/GenCapsuleAll.bat deleted file mode 100644 index 8f589565fa..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleAll.bat +++ /dev/null @@ -1,35 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for system firmware and -@REM firmware for sample devices -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal -cd /d %~dp0 - -rmdir /s /q %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules -mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules -mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment -mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert -mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.ef= i %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\CapsuleApp= .efi -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.= efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\CapsuleA= ppRelease.efi -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.ef= i %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\CapsuleApp.efi -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.= efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\CapsuleAppRelease.= efi -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.ef= i %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\CapsuleApp.efi -copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.= efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\CapsuleAppRelease= .efi - -call GenCapsuleMinnowMax.bat -call GenCapsuleMinnowMaxRelease.bat -call GenCapsuleSampleColor.bat Blue 149da854-7d19-4faa-a91e-862ea1324be6 -call GenCapsuleSampleColor.bat Green 79179bfd-704d-4c90-9e02-0ab8d968c18a -call GenCapsuleSampleColor.bat Red 72e2945a-00da-448e-9aa7-075ad840f9d4 - -call LvfsGenCapsuleMinnowMax.bat -call LvfsGenCapsuleMinnowMaxRelease.bat -call LvfsGenCapsuleSampleColor.bat Blue 149da854-7d19-4faa-a91e-862ea1324= be6 -call LvfsGenCapsuleSampleColor.bat Green 79179bfd-704d-4c90-9e02-0ab8d968c= 18a -call LvfsGenCapsuleSampleColor.bat Red 72e2945a-00da-448e-9aa7-075ad840f= 9d4 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleAll.py b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Gene= rateCapsule/GenCapsuleAll.py new file mode 100644 index 0000000000..b2fd65a6c6 --- /dev/null +++ b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleAll.py @@ -0,0 +1,397 @@ +## @file +# Generate capsules for Vlv2TbltDevicePkg +# openssl must be install and in path +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +GenCapsuleAll +''' + +import os +import sys +import argparse +import subprocess +import glob +import shutil +import struct +import datetime + +# +# Globals for help information +# +__prog__ =3D 'GenCapsuleAll' +__copyright__ =3D 'Copyright (c) 2019, Intel Corporation. All rights res= erved.' +__description__ =3D 'Generate Vlv2Tbl2DevicePkg capsules.\n' + +# +# Globals +# +gWorkspace =3D '' +gBaseToolsPath =3D '' +gArgs =3D None + +def LogAlways(Message): + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Log(Message): + global gArgs + if not gArgs.Verbose: + return + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Error(Message, ExitValue=3D1): + sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n') + sys.exit (ExitValue) + +def RelativePath(target): + global gWorkspace + Log('RelativePath' + target) + return os.path.relpath (target, gWorkspace) + +def NormalizePath(target): + if isinstance(target, tuple): + return os.path.normpath (os.path.join (*target)) + else: + return os.path.normpath (target) + +def RemoveFile(target): + target =3D NormalizePath(target) + if not target or target =3D=3D os.pathsep: + Error ('RemoveFile() invalid target') + if os.path.exists(target): + os.remove (target) + Log ('remove %s' % (RelativePath (target))) + +def RemoveDirectory(target): + target =3D NormalizePath(target) + if not target or target =3D=3D os.pathsep: + Error ('RemoveDirectory() invalid target') + if os.path.exists(target): + Log ('rmdir %s' % (RelativePath (target))) + shutil.rmtree(target) + +def CreateDirectory(target): + target =3D NormalizePath(target) + if not os.path.exists(target): + Log ('mkdir %s' % (RelativePath (target))) + os.makedirs (target) + +def Copy(src, dst): + src =3D NormalizePath(src) + dst =3D NormalizePath(dst) + for File in glob.glob(src): + Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst))) + shutil.copy (File, dst) + +GenerateCapsuleCommand =3D ''' +GenerateCapsule +--encode +--guid {FMP_CAPSULE_GUID} +--fw-version {FMP_CAPSULE_VERSION} +--lsv {FMP_CAPSULE_LSV} +--capflag PersistAcrossReset +--capflag InitiateReset +--signer-private-cert=3D{BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestCert= .pem +--other-public-cert=3D{BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestSub.pu= b.pem +--trusted-public-cert=3D{BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestRoot= .pub.pem +-o {FMP_CAPSULE_FILE} +{FMP_CAPSULE_PAYLOAD} +''' +MetaInfoXmlTemplate =3D ''' + + + com.intel.FMP_CAPSULE_BASE_NAME.firmware + FMP_CAPSULE_BASE_NAME +

System firmware for the FMP_CAPSULE_BASE_NAME + + Description of System firmware for the FMP_CAPSULE_BASE_NAME + + + FMP_CAPSULE_GUID + + http://www.tianocore.org + CC0-1.0 + BSD + Tianocore + + + + Build FMP_CAPSULE_STRING + + + + + + + + +''' + +LvfsDdfTemplate =3D ''' +.OPTION EXPLICIT ; Generate errors on variable typos + +.Set CabinetNameTemplate=3Dfirmware.cab ; The name of the file +.set DiskDirectoryTemplate=3DCDROM ; All cabinets go in a single directory +.Set Cabinet=3Don ; +.Set Compress=3Don ; +.Set DiskDirectory1=3D. +.Set MaxDiskSize=3D99999744 ; multiple of 512 + +;*** Files to zip ; +; +firmware.bin +firmware.metainfo.xml +;*** +''' + +def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, Capsu= lesPath, CapsulesSubDir): + global gBaseToolsPath + LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, V= ersion, Lsv, PayloadFileName)) + + VersionString =3D '.'.join([str(ord(x)) for x in struct.pack('>I', Ver= sion).decode()]) + + FmpCapsuleFile =3D NormalizePath ((CapsulesPath, CapsulesSubDir, BaseN= ame + '.' + VersionString + '.cap')) + Command =3D GenerateCapsuleCommand.format ( + FMP_CAPSULE_GUID =3D Guid, + FMP_CAPSULE_VERSION =3D Version, + FMP_CAPSULE_LSV =3D Lsv, + BASE_TOOLS_PATH =3D gBaseToolsPath, + FMP_CAPSULE_FILE =3D FmpCapsuleFile, + FMP_CAPSULE_PAYLOAD =3D PayloadFileName + ) + Command =3D ' '.join(Command.splitlines()).strip() + if gArgs.Verbose: + Command =3D Command + ' -v' + + Log (Command) + + Process =3D subprocess.Popen(Command, stdin=3Dsubprocess.PIPE, stdout= =3Dsubprocess.PIPE, stderr=3Dsubprocess.PIPE, shell=3DTrue) + ProcessOutput =3D Process.communicate() + + if Process.returncode =3D=3D 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + Copy (PayloadFileName, (CapsulesPath, 'firmware.bin')) + MetaInfoXml =3D MetaInfoXmlTemplate + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', st= r(Version)) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionStri= ng) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.= date.today())) + f =3D open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), '= w') + f.write(MetaInfoXml) + f.close() + + f =3D open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w') + f.write(LvfsDdfTemplate) + f.close() + + if sys.platform =3D=3D "win32": + Command =3D 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.dd= f')) + else: + Command =3D 'gcab --create firmware.cab firmware.bin firmware.meta= info.xml' + Log (Command) + + Process =3D subprocess.Popen(Command, cwd=3DCapsulesPath, stdin=3Dsubp= rocess.PIPE, stdout=3Dsubprocess.PIPE, stderr=3Dsubprocess.PIPE, shell=3DTr= ue) + ProcessOutput =3D Process.communicate() + + if Process.returncode =3D=3D 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + FmpCabinetFile =3D NormalizePath ((CapsulesPath, CapsulesSubDir, BaseN= ame + '.' + VersionString + '.cab')) + + Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile) + + RemoveFile ((CapsulesPath, 'firmware.cab')) + RemoveFile ((CapsulesPath, 'setup.inf')) + RemoveFile ((CapsulesPath, 'setup.rpt')) + RemoveFile ((CapsulesPath, 'Lvfs.ddf')) + RemoveFile ((CapsulesPath, 'firmware.metainfo.xml')) + RemoveFile ((CapsulesPath, 'firmware.bin')) + +def GenCapsuleSampleDevice (SampleDeviceName, Guid, Version, Lsv, Capsules= Path, CapsulesSubDir): + BinaryPayload =3D SampleDeviceName.encode() + bytearray(0x18 - len (Sa= mpleDeviceName.encode())) + BinaryPayload =3D BinaryPayload + struct.pack(' 1: + if ['X64'] in gArgs.Arch: + UefiArch =3D 'X64' + + CapsulesPath =3D NormalizePath((EdkiiBuildDir, 'Capsules')) + + CapsulesSubDir =3D 'TestCert' + '_' + UefiArch + '_' + gArgs.BuildTarg= et + '_' + gArgs.ToolChain + + # + # Create output directories + # + try: + CreateDirectory ((CapsulesPath)) + except: + pass + try: + CreateDirectory ((CapsulesPath, CapsulesSubDir)) + except: + pass + + # + # Copy CapsuleApp + # + Copy ((EdkiiBuildOutput, UefiArch, 'CapsuleApp.efi'), (CapsulesPath, C= apsulesSubDir)) + + # + # Generate capsules for the Red Sample Device + # + GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x= 00000010,0x00000000, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x= 00000011,0x00000000, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x= 00000012,0x00000000, CapsulesPath, CapsulesSubDir) + + # + # Generate capsules for the Green Sample Device + # + GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',= 0x00000020,0x00000020, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',= 0x00000021,0x00000020, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',= 0x00000022,0x00000020, CapsulesPath, CapsulesSubDir) + + # + # Generate capsules for the Blue Sample Device + # + GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0= x00000010,0x00000000, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0= x00000011,0x00000000, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0= x00000012,0x00000012, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0= x00000013,0x00000012, CapsulesPath, CapsulesSubDir) + GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0= x00000014,0x00000012, CapsulesPath, CapsulesSubDir) + + # + # Generate capsules for Minnow Max Firmware Updates + # + RomFileName =3D os.path.join (EdkiiBuildOutput, 'FV', 'VLV.fd') + GenCapsuleDevice('MinnowMax', RomFileName,'4096267B-DA0A-42EB-B5EB-FEF= 31D207CB4',0x0000000C,0x00000000, CapsulesPath, CapsulesSubDir) diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleAll.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Gene= rateCapsule/GenCapsuleAll.sh deleted file mode 100755 index 7b77b50c3f..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleAll.sh +++ /dev/null @@ -1,33 +0,0 @@ -# @file -# Linux script file to generate UEFI capsules for system firmware and -# firmware for sample devices -# -# Copyright (c) 2018, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# - -cd $(dirname $0) - -EFI_DIR=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/${TARGET}_${TOOL_CHAIN_TAG}/X= 64/ -CAP_DIR=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules -SCRIPT_DIR=3D$WORKSPACE/edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg/Fe= ature/Capsule/GenerateCapsule - -rm -rf $CAP_DIR -mkdir -p $CAP_DIR/SampleDevelopment -mkdir -p $CAP_DIR/NewCert -mkdir -p $CAP_DIR/TestCert -if [ "$TARGET" =3D=3D "DEBUG" ]; then - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/SampleDevelopment/CapsuleApp.efi - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/NewCert/CapsuleApp.efi - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/TestCert/CapsuleApp.efi - . $SCRIPT_DIR/GenCapsuleMinnowMax.sh -else - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/SampleDevelopment/CapsuleAppReleas= e.efi - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/NewCert/CapsuleAppRelease.efi - cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/TestCert/CapsuleAppRelease.efi - . $SCRIPT_DIR/GenCapsuleMinnowMaxRelease.sh -fi -. $SCRIPT_DIR/GenCapsuleSampleColor.sh Blue 149DA854-7D19-4FAA-A91E-862EA= 1324BE6 -. $SCRIPT_DIR/GenCapsuleSampleColor.sh Green 79179BFD-704D-4C90-9E02-0AB8D= 968C18A -. $SCRIPT_DIR/GenCapsuleSampleColor.sh Red 72E2945A-00DA-448E-9AA7-075AD= 840F9D4 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleMinnowMax.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsu= le/GenerateCapsule/GenCapsuleMinnowMax.bat deleted file mode 100644 index 6e4afd201e..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleMinnowMax.bat +++ /dev/null @@ -1,131 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for system firmware -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D4096267B-DA0A-42EB-B5EB-FEF31D207CB4 -set FMP_CAPSULE_FILE=3DMinnowMax.cap -set FMP_CAPSULE_VERSION=3D0x0000000C -set FMP_CAPSULE_STRING=3D0.0.0.12 -set FMP_CAPSULE_NAME=3D"Intel MinnowMax DEBUG UEFI %FMP_CAPSULE_STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3D%WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015= x86\FV\Vlv.ROM -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\SampleDevelopment\MinnowMaxWindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\NewCert\MinnowMaxWindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Caps= ules\TestCert\MinnowMaxWindowsCapsule - rmdir /s /q WindowsCapsule -) - -erase %FMP_CAPSULE_FILE% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleMinnowMax.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsul= e/GenerateCapsule/GenCapsuleMinnowMax.sh deleted file mode 100644 index 114c4a3477..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleMinnowMax.sh +++ /dev/null @@ -1,59 +0,0 @@ -# @file -# Linux script file to generate UEFI capsules for system firmware -# -# Copyright (c) 2018, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# - -FMP_CAPSULE_VENDOR=3DIntel -FMP_CAPSULE_GUID=3D4096267B-DA0A-42EB-B5EB-FEF31D207CB4 -FMP_CAPSULE_FILE=3DMinnowMax.cap -FMP_CAPSULE_VERSION=3D0x0000000C -FMP_CAPSULE_STRING=3D0.0.0.12 -FMP_CAPSULE_NAME=3D"Intel MinnowMax DEBUG UEFI $FMP_CAPSULE_STRING" -FMP_CAPSULE_LSV=3D0x00000000 -FMP_CAPSULE_PAYLOAD=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/DEBUG_${TOOL_CHAI= N_TAG}/FV/Vlv.ROM -FMP_CAPSULE_DIR=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/ - -PKCS7SIGN_DIR=3D$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/ - -if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then - return -fi - -if [ -e NewCert.pem ]; then - # - # Sign capsule using OpenSSL with a new certificate - # - GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3DNewCert.pem \ - --other-public-cert=3DNewSub.pub.pem \ - --trusted-public-cert=3DNewRoot.pub.pem \ - -o $FMP_CAPSULE_DIR/NewCert/$FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD -fi - -# -# Sign capsule using OpenSSL with EDK II Test Certificate -# -GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3D$PKCS7SIGN_DIR/TestCert.pem \ - --other-public-cert=3D$PKCS7SIGN_DIR/TestSub.pub.pem \ - --trusted-public-cert=3D$PKCS7SIGN_DIR/TestRoot.pub.pem \ - -o $FMP_CAPSULE_DIR/TestCert/$FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleMinnowMaxRelease.bat b/Platform/Intel/Vlv2TbltDevicePkg/Featur= e/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat deleted file mode 100644 index 43c609e4b2..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleMinnowMaxRelease.bat +++ /dev/null @@ -1,131 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for system firmware -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D4096267B-DA0A-42EB-B5EB-FEF31D207CB4 -set FMP_CAPSULE_FILE=3DMinnowMaxRelease.cap -set FMP_CAPSULE_VERSION=3D0x0000000C -set FMP_CAPSULE_STRING=3D0.0.0.12 -set FMP_CAPSULE_NAME=3D"Intel MinnowMax RELEASE UEFI %FMP_CAPSULE_STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3D%WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS20= 15x86\FV\Vlv.ROM -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\SampleDevelopment\MinnowMaxReleaseWindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\NewCert\MinnowMaxReleaseWindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Caps= ules\TestCert\MinnowMaxReleaseWindowsCapsule - rmdir /s /q WindowsCapsule -) - -erase %FMP_CAPSULE_FILE% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleMinnowMaxRelease.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature= /Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh deleted file mode 100644 index d2619786e8..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleMinnowMaxRelease.sh +++ /dev/null @@ -1,64 +0,0 @@ -# @file -# Linux script file to generate UEFI capsules for system firmware -# -# Copyright (c) 2018, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# - -FMP_CAPSULE_VENDOR=3DIntel -FMP_CAPSULE_GUID=3D4096267B-DA0A-42EB-B5EB-FEF31D207CB4 -FMP_CAPSULE_FILE=3DMinnowMaxRelease.cap -FMP_CAPSULE_VERSION=3D0x0000000C -FMP_CAPSULE_STRING=3D0.0.0.12 -FMP_CAPSULE_NAME=3D"Intel MinnowMax RELEASE UEFI $FMP_CAPSULE_STRING" -FMP_CAPSULE_LSV=3D0x00000000 -FMP_CAPSULE_PAYLOAD=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/RELEASE_${TOOL_CH= AIN_TAG}/FV/Vlv.ROM -FMP_CAPSULE_DIR=3D$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/ - -PKCS7SIGN_DIR=3D$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/ - -if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then - return -fi - -if [ -e NewCert.pem ]; then - # - # Sign capsule using OpenSSL with a new certificate - # - GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3DNewCert.pem \ - --other-public-cert=3DNewSub.pub.pem \ - --trusted-public-cert=3DNewRoot.pub.pem \ - -o $FMP_CAPSULE_DIR/NewCert/$FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD -fi - -# -# Sign capsule using OpenSSL with EDK II Test Certificate -# -GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3D$PKCS7SIGN_DIR/TestCert.pem \ - --other-public-cert=3D$PKCS7SIGN_DIR/TestSub.pub.pem \ - --trusted-public-cert=3D$PKCS7SIGN_DIR/TestRoot.pub.pem \ - -o $FMP_CAPSULE_DIR/TestCert/$FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD - -cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/TestCert - -rm $FMP_CAPSULE_FILE - diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleSampleColor.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Cap= sule/GenerateCapsule/GenCapsuleSampleColor.bat deleted file mode 100644 index 3e9f94c530..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleSampleColor.bat +++ /dev/null @@ -1,137 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for a sample device -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set COLOR=3D%1 - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D%2 -set FMP_CAPSULE_FILE=3D%COLOR%.cap -set FMP_CAPSULE_VERSION=3D0x00000010 -set FMP_CAPSULE_STRING=3D0.0.0.16 -set FMP_CAPSULE_NAME=3D"%COLOR% Progress Bar %FMP_CAPSULE_STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3DPayload.bin -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -echo "%COLOR% Progress Bar" > %FMP_CAPSULE_PAYLOAD% - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\SampleDevelopment\%COLOR%WindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Ca= psules\NewCert\%COLOR%WindowsCapsule - rmdir /s /q WindowsCapsule - ) - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -if exist "%WINDOWS_CAPSULE_KEY%" ( - CreateWindowsCapsule.py ^ - UEFI ^ - %FMP_CAPSULE_STRING% ^ - %FMP_CAPSULE_GUID% ^ - %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_VERSION% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_VENDOR% ^ - %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY% - - xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Caps= ules\TestCert\%COLOR%WindowsCapsule - rmdir /s /q WindowsCapsule -) - -erase %FMP_CAPSULE_FILE% - -erase %FMP_CAPSULE_PAYLOAD% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/GenCapsuleSampleColor.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Caps= ule/GenerateCapsule/GenCapsuleSampleColor.sh deleted file mode 100644 index a1c6f28cde..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenC= apsuleSampleColor.sh +++ /dev/null @@ -1,70 +0,0 @@ -# @file -# Linux script file to generate UEFI capsules for a sample device -# -# Copyright (c) 2018, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# - -COLOR=3D$1 - -FMP_CAPSULE_VENDOR=3DIntel -FMP_CAPSULE_GUID=3D$2 -FMP_CAPSULE_FILE=3D$COLOR.cap -FMP_CAPSULE_VERSION=3D0x00000010 -FMP_CAPSULE_STRING=3D0.0.0.16 -FMP_CAPSULE_NAME=3D"$COLOR Progress Bar $FMP_CAPSULE_STRING" -FMP_CAPSULE_LSV=3D0x00000000 -FMP_CAPSULE_PAYLOAD=3DPayload.bin - -echo "$COLOR Progress Bar" > $FMP_CAPSULE_PAYLOAD - -if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then - return -fi - -if [ -e NewCert.pem ]; then - # - # Sign capsule using OpenSSL with a new certificate - # - GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3DNewCert.pem \ - --other-public-cert=3DNewSub.pub.pem \ - --trusted-public-cert=3DNewRoot.pub.pem \ - -o $FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD - - cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/NewCert - - rm $FMP_CAPSULE_FILE -fi - -# -# Sign capsule using OpenSSL with EDK II Test Certificate -# -GenerateCapsule \ - --encode \ - -v \ - --guid $FMP_CAPSULE_GUID \ - --fw-version $FMP_CAPSULE_VERSION \ - --lsv $FMP_CAPSULE_LSV \ - --capflag PersistAcrossReset \ - --capflag InitiateReset \ - --signer-private-cert=3D$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sig= n/TestCert.pem \ - --other-public-cert=3D$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/= TestSub.pub.pem \ - --trusted-public-cert=3D$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sig= n/TestRoot.pub.pem \ - -o $FMP_CAPSULE_FILE \ - $FMP_CAPSULE_PAYLOAD - -cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/TestCert - -rm $FMP_CAPSULE_FILE - -rm $FMP_CAPSULE_PAYLOAD diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/Lvfs.ddf b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCaps= ule/Lvfs.ddf deleted file mode 100644 index f2c925a6dd..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs= .ddf +++ /dev/null @@ -1,14 +0,0 @@ -.OPTION EXPLICIT ; Generate errors on variable typos - -.Set CabinetNameTemplate=3Dfirmware.cab ; The name of the file -.set DiskDirectoryTemplate=3DCDROM ; All cabinets go in a single directory -.Set Cabinet=3Don ; -.Set Compress=3Don ; -.Set DiskDirectory1=3D. -.Set MaxDiskSize=3D99999744 ; multiple of 512 - -;*** Files to zip ; -; -firmware.bin -firmware.metainfo.xml -;*** diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/LvfsGenCapsuleMinnowMax.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/C= apsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat deleted file mode 100644 index dd8274a1cc..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs= GenCapsuleMinnowMax.bat +++ /dev/null @@ -1,139 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for system firmware -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM -@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D4096267b-da0a-42eb-b5eb-fef31d207cb4 -set FMP_CAPSULE_BASE_NAME=3DMinnowMax -set FMP_CAPSULE_FILE=3D%FMP_CAPSULE_BASE_NAME%.cap -set FMP_CAPSULE_VERSION=3D0x0000000C -set FMP_CAPSULE_VERSION_DECIMAL=3D12 -set FMP_CAPSULE_STRING=3D0.0.0.12 -set FMP_CAPSULE_NAME=3D"Intel %FMP_CAPSULE_BASE_NAME% DEBUG UEFI %FMP_CAPS= ULE_STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3D%WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015= x86\FV\Vlv.ROM -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -copy %FMP_CAPSULE_FILE% firmware.bin -copy template.metainfo.xml firmware.metainfo.xml -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID= ', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE= _NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encodin= g ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERS= ION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.= xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRI= NG', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCI= I" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE= ', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" -makecab /f Lvfs.ddf -copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%F= MP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - -erase firmware.cab -erase setup.inf -erase setup.rpt - -erase firmware.metainfo.xml -erase firmware.bin -erase %FMP_CAPSULE_FILE% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/LvfsGenCapsuleMinnowMaxRelease.bat b/Platform/Intel/Vlv2TbltDevicePkg/Fe= ature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat deleted file mode 100644 index 2b68a98f98..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs= GenCapsuleMinnowMaxRelease.bat +++ /dev/null @@ -1,139 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for system firmware -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM -@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D4096267b-da0a-42eb-b5eb-fef31d207cb4 -set FMP_CAPSULE_BASE_NAME=3DMinnowMaxRelease -set FMP_CAPSULE_FILE=3D%FMP_CAPSULE_BASE_NAME%.cap -set FMP_CAPSULE_VERSION=3D0x0000000C -set FMP_CAPSULE_VERSION_DECIMAL=3D12 -set FMP_CAPSULE_STRING=3D0.0.0.12 -set FMP_CAPSULE_NAME=3D"Intel %FMP_CAPSULE_BASE_NAME% RELEASE UEFI %FMP_CA= PSULE_STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3D%WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS20= 15x86\FV\Vlv.ROM -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -copy %FMP_CAPSULE_FILE% firmware.bin -copy template.metainfo.xml firmware.metainfo.xml -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID= ', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE= _NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encodin= g ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERS= ION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.= xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRI= NG', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCI= I" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE= ', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" -makecab /f Lvfs.ddf -copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%F= MP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - -erase firmware.cab -erase setup.inf -erase setup.rpt - -erase firmware.metainfo.xml -erase firmware.bin -erase %FMP_CAPSULE_FILE% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/LvfsGenCapsuleSampleColor.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature= /Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat deleted file mode 100644 index 1dbbe7341d..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs= GenCapsuleSampleColor.bat +++ /dev/null @@ -1,145 +0,0 @@ -@REM @file -@REM Windows batch file to generate UEFI capsules for a sample device -@REM -@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
-@REM -@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal - -set COLOR=3D%1 - -set FMP_CAPSULE_VENDOR=3DIntel -set FMP_CAPSULE_GUID=3D%2 -set FMP_CAPSULE_BASE_NAME=3D%COLOR% -set FMP_CAPSULE_FILE=3D%FMP_CAPSULE_BASE_NAME%.cap -set FMP_CAPSULE_VERSION=3D0x00000010 -set FMP_CAPSULE_VERSION_DECIMAL=3D16 -set FMP_CAPSULE_STRING=3D0.0.0.16 -set FMP_CAPSULE_NAME=3D"%FMP_CAPSULE_BASE_NAME% Progress Bar %FMP_CAPSULE_= STRING%" -set FMP_CAPSULE_LSV=3D0x00000000 -set FMP_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx -set FMP_CAPSULE_PAYLOAD=3DPayload.bin -set WINDOWS_CAPSULE_KEY=3DSAMPLE_DEVELOPMENT.pfx - -echo "%COLOR% Progress Bar" > %FMP_CAPSULE_PAYLOAD% - -if not exist "%FMP_CAPSULE_PAYLOAD%" exit - -if exist "%FMP_CAPSULE_KEY%" ( - REM - REM Sign capsule using signtool - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signing-tool-path=3D"c:\Program Files (x86)\Windows Kits\8.1\bin\x86= " ^ - --pfx-file %FMP_CAPSULE_KEY% ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\Sam= pleDevelopment - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -if exist "NewCert.pem" ( - REM - REM Sign capsule using OpenSSL with a new certificate - REM - call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3DNewCert.pem ^ - --other-public-cert=3DNewSub.pub.pem ^ - --trusted-public-cert=3DNewRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - - copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\New= Cert - - copy %FMP_CAPSULE_FILE% firmware.bin - copy template.metainfo.xml firmware.metainfo.xml - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GU= ID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BA= SE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encod= ing ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VE= RSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainf= o.xml -encoding ASCII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_ST= RING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding AS= CII" - powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DA= TE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" - makecab /f Lvfs.ddf - copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\= %FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - - erase firmware.cab - erase setup.inf - erase setup.rpt - - erase firmware.metainfo.xml - erase firmware.bin - erase %FMP_CAPSULE_FILE% -) - -REM -REM Sign capsule using OpenSSL with EDK II Test Certificate -REM -call GenerateCapsule ^ - --encode ^ - -v ^ - --guid %FMP_CAPSULE_GUID% ^ - --fw-version %FMP_CAPSULE_VERSION% ^ - --lsv %FMP_CAPSULE_LSV% ^ - --capflag PersistAcrossReset ^ - --capflag InitiateReset ^ - --signer-private-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestCert.pem ^ - --other-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign= \TestSub.pub.pem ^ - --trusted-public-cert=3D%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Si= gn\TestRoot.pub.pem ^ - -o %FMP_CAPSULE_FILE% ^ - %FMP_CAPSULE_PAYLOAD% - -copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestC= ert - -copy %FMP_CAPSULE_FILE% firmware.bin -copy template.metainfo.xml firmware.metainfo.xml -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID= ', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE= _NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encodin= g ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERS= ION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.= xml -encoding ASCII" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRI= NG', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCI= I" -powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE= ', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII" -makecab /f Lvfs.ddf -copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%F= MP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab - -erase firmware.cab -erase setup.inf -erase setup.rpt - -erase firmware.metainfo.xml -erase firmware.bin -erase %FMP_CAPSULE_FILE% - -erase %FMP_CAPSULE_PAYLOAD% diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsu= le/template.metainfo.xml b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule= /GenerateCapsule/template.metainfo.xml deleted file mode 100644 index 5d550c1f48..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/temp= late.metainfo.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - com.intel.FMP_CAPSULE_BASE_NAME.firmware - FMP_CAPSULE_BASE_NAME - System firmware for the FMP_CAPSULE_BASE_NAME - - Description of System firmware for the FMP_CAPSULE_BASE_NAME - - - FMP_CAPSULE_GUID - - http://www.tianocore.org - CC0-1.0 - BSD - Tianocore - - - - Build FMP_CAPSULE_STRING - - - - - - - - diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Pla= tform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc index bcac59f00a..246347b8fa 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc @@ -17,7 +17,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT - POSTBUILD =3D Vlv2TbltDevicePkg/Feature/Capsule/Gen= erateCapsule/GenCapsuleAll.sh + POSTBUILD =3D python Vlv2TbltDevicePkg/Feature/Caps= ule/GenerateCapsule/GenCapsuleAll.py =20 ##########################################################################= ######################### # diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc index 11d50666c0..68bde30f83 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc @@ -17,7 +17,7 @@ [Defines] SUPPORTED_ARCHITECTURES =3D IA32|X64 BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT - POSTBUILD =3D Vlv2TbltDevicePkg/Feature/Capsule/Gen= erateCapsule/GenCapsuleAll.bat + POSTBUILD =3D python Vlv2TbltDevicePkg/Feature/Caps= ule/GenerateCapsule/GenCapsuleAll.py =20 ##########################################################################= ######################### # --=20 2.21.0.windows.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 (#43983): https://edk2.groups.io/g/devel/message/43983 Mute This Topic: https://groups.io/mt/32520524/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 00:08:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+43984+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43984+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563490823; cv=none; d=zoho.com; s=zohoarc; b=ceDDVfCz/SaHkAAc4RB9C96KHsEyXlhRcXcfgIL//8DQWBQPYxxpfES9UnGgcEPefcZLU4SYdy9kq3TcUIcVnMZUEiqsOYQjoVbptEYv3KqyGLkfMSgHmMmi/OhyegEj+kKysqe180gPjfqHMFoe9WipJAePwmBcXLQcrhWep7E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563490823; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=+tVLSn6e1SBt0O/H8hUAuDg9DhyoRX1EvXFe7s581Jw=; b=dPWAtUZqUleOOoBGik0UGw+3SSNjfojH/vNYemp8JKWsbApRsnSTzyW3kS56Z7TsUo531vF4gcUyGSKGeE6QCGq8mZepj2EvLf6R7NMmspO/XfviFqBhgR+QBc6yIMMhWRd50vLM33v6woo7Ru3k4solZemXZ485QGVgSu9PIwg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+43984+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1563490823585568.4586983173091; Thu, 18 Jul 2019 16:00:23 -0700 (PDT) Return-Path: X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by groups.io with SMTP; Thu, 18 Jul 2019 16:00:22 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jul 2019 16:00:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,279,1559545200"; d="scan'208";a="367511716" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by fmsmga006.fm.intel.com with ESMTP; 18 Jul 2019 16:00:21 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Zailiang Sun , Yi Qian , Gary Lin Subject: [edk2-devel] [edk2-platforms Patch 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python Date: Thu, 18 Jul 2019 16:00:17 -0700 Message-Id: <20190718230017.14852-6-michael.d.kinney@intel.com> In-Reply-To: <20190718230017.14852-1-michael.d.kinney@intel.com> References: <20190718230017.14852-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,michael.d.kinney@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563490823; bh=Fu99fAq1csMTMtdGZQYZLqV7EtTSCoHhBXorwASAhBc=; h=Cc:Date:From:Reply-To:Subject:To; b=UlFYfstYhdmtZ4vJikwG1vfUk3uAawHta+k6ZNY9wvqqXW8e8tIqJbveUwibhPBDk6M /+oNrjvMNqTycoIuZOCw7aFtEqe9tKTYK2S7050je12HgCtd02dQiB+ik2Q3nQAyVAK4k ibVP1KksAG3uDFJMuPGPrJy0kjBUVzvg92E= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Convert Build_IFWI and bld_vlv BAT/sh scripts to OS independent python script PeBuild.py. This script generates the BiosId file. Standard EDK II build commands are used to build FW images and capsules. * Sample VS2015x86 commands for IA32/X64 and DEBUG/RELEASE build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc * Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc Cc: Zailiang Sun Cc: Yi Qian Cc: Gary Lin Signed-off-by: Michael D Kinney --- .../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 ------ .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 ----- .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 48 --- .../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 39 -- .../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 39 -- .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 30 +- .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 13 +- .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 13 +- Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 ++++++++++++++++++ Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 ++-- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 303 --------------- Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 222 ----------- 12 files changed, 432 insertions(+), 903 deletions(-) delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat b/Platform/Int= el/Vlv2TbltDevicePkg/Build_IFWI.bat deleted file mode 100644 index f65aa61f4a..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat +++ /dev/null @@ -1,118 +0,0 @@ -@REM @file -@REM Windows batch file to build BIOS ROM -@REM -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off - -SetLocal EnableDelayedExpansion EnableExtensions - -:: Assign initial values -set exitCode=3D0 -set "Build_Flags=3D " -set PLATFORM_PACKAGE=3DVlv2TbltDevicePkg - -set PLATFORM_PATH=3D%WORKSPACE% -if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\%PLATFORM_PACKAGE% ( - set PLATFORM_PATH=3D%%~fi - goto PlatformPackageFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE% !!! - echo. - goto Exit - ) -) -:PlatformPackageFound - -:: Parse Optional arguments -:OptLoop -if /i "%~1"=3D=3D"/?" goto Usage - -if /i "%~1"=3D=3D"/l" ( - set Build_Flags=3D%Build_Flags% /l - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/y" ( - set Build_Flags=3D%Build_Flags% /y - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/m" ( - set Build_Flags=3D%Build_Flags% /m - shift - goto OptLoop -) -if /i "%~1" =3D=3D "/c" ( - set Build_Flags=3D%Build_Flags% /c - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/x64" ( - set Build_Flags=3D%Build_Flags% /x64 - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/IA32" ( - set Build_Flags=3D%Build_Flags% /IA32 - shift - goto OptLoop -) - -:: Require 2 input parameters -if "%~2"=3D=3D"" goto Usage - -:: Assign required arguments -set Platform_Type=3D%~1 -set Build_Target=3D%~2 - -:: Build BIOS -echo =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -echo Build_IFWI: Calling BIOS build Script... - -call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat %Build_Flags% %Platfor= m_Type% %Build_Target% - -if %ERRORLEVEL% NEQ 0 ( - echo echo -- Error Building BIOS & echo. - set exitCode=3D1 - goto exit -) -echo. -echo Finished Building BIOS. -goto Exit - -:Usage -echo Script to build BIOS firmware and stitch the entire IFWI. -echo. -echo Usage: Build_IFWI.bat [options] PlatformType BuildTarget -echo. -echo /c CleanAll -echo /l Generate build log file -echo /y Generate build report file -echo /m Enable multi-processor build -echo /IA32 Set Arch to IA32 (default: X64) -echo /X64 Set Arch to X64 (default: X64) -echo. -echo Platform Types: MNW2 -echo Build Targets: Debug, Release (default: Debug) -echo. -echo Examples: -echo Build_IFWI.bat MNW2 debug : X64 Debug build for MinnowMax -echo Build_IFWI.bat /IA32 MNW2 release : IA32 Release build for Minno= wMax -echo. -set exitCode=3D1 - -:Exit -@REM CD to platform package. -cd %PLATFORM_PATH% -exit /b %exitCode% - -EndLocal diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh b/Platform/Inte= l/Vlv2TbltDevicePkg/Build_IFWI.sh deleted file mode 100755 index 153c8c5fae..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env bash -##********************************************************************** -## Function define -##********************************************************************** -function Usage ( ) { - echo - echo "Script to build BIOS firmware and stitch the entire IFWI." - echo - echo "Usage: Build_IFWI.sh [options] PlatformType BuildTarget" - echo - echo " /c CleanAll" - echo " /l Generate build log file" - echo " /y Generate build report file" - echo " /m Enable multi-processor build" - echo " /IA32 Set Arch to IA32 (default: X64)" - echo " /X64 Set Arch to X64 (default: X64)" - echo - echo " Platform Types: MNW2" - echo " Build Targets: Debug, Release (default: Debug)" - echo - echo "Examples:" - echo " Build_IFWI.sh MNW2 debug : X64 Debug build for Minnow= Max" - echo " Build_IFWI.sh /IA32 MNW2 release : IA32 Release build for Min= nowMax" - echo - exit 0 -} - -set -e - -## Assign initial values -exitCode=3D0 -Build_Flags=3D - -## Check whether WORKSPACE is set or not -if [[ -z "$WORKSPACE" ]]; then - echo "Please export WORKSPACE before running Build_IFWI.sh" - echo "See the details in Readme.md" - exit 1 -fi - -## Create $WORKSPACE/Conf if necessary -if [ ! -d $WORKSPACE/Conf ]; then - mkdir $WORKSPACE/Conf -fi - -## Parse Optional arguments -if [ "$1" =3D=3D "/?" ]; then - Usage -fi - -for (( i=3D1; i<=3D$#; )) - do - if [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/L" ]; then - Build_Flags=3D"$Build_Flags /l" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/Y" ]; then - Build_Flags=3D"$Build_Flags /y" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/M" ]; then - Build_Flags=3D"$Build_Flags /m" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/C" ]; then - Build_Flags=3D"$Build_Flags /c" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/X64" ]; then - Build_Flags=3D"$Build_Flags /x64" - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/IA32" ]; then - Build_Flags=3D"$Build_Flags /IA32" - shift - else - break - fi - done - -## Require 2 input parameters -if [ "$2" =3D=3D "" ]; then - Usage -fi - -## Assign required arguments -Platform_Type=3D$1 -Build_Target=3D$2 - -## Build BIOS -echo "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D" -echo "Build_IFWI: Calling BIOS build Script..." -. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target - -echo -echo Finished Building BIOS. - -## Start Integration process -echo =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -echo Skip "Build_IFWI: Calling IFWI Stitching Script..." - -echo -echo Build_IFWI is finished. -echo The final IFWI file is located in Stitch -echo =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf deleted file mode 100644 index d8b0074d6a..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf +++ /dev/null @@ -1,48 +0,0 @@ -## @file -# FDF file of Platform capsule. -# -# Copyright (c) 2016 - 2019, Intel Corporation. -# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[FV.SystemFirmwareUpdateCargo] -FvAlignment =3D 16 -ERASE_POLARITY =3D 1 -MEMORY_MAPPED =3D TRUE -STICKY_WRITE =3D TRUE -LOCK_CAP =3D TRUE -LOCK_STATUS =3D TRUE -WRITE_DISABLED_CAP =3D TRUE -WRITE_ENABLED_CAP =3D TRUE -WRITE_STATUS =3D TRUE -WRITE_LOCK_CAP =3D TRUE -WRITE_LOCK_STATUS =3D TRUE -READ_DISABLED_CAP =3D TRUE -READ_ENABLED_CAP =3D TRUE -READ_STATUS =3D TRUE -READ_LOCK_CAP =3D TRUE -READ_LOCK_STATUS =3D TRUE - -FILE RAW =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwa= reFileGuid - $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM - } - -[FmpPayload.FmpPayloadSystemFirmwareRsa2048] -IMAGE_HEADER_INIT_VERSION =3D 0x02 -IMAGE_TYPE_ID =3D 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSy= stemFmpCapsuleImageTypeIdGuid -IMAGE_INDEX =3D 0x1 -HARDWARE_INSTANCE =3D 0x0 -MONOTONIC_COUNT =3D 0x2 -CERTIFICATE_GUID =3D A7717414-C616-4977-9420-844712A735BF # RSA20= 48SHA256 - -FILE DATA =3D $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)= /FV/SYSTEMFIRMWAREUPDATECARGO.Fv - -[Capsule.Vlv2Rec] -CAPSULE_GUID =3D 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEf= iFmpCapsuleGuid -CAPSULE_FLAGS =3D PersistAcrossReset,InitiateReset -CAPSULE_HEADER_SIZE =3D 0x20 -CAPSULE_HEADER_INIT_VERSION =3D 0x1 - -FMP_PAYLOAD =3D FmpPayloadSystemFirmwareRsa2048 diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Pla= tform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc deleted file mode 100644 index 246347b8fa..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc +++ /dev/null @@ -1,39 +0,0 @@ -#/** @file -# Platform capsule description. -# -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] - PLATFORM_NAME =3D Vlv2TbltDevicePkg - PLATFORM_GUID =3D EE87F258-6ECC-4415-B1D8-23771BEE26E7 - PLATFORM_VERSION =3D 0.1 - FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformCapsule.fdf - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgIA32 - SUPPORTED_ARCHITECTURES =3D IA32|X64 - BUILD_TARGETS =3D DEBUG|RELEASE - SKUID_IDENTIFIER =3D DEFAULT - POSTBUILD =3D python Vlv2TbltDevicePkg/Feature/Caps= ule/GenerateCapsule/GenCapsuleAll.py - -##########################################################################= ######################### -# -# Components Section - list of the modules and components that will be pro= cessed by compilation -# tools and the EDK II tools to generate PE32/PE32+/C= off image files. -# -# Note: The EDK II DSC file is not used to specify how compiled binary ima= ges get placed -# into firmware volume images. This section is just a list of module= s to compile from -# source into UEFI-compliant binaries. -# It is the FDF file that contains information on combining binary f= iles into firmware -# volume images, whose concept is beyond UEFI and is described in PI= specification. -# Binary modules do not need to be listed in this section, as they s= hould be -# specified in the FDF file. For example: Shell binary, FAT binary (= Fat.efi), -# Logo (Logo.bmp), and etc. -# There may also be modules listed in this section that are not requ= ired in the FDF file, -# When a module listed here is excluded from FDF file, then UEFI-com= pliant binary will be -# generated for it, but the binary will not be put into any firmware= volume. -# -##########################################################################= ######################### diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Plat= form/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc deleted file mode 100644 index 68bde30f83..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc +++ /dev/null @@ -1,39 +0,0 @@ -#/** @file -# Platform capsule description. -# -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -# -#**/ - -[Defines] - PLATFORM_NAME =3D Vlv2TbltDevicePkg - PLATFORM_GUID =3D EE87F258-6ECC-4415-B1D8-23771BEE26E7 - PLATFORM_VERSION =3D 0.1 - FLASH_DEFINITION =3D Vlv2TbltDevicePkg/PlatformCapsule.fdf - OUTPUT_DIRECTORY =3D Build/Vlv2TbltDevicePkgX64 - SUPPORTED_ARCHITECTURES =3D IA32|X64 - BUILD_TARGETS =3D DEBUG|RELEASE - SKUID_IDENTIFIER =3D DEFAULT - POSTBUILD =3D python Vlv2TbltDevicePkg/Feature/Caps= ule/GenerateCapsule/GenCapsuleAll.py - -##########################################################################= ######################### -# -# Components Section - list of the modules and components that will be pro= cessed by compilation -# tools and the EDK II tools to generate PE32/PE32+/C= off image files. -# -# Note: The EDK II DSC file is not used to specify how compiled binary ima= ges get placed -# into firmware volume images. This section is just a list of module= s to compile from -# source into UEFI-compliant binaries. -# It is the FDF file that contains information on combining binary f= iles into firmware -# volume images, whose concept is beyond UEFI and is described in PI= specification. -# Binary modules do not need to be listed in this section, as they s= hould be -# specified in the FDF file. For example: Shell binary, FAT binary (= Fat.efi), -# Logo (Logo.bmp), and etc. -# There may also be modules listed in this section that are not requ= ired in the FDF file, -# When a module listed here is excluded from FDF file, then UEFI-com= pliant binary will be -# generated for it, but the binary will not be put into any firmware= volume. -# -##########################################################################= ######################### diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/In= tel/Vlv2TbltDevicePkg/PlatformPkg.fdf index e958c1ebf2..48058b663a 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf @@ -711,9 +711,8 @@ [FV.FVMAIN_COMPACT] !endif } =20 -[FV.SETUP_DATA] -BlockSize =3D $(FLASH_BLOCK_SIZE) -#NumBlocks =3D 0x10 +!if $(RECOVERY_ENABLE) +[FV.SystemFirmwareUpdateCargo] FvAlignment =3D 16 ERASE_POLARITY =3D 1 MEMORY_MAPPED =3D TRUE @@ -731,6 +730,31 @@ [FV.SETUP_DATA] READ_LOCK_CAP =3D TRUE READ_LOCK_STATUS =3D TRUE =20 +FILE RAW =3D AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwa= reFileGuid + FD =3D Vlv +# $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.fd + } + +[FmpPayload.FmpPayloadSystemFirmwareRsa2048] +IMAGE_HEADER_INIT_VERSION =3D 0x02 +IMAGE_TYPE_ID =3D 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSy= stemFmpCapsuleImageTypeIdGuid +IMAGE_INDEX =3D 0x1 +HARDWARE_INSTANCE =3D 0x0 +MONOTONIC_COUNT =3D 0x2 +CERTIFICATE_GUID =3D A7717414-C616-4977-9420-844712A735BF # RSA20= 48SHA256 + +FV =3D SystemFirmwareUpdateCargo +#FILE DATA =3D $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG= )/FV/SYSTEMFIRMWAREUPDATECARGO.Fv + +[Capsule.Vlv2Rec] +CAPSULE_GUID =3D 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEf= iFmpCapsuleGuid +CAPSULE_FLAGS =3D PersistAcrossReset,InitiateReset +CAPSULE_HEADER_SIZE =3D 0x20 +CAPSULE_HEADER_INIT_VERSION =3D 0x1 + +FMP_PAYLOAD =3D FmpPayloadSystemFirmwareRsa2048 +!endif + ##########################################################################= ###### # # Rules are use with the [FV] section's module INF type to define diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platfor= m/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc index 6be194c732..622f22a302 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc @@ -23,6 +23,8 @@ [Defines] BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 + PREBUILD =3D python Vlv2TbltDevicePkg/PreBuil= d.py + POSTBUILD =3D python Vlv2TbltDevicePkg/Feature= /Capsule/GenerateCapsule/GenCapsuleAll.py =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -213,7 +215,7 @@ [LibraryClasses.common] TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurem= entLibNull.inf !endif =20 - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf =20 StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf =20 @@ -242,6 +244,10 @@ [LibraryClasses.common] =20 BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf =20 +!if $(RECOVERY_ENABLE) + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/Edk= iiSystemCapsuleLib.inf +!endif + [LibraryClasses.IA32.SEC] !if $(PERFORMANCE_ENABLE) =3D=3D TRUE PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf @@ -718,11 +724,10 @@ [PcdsDynamicExDefault.common.DEFAULT] gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10 !if $(RECOVERY_ENABLE) + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor= |{0x0}|VOID*|0x100 gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID(= "AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 [PcdsDynamicExVpd.common.DEFAULT] diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform= /Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc index 1d098c9cfe..1bf73812d7 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc @@ -23,6 +23,8 @@ [Defines] BUILD_TARGETS =3D DEBUG|RELEASE SKUID_IDENTIFIER =3D DEFAULT VPD_TOOL_GUID =3D 8C3D856A-9BE6-468E-850A-24F7A8D3= 8E08 + PREBUILD =3D python Vlv2TbltDevicePkg/PreBuil= d.py + POSTBUILD =3D python Vlv2TbltDevicePkg/Feature= /Capsule/GenerateCapsule/GenCapsuleAll.py =20 DEFINE RC_BINARY_RELEASE =3D TRUE # @@ -215,7 +217,7 @@ [LibraryClasses.common] TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurem= entLibNull.inf !endif =20 - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf =20 StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf =20 @@ -244,6 +246,10 @@ [LibraryClasses.common] =20 BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf =20 +!if $(RECOVERY_ENABLE) + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/Edk= iiSystemCapsuleLib.inf +!endif + [LibraryClasses.IA32.SEC] !if $(PERFORMANCE_ENABLE) =3D=3D TRUE PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibN= ull.inf @@ -720,11 +726,10 @@ [PcdsDynamicExDefault.common.DEFAULT] gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0 gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0 gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE - -[PcdsDynamicExDefault.X64.DEFAULT] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10 !if $(RECOVERY_ENABLE) + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor= |{0x0}|VOID*|0x100 gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID(= "AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10 - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID(= "4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10 !endif =20 [PcdsDynamicExVpd.common.DEFAULT] diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py b/Platform/Intel/= Vlv2TbltDevicePkg/PreBuild.py new file mode 100644 index 0000000000..220515c809 --- /dev/null +++ b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py @@ -0,0 +1,348 @@ +## @file +# PreBuild operations for Vlv2TbltDevicePkg +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +''' +PreBuild +''' + +import os +import sys +import argparse +import subprocess +import glob +import shutil +import struct +import datetime + +# +# Globals for help information +# +__prog__ =3D 'PreBuild' +__copyright__ =3D 'Copyright (c) 2019, Intel Corporation. All rights res= erved.' +__description__ =3D 'Vlv2Tbl2DevicePkg pre-build operations.\n' + +# +# Globals +# +gWorkspace =3D '' +gBaseToolsPath =3D '' +gArgs =3D None + +def LogAlways(Message): + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Log(Message): + global gArgs + if not gArgs.Verbose: + return + sys.stdout.write (__prog__ + ': ' + Message + '\n') + sys.stdout.flush() + +def Error(Message, ExitValue=3D1): + sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n') + sys.exit (ExitValue) + +def RelativePath(target): + global gWorkspace + Log('RelativePath' + target) + return os.path.relpath (target, gWorkspace) + +def NormalizePath(target): + if isinstance(target, tuple): + return os.path.normpath (os.path.join (*target)) + else: + return os.path.normpath (target) + +def RemoveFile(target): + target =3D NormalizePath(target) + if not target or target =3D=3D os.pathsep: + Error ('RemoveFile() invalid target') + if os.path.exists(target): + os.remove (target) + Log ('remove %s' % (RelativePath (target))) + +def RemoveDirectory(target): + target =3D NormalizePath(target) + if not target or target =3D=3D os.pathsep: + Error ('RemoveDirectory() invalid target') + if os.path.exists(target): + Log ('rmdir %s' % (RelativePath (target))) + shutil.rmtree(target) + +def CreateDirectory(target): + target =3D NormalizePath(target) + if not os.path.exists(target): + Log ('mkdir %s' % (RelativePath (target))) + os.makedirs (target) + +def Copy(src, dst): + src =3D NormalizePath(src) + dst =3D NormalizePath(dst) + for File in glob.glob(src): + Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst))) + shutil.copy (File, dst) + +def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, Capsu= lesPath, CapsulesSubDir): + global gBaseToolsPath + LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, V= ersion, Lsv, PayloadFileName)) + + VersionString =3D '.'.join([str(ord(x)) for x in struct.pack('>I', Ver= sion).decode()]) + + FmpCapsuleFile =3D NormalizePath ((CapsulesPath, CapsulesSubDir, BaseN= ame + '.' + VersionString + '.cap')) + Command =3D GenerateCapsuleCommand.format ( + FMP_CAPSULE_GUID =3D Guid, + FMP_CAPSULE_VERSION =3D Version, + FMP_CAPSULE_LSV =3D Lsv, + BASE_TOOLS_PATH =3D gBaseToolsPath, + FMP_CAPSULE_FILE =3D FmpCapsuleFile, + FMP_CAPSULE_PAYLOAD =3D PayloadFileName + ) + Command =3D ' '.join(Command.splitlines()).strip() + if gArgs.Verbose: + Command =3D Command + ' -v' + + Log (Command) + + Process =3D subprocess.Popen(Command, stdin=3Dsubprocess.PIPE, stdout= =3Dsubprocess.PIPE, stderr=3Dsubprocess.PIPE, shell=3DTrue) + ProcessOutput =3D Process.communicate() + + if Process.returncode =3D=3D 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + Copy (PayloadFileName, (CapsulesPath, 'firmware.bin')) + MetaInfoXml =3D MetaInfoXmlTemplate + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', st= r(Version)) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionStri= ng) + MetaInfoXml =3D MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.= date.today())) + f =3D open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), '= w') + f.write(MetaInfoXml) + f.close() + + f =3D open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w') + f.write(LvfsDdfTemplate) + f.close() + + if sys.platform =3D=3D "win32": + Command =3D 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.dd= f')) + else: + Command =3D 'gcab --create firmware.cab firmware.bin firmware.meta= info.xml' + Log (Command) + + Process =3D subprocess.Popen(Command, cwd=3DCapsulesPath, stdin=3Dsubp= rocess.PIPE, stdout=3Dsubprocess.PIPE, stderr=3Dsubprocess.PIPE, shell=3DTr= ue) + ProcessOutput =3D Process.communicate() + + if Process.returncode =3D=3D 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenerateCapsule returned an error') + + FmpCabinetFile =3D NormalizePath ((CapsulesPath, CapsulesSubDir, BaseN= ame + '.' + VersionString + '.cab')) + + Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile) + + RemoveFile ((CapsulesPath, 'firmware.cab')) + RemoveFile ((CapsulesPath, 'setup.inf')) + RemoveFile ((CapsulesPath, 'setup.rpt')) + RemoveFile ((CapsulesPath, 'Lvfs.ddf')) + RemoveFile ((CapsulesPath, 'firmware.metainfo.xml')) + RemoveFile ((CapsulesPath, 'firmware.bin')) + +BiosIdTemplate =3D ''' +BOARD_ID =3D MNW2MAX +BOARD_REV =3D $BOARD_REV +BOARD_EXT =3D $ARCH +VERSION_MAJOR =3D 0090 +BUILD_TYPE =3D $BUILD_TYPE +VERSION_MINOR =3D 01 +''' + + +if __name__ =3D=3D '__main__': + # + # Create command line argument parser object + # + parser =3D argparse.ArgumentParser ( + prog =3D __prog__, + description =3D __description__ + __copyright__, + conflict_handler =3D 'resolve' + ) + parser.add_argument ( + '-a', '--arch', dest =3D 'Arch', nargs =3D '+', action =3D 'a= ppend', + required =3D True, + help =3D '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH6= 4 or EBC, + which overrides target.txt's TARGET_ARCH definition= . To + specify more archs, please repeat this option.''' + ) + parser.add_argument ( + '-t', '--tagname', dest =3D 'ToolChain', required =3D True, + help =3D '''Using the Tool Chain Tagname to build the platfor= m, + overriding target.txt's TOOL_CHAIN_TAG definition.'= '' + ) + parser.add_argument ( + '-p', '--platform', dest =3D 'PlatformFile', required =3D Tru= e, + help =3D '''Build the platform specified by the DSC file name= argument, + overriding target.txt's ACTIVE_PLATFORM definition.= ''' + ) + parser.add_argument ( + '-b', '--buildtarget', dest =3D 'BuildTarget', required =3D T= rue, + help =3D '''Using the TARGET to build the platform, overriding + target.txt's TARGET definition.''' + ) + parser.add_argument ( + '--conf=3D', dest =3D 'ConfDirectory', required =3D True, + help =3D '''Specify the customized Conf directory.''' + ) + parser.add_argument ( + '-D', '--define', dest =3D 'Define', nargs=3D'*', action =3D = 'append', + help =3D '''Macro: "Name [=3D Value]".''' + ) + parser.add_argument ( + '-v', '--verbose', dest =3D 'Verbose', action =3D 'store_true= ', + help =3D '''Turn on verbose output with informational message= s printed''' + ) + parser.add_argument ( + '--package', dest =3D 'Package', nargs =3D '*', action =3D 'a= ppend', + help =3D '''The directory name of a package of tests to copy'= '' + ) + + # + # Parse command line arguments + # + gArgs, remaining =3D parser.parse_known_args() + gArgs.BuildType =3D 'all' + for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall'= , 'modules', 'libraries', 'run']: + if BuildType in remaining: + gArgs.BuildType =3D BuildType + remaining.remove(BuildType) + break + gArgs.Remaining =3D ' '.join(remaining) + + # + # Get WORKSPACE environment variable + # + try: + gWorkspace =3D os.environ['WORKSPACE'] + except: + Error ('WORKSPACE environment variable not set') + + # + # Get PACKAGES_PATH and generate prioritized list of paths + # + PathList =3D [gWorkspace] + try: + PathList +=3D os.environ['PACKAGES_PATH'].split(os.pathsep) + except: + pass + + # + # Determine full path to BaseTools + # + Vlv2Tbl2DevicePkgPath =3D '' + for Path in PathList: + if gBaseToolsPath =3D=3D '': + if os.path.exists (os.path.join (Path, 'BaseTools')): + gBaseToolsPath =3D os.path.join (Path, 'BaseTools') + if Vlv2Tbl2DevicePkgPath =3D=3D '': + if os.path.exists (os.path.join (Path, 'Vlv2TbltDevicePkg')): + Vlv2Tbl2DevicePkgPath =3D os.path.join (Path, 'Vlv2TbltDev= icePkg') + if gBaseToolsPath =3D=3D '': + Error ('Can not find BaseTools in WORKSPACE or PACKAGES_PATH') + if Vlv2Tbl2DevicePkgPath =3D=3D '': + Error ('Can not find Vlv2Tbl2DevicePkg in WORKSPACE or PACKAGES_PA= TH') + + # + # Parse OUTPUT_DIRECTORY from DSC file + # + for Path in PathList: + if os.path.exists (os.path.join (Path, gArgs.PlatformFile)): + Dsc =3D open (os.path.join (Path, gArgs.PlatformFile), 'r').re= adlines() + break + for Line in Dsc: + if Line.strip().startswith('OUTPUT_DIRECTORY'): + OutputDirectory =3D Line.strip().split('=3D')[1].strip() + break + + # + # Determine full paths to EDK II build directory, EDK II build output + # directory and the CPU arch of the UEFI phase. + # + CommandDir =3D os.path.dirname(sys.argv[0]) + EdkiiBuildDir =3D os.path.join (gWorkspace, OutputDirectory) + EdkiiBuildOutput =3D os.path.join (EdkiiBuildDir, gArgs.BuildTarget + = '_' + gArgs.ToolChain) + UefiArch =3D gArgs.Arch[0][0] + if len (gArgs.Arch) > 1: + if ['X64'] in gArgs.Arch: + UefiArch =3D 'X64' + + if gArgs.BuildType =3D=3D 'run': + Error ("'run' target not supported") + if gArgs.BuildType =3D=3D 'clean': + sys.exit (0) + + # + # Create output directories to put BiosId files + # + try: + CreateDirectory ((gWorkspace, 'Build')) + except: + pass + try: + CreateDirectory ((EdkiiBuildDir)) + except: + pass + try: + CreateDirectory ((EdkiiBuildOutput)) + except: + pass + + # + # Generate BiosId files + # + BiosId =3D BiosIdTemplate + if sys.platform =3D=3D "win32": + # Built from a Windows Host OS + BiosId =3D BiosId.replace ('$BOARD_REV', 'W') + else: + # Built from a Linux/Unix/Mac Host OS + BiosId =3D BiosId.replace ('$BOARD_REV', 'L') + if UefiArch =3D=3D 'X64': + BiosId =3D BiosId.replace ('$ARCH', 'X64') + else: + BiosId =3D BiosId.replace ('$ARCH', 'I32') + BiosId =3D BiosId.replace ('$BUILD_TYPE', gArgs.BuildTarget[0]) + + BiosIdFileName =3D NormalizePath ((EdkiiBuildOutput, 'BiosId.env')) + f =3D open (BiosIdFileName, 'w') + f.write(BiosId) + f.close() + + Command =3D 'python ' + NormalizePath ((Vlv2Tbl2DevicePkgPath, '../Too= ls/GenBiosId/GenBiosId.py')) + Command =3D Command + ' -i ' + BiosIdFileName + Command =3D Command + ' -o ' + NormalizePath ((EdkiiBuildOutput, 'Bio= sId.bin')) + Command =3D Command + ' -ot ' + NormalizePath ((EdkiiBuildOutput, 'Bio= sId.txt')) + + LogAlways (Command) + + Process =3D subprocess.Popen(Command, stdin=3Dsubprocess.PIPE, stdout= =3Dsubprocess.PIPE, stderr=3Dsubprocess.PIPE, shell=3DTrue) + ProcessOutput =3D Process.communicate() + + if Process.returncode =3D=3D 0: + Log (ProcessOutput[0].decode()) + else: + LogAlways (Command) + LogAlways (ProcessOutput[0].decode()) + Error ('GenBiosId returned an error') diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md b/Platform/Intel/Vl= v2TbltDevicePkg/Readme.md index 97180ef7af..b52c23fdec 100644 --- a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md +++ b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md @@ -57,12 +57,15 @@ powershell Expand-Archive nasm-2.13.03-win64.zip . =20 set WORKSPACE=3D%CD% set PACKAGES_PATH=3D%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\In= tel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Sili= con\Intel +set EDK_TOOLS_PATH=3D%WORKSPACE%\edk2\BaseTools path=3D%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64 set NASM_PREFIX=3D%WORKSPACE%\nasm-2.13.03\ =20 -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg +cd %WORKSPACE%\edk2 =20 -Build_IFWI.bat /m MNW2 Debug +edksetup.bat Rebuild + +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\Platf= ormPkgX64.dsc ``` =20 Once all the code and tools are downloaded and installed, only the followi= ng @@ -72,8 +75,14 @@ directory used to install the source and binaries. ``` set WORKSPACE=3D%CD% set PACKAGES_PATH=3D%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\In= tel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Sili= con\Intel +set EDK_TOOLS_PATH=3D%WORKSPACE%\edk2\BaseTools path=3D%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64 set NASM_PREFIX=3D%WORKSPACE%\nasm-2.13.03\ + +cd %WORKSPACE%\edk2 + +edksetup.bat Rebuild + ``` =20 Once the environment is setup, the MinnowBoard MAX firmware and capsules c= an be @@ -82,39 +91,43 @@ rebuilt using the following commands. * Build X64 Debug Image with report file =20 ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /y MNW2 Debug +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\Platf= ormPkgX64.dsc -y Vlv.report ``` =20 * Build X64 Release Image with build log =20 ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /l MNW2 Release +build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE Vlv2TbltDevicePkg\Platfo= rmPkgX64.dsc -j Vlv.log ``` =20 * Build IA32 Debug Image =20 ``` -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg -Build_IFWI.bat /m /IA32 MNW2 Debug +build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgI= A32.dsc ``` =20 The generated firmware image is the build output directory below WORKSPACE= . For exampple, the X64 Debug Image is at: =20 -`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM` +`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd` =20 And the IA32 Release image is at: =20 -`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM` +`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd` =20 The X64 CapsuleApp and generated UEFI Capsules are in the directory =20 -`Build\Vlv2TbltDevicePkg\Capsules` +`Build\Vlv2TbltDevicePkgX64\Capsules` =20 # Linux Pre-requisites =20 +* git +* python +* iasl +* nasm +* openssl +* gcab + # Download and Build MinnowMax using Linux/GCC =20 Run the script below from an empty directory. The script clones the EDK II @@ -132,10 +145,12 @@ git clone https://github.com/tianocore/edk2-platforms= .git git clone https://github.com/tianocore/edk2-non-osi.git =20 export WORKSPACE=3D$PWD +export PACKAGES_PATH=3D$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/I= ntel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silic= on/Intel +cd $WORKSPACE/edk2 =20 -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg +. edksetup.sh BaseTools Rebuild =20 -./Build_IFWI.sh /m MNW2 Debug +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPk= gX64.dsc ``` =20 Once all the code is downloaded and installed, only the following commands= are @@ -144,6 +159,10 @@ install the source and binaries. =20 ``` export WORKSPACE=3D$PWD/edk2 +export PACKAGES_PATH=3D$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/I= ntel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silic= on/Intel +cd $WORKSPACE/edk2 + +. edksetup.sh BaseTools Rebuild ``` =20 Once the environment is setup, the MinnowBoard MAX firmware and capsules c= an be @@ -152,36 +171,33 @@ rebuilt using the following commands. * Build X64 Debug Image with report file =20 ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /y MNW2 Debug +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPk= gX64.dsc -y Vlv.report ``` =20 * Build X64 Release Image with build log =20 ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /l MNW2 Release +build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p Vlv2TbltDevicePkg/Platform= PkgX64.dsc -j Vlv.log ``` =20 * Build IA32 Debug Image =20 ``` -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg -./Build_IFWI.sh /m /IA32 MNW2 Debug +build -a IA32 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgIA32.d= sc ``` =20 The generated firmware image is the build output directory below WORKSPACE= . For exampple, the X64 Debug Image is at: =20 -`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM` +`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd` =20 And the IA32 Release image is at: =20 -`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM` +`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd` =20 The X64 CapsuleApp and generated UEFI Capsules are in the directory =20 -`Build/Vlv2TbltDevicePkg/Capsules` +`Build/Vlv2TbltDevicePkgX64/Capsules` =20 # Use DediProg to update FLASH image on a MinnowBoard MAX Target =20 @@ -192,7 +208,7 @@ The X64 CapsuleApp and generated UEFI Capsules are in t= he directory * Boot MinnowBoard MAX to the Boot Manager * Boot the `EFI Internal Shell` boot option * Mount the USB FLASH Drive (usually `FS1`) -* Use `cd` command to go to `Capsules/TestCert` directory +* Use `cd` command to go to `Capsules/TestCert_*` directory * Run the following command to apply all four capsules =20 ``` diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/= Vlv2TbltDevicePkg/bld_vlv.bat deleted file mode 100644 index fb634c490c..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat +++ /dev/null @@ -1,303 +0,0 @@ -@REM @file -@REM Windows batch file to build BIOS ROM -@REM -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent -@REM - -@echo off -setlocal EnableDelayedExpansion EnableExtensions -echo. -echo %date% %time% -echo. - -::********************************************************************** -:: Initial Setup -::********************************************************************** -if %WORKSPACE:~-1%=3D=3D\ set WORKSPACE=3D%WORKSPACE:~0,-1% -set /a build_threads=3D1 -set "Build_Flags=3D " -set exitCode=3D0 -set Arch=3DX64 -set GenLog=3DFALSE -set GenReport=3DFALSE -set Clean=3DFALSE -set PLATFORM_NAME=3DVlv2TbltDevicePkg - -::********************************************************************** -:: Detect full path to the edk2 repo -::********************************************************************** -set CORE_PATH=3D%WORKSPACE% -if not exist %CORE_PATH%\edksetup.bat ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\edksetup.bat ( - set CORE_PATH=3D%%~fi - goto CorePathFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find edksetup.bat !!! - echo. - goto BldFail - ) -) -:CorePathFound - -::********************************************************************** -:: Detect full path to the Vlv2TbltDevicePkg -::********************************************************************** -set PLATFORM_PACKAGE=3D%WORKSPACE%\%PLATFORM_NAME% -if not exist %PLATFORM_PACKAGE% ( - if defined PACKAGES_PATH ( - for %%i IN (%PACKAGES_PATH%) DO ( - if exist %%~fi\%PLATFORM_NAME% ( - set PLATFORM_PACKAGE=3D%%~fi\%PLATFORM_NAME% - goto PlatformPackageFound - ) - ) - ) else ( - echo. - echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!! - echo. - goto BldFail - ) -) -:PlatformPackageFound - -cd %CORE_PATH% - -::********************************************************************** -:: Run edksetup.bat and make sure tools are up to date -::********************************************************************** - -call %CORE_PATH%\edksetup.bat Rebuild -@echo off - -::********************************************************************** -:: Parse command line arguments -::********************************************************************** - -:: Optional arguments -:OptLoop -if /i "%~1"=3D=3D"/?" goto Usage - -if /i "%~1"=3D=3D"/l" ( - set GenLog=3DTRUE - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/y" ( - set GenReport=3DTRUE - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/m" ( - if defined NUMBER_OF_PROCESSORS ( - set /a build_threads=3D%NUMBER_OF_PROCESSORS%+1 - ) - shift - goto OptLoop -) -if /i "%~1" =3D=3D "/c" ( - set Clean=3DTRUE - shift - goto OptLoop -) - -if /i "%~1"=3D=3D"/x64" ( - set Arch=3DX64 - shift - goto OptLoop -) -if /i "%~1"=3D=3D"/IA32" ( - set Arch=3DIA32 - shift - goto OptLoop -) - -:: Required argument(s) -if "%~1"=3D=3D"" goto Usage - -if /i "%~2" =3D=3D "RELEASE" ( - set target=3DRELEASE -) else ( - set target=3DDEBUG -) - -::********************************************************************** -:: Detect TOOL_CHAIN_TAG -::********************************************************************** - -echo. -echo Setting the Build environment for VS2015/VS2013/VS2012/VS2010/VS2008.= .. -if defined VS140COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS140COMNTOOLS%\vsvars32.bat" - if /I "%VS140COMNTOOLS%" =3D=3D "C:\Program Files\Microsoft Visual Studi= o 14.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=3DVS2015 - ) else ( - set TOOL_CHAIN_TAG=3DVS2015x86 - )=20 -) else if defined VS120COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS120COMNTOOLS%\vsvars32.bat" - if /I "%VS120COMNTOOLS%" =3D=3D "C:\Program Files\Microsoft Visual Studi= o 12.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=3DVS2013 - ) else ( - set TOOL_CHAIN_TAG=3DVS2013x86 - ) -) else if defined VS110COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS110COMNTOOLS%\vsvars32.bat" - if /I "%VS110COMNTOOLS%" =3D=3D "C:\Program Files\Microsoft Visual Studi= o 11.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=3DVS2012 - ) else ( - set TOOL_CHAIN_TAG=3DVS2012x86 - ) -) else if defined VS100COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS100COMNTOOLS%\vsvars32.bat" - if /I "%VS100COMNTOOLS%" =3D=3D "C:\Program Files\Microsoft Visual Studi= o 10.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=3DVS2010 - ) else ( - set TOOL_CHAIN_TAG=3DVS2010x86 - ) -) else if defined VS90COMNTOOLS ( - if not defined VSINSTALLDIR call "%VS90COMNTOOLS%\vsvars32.bat" - if /I "%VS90COMNTOOLS%" =3D=3D "C:\Program Files\Microsoft Visual Studio= 9.0\Common7\Tools\" ( - set TOOL_CHAIN_TAG=3DVS2008 - ) else ( - set TOOL_CHAIN_TAG=3DVS2008x86 - ) -) else ( - echo --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008 not installed correctl= y. VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOOLS/VS90COMNTOOL= S not defined ^^! - echo. - goto :BldFail -) - -::********************************************************************** -:: Generate BUILD_PATH and make sure the directory exists -::********************************************************************** - -echo Ensuring correct build directory is present -if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build -if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Bui= ld\%PLATFORM_NAME%%Arch% -set BUILD_PATH=3D%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CH= AIN_TAG% -if not exist %BUILD_PATH% mkdir %BUILD_PATH% - -::********************************************************************** -:: Check for clean operation -::********************************************************************** - -if "%Clean%"=3D=3D"TRUE" ( - echo Removing previous build files ... - if exist %BUILD_PATH% ( - rmdir /s/q %BUILD_PATH% - ) - if exist %WORKSPACE%\Conf\.cache ( - rmdir /s/q %WORKSPACE%\Conf\.cache - ) - echo. - goto :Exit -) - -::********************************************************************** -:: Generate Build_Flags -::********************************************************************** - -set Build_Flags=3D%Build_Flags% -b %TARGET% -if "%Arch%"=3D=3D"IA32" ( - set Build_Flags=3D%Build_Flags% -a IA32 -) else if "%Arch%"=3D=3D"X64" ( - set Build_Flags=3D%Build_Flags% -a IA32 -a X64 -) -set Build_Flags=3D%Build_Flags% -t %TOOL_CHAIN_TAG% -set Build_Flags=3D%Build_Flags% -n %build_threads% -set Capsule_Build_Flags=3D%Build_Flags% -set Build_Flags=3D%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc -if "%GenLog%"=3D=3D"TRUE" ( - set Build_Flags=3D%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log -) -if "%GenReport%"=3D=3D"TRUE" ( - set Build_Flags=3D%Build_Flags% -y %BUILD_PATH%\%PLATFORM_NAME%.report -) - -::********************************************************************** -:: Generate BIOS ID -::********************************************************************** - -echo BOARD_ID =3D MNW2MAX > %BUILD_PATH%/BiosId.env -echo BOARD_REV =3D W >> %BUILD_PATH%/BiosId.env -if "%Arch%"=3D=3D"IA32" ( - echo BOARD_EXT =3D I32 >> %BUILD_PATH%/BiosId.env -) -if "%Arch%"=3D=3D"X64" ( - echo BOARD_EXT =3D X64 >> %BUILD_PATH%/BiosId.env -) -echo VERSION_MAJOR =3D 0090 >> %BUILD_PATH%/BiosId.env -if "%TARGET%"=3D=3D"DEBUG" ( - echo BUILD_TYPE =3D D >> %BUILD_PATH%/BiosId.env -) -if "%TARGET%"=3D=3D"RELEASE" ( - echo BUILD_TYPE =3D R >> %BUILD_PATH%/BiosId.env -) -echo VERSION_MINOR =3D 01 >> %BUILD_PATH%/BiosId.env - -%WORKSPACE%\edk2-platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i = %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot %BUILD_PATH%/BiosId.= txt - -::********************************************************************** -:: Build BIOS -::********************************************************************** - -echo. -echo Invoking EDK2 build... -echo build %Build_Flags% - -call build %Build_Flags% - -if %ERRORLEVEL% NEQ 0 goto BldFail - -copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM - -::********************************************************************** -:: Build Capsules -::********************************************************************** -echo Invoking EDK2 build for capsules... -echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arc= h%.dsc -call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arc= h%.dsc - -goto Exit - -:Usage -echo. -echo *********************************************************************= ****** -echo Build BIOS rom for VLV platforms. -echo. -echo Usage: bld_vlv.bat [options] PlatformType [Build Target] -echo. -echo /c CleanAll -echo /l Generate build log file -echo /y Generate build report file -echo /m Enable multi-processor build -echo /IA32 Set Arch to IA32 (default: X64) -echo /X64 Set Arch to X64 (default: X64) -echo. -echo Platform Types: MNW2 -echo Build Targets: Debug, Release (default: Debug) -echo. -echo Examples: -echo bld_vlv.bat MNW2 : X64 Debug build for MinnowMax -echo bld_vlv.bat /IA32 MNW2 release : IA32 Release build for MinnowMax -echo. -echo *********************************************************************= ****** -set exitCode=3D1 -goto Exit - -:BldFail -set exitCode=3D1 -echo -- Error: EDKII BIOS Build has failed! -echo See EDK2.log for more details - -:Exit -echo %date% %time% -exit /b %exitCode% - -EndLocal diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/V= lv2TbltDevicePkg/bld_vlv.sh deleted file mode 100755 index c8db91c6dc..0000000000 --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env bash -##********************************************************************** -## Function define -##********************************************************************** -function Usage() { - echo - echo "******************************************************************= *********" - echo "Build BIOS rom for VLV platforms." - echo - echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]" - echo - echo " /c CleanAll" - echo " /l Generate build log file" - echo " /y Generate build report file" - echo " /m Enable multi-processor build" - echo " /IA32 Set Arch to IA32 (default: X64)" - echo " /X64 Set Arch to X64 (default: X64)" - echo - echo " Platform Types: MNW2" - echo " Build Targets: Debug, Release (default: Debug)" - echo - echo "Examples:" - echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax" - echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for Minnow= Max" - echo "******************************************************************= *********" - exit 0 -} - -set -e - -cd .. -echo -e $(date) -##********************************************************************** -## Initial Setup -##********************************************************************** -#build_threads=3D($NUMBER_OF_PROCESSORS)+1 -Build_Flags=3D -exitCode=3D0 -build_threads=3D1 -Arch=3DX64 -GenLog=3DFALSE -GenReport=3DFALSE -Clean=3DFALSE - - -export CORE_PATH=3D$WORKSPACE/edk2 -export PLATFORM_PATH=3D$WORKSPACE/edk2-platforms/Platform/Intel/ -export SILICON_PATH=3D$WORKSPACE/edk2-platforms/Silicon/Intel/ -export BINARY_PATH=3D$WORKSPACE/edk2-non-osi/Silicon/Intel/ -export PACKAGES_PATH=3D$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH - -## Setup EDK environment. Edksetup puts new copies of target.txt, tools_de= f.txt, build_rule.txt in WorkSpace\Conf -## Also run edksetup as soon as possible to avoid it from changing environ= ment variables we're overriding -cd $CORE_PATH -. edksetup.sh BaseTools -make -C BaseTools - -## Define platform specific environment variables. -PLATFORM_NAME=3DVlv2TbltDevicePkg -PLATFORM_PACKAGE=3DVlv2TbltDevicePkg -PLATFORM_PKG_PATH=3D$PLATFORM_PATH/$PLATFORM_PACKAGE - -cd $PLATFORM_PKG_PATH - -##********************************************************************** -## Parse command line arguments -##********************************************************************** - -## Optional arguments -for (( i=3D1; i<=3D$#; )) - do - if [ "$1" =3D=3D "/?" ]; then - Usage - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/L" ]; then - GenLog=3DTRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/Y" ]; then - GenReport=3DTRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/M" ]; then - build_threads=3D8 - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/C" ]; then - Clean=3DTRUE - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/X64" ]; then - Arch=3DX64 - shift - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" =3D=3D "/IA32" ]; then - Arch=3DIA32 - shift - else - break - fi - done - -## Required argument(s) -if [ "$2" =3D=3D "" ]; then - Usage -fi - -echo "Setting $1 platform configuration and BIOS ID..." - -if [ "$(echo $2 | tr 'a-z' 'A-Z')" =3D=3D "RELEASE" ]; then - export TARGET=3DRELEASE -else - export TARGET=3DDEBUG -fi - -##********************************************************************** -## Detect TOOL_CHAIN_TAG -##********************************************************************** -gcc_version=3D$(gcc -v 2>&1 | tail -1 | awk '{print $3}') -case $gcc_version in - [1-3].*|4.[0-7].*) - echo MNW2 requires GCC4.8 or later - exit 1 - ;; - 4.8.*) - export TOOL_CHAIN_TAG=3DGCC48 - ;; - 4.9.*|6.[0-2].*) - export TOOL_CHAIN_TAG=3DGCC49 - ;; - *) - export TOOL_CHAIN_TAG=3DGCC5 - ;; -esac - -##********************************************************************** -## Generate $BUILD_PATH and make sure the directory exists -##********************************************************************** -if [ ! -d ${WORKSPACE}/Build ]; then - mkdir ${WORKSPACE}/Build -fi - -if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} -fi -BUILD_PATH=3D${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_C= HAIN_TAG} - -if [ ! -d $BUILD_PATH ]; then - mkdir $BUILD_PATH -fi - -##********************************************************************** -## Check for clean operation -##********************************************************************** -if [ $Clean =3D=3D "TRUE" ]; then - echo Removing previous build files ... - if [ -d ${BUILD_PATH} ]; then - rm -r ${BUILD_PATH} - fi - if [ -d ${WORKSPACE}/Conf/.cache ]; then - rm -r ${WORKSPACE}/Conf/.cache - fi - exit 0 -fi - -##********************************************************************** -## Generate Build_Flags -##********************************************************************** - -Build_Flags=3D"$Build_Flags -b $TARGET" -if [ $Arch =3D=3D "IA32" ]; then - Build_Flags=3D"$Build_Flags -a IA32" -else - Build_Flags=3D"$Build_Flags -a IA32 -a X64" -fi -Build_Flags=3D"$Build_Flags -t $TOOL_CHAIN_TAG" -Build_Flags=3D"$Build_Flags -n $build_threads" -Capsule_Build_Flags=3D"$Build_Flags" -Build_Flags=3D"$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc" -if [ $GenLog =3D=3D "TRUE" ]; then - Build_Flags=3D"$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log" -fi -if [ $GenReport =3D=3D "TRUE" ]; then - Build_Flags=3D"$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report" -fi - -##********************************************************************** -## Generate BIOS ID -##********************************************************************** - -echo BOARD_ID =3D MNW2MAX > $BUILD_PATH/BiosId.env -echo BOARD_REV =3D L >> $BUILD_PATH/BiosId.env -if [ $Arch =3D=3D "IA32" ]; then - echo BOARD_EXT =3D I32 >> $BUILD_PATH/BiosId.env -fi -if [ $Arch =3D=3D "X64" ]; then - echo BOARD_EXT =3D X64 >> $BUILD_PATH/BiosId.env -fi -echo VERSION_MAJOR =3D 0090 >> $BUILD_PATH/BiosId.env -if [ $TARGET =3D=3D "DEBUG" ]; then - echo BUILD_TYPE =3D D >> $BUILD_PATH/BiosId.env -fi -if [ $TARGET =3D=3D "RELEASE" ]; then - echo BUILD_TYPE =3D R >> $BUILD_PATH/BiosId.env -fi -echo VERSION_MINOR =3D 01 >> $BUILD_PATH/BiosId.env - -python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.= py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/Bios= Id.txt - -##********************************************************************** -## Build BIOS -##********************************************************************** -echo "Invoking EDK2 build..." -echo build $Build_Flags -build $Build_Flags - -cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM - -##********************************************************************** -## Build Capsules -##********************************************************************** -echo "Invoking EDK2 build for capsules..." -echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arc= h}.dsc -build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arc= h}.dsc - -echo -echo -------------------- The EDKII BIOS build has successfully completed.= -------------------- -echo --=20 2.21.0.windows.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 (#43984): https://edk2.groups.io/g/devel/message/43984 Mute This Topic: https://groups.io/mt/32520525/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-