From 69e9e7b1e84061eb147ed8c7c04464bb5297bc25 Mon Sep 17 00:00:00 2001 From: oureveryday Date: Sun, 12 Nov 2023 11:35:29 +0800 Subject: [PATCH] First Commit --- .gitignore | 350 ++++++ README.md | 33 + Release_dlls/SteamAPICheckBypass.dll | Bin 0 -> 50176 bytes Release_dlls/libraries.txt | 1 + Release_dlls/version.dll | Bin 0 -> 12800 bytes SteamAPICheckBypass.sln | 31 + SteamAPICheckBypass/Console.cpp | 55 + SteamAPICheckBypass/Console.h | 14 + .../SteamAPICheckBypass.vcxproj | 160 +++ .../SteamAPICheckBypass.vcxproj.filters | 42 + SteamAPICheckBypass/detours.h | 1059 +++++++++++++++++ SteamAPICheckBypass/detours.lib | Bin 0 -> 662140 bytes SteamAPICheckBypass/dllmain.cpp | 257 ++++ SteamAPICheckBypass/framework.h | 5 + SteamAPICheckBypass/pch.cpp | 1 + SteamAPICheckBypass/pch.h | 6 + VersionShim/.gitignore | 4 + VersionShim/LICENSE | 373 ++++++ VersionShim/README.md | 19 + VersionShim/VersionShim.sln | 32 + VersionShim/VersionShim/VersionShim.vcxproj | 84 ++ .../VersionShim/VersionShim.vcxproj.filters | 36 + VersionShim/VersionShim/dllmain.c | 85 ++ VersionShim/VersionShim/pch.c | 3 + VersionShim/VersionShim/pch.h | 10 + VersionShim/VersionShim/util.c | 93 ++ VersionShim/VersionShim/util.h | 8 + 27 files changed, 2761 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 Release_dlls/SteamAPICheckBypass.dll create mode 100644 Release_dlls/libraries.txt create mode 100644 Release_dlls/version.dll create mode 100644 SteamAPICheckBypass.sln create mode 100644 SteamAPICheckBypass/Console.cpp create mode 100644 SteamAPICheckBypass/Console.h create mode 100644 SteamAPICheckBypass/SteamAPICheckBypass.vcxproj create mode 100644 SteamAPICheckBypass/SteamAPICheckBypass.vcxproj.filters create mode 100644 SteamAPICheckBypass/detours.h create mode 100644 SteamAPICheckBypass/detours.lib create mode 100644 SteamAPICheckBypass/dllmain.cpp create mode 100644 SteamAPICheckBypass/framework.h create mode 100644 SteamAPICheckBypass/pch.cpp create mode 100644 SteamAPICheckBypass/pch.h create mode 100644 VersionShim/.gitignore create mode 100644 VersionShim/LICENSE create mode 100644 VersionShim/README.md create mode 100644 VersionShim/VersionShim.sln create mode 100644 VersionShim/VersionShim/VersionShim.vcxproj create mode 100644 VersionShim/VersionShim/VersionShim.vcxproj.filters create mode 100644 VersionShim/VersionShim/dllmain.c create mode 100644 VersionShim/VersionShim/pch.c create mode 100644 VersionShim/VersionShim/pch.h create mode 100644 VersionShim/VersionShim/util.c create mode 100644 VersionShim/VersionShim/util.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f1229f --- /dev/null +++ b/.gitignore @@ -0,0 +1,350 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..57bf8e2 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Steam API Check Bypass + +Bypasses Steam API dll integrity/size check by hooking CreateFile API. + +## Build + +* Build with Visual Studio 2022. + +## Usage + +### Method 1 + +* Use CFF Explorer and add `SteamAPICheckBypass` dll import to game main exe, then put the `SteamAPICheckBypass.dll` dll beside game exe. + +### Method 2 (VersionShim) + +* Put `SteamAPICheckBypass.dll` `version.dll` `libraries.txt` beside game exe. + +## Dependencies + +* + +## Bugs + +If You Have Any Bugs, Please Submit a Issue On Github. +cs.rin.ru thread: + +## Donate + +Bitcoin: bc1qk39k55wxwx8yj4w35qu4vh3x4nhn90kq2mempn +Bitcoin Cash: qzlc8qv59y5lssm9rct2rq5puznqpv9s4qhvhw3k7j +Ethereum: 0xCBEF4582Fd0d049F3eBB7552027848f54C99cb38 +Stellar: GCMQOHLH6I6QZKCFXWS6VKTDHABFK5KA3CQIZW5JL6GBQYSDCFF5VL2E diff --git a/Release_dlls/SteamAPICheckBypass.dll b/Release_dlls/SteamAPICheckBypass.dll new file mode 100644 index 0000000000000000000000000000000000000000..929254be59a26960181957233848fe8b16900913 GIT binary patch literal 50176 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 KKiB^;4g4=3P37wV literal 0 HcmV?d00001 diff --git a/Release_dlls/libraries.txt b/Release_dlls/libraries.txt new file mode 100644 index 0000000..7e75f95 --- /dev/null +++ b/Release_dlls/libraries.txt @@ -0,0 +1 @@ +SteamAPICheckBypass.dll \ No newline at end of file diff --git a/Release_dlls/version.dll b/Release_dlls/version.dll new file mode 100644 index 0000000000000000000000000000000000000000..7aa266754b9cb4b489e138f0f9a04999a6eea976 GIT binary patch literal 12800 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, nullptr, nullptr); +} \ No newline at end of file diff --git a/SteamAPICheckBypass/Console.h b/SteamAPICheckBypass/Console.h new file mode 100644 index 0000000..131a4fa --- /dev/null +++ b/SteamAPICheckBypass/Console.h @@ -0,0 +1,14 @@ +#ifndef CONSOLE_H +#define CONSOLE_H + +#include +#include + +namespace Console +{ + void Attach(); + void Detach(); + bool Print(const char* fmt, ...); +} + +#endif \ No newline at end of file diff --git a/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj b/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj new file mode 100644 index 0000000..e134271 --- /dev/null +++ b/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {3d2e6283-1c6e-43ef-a72d-fd510d40ecf4} + SteamAPICheckBypass + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;STEAMAPICHECKBYPASS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + + + + + Level3 + true + true + true + WIN32;NDEBUG;STEAMAPICHECKBYPASS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + Level3 + true + _DEBUG;STEAMAPICHECKBYPASS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + + + + + Level3 + true + true + true + NDEBUG;STEAMAPICHECKBYPASS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj.filters b/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj.filters new file mode 100644 index 0000000..3175590 --- /dev/null +++ b/SteamAPICheckBypass/SteamAPICheckBypass.vcxproj.filters @@ -0,0 +1,42 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + 源文件 + + + \ No newline at end of file diff --git a/SteamAPICheckBypass/detours.h b/SteamAPICheckBypass/detours.h new file mode 100644 index 0000000..bf50e8c --- /dev/null +++ b/SteamAPICheckBypass/detours.h @@ -0,0 +1,1059 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Core Detours Functionality (detours.h of detours.lib) +// +// Microsoft Research Detours Package, Version 4.0.1 +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// + +#pragma once +#ifndef _DETOURS_H_ +#define _DETOURS_H_ + +#define DETOURS_VERSION 0x4c0c1 // 0xMAJORcMINORcPATCH + +////////////////////////////////////////////////////////////////////////////// +// + +#undef DETOURS_X64 +#undef DETOURS_X86 +#undef DETOURS_IA64 +#undef DETOURS_ARM +#undef DETOURS_ARM64 +#undef DETOURS_BITS +#undef DETOURS_32BIT +#undef DETOURS_64BIT + +#if defined(_X86_) +#define DETOURS_X86 +#define DETOURS_OPTION_BITS 64 + +#elif defined(_AMD64_) +#define DETOURS_X64 +#define DETOURS_OPTION_BITS 32 + +#elif defined(_IA64_) +#define DETOURS_IA64 +#define DETOURS_OPTION_BITS 32 + +#elif defined(_ARM_) +#define DETOURS_ARM + +#elif defined(_ARM64_) +#define DETOURS_ARM64 + +#else +#error Unknown architecture (x86, amd64, ia64, arm, arm64) +#endif + +#ifdef _WIN64 +#undef DETOURS_32BIT +#define DETOURS_64BIT 1 +#define DETOURS_BITS 64 +// If all 64bit kernels can run one and only one 32bit architecture. +//#define DETOURS_OPTION_BITS 32 +#else +#define DETOURS_32BIT 1 +#undef DETOURS_64BIT +#define DETOURS_BITS 32 +// If all 64bit kernels can run one and only one 32bit architecture. +//#define DETOURS_OPTION_BITS 32 +#endif + +#define VER_DETOURS_BITS DETOUR_STRINGIFY(DETOURS_BITS) + +////////////////////////////////////////////////////////////////////////////// +// + +#if (_MSC_VER < 1299) +typedef LONG LONG_PTR; +typedef ULONG ULONG_PTR; +#endif + +///////////////////////////////////////////////// SAL 2.0 Annotations w/o SAL. +// +// These definitions are include so that Detours will build even if the +// compiler doesn't have full SAL 2.0 support. +// +#ifndef DETOURS_DONT_REMOVE_SAL_20 + +#ifdef DETOURS_TEST_REMOVE_SAL_20 +#undef _Analysis_assume_ +#undef _Benign_race_begin_ +#undef _Benign_race_end_ +#undef _Field_range_ +#undef _Field_size_ +#undef _In_ +#undef _In_bytecount_ +#undef _In_count_ +#undef _In_opt_ +#undef _In_opt_bytecount_ +#undef _In_opt_count_ +#undef _In_opt_z_ +#undef _In_range_ +#undef _In_reads_ +#undef _In_reads_bytes_ +#undef _In_reads_opt_ +#undef _In_reads_opt_bytes_ +#undef _In_reads_or_z_ +#undef _In_z_ +#undef _Inout_ +#undef _Inout_opt_ +#undef _Inout_z_count_ +#undef _Out_ +#undef _Out_opt_ +#undef _Out_writes_ +#undef _Outptr_result_maybenull_ +#undef _Readable_bytes_ +#undef _Success_ +#undef _Writable_bytes_ +#undef _Pre_notnull_ +#endif + +#if defined(_Deref_out_opt_z_) && !defined(_Outptr_result_maybenull_) +#define _Outptr_result_maybenull_ _Deref_out_opt_z_ +#endif + +#if defined(_In_count_) && !defined(_In_reads_) +#define _In_reads_(x) _In_count_(x) +#endif + +#if defined(_In_opt_count_) && !defined(_In_reads_opt_) +#define _In_reads_opt_(x) _In_opt_count_(x) +#endif + +#if defined(_In_opt_bytecount_) && !defined(_In_reads_opt_bytes_) +#define _In_reads_opt_bytes_(x) _In_opt_bytecount_(x) +#endif + +#if defined(_In_bytecount_) && !defined(_In_reads_bytes_) +#define _In_reads_bytes_(x) _In_bytecount_(x) +#endif + +#ifndef _In_ +#define _In_ +#endif + +#ifndef _In_bytecount_ +#define _In_bytecount_(x) +#endif + +#ifndef _In_count_ +#define _In_count_(x) +#endif + +#ifndef _In_opt_ +#define _In_opt_ +#endif + +#ifndef _In_opt_bytecount_ +#define _In_opt_bytecount_(x) +#endif + +#ifndef _In_opt_count_ +#define _In_opt_count_(x) +#endif + +#ifndef _In_opt_z_ +#define _In_opt_z_ +#endif + +#ifndef _In_range_ +#define _In_range_(x,y) +#endif + +#ifndef _In_reads_ +#define _In_reads_(x) +#endif + +#ifndef _In_reads_bytes_ +#define _In_reads_bytes_(x) +#endif + +#ifndef _In_reads_opt_ +#define _In_reads_opt_(x) +#endif + +#ifndef _In_reads_opt_bytes_ +#define _In_reads_opt_bytes_(x) +#endif + +#ifndef _In_reads_or_z_ +#define _In_reads_or_z_ +#endif + +#ifndef _In_z_ +#define _In_z_ +#endif + +#ifndef _Inout_ +#define _Inout_ +#endif + +#ifndef _Inout_opt_ +#define _Inout_opt_ +#endif + +#ifndef _Inout_z_count_ +#define _Inout_z_count_(x) +#endif + +#ifndef _Out_ +#define _Out_ +#endif + +#ifndef _Out_opt_ +#define _Out_opt_ +#endif + +#ifndef _Out_writes_ +#define _Out_writes_(x) +#endif + +#ifndef _Outptr_result_maybenull_ +#define _Outptr_result_maybenull_ +#endif + +#ifndef _Writable_bytes_ +#define _Writable_bytes_(x) +#endif + +#ifndef _Readable_bytes_ +#define _Readable_bytes_(x) +#endif + +#ifndef _Success_ +#define _Success_(x) +#endif + +#ifndef _Pre_notnull_ +#define _Pre_notnull_ +#endif + +#ifdef DETOURS_INTERNAL + +#pragma warning(disable:4615) // unknown warning type (suppress with older compilers) + +#ifndef _Benign_race_begin_ +#define _Benign_race_begin_ +#endif + +#ifndef _Benign_race_end_ +#define _Benign_race_end_ +#endif + +#ifndef _Field_size_ +#define _Field_size_(x) +#endif + +#ifndef _Field_range_ +#define _Field_range_(x,y) +#endif + +#ifndef _Analysis_assume_ +#define _Analysis_assume_(x) +#endif + +#endif // DETOURS_INTERNAL +#endif // DETOURS_DONT_REMOVE_SAL_20 + +////////////////////////////////////////////////////////////////////////////// +// +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} GUID; + +#ifdef INITGUID +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + const GUID name \ + = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#else +#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + const GUID name +#endif // INITGUID +#endif // !GUID_DEFINED + +#if defined(__cplusplus) +#ifndef _REFGUID_DEFINED +#define _REFGUID_DEFINED +#define REFGUID const GUID & +#endif // !_REFGUID_DEFINED +#else // !__cplusplus +#ifndef _REFGUID_DEFINED +#define _REFGUID_DEFINED +#define REFGUID const GUID * const +#endif // !_REFGUID_DEFINED +#endif // !__cplusplus + +#ifndef ARRAYSIZE +#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0])) +#endif + +// +////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + + /////////////////////////////////////////////////// Instruction Target Macros. + // +#define DETOUR_INSTRUCTION_TARGET_NONE ((PVOID)0) +#define DETOUR_INSTRUCTION_TARGET_DYNAMIC ((PVOID)(LONG_PTR)-1) +#define DETOUR_SECTION_HEADER_SIGNATURE 0x00727444 // "Dtr\0" + + extern const GUID DETOUR_EXE_RESTORE_GUID; + extern const GUID DETOUR_EXE_HELPER_GUID; + +#define DETOUR_TRAMPOLINE_SIGNATURE 0x21727444 // Dtr! + typedef struct _DETOUR_TRAMPOLINE DETOUR_TRAMPOLINE, * PDETOUR_TRAMPOLINE; + + /////////////////////////////////////////////////////////// Binary Structures. + // +#pragma pack(push, 8) + typedef struct _DETOUR_SECTION_HEADER + { + DWORD cbHeaderSize; + DWORD nSignature; + DWORD nDataOffset; + DWORD cbDataSize; + + DWORD nOriginalImportVirtualAddress; + DWORD nOriginalImportSize; + DWORD nOriginalBoundImportVirtualAddress; + DWORD nOriginalBoundImportSize; + + DWORD nOriginalIatVirtualAddress; + DWORD nOriginalIatSize; + DWORD nOriginalSizeOfImage; + DWORD cbPrePE; + + DWORD nOriginalClrFlags; + DWORD reserved1; + DWORD reserved2; + DWORD reserved3; + + // Followed by cbPrePE bytes of data. + } DETOUR_SECTION_HEADER, * PDETOUR_SECTION_HEADER; + + typedef struct _DETOUR_SECTION_RECORD + { + DWORD cbBytes; + DWORD nReserved; + GUID guid; + } DETOUR_SECTION_RECORD, * PDETOUR_SECTION_RECORD; + + typedef struct _DETOUR_CLR_HEADER + { + // Header versioning + ULONG cb; + USHORT MajorRuntimeVersion; + USHORT MinorRuntimeVersion; + + // Symbol table and startup information + IMAGE_DATA_DIRECTORY MetaData; + ULONG Flags; + + // Followed by the rest of the IMAGE_COR20_HEADER + } DETOUR_CLR_HEADER, * PDETOUR_CLR_HEADER; + + typedef struct _DETOUR_EXE_RESTORE + { + DWORD cb; + DWORD cbidh; + DWORD cbinh; + DWORD cbclr; + + PBYTE pidh; + PBYTE pinh; + PBYTE pclr; + + IMAGE_DOS_HEADER idh; + union { + IMAGE_NT_HEADERS inh; + IMAGE_NT_HEADERS32 inh32; + IMAGE_NT_HEADERS64 inh64; + BYTE raw[sizeof(IMAGE_NT_HEADERS64) + + sizeof(IMAGE_SECTION_HEADER) * 32]; + }; + DETOUR_CLR_HEADER clr; + + } DETOUR_EXE_RESTORE, * PDETOUR_EXE_RESTORE; + + typedef struct _DETOUR_EXE_HELPER + { + DWORD cb; + DWORD pid; + DWORD nDlls; + CHAR rDlls[4]; + } DETOUR_EXE_HELPER, * PDETOUR_EXE_HELPER; + +#pragma pack(pop) + +#define DETOUR_SECTION_HEADER_DECLARE(cbSectionSize) \ +{ \ + sizeof(DETOUR_SECTION_HEADER),\ + DETOUR_SECTION_HEADER_SIGNATURE,\ + sizeof(DETOUR_SECTION_HEADER),\ + (cbSectionSize),\ + \ + 0,\ + 0,\ + 0,\ + 0,\ + \ + 0,\ + 0,\ + 0,\ + 0,\ +} + + /////////////////////////////////////////////////////////////// Helper Macros. + // +#define DETOURS_STRINGIFY(x) DETOURS_STRINGIFY_(x) +#define DETOURS_STRINGIFY_(x) #x + +///////////////////////////////////////////////////////////// Binary Typedefs. +// + typedef BOOL(CALLBACK* PF_DETOUR_BINARY_BYWAY_CALLBACK)( + _In_opt_ PVOID pContext, + _In_opt_ LPCSTR pszFile, + _Outptr_result_maybenull_ LPCSTR* ppszOutFile); + + typedef BOOL(CALLBACK* PF_DETOUR_BINARY_FILE_CALLBACK)( + _In_opt_ PVOID pContext, + _In_ LPCSTR pszOrigFile, + _In_ LPCSTR pszFile, + _Outptr_result_maybenull_ LPCSTR* ppszOutFile); + + typedef BOOL(CALLBACK* PF_DETOUR_BINARY_SYMBOL_CALLBACK)( + _In_opt_ PVOID pContext, + _In_ ULONG nOrigOrdinal, + _In_ ULONG nOrdinal, + _Out_ ULONG* pnOutOrdinal, + _In_opt_ LPCSTR pszOrigSymbol, + _In_opt_ LPCSTR pszSymbol, + _Outptr_result_maybenull_ LPCSTR* ppszOutSymbol); + + typedef BOOL(CALLBACK* PF_DETOUR_BINARY_COMMIT_CALLBACK)( + _In_opt_ PVOID pContext); + + typedef BOOL(CALLBACK* PF_DETOUR_ENUMERATE_EXPORT_CALLBACK)(_In_opt_ PVOID pContext, + _In_ ULONG nOrdinal, + _In_opt_ LPCSTR pszName, + _In_opt_ PVOID pCode); + + typedef BOOL(CALLBACK* PF_DETOUR_IMPORT_FILE_CALLBACK)(_In_opt_ PVOID pContext, + _In_opt_ HMODULE hModule, + _In_opt_ LPCSTR pszFile); + + typedef BOOL(CALLBACK* PF_DETOUR_IMPORT_FUNC_CALLBACK)(_In_opt_ PVOID pContext, + _In_ DWORD nOrdinal, + _In_opt_ LPCSTR pszFunc, + _In_opt_ PVOID pvFunc); + + // Same as PF_DETOUR_IMPORT_FUNC_CALLBACK but extra indirection on last parameter. + typedef BOOL(CALLBACK* PF_DETOUR_IMPORT_FUNC_CALLBACK_EX)(_In_opt_ PVOID pContext, + _In_ DWORD nOrdinal, + _In_opt_ LPCSTR pszFunc, + _In_opt_ PVOID* ppvFunc); + + typedef VOID* PDETOUR_BINARY; + typedef VOID* PDETOUR_LOADED_BINARY; + + //////////////////////////////////////////////////////////// Transaction APIs. + // + LONG WINAPI DetourTransactionBegin(VOID); + LONG WINAPI DetourTransactionAbort(VOID); + LONG WINAPI DetourTransactionCommit(VOID); + LONG WINAPI DetourTransactionCommitEx(_Out_opt_ PVOID** pppFailedPointer); + + LONG WINAPI DetourUpdateThread(_In_ HANDLE hThread); + + LONG WINAPI DetourAttach(_Inout_ PVOID* ppPointer, + _In_ PVOID pDetour); + + LONG WINAPI DetourAttachEx(_Inout_ PVOID* ppPointer, + _In_ PVOID pDetour, + _Out_opt_ PDETOUR_TRAMPOLINE* ppRealTrampoline, + _Out_opt_ PVOID* ppRealTarget, + _Out_opt_ PVOID* ppRealDetour); + + LONG WINAPI DetourDetach(_Inout_ PVOID* ppPointer, + _In_ PVOID pDetour); + + BOOL WINAPI DetourSetIgnoreTooSmall(_In_ BOOL fIgnore); + BOOL WINAPI DetourSetRetainRegions(_In_ BOOL fRetain); + PVOID WINAPI DetourSetSystemRegionLowerBound(_In_ PVOID pSystemRegionLowerBound); + PVOID WINAPI DetourSetSystemRegionUpperBound(_In_ PVOID pSystemRegionUpperBound); + + ////////////////////////////////////////////////////////////// Code Functions. + // + PVOID WINAPI DetourFindFunction(_In_ LPCSTR pszModule, + _In_ LPCSTR pszFunction); + PVOID WINAPI DetourCodeFromPointer(_In_ PVOID pPointer, + _Out_opt_ PVOID* ppGlobals); + PVOID WINAPI DetourCopyInstruction(_In_opt_ PVOID pDst, + _Inout_opt_ PVOID* ppDstPool, + _In_ PVOID pSrc, + _Out_opt_ PVOID* ppTarget, + _Out_opt_ LONG* plExtra); + BOOL WINAPI DetourSetCodeModule(_In_ HMODULE hModule, + _In_ BOOL fLimitReferencesToModule); + + ///////////////////////////////////////////////////// Loaded Binary Functions. + // + HMODULE WINAPI DetourGetContainingModule(_In_ PVOID pvAddr); + HMODULE WINAPI DetourEnumerateModules(_In_opt_ HMODULE hModuleLast); + PVOID WINAPI DetourGetEntryPoint(_In_opt_ HMODULE hModule); + ULONG WINAPI DetourGetModuleSize(_In_opt_ HMODULE hModule); + BOOL WINAPI DetourEnumerateExports(_In_ HMODULE hModule, + _In_opt_ PVOID pContext, + _In_ PF_DETOUR_ENUMERATE_EXPORT_CALLBACK pfExport); + BOOL WINAPI DetourEnumerateImports(_In_opt_ HMODULE hModule, + _In_opt_ PVOID pContext, + _In_opt_ PF_DETOUR_IMPORT_FILE_CALLBACK pfImportFile, + _In_opt_ PF_DETOUR_IMPORT_FUNC_CALLBACK pfImportFunc); + + BOOL WINAPI DetourEnumerateImportsEx(_In_opt_ HMODULE hModule, + _In_opt_ PVOID pContext, + _In_opt_ PF_DETOUR_IMPORT_FILE_CALLBACK pfImportFile, + _In_opt_ PF_DETOUR_IMPORT_FUNC_CALLBACK_EX pfImportFuncEx); + + _Writable_bytes_(*pcbData) + _Readable_bytes_(*pcbData) + _Success_(return != NULL) + PVOID WINAPI DetourFindPayload(_In_opt_ HMODULE hModule, + _In_ REFGUID rguid, + _Out_ DWORD* pcbData); + + _Writable_bytes_(*pcbData) + _Readable_bytes_(*pcbData) + _Success_(return != NULL) + PVOID WINAPI DetourFindPayloadEx(_In_ REFGUID rguid, + _Out_ DWORD* pcbData); + + DWORD WINAPI DetourGetSizeOfPayloads(_In_opt_ HMODULE hModule); + + ///////////////////////////////////////////////// Persistent Binary Functions. + // + + PDETOUR_BINARY WINAPI DetourBinaryOpen(_In_ HANDLE hFile); + + _Writable_bytes_(*pcbData) + _Readable_bytes_(*pcbData) + _Success_(return != NULL) + PVOID WINAPI DetourBinaryEnumeratePayloads(_In_ PDETOUR_BINARY pBinary, + _Out_opt_ GUID* pGuid, + _Out_ DWORD* pcbData, + _Inout_ DWORD* pnIterator); + + _Writable_bytes_(*pcbData) + _Readable_bytes_(*pcbData) + _Success_(return != NULL) + PVOID WINAPI DetourBinaryFindPayload(_In_ PDETOUR_BINARY pBinary, + _In_ REFGUID rguid, + _Out_ DWORD* pcbData); + + PVOID WINAPI DetourBinarySetPayload(_In_ PDETOUR_BINARY pBinary, + _In_ REFGUID rguid, + _In_reads_opt_(cbData) PVOID pData, + _In_ DWORD cbData); + BOOL WINAPI DetourBinaryDeletePayload(_In_ PDETOUR_BINARY pBinary, _In_ REFGUID rguid); + BOOL WINAPI DetourBinaryPurgePayloads(_In_ PDETOUR_BINARY pBinary); + BOOL WINAPI DetourBinaryResetImports(_In_ PDETOUR_BINARY pBinary); + BOOL WINAPI DetourBinaryEditImports(_In_ PDETOUR_BINARY pBinary, + _In_opt_ PVOID pContext, + _In_opt_ PF_DETOUR_BINARY_BYWAY_CALLBACK pfByway, + _In_opt_ PF_DETOUR_BINARY_FILE_CALLBACK pfFile, + _In_opt_ PF_DETOUR_BINARY_SYMBOL_CALLBACK pfSymbol, + _In_opt_ PF_DETOUR_BINARY_COMMIT_CALLBACK pfCommit); + BOOL WINAPI DetourBinaryWrite(_In_ PDETOUR_BINARY pBinary, _In_ HANDLE hFile); + BOOL WINAPI DetourBinaryClose(_In_ PDETOUR_BINARY pBinary); + + /////////////////////////////////////////////////// Create Process & Load Dll. + // + typedef BOOL(WINAPI* PDETOUR_CREATE_PROCESS_ROUTINEA)( + _In_opt_ LPCSTR lpApplicationName, + _Inout_opt_ LPSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation); + + typedef BOOL(WINAPI* PDETOUR_CREATE_PROCESS_ROUTINEW)( + _In_opt_ LPCWSTR lpApplicationName, + _Inout_opt_ LPWSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation); + + BOOL WINAPI DetourCreateProcessWithDllA(_In_opt_ LPCSTR lpApplicationName, + _Inout_opt_ LPSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ LPCSTR lpDllName, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA); + + BOOL WINAPI DetourCreateProcessWithDllW(_In_opt_ LPCWSTR lpApplicationName, + _Inout_opt_ LPWSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ LPCSTR lpDllName, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW); + +#ifdef UNICODE +#define DetourCreateProcessWithDll DetourCreateProcessWithDllW +#define PDETOUR_CREATE_PROCESS_ROUTINE PDETOUR_CREATE_PROCESS_ROUTINEW +#else +#define DetourCreateProcessWithDll DetourCreateProcessWithDllA +#define PDETOUR_CREATE_PROCESS_ROUTINE PDETOUR_CREATE_PROCESS_ROUTINEA +#endif // !UNICODE + + BOOL WINAPI DetourCreateProcessWithDllExA(_In_opt_ LPCSTR lpApplicationName, + _Inout_opt_ LPSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ LPCSTR lpDllName, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA); + + BOOL WINAPI DetourCreateProcessWithDllExW(_In_opt_ LPCWSTR lpApplicationName, + _Inout_opt_ LPWSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ LPCSTR lpDllName, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW); + +#ifdef UNICODE +#define DetourCreateProcessWithDllEx DetourCreateProcessWithDllExW +#else +#define DetourCreateProcessWithDllEx DetourCreateProcessWithDllExA +#endif // !UNICODE + + BOOL WINAPI DetourCreateProcessWithDllsA(_In_opt_ LPCSTR lpApplicationName, + _Inout_opt_ LPSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ DWORD nDlls, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA); + + BOOL WINAPI DetourCreateProcessWithDllsW(_In_opt_ LPCWSTR lpApplicationName, + _Inout_opt_ LPWSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation, + _In_ DWORD nDlls, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_opt_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW); + +#ifdef UNICODE +#define DetourCreateProcessWithDlls DetourCreateProcessWithDllsW +#else +#define DetourCreateProcessWithDlls DetourCreateProcessWithDllsA +#endif // !UNICODE + + BOOL WINAPI DetourProcessViaHelperA(_In_ DWORD dwTargetPid, + _In_ LPCSTR lpDllName, + _In_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA); + + BOOL WINAPI DetourProcessViaHelperW(_In_ DWORD dwTargetPid, + _In_ LPCSTR lpDllName, + _In_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW); + +#ifdef UNICODE +#define DetourProcessViaHelper DetourProcessViaHelperW +#else +#define DetourProcessViaHelper DetourProcessViaHelperA +#endif // !UNICODE + + BOOL WINAPI DetourProcessViaHelperDllsA(_In_ DWORD dwTargetPid, + _In_ DWORD nDlls, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_ PDETOUR_CREATE_PROCESS_ROUTINEA pfCreateProcessA); + + BOOL WINAPI DetourProcessViaHelperDllsW(_In_ DWORD dwTargetPid, + _In_ DWORD nDlls, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_ PDETOUR_CREATE_PROCESS_ROUTINEW pfCreateProcessW); + +#ifdef UNICODE +#define DetourProcessViaHelperDlls DetourProcessViaHelperDllsW +#else +#define DetourProcessViaHelperDlls DetourProcessViaHelperDllsA +#endif // !UNICODE + + BOOL WINAPI DetourUpdateProcessWithDll(_In_ HANDLE hProcess, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_ DWORD nDlls); + + BOOL WINAPI DetourUpdateProcessWithDllEx(_In_ HANDLE hProcess, + _In_ HMODULE hImage, + _In_ BOOL bIs32Bit, + _In_reads_(nDlls) LPCSTR* rlpDlls, + _In_ DWORD nDlls); + + BOOL WINAPI DetourCopyPayloadToProcess(_In_ HANDLE hProcess, + _In_ REFGUID rguid, + _In_reads_bytes_(cbData) PVOID pvData, + _In_ DWORD cbData); + BOOL WINAPI DetourRestoreAfterWith(VOID); + BOOL WINAPI DetourRestoreAfterWithEx(_In_reads_bytes_(cbData) PVOID pvData, + _In_ DWORD cbData); + BOOL WINAPI DetourIsHelperProcess(VOID); + VOID CALLBACK DetourFinishHelperProcess(_In_ HWND, + _In_ HINSTANCE, + _In_ LPSTR, + _In_ INT); + + // + ////////////////////////////////////////////////////////////////////////////// +#ifdef __cplusplus +} +#endif // __cplusplus + +//////////////////////////////////////////////// Detours Internal Definitions. +// +#ifdef __cplusplus +#ifdef DETOURS_INTERNAL + +#define NOTHROW +// #define NOTHROW (nothrow) + +////////////////////////////////////////////////////////////////////////////// +// +#if (_MSC_VER < 1299) +#include +typedef IMAGEHLP_MODULE IMAGEHLP_MODULE64; +typedef PIMAGEHLP_MODULE PIMAGEHLP_MODULE64; +typedef IMAGEHLP_SYMBOL SYMBOL_INFO; +typedef PIMAGEHLP_SYMBOL PSYMBOL_INFO; + +static inline +LONG InterlockedCompareExchange(_Inout_ LONG* ptr, _In_ LONG nval, _In_ LONG oval) +{ + return (LONG)::InterlockedCompareExchange((PVOID*)ptr, (PVOID)nval, (PVOID)oval); +} +#else +#pragma warning(push) +#pragma warning(disable:4091) // empty typedef +#include +#pragma warning(pop) +#endif + +#ifdef IMAGEAPI // defined by DBGHELP.H +typedef LPAPI_VERSION(NTAPI* PF_ImagehlpApiVersionEx)(_In_ LPAPI_VERSION AppVersion); + +typedef BOOL(NTAPI* PF_SymInitialize)(_In_ HANDLE hProcess, + _In_opt_ LPCSTR UserSearchPath, + _In_ BOOL fInvadeProcess); +typedef DWORD(NTAPI* PF_SymSetOptions)(_In_ DWORD SymOptions); +typedef DWORD(NTAPI* PF_SymGetOptions)(VOID); +typedef DWORD64(NTAPI* PF_SymLoadModule64)(_In_ HANDLE hProcess, + _In_opt_ HANDLE hFile, + _In_ LPSTR ImageName, + _In_opt_ LPSTR ModuleName, + _In_ DWORD64 BaseOfDll, + _In_opt_ DWORD SizeOfDll); +typedef BOOL(NTAPI* PF_SymGetModuleInfo64)(_In_ HANDLE hProcess, + _In_ DWORD64 qwAddr, + _Out_ PIMAGEHLP_MODULE64 ModuleInfo); +typedef BOOL(NTAPI* PF_SymFromName)(_In_ HANDLE hProcess, + _In_ LPSTR Name, + _Out_ PSYMBOL_INFO Symbol); + +typedef struct _DETOUR_SYM_INFO +{ + HANDLE hProcess; + HMODULE hDbgHelp; + PF_ImagehlpApiVersionEx pfImagehlpApiVersionEx; + PF_SymInitialize pfSymInitialize; + PF_SymSetOptions pfSymSetOptions; + PF_SymGetOptions pfSymGetOptions; + PF_SymLoadModule64 pfSymLoadModule64; + PF_SymGetModuleInfo64 pfSymGetModuleInfo64; + PF_SymFromName pfSymFromName; +} DETOUR_SYM_INFO, * PDETOUR_SYM_INFO; + +PDETOUR_SYM_INFO DetourLoadImageHlp(VOID); + +#endif // IMAGEAPI + +#if defined(_INC_STDIO) && !defined(_CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS) +#error detours.h must be included before stdio.h (or at least define _CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS earlier) +#endif +#define _CRT_STDIO_ARBITRARY_WIDE_SPECIFIERS 1 + +#ifndef DETOUR_TRACE +#if DETOUR_DEBUG +#define DETOUR_TRACE(x) printf x +#define DETOUR_BREAK() __debugbreak() +#include +#include +#else +#define DETOUR_TRACE(x) +#define DETOUR_BREAK() +#endif +#endif + +#if 1 || defined(DETOURS_IA64) + +// +// IA64 instructions are 41 bits, 3 per bundle, plus 5 bit bundle template => 128 bits per bundle. +// + +#define DETOUR_IA64_INSTRUCTIONS_PER_BUNDLE (3) + +#define DETOUR_IA64_TEMPLATE_OFFSET (0) +#define DETOUR_IA64_TEMPLATE_SIZE (5) + +#define DETOUR_IA64_INSTRUCTION_SIZE (41) +#define DETOUR_IA64_INSTRUCTION0_OFFSET (DETOUR_IA64_TEMPLATE_SIZE) +#define DETOUR_IA64_INSTRUCTION1_OFFSET (DETOUR_IA64_TEMPLATE_SIZE + DETOUR_IA64_INSTRUCTION_SIZE) +#define DETOUR_IA64_INSTRUCTION2_OFFSET (DETOUR_IA64_TEMPLATE_SIZE + DETOUR_IA64_INSTRUCTION_SIZE + DETOUR_IA64_INSTRUCTION_SIZE) + +C_ASSERT(DETOUR_IA64_TEMPLATE_SIZE + DETOUR_IA64_INSTRUCTIONS_PER_BUNDLE * DETOUR_IA64_INSTRUCTION_SIZE == 128); + +__declspec(align(16)) struct DETOUR_IA64_BUNDLE +{ +public: + union + { + BYTE data[16]; + UINT64 wide[2]; + }; + + enum { + A_UNIT = 1u, + I_UNIT = 2u, + M_UNIT = 3u, + B_UNIT = 4u, + F_UNIT = 5u, + L_UNIT = 6u, + X_UNIT = 7u, + }; + struct DETOUR_IA64_METADATA + { + ULONG nTemplate : 8; // Instruction template. + ULONG nUnit0 : 4; // Unit for slot 0 + ULONG nUnit1 : 4; // Unit for slot 1 + ULONG nUnit2 : 4; // Unit for slot 2 + }; + +protected: + static const DETOUR_IA64_METADATA s_rceCopyTable[33]; + + UINT RelocateBundle(_Inout_ DETOUR_IA64_BUNDLE* pDst, _Inout_opt_ DETOUR_IA64_BUNDLE* pBundleExtra) const; + + bool RelocateInstruction(_Inout_ DETOUR_IA64_BUNDLE* pDst, + _In_ BYTE slot, + _Inout_opt_ DETOUR_IA64_BUNDLE* pBundleExtra) const; + + // 120 112 104 96 88 80 72 64 56 48 40 32 24 16 8 0 + // f. e. d. c. b. a. 9. 8. 7. 6. 5. 4. 3. 2. 1. 0. + + // 00 + // f.e. d.c. b.a. 9.8. 7.6. 5.4. 3.2. 1.0. + // 0000 0000 0000 0000 0000 0000 0000 001f : Template [4..0] + // 0000 0000 0000 0000 0000 03ff ffff ffe0 : Zero [ 41.. 5] + // 0000 0000 0000 0000 0000 3c00 0000 0000 : Zero [ 45.. 42] + // 0000 0000 0007 ffff ffff c000 0000 0000 : One [ 82.. 46] + // 0000 0000 0078 0000 0000 0000 0000 0000 : One [ 86.. 83] + // 0fff ffff ff80 0000 0000 0000 0000 0000 : Two [123.. 87] + // f000 0000 0000 0000 0000 0000 0000 0000 : Two [127..124] + BYTE GetTemplate() const; + // Get 4 bit opcodes. + BYTE GetInst0() const; + BYTE GetInst1() const; + BYTE GetInst2() const; + BYTE GetUnit(BYTE slot) const; + BYTE GetUnit0() const; + BYTE GetUnit1() const; + BYTE GetUnit2() const; + // Get 37 bit data. + UINT64 GetData0() const; + UINT64 GetData1() const; + UINT64 GetData2() const; + + // Get/set the full 41 bit instructions. + UINT64 GetInstruction(BYTE slot) const; + UINT64 GetInstruction0() const; + UINT64 GetInstruction1() const; + UINT64 GetInstruction2() const; + void SetInstruction(BYTE slot, UINT64 instruction); + void SetInstruction0(UINT64 instruction); + void SetInstruction1(UINT64 instruction); + void SetInstruction2(UINT64 instruction); + + // Get/set bitfields. + static UINT64 GetBits(UINT64 Value, UINT64 Offset, UINT64 Count); + static UINT64 SetBits(UINT64 Value, UINT64 Offset, UINT64 Count, UINT64 Field); + + // Get specific read-only fields. + static UINT64 GetOpcode(UINT64 instruction); // 4bit opcode + static UINT64 GetX(UINT64 instruction); // 1bit opcode extension + static UINT64 GetX3(UINT64 instruction); // 3bit opcode extension + static UINT64 GetX6(UINT64 instruction); // 6bit opcode extension + + // Get/set specific fields. + static UINT64 GetImm7a(UINT64 instruction); + static UINT64 SetImm7a(UINT64 instruction, UINT64 imm7a); + static UINT64 GetImm13c(UINT64 instruction); + static UINT64 SetImm13c(UINT64 instruction, UINT64 imm13c); + static UINT64 GetSignBit(UINT64 instruction); + static UINT64 SetSignBit(UINT64 instruction, UINT64 signBit); + static UINT64 GetImm20a(UINT64 instruction); + static UINT64 SetImm20a(UINT64 instruction, UINT64 imm20a); + static UINT64 GetImm20b(UINT64 instruction); + static UINT64 SetImm20b(UINT64 instruction, UINT64 imm20b); + + static UINT64 SignExtend(UINT64 Value, UINT64 Offset); + + BOOL IsMovlGp() const; + + VOID SetInst(BYTE Slot, BYTE nInst); + VOID SetInst0(BYTE nInst); + VOID SetInst1(BYTE nInst); + VOID SetInst2(BYTE nInst); + VOID SetData(BYTE Slot, UINT64 nData); + VOID SetData0(UINT64 nData); + VOID SetData1(UINT64 nData); + VOID SetData2(UINT64 nData); + BOOL SetNop(BYTE Slot); + BOOL SetNop0(); + BOOL SetNop1(); + BOOL SetNop2(); + +public: + BOOL IsBrl() const; + VOID SetBrl(); + VOID SetBrl(UINT64 target); + UINT64 GetBrlTarget() const; + VOID SetBrlTarget(UINT64 target); + VOID SetBrlImm(UINT64 imm); + UINT64 GetBrlImm() const; + + UINT64 GetMovlGp() const; + VOID SetMovlGp(UINT64 gp); + + VOID SetStop(); + + UINT Copy(_Out_ DETOUR_IA64_BUNDLE* pDst, _Inout_opt_ DETOUR_IA64_BUNDLE* pBundleExtra = NULL) const; +}; +#endif // DETOURS_IA64 + +#ifdef DETOURS_ARM + +#define DETOURS_PFUNC_TO_PBYTE(p) ((PBYTE)(((ULONG_PTR)(p)) & ~(ULONG_PTR)1)) +#define DETOURS_PBYTE_TO_PFUNC(p) ((PBYTE)(((ULONG_PTR)(p)) | (ULONG_PTR)1)) + +#endif // DETOURS_ARM + +////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#define DETOUR_OFFLINE_LIBRARY(x) \ +PVOID WINAPI DetourCopyInstruction##x(_In_opt_ PVOID pDst, \ + _Inout_opt_ PVOID *ppDstPool, \ + _In_ PVOID pSrc, \ + _Out_opt_ PVOID *ppTarget, \ + _Out_opt_ LONG *plExtra); \ + \ +BOOL WINAPI DetourSetCodeModule##x(_In_ HMODULE hModule, \ + _In_ BOOL fLimitReferencesToModule); \ + + DETOUR_OFFLINE_LIBRARY(X86) + DETOUR_OFFLINE_LIBRARY(X64) + DETOUR_OFFLINE_LIBRARY(ARM) + DETOUR_OFFLINE_LIBRARY(ARM64) + DETOUR_OFFLINE_LIBRARY(IA64) + +#undef DETOUR_OFFLINE_LIBRARY + + ////////////////////////////////////////////////////////////////////////////// + // + // Helpers for manipulating page protection. + // + + _Success_(return != FALSE) + BOOL WINAPI DetourVirtualProtectSameExecuteEx(_In_ HANDLE hProcess, + _In_ PVOID pAddress, + _In_ SIZE_T nSize, + _In_ DWORD dwNewProtect, + _Out_ PDWORD pdwOldProtect); + + _Success_(return != FALSE) + BOOL WINAPI DetourVirtualProtectSameExecute(_In_ PVOID pAddress, + _In_ SIZE_T nSize, + _In_ DWORD dwNewProtect, + _Out_ PDWORD pdwOldProtect); +#ifdef __cplusplus +} +#endif // __cplusplus + +////////////////////////////////////////////////////////////////////////////// + +#define MM_ALLOCATION_GRANULARITY 0x10000 + +////////////////////////////////////////////////////////////////////////////// + +#endif // DETOURS_INTERNAL +#endif // __cplusplus + +#endif // _DETOURS_H_ +// +//////////////////////////////////////////////////////////////// End of File. diff --git a/SteamAPICheckBypass/detours.lib b/SteamAPICheckBypass/detours.lib new file mode 100644 index 0000000000000000000000000000000000000000..a6a663ba66d13627ef15417d1f2f9fde7b6bf10a GIT binary patch literal 662140 zcmeEv34B!5_5YhBKnMtltP0A2LkXymu!MjhGf4&}5R#ZoAPRP}O_Gsp&P*_%A{tyU zSeL5RYAv{Hwc@^1D~JnPTG!U4YU2(xxA6bV z)0Len{U@JEqjIGG>t}LuvGi|0-`pW3|C`U0dw(kZE6+Y(94Y-@I{RHbRQh+HsiD!* z!JhrIuay4D=e&7Y`32#4YkRaH67!WU&YAA@p5*uWyp^X&^L(*bxVfe&?Df^v6*f0# zPxTtG<-SGi@M_`F>{%Arg&JgDw7R9XacYh^Sc}cCS#7CxkrrB17oFc$9ByqvtgRxl zXptr+5Gjhpod&SDb!E0iq{$o_%|XO_x_JTt)kGY2o;I~-Ypd1!>Y@;^w6{)uw9PR% z&ug1G8pV0FwO*W7*3)96P;71vb-G~T6)23hhSuR*V7p%7d#Qi56MTMa+bYTvLrp0} zt@4-pef}&~JP4QP3?*s}@NhqfxoTb&=|L*dhoa;tw%{F9`P>$|6cGl`5#V zswgM<^Lz`bbtH^Mq1R$8+c*u(qIuI`tQ#o}%%a6nFs1F$Fl8p{i%r3T9eB?`P*n!8 zUP5@4hvWIJb>YRWb?r@I?xF8d)cr|Qq@hLE6nedsy`q>g+vkNFA}wao<4|5SDU;)i567Ht4pJ;wc%JS($b*sSq$k`G?YXaM`E?%rl#taaBF)^pPy!e z`K>K=5vu#uO*|GQ(UN#$IO-%&RUyzDMBQ${FwBnG_*aaB&Xrn?qSop#}lvL=%k^%VwBTEn5!rW4xoO6=qh{nB7Twg4GyDafA1) zy#mEwmrFf`Q4p?0J>&soXPX7FkhOwp+|(?GIMWina1q+q02xuObA~gOxjn&D`L7># z^88RIM+LS~OuYslV3}nv?<^MhaZs8FY-dfh6I93-u=34%Fu5}-L-Q3wS+^${Qo~@uF~jyoVSj3|Z9L(qL2e zMUr67N+o`fuxV{nBZ392SW^yAD5`Xsl`wU(l(5PhTcg%P15x`$92dwDWG#)7Z#`Jv z&&67Ls-g?{Y{0Jqn%7Y=ZO{NsD=C1iimH*ORn#PC(}E#z7)+75d&nYXI3*7_dTPaF zoJGlEy$a<(EEKI}BN*1K>T^2#q`Zp!lG2m?#lf;qm|asA{tbZ zzG#yebo2Wp;+%+S^mF+-c$la~tC!6Ab%g=$*RW(uTY zu4pZ3qlU{Ar^)bgjP6kxdIko=&22PpH$_q$Wy@ByL>%NLp{z}*)@5x%HOe|#vgInL znPN27sLXMI=>bw0Lt|iyp$rPJS!m2A8_AXoRTge)t%b$&+FR-{zBOxD2&-<{WD!+) zwUi4L^CpqcoiHivu}x%+A^|Pa=krxk`g+3f$vsC|H?L5p2HLi-YOGxYtH)UtK|Ri@ z5bALj)&@+hXdux&w#BlYdu)s~K)cph1+;CB6`W0bOlhIsf>L7BAnRZ@22^Xav7Z{& zL(8qs6;)MmlG!S_O_Y^#se;=?U4h$Fdzy?V%6oBZn^m{ujb(AN`J=DywDwrsu+qfv>eaEV!oosI2aQg%=3`))n8@m| z+5s?ym7NfrsUF$)M(`lR%R9L6a@03ioJTWf=0Qa>Z&f@TJ9x>3?agfmFI^f9*GD=I zUcRjQ5QNLa4b9;e^%AFZW6xKwAooIS+Cimt{=t=q`3F}b=FdNPY0 z8p@TPCvpG41Vb%X7F)rHh3bnUSmh}T*N3Cw7A%zqTlsAVy;yd@M=JzvHQXDw6ATDa z>(`+C=sk3~Ma$O$6(wC|hD4yV@aO4QBeD#|#<(6~y@0{;!6;yQBL-Nrj)&OVekV6a z+=M}jC{Z|V`yIkN?RT`;Ui3S?5LD+(FT}L{j$=V>zvEm?)532xXzTaU8Qfu4q=ujs84ny?Z?+BP~9o(kh zF&8lJcXD$~`yH_7mB*vFg_>X6m|q?DdA%q5=$3jx2zLVV3TOtR_FpRdhn6xxXsH%~ z!I7Msi|s3B2Si8mHBH9;GDLNDLM&);G1yVOS3&M#)CHYQ8XkF-Q$je&4e zTR5ssM`6s2D=Hn$WPU|koxzI25N2Nf4#_T4rO?V)3(sej zGt|T`&QN&>H+*RPRoF}=hG(7XAsE>wzp*-s`$jBh6T`D5LM+=$H_upEmIY`n(t!7C zAcf6sxR*IULQA}A#k5Q!tKpd9>Sh~Eu(7>mg|oal=%Px4@c?Nd6}~3Emha^tV>zO>mQJMvIhH^WtUT!iOo{`L6`{h#z6JhJFi=sv zC`5~7w7x|xxmHO@d%Ue3%M052AkQxpIGZeT)5eO!;kqy;WJVFPg1Duc-_#nzqdHm) z4RzQ`B(9{NN9gcJEoIH zEHu(6NQP4YY~_w*(ApYoA`k6UL8v2z8|r9-Ou}I{BBfZ?HS?!7;)b|T3UC@M zNri${Hhqk!MDhZmGPJ2$RVrm;7smX}ZShq?r$LIDyD+wdFQ#a-y`0*IB}gs^tKeFk zxh_1#n78VTYB@k97euuZ-H58CBK3R-rY;la%FDvlrUgxDg34A_2V2RICH3_&V*yH7 zk^z_CSxaq_MJ$zj6zpN-9x^3SPz{lW;YQyKL-lvA05$ac*Nl*4e$m!F)iJvj_QxA5d# z%CPE`5Vc!!N}$keYgSUINn*n?yY;3X7n>M>RP|z|sfT4Ic#}fAH6{(jxWEMO9#@wb zMq?1eT@X!6=&8H|M6-pr?fP1okAWy{+4)jRcR~Mu@XFvq47(BV#oEi~Z5ox1j8THVp zzJOWR7mruh%9+3~ltMs-etxvInPqi2DkLD6kU-TaY-mA#23uRpo2#3e1PJ^x;36&b z0s)pQ6KsC>m9vXl&j?5J$mZt$6>V6?Q~L+;no_Kq56){)U4)p5&EC~AvZ=w1n7}z- zNikoG3pQe1Q;yP-NHpGF-Gqg`II^T1t5p7uaBX{BF6Wm1P+A&~23sqd@Lamo`~5F+ zrp=rs_P@Xe7}COZl9Zb5l5$2RNyW*@(vCNirJvrLA|3ffA8F{t{iM;MRO!m>{?cj} zaFR<(l2W8TQokO4sSK5*Lb)K@(=Q3y=||eR2K)bHp^;13V=3nL2nth9AJN3mTvly^ z1eRR=r2aT%o>7yza*9>ISis4BXfAjvRqH`(E5{( zzN#Nx6DQ5^v$uRI(nh5!8M6JEEZ3y{PeaTpHOUOC4wpjgulbQ4{!8HKTCG7JOG3)L zgp}q11M|5W7MyvbXR@<^&QB;1%hZY#dl-Ud*t9ev+Ilt(REt;Aohu8FcGZD_)Jx&U zrBe#%e@pO*9U$iYpIU-9e+*MS4Zv7kJcHTWXEv?yRC>j77@v#C`W?M1{eS+h!T+`> zp_?vz7Z$!kChysT=fm}{+a;j?+oD9Z-wjz$V>|3m^548g$$#bs3-m0hn4W)6w+D5P z(5u^Fi{&1^HhjAg&E;;0I$H!(bz z)%L9U8mZpIQY+{<#}8_KU%fc&JdT>6oLf@!mW9Kbqmk)F4Am>x&SPl$GLZiDZK}}! zp52=Geh5>itI9F<&*7F#EJ{=SIP%}JS0ZX&M1kY@JKg2Yu!B%9 z_IWy}`GCR`psS+&R6toVD6+%;dFZYjB?dPOl%rF}&so*_rAw-c^@BH?kziXV6 zy*4S;2eG>xiQ(xBbrbKf!O%%LuaJ5{$5ry6pAtE^?m-uv^X3qwl`okrqs?D z%v5V4rh@~;lIZ%Qa8c~ch;p*fKE!i z*GCUR|DD@O;=T(uTk6He)MUW_?Lmpc*vmaAm51=m9@|$9KL15;fZ$2J9(O&X`a-z> z?F1?Br>WU8k8M(BxA&N^A8@u?kI68boyQV;3{o4JZMs;j-ieSvw9%)NHwy@QsjyTNwvUwlThV7-8kW_#wzMPM+s*&O3~vih8%$XZ=YL}9q6ga)9jjS zV?Q>MpqEB4dhKCcs?HS^+(~Au;7;;f1-FU%|Mt06zBquap{Leq&s=Bw+NgpN}o28{eb07U0=q_!5qdfU^XsH%FHj z@hDzuzIM}eK87*ugqL8Oyr*sVp6q}9J}7)bZvHwj-3?X^pv0@UIxY%}rALmuXRuC2 zwT->b2PMf|8|t>oL%ewYpS__WOrLn$TDigS|JP;#*g(Ky(?zVd{*$&5`1fw-sNbzX zlsY|Id9PeENfuxYFHu4CY^AJgJXDoK!%tKVEnBG=VE^~MurGGq6uXlO`&#U)$=kAj z-i!X<^S+&FQ>L&@0F=M%oUH6wGiOZA$yHd)ktHstX5|Q1Ra$G!X_HYRme)mMtxeU@ z=A7x1!IJcBBQsKM2JJ9q=H_VRYiUo|GvbXJW`rJT(Qpu@>R7Xe)y%%x8`JRkc$)L3 z$Vn9Gv$8~XR#r|9j4*wAcFt6WtxBuA;3Db6X=jDH)=1K&*dc+A$#t~J#>z0ilJLH| zBn5}bSAwRc0~fAoZ}61MK5c^}X{iq9mD2Mj$HN_QPjicm8v)02$H-Tly3Va6*LOL*mk5lVzUk2S32>v1v)A_+yz>RdPG11}{sEkSvc0|= z;N2`RcKQmSZ@?5uD#^0fcPG5h5Ewgsl)q!MCF%63_WFJS?`s9dPG1r96-<+)%ck4w z%Z2wN!0Z(`h?$nZz2N^Hm``We>l+L2!*e8Q8csT_^lgXVTwwalWH9V1VO~F|Y8(&D zNdjl5Zy7MhP=at+=^F{ZMZnYwoRz*ufNKV3{4CODt*;7xiv@;obePrObOdxaa8JzU z7_0c@!}}wF;Yf3Rd*GRQf+P){W3P|QHV2rPz*(jDZQ#xZ=H$8d`cOorbAh=};Oz80 z4$L(t+UuiYw*{Cl1A>7-6SsCOwvWr=I_X77UFb^%U z*Y_lF?*j9)N{;Jip>HVC@c}SjpTcouXS4qI9N?xcgPl+1I6M1I`k^EZui`kX{GjrD zqQG#Zd3yK5GYVWwHAh+Ldp=o`t_CI~Ml@-Fo7rzC(y)kgfmO;Xz&L|I7a?A z)At5Ej|DFIG>)>0ADSTPSb?$Aw*{W{!2MtaM_K6`1@B^k;YjoJ-UZJHaKoDH^^Ju0 zT!FFEw;7%l!1Zai*GKU?USRC>QTzhHed$2oXk~QCHJarI#cw8Xp9rj-{RX$nF|*c3 z@tXwP9|YD)pBuRE9O&B%+|g}lvrdNthn2oH@XG<_0Ts?Hy>n2{-v(x6jH$EKHyGYt zf#FE=^70`(OMsge*Xir1!%bvaQj*f)Tn5YvfkQMd zwRb-k7&zHsrSCT2?suT?WrzCS1nwgT`jXq_nAyi~0B|D&)-Js>9O|13T%iMf4G#6S z0(YhZeb+kFw+Xnr9q9XwLw&CT_a_JX{^3wxpOuo7fs+oq{Fovz9BEyiX9Ab+Kwq^( zeG%Z=9q9Y9Lw(l)cbfx!&p6cgTj1Vwpzmvk`VIg$;0$hMyZo3aFg@i*HgIzt=v(Gc zUoCL04)k5(P~TO+ZE~RRNr(EL1MXD^`aXB4?;GIybo87b#|TVM`Ee|8GacxwaH#K8 z;37TfqyFeZV16QScKy*NVD9cgAN5DS5tyFR`zmmMa-i=Y4)yg}h4u<39d`9&iokHB zO?w4gz5{*L4)sNVYj>dU#}4&f2i$EA^gZKH-*16?Q?HM&V+Lhgk>hKvBIDdsRUvg!TXa4Nvu{geNv3zB0`GRmutT7T_&KKQd z$4{S}H932EELyu@)r8@gP~%7FjVFX`a}68#lfNCE?8Pv5DZAi3z-yKnS%2C(ooR1K*|#Eezx!>zM{f{(EK9bf^umRBz~k% zL1Bq$0%i!TCINbEc@UBJ6_phGLrY4EDi-^tSwc*c2EEw)lCpe%sG_(q81m)k`^(Ei zzM>+@Cqz@#>FHUtq&QSwGCvr~_mxUVKt%@%TC!A1yGK{V!qLUm9g*htX6Yz+od>TZ zDZivFw8URlUI@v>zJ+u(RT>ZPIFk&PLRC>wo-cnG={CtLvbk+*HmKc$_vk#!9WgyBuu#=R2nS9{DG^gP&fm@X~XhEX@0=R z{VNW~+_12iG9lkD4S@exs90K3Rv=Bl1?99VWP>GHkvJMavRJ619AEwO)uXlflMDP)SzJu=F<3cO(Q{W&(Lp={Wd(H_VW;vuEc; zO*Bz@KQl*Hx70RH&0*>Nn;pVLE2Z~sQ<>UYk>2+$y)E=TZzh0k?1a8oEWJ(iQL3Lb z7r+NMnzN^}R6lBmFwsgi8x4`fn-QwnL#X~ylPB5?s@Zb=q=vQ)*Q`+h{SqhLcB3J6 zx~tmV^ySNYBX_*C>XQv`7uJ1?Hkk3ZZC;pN@}t==EV%H28y-4#;c`j3obkujEGb@g z)27WA@4L=(LfarTZf`OE3upIj=)38fPfxyf^SV1X|E^M!CLn-x*SBRGZ}{rW6)!ZL zUej;c{`(NIO2%J*H#3yp|f-LsS&Q2U){)%NyDw zb#>u-uFS#ET0B}&+tzky)?mrNr#(PJXW(@W47R_Y1VI-*JJ`^2h}zmIg5OKLn5J5h z)aGz=YjoB35jT~_+O}1p*dgi^#i6D;7LLd2z8__%I2Z}Feh)RLuBL$|T89`dUY99} zP$aRrB`rhrm5MSvXa@u9i#(};t^)i$2R0bw-X>2&&jx3{w1C=q`z%<}+46aR&ybO#(GcqV*Wl&qe2!x<V-~K472w-kALd4kUbX#~;A`5capVJBWD4#ec+Jfm=Mn@UJ80N=xv~5K*>gKP%0)j;^f7I zTxrr?g-7EQ&U0Ksw(d(phW0~Iz@Ji9BuSUy-Gd+7Ia(=H$*gc3B?`xZpUatE;BizK z9z-o-Pf%0cn2!bz<`5l%X$BBMxrI_P-N8K8LZLdpRp*_oj2pt+!zfX)J?bk7E*488>? z&tP(;NjntYOTv{V>1#jF#{l1Mux7bJlOlDlP~{8Yln;t$6;6zVB|NCajw;xe;$8zvdTT**LF+(E zLBpVwu6j_)gJ0m}c|fi->2Za(MYwF*VrqAh5t_C*SFUMhm5eptXhlat3a#i!ZRVXz znK!)`nfEO4`U-YAc+~oAz?o)~d2HHykU3}4)V8eFH??t=w`6;>yrrqQI&WErN*O92 zl#VK#>I&C|Orx}20!l6Gk3gxyT?$$adKu{HpqGQL2fYH6?C@hy%4}+_d1jLv%uT#{XC;l&d@>}$qU4hi9Dw9*mG1MMkWfx*6tol!*3y>Z{TkL zkF0eq&Vlx&fi1WlN~pjU(51xj|g83pXUqUEtRXEipzCr}!7cY~6R-UFo)az9R9LdeC(>6}O7bk4J!&Y86pUN(fl zW6g;|vQH@r1)f|s+Z!SZNk5ejZ#rxS7dcAP(eqU94MbjFL}-jeCc72q&>{Hahhg;2 z?o=E~5z)@$%mx?Qd0Y*?`YO-k4o9T)1AMxlqADQz;z8-E!l^DE`;fhq*1v;N@%R>$ z8j$^Kyf*KaIgCCDU+zN7mtoA=iu( zaJDlon}w4O<3Y1<$|^6sM90pj+<^pxPq|AKhCJn_!5)|4Q*OSnLOJ8cDIXMW6;7;l z<1Rlx#=_E6@yOcTvgAs`(*!c_HR00CpEAjWxiDc?!i1UIMgmH;Ibp&paHa1t$AUKy z=V+WRn}W}7h9n9;E}8YHwKE>F^|IilSdU6EC7SX{F2&}ip*U6HRGa1mVHzrc+%)7$ zlWxa9=iMb-7N&WWw8;f5bK59fX|3~Pa2D!DmmcuQI%9Aq^~ySJ-E+fT7q<@Qk##t4JuN|Y?#a}bm%%_#bCD=7=iy3k5h_)wILR3OY%F4&Lg)2h z5wm3s^YTG)sKTkXK!dOVrITBLTxo3Kk@K#{HRtJ;9jJQ^)0WqmYI)|Zak>I4M+8I!;9Cq z+E#pno%V-god?xYb+wb{BXk>8*LhHLCLdLB(Af`X0Zuv=!Oj%_#h`A`V$g}8C7=P& zQqW4!lRznrWuV7_-hq?n3%SyyEeh{x;X=LTC37U~*xB99?T^ecT>&Q3Cu7Qoy7>na z(_aFmeqCkG2ak&GiA3#8k9*njLM`rj(?Ytn*{PFoL!oHqT9lPHx`nQ?Eg)2p$wcx& z@u|Yu7v~(DbhN`<6vs0_GeA2)j|E)?dIIQbP>TPVpk&s&adNYgD^0pt;oUA=)CX%9 z+o}64mAl^n^&Q^FU`k2TLgsFp4A%WP6YT-DA4NK&&IFGlIu+;PHb&Krt#P>m_pQmc zxsWs-au?!-m(qpM(1x$oJ6(}5xj(ugs=cNYAY7C?$;6;8DUKM)qA1sZNaa&ZfC-WFVQo&yU$ zmISoUh`q1H>>)oW!eJOl8*B0Ef2k2?B2ra2)kgeC81W(Sxe>|5jmUXhaLsvawpv8( zVSok!{B~^To{qpJ>pa&06`*D@(6!EUnYhTL8?^2&Y3t50SiL%b%i#0N5Ox6b7WYm- zq`)tz6Q?G)`Ep9r*wOi?iSA+v~6 z`6iQHM3k%p8&+veTm%NU@78YSUrDMfEo@mz=|-;rTh0_tnBcfXY>=GN-o(7pJm%_r z&J_9F`EwJQzSQBoEL=aCdP{>yvyMF72|D& zi|ZSN8qQ^pfs4y7gp1=+fc_lk2H;QB_0#lnH;rPdK}Xp%leATpJh|%t-sBKBsMo?v z_4vS0^v#rmZVYEiTy5p8?a|sW8+}qq7u~r>caHVpgMq)soiJCVx)KhcM>=YP7z|TI@%CUETK@!<;f?Fm;<<0 z@k+7H3+{*a)hMU(c`X9KLCPyZwaQ5mikqn-n!(UmFF9TfzdO7HIpjU$43wkx^A3=Wt+70?s(7%IT59&eWe+JqN zdIM-H=uMzkg5Cm3iMtc@1<+rBeggVS(0_n#2AzQT-U~Vr^dZn<(8oZjEd2_U1}~4} zyJS_dj{`_59Fsb?PrP$p9;8d^8$C}o`8(^yO9+nhly zu*&06DvK6EO3-elkqB&~%%#QK6zP2Y-^E-%!9TCmo8jV>n%2E&Y@fo43ip*O`XHEW zj;^AA1S}P#Zk$K;P|^96JOHH0A*wkQY+W_41WVKaRW+|laFuG_2;MlH+G=iIMXB<; z32&_YxnQ5BsrhQn&jB=u4nqfp&xb4U{UyuW|B9L9R53DkA4) z3YSIGO;i>I?bHVe!~Lxo4d zR72HIEN+IEe2|^0a6wvc7R+CxMw0EG1f@uC5jFHF&;YKtfl`fs8kB1MGoYQI+d=83 z=?kD+Kz{@J4CwDbsk?m%v@gPY8FVb@E1<`Kz79GY^bOE3=$oMDg1!w(`S%VewGdC> zW!XYB1}+g}W_ixB7Ai#dh(2#8u0%W0k!UBpRBKpq_p)|koo6k< zsQx8pDyX@FFIo$g9~)f5WN0lyRM+7|YY|i`BPI(7ysQ7#T_Zc+bJ5HptLyNspN{E# z--XEoyXAv5Cq8{}Yuf{K>qVY67Vlkyk$h5LirDQtYmMwoJv(L*Qs?J}z&yT3Qz0&g z=CKS7!Se21v_9&HTmTK!0C`0Nr1EnflT2+)GA(0bXs9&7B{C~l8A&v5qiXR>oGH?~ z_@@VeQrIJvyj`N*(KzpiaB*G(T)eGXrSPtTi?>yOfQw7)RD8dHi?>xNNwOBZw#p3@ z)wfZgNB7WH;ejo-lGO;j$syV*YJzlaRR>tcwrXvHtF%=Yfk)NeI1ce9(5kkIOsX4) zP+LWX(X_2#- znk5UZA))E*<9dqT?sGH}ISwQi%MvG07$Y4>jIyy08NO1Ar<36;c{AVDpIUzKtEBi~ zu<@Y#PBtd2T8}1_rcBi8(_Q#kh`>`gQ>1$Q(?Bmpx(@$OFxN}?r_pSR)JNohiZm0h zEsRGC8C#j_0=Q@vlem$P437Q@4B9=7O8xVoNA%EQsQ2r(zJ(x(mct9Js+NOpeo^fd zEe94Euzt+zw%nLRYuQpnB~ag?SYbJ%O*9TPb*TcI-Zuuj37-#%R!bwm^?*ALXNe0- zD3NeoIX$&cOC4^-Lmh2)XOreCZ{U;uBU>!L8pPzqHYeT4|Epj zNuaYqSAw1ZdI9JhP`aHv7nIud6G6K{=Yj48^@1Lb@O+@-K=VKgK=VOqIjR6O4(bP8 z2|6E?MlK6MX~AF-=pCSoLGJ}E2HgUB5-89EkOYe0EN2uSHl8&`$W-*haPL$`)3U-`$Dvid&3VGHG_h#w(dLUO7^XS2Ah5 za&+hW$r!JAsDdlw6|)fppG55X0EweWLg&_CvtF#zF{rOl8^VS@^4CR13$zy}*AA)EQY z;xxrYD^K?^+^ukNoIISE503uUEp3HJmEbW@cMpvNp7h1DongG9$3_*E5HmUcxig?F zgeV#l`%wk8Cz$}Z^*De~FL#~|i8pwnwkLv812#`|_dZZ+C-Xp01@(i{aAN@|bqWE{=Rg;MQe+l`z6V+i+8^PR zf{p+^3G@e`WuVhQgP;|l6`)H&PXTQKT?Tq5=np|DpF^P3fNaId8xV4(NmJm*d8Cc= zmMgp}g=evfsJYjJ*-+wM4@MaBDumf>9Sl^~dDbEd1S=Jjr^}RUS zDw@YsqAfab)++9FV=vkks*zr5IEIM!$gA9T@ls5M$AZ#m`FPMxpp!wV zd7c9LH0X5DcR^=>1`wYd&<4<1pp<{JL8*D%f|ECos^~ulowxVWkEkypAOz&oYQa)w<$;d=7{=BiL5+9#N?pIeP|R; zt%s^S(Yj$eSd}a%+vFR9G_0n)7>83krB8Hwx$u(@ifN@*AYnhiP< zl+tsA7`IXl<8~!in)EdOId8jgrAchITX2!~ae{OAPz?xl^})XsnD#Uc<}fH-=eeD( zx9-deu=gY$rN{(UJdfevz$%ruTkD;q^G?@#yENV!#h6YHtU^LrNfM zIhBVphjg&+vB)z$884V8LmuZGM6yzrOjc4)>S;E_g$qbn1|?}gRLMBVs|F?PNSf%2 z3>*|tgCvb6TBzfoA_B2)xX4o=;u=6)XfE}pCbyvZn zzdLY%lA9UW+MPtBx3<8v9ju%N&VBkKL}1&|_`4YPPm%rs*8@0Hq+z(G3ZEj4g&FA~ zfD~yKT%1=9*F%iALg8Hu7de<1Kb1jE6wfQx|Fu=;kMmBcL`2%3E>l z5L4aW6fb2Gq}dHGs`(|Z`bbnfHd2Xe9@^?~v^9iv7HrCfAx%cca>b_}hwP&cc@RSV z8A8WF-HJyMU|O)Jn4%!GB zM{FaY*MOb|N@-mIN~vfDeIB$0bT?=l=vSbpgMJ4Z15HJI+d=1ot^}P2x(c)v^i0q= z=vkmELC*ob74$sNUx2OyrLucID4B{{4BmN?D@{s696672f%DcWyo(gxeG2a(g|}1T z(c(0hO^jvaRvG%IX2^=2m*Lzz$4M4bR$f1Eiu4;+p^ zei$AR6)y^*iDHe@NExW1vf13=J~fQ$INO4Tp6@2yIGiOeQjsv3n>@rpajC+I^1zld zK%^}380gJ#a}$v(P1=Zm&ZB?MOKihKlWy5OhrtX=>FEGiZvx5*8r2<%Gufu};AIVZ zcSAM-&?bj$f>ijuo-hF=_zSSyDiI2|3a2``g(A7sF7xD)D~;`rz|nH!Ddd7tdkNqa5ZuLz3rVC9wPOt^3j) zSKuKwNfvMUI?rLBHoZ=A_-`V)k0{9{7tdkNyA0Qyr@x_!h8?Xt^>_W(r>f@aH$p<+ zXt}|odF~jTBW%)K+8zzl!@uIS5}?fv^J%(ycSnP`kx(K!L3T4f(Vpk3)VtxX!kL1T zh7WX%MVCkM9tTQ8sAE7W4Ia@I(j7%!Gsu<3EX8?`MMQZWseB$Fc5;C~ZyMe+X( zb5W{kVnDMpudW$h1K#mC>v4`vccO`8kj zUMAfLl}Gxwr85@sN?Ti-*yMo{FQDb(1}WJ^hN^CmZUI|+gOrLw7P!@{p2Xrbbzwz; zYDz9n`JnVx;Z&D|2CQ_E4Ne1{3AzH5?9mEJrR4^kyd;n-O-ez(!Fj2|#a{_#jm9Hj zNlGK}b6n^bNvY7$KxYunae9+$zDk=gIG|<+Y7143RQS;*(i1f3DYj4JB>j>^86qFg!ja6fhPw#)A>+AlS9c_pZ5+QN3yXv9 z4{-_ZB8g8K&o$g74Ijs0_i)1gw=-YLe(oZPy^O~sL>THK^SmO#T_o{0E`i%n{Y4lj zfFmC-z`Dv1{r3GO0^Be?`3mnzaR zQYG<{BEelG;Z8`1SmmoEURETyizI%)B~*ESxk};{MS{CX;y8l@RcZNn6%KA)?jnh) z1_|l}}-J+0>x8UGma2H9? z9oA&&h)L8|WH4YG{>kTQoV=}|6%YCNBjZwy;Vwef@KC9(c%S3wO&Ixj8x9^ScacP6 zLgGe_yBZw%pp_9W!CfTLl8`u$<35t%pzq@365K@+@r1-v9O_oZ>Q9OUcag;Egv9$? zf^HbeM>iZi4DKR{wF!wEafyR&^~lG2aBvCkB8dx_1lg}x8aB*->hYg#+%dG^mYbeS z8vM|=bYIB9cS@QfHT?70;W%!@#qeFX8tIGA)9ya|wzDVy{`%8DZoPc(v)4Z7IqcN; zf4yc}edMLixkrwDqIE^T8C$Y`{M2XlgBA|Cde`cu9XC7^Kc&z1HL<^q>X-V`<;~e& z+`9Rc)9;;l%}qaV+%e$uoX_%Kef~V@Cp*uXcy+^$l0hR5cUP`{B68U+Z!G(&WZmN* zrfvhlSH@|#**_YRz^v&AM&pm$m)LS2K2n}ewVnF+QTTcAYT{LRVvL_D)#QbZ;?AZx%tm8|LPfc<`r#&KE9)4^@F=tK0Nq? z=#tN7ryl+D;o%omTwD|tVv%pWz_Y#c-r~7FP8ma zR_03o2QR(Su;IQ7lT!bOL`NC!8=e3-8^rlaKcis`Z zui5Xp^ODE!{q5gBiawn)_0))e%(!Rox$VV!CS90*VprEgQwxq+{_2`Dq$z)oVP&dd zOk~q18yEj{!gr5;_sTy8?|d=->awSwy#9gj?$4_k`Stma|DybYD~9~&_79@clBK`d zF!7wLU$`zf^w#|aKY4Neu5YGfkN+f4n|sx7zWyR-h+NE1p zUgLZD!Qd}%y6nvx*L@T{OTI2ln%KgUeEfrkfxrIq zH|~OtC-;2!mq$`gAKbNIy0kK@D!Jyb5AG;DaMz9*PfvXHqh}vHVZt$?Wu@b<|J|wU z9$uG|zW=q@kuUlV-&Xiy?hU)2KKx_%XQ9vPFen> zZyI0wL;X*_`TIL3jV!s|dnuY6c6e*?!J^5Lx`$8i>42e70Is-k_fpl1NX$m6P^`{|~GK3xMDhVH$}dIlKu z9L6y6*eU6q1)mx9P(~%Y0xCU+8T1Th7OqkLhVI15@fl*!GmK$!@ei2P^q1GS z8TDYA3q5=BFY6g*&_g9T*)33B&k+Vav?iDAq7X?>)_oZ!c9K78;yF#F$|46 zWj$jJdX8Zj8t;>yOS{kMHtO*(j9Skz20h~$29<&7nfFyZXw>rqgP!pQJ!rO&b~#-q zt;lIN>d7?dnPAW}kzr^gPOZa~ORMhZF;lmPlNg3R{7x+z9TN?Djs-W_MWbzMJ@5SP z9%LX{O0DNOhPfGR+0Mrr^w3gIvWv#~6rasEbT%6GOlBCmA1LcN-k@g+!?;Dd-g@d! z4;l4j8T3ps=%E}>cG0Q^rTvA!{CvMr&s2ultBOyyLC-XXp>aR;9KKnXV3LRnjeV$8 zB)jN??qowcrWy3i05{o1GY+!PGao;2l2K0%!>H{u!=Q&sPO^(aq+`+OB_{1yE_{+* zNU&n(nFc+x7>4G4)JtuCIJLzXpV}uE0*3f3Fz6{{7&rdu81~3TTa4ugT|UB6_osyhJ&PD-4gSf7*FIZa zWYhx|^w3jbvYi(h^eko=8oki*hoY}x27Ns(hEKBVL;TBn7Bf90A#)ZebK(q zF<9YD7o5WsPJ`fND4ZV)&M^vSo8XLBIDZwK2@2;Jk%eOwPPyPLP&j7@&Jcxjli(C8 zoZkx0EQOQQho@qq!kHvE$19vN!8umpbO_EAg|ks`W+)RIRAwri zC2}{Ta2hlmPf;;-TkN3vg%8da6=%z(mwHCVQ7{ywmP4auEr;4?ErIRgwFs{2|D&55*}3pl zyKw&O#<|mYn@PUsh|1iRwFq*K+n3NpWy+2&`d_t-}6)qeMqY0}V++>#=R#JEVVm`+w^kN~!Fq*Ka zold07{Z(@;A+=6OF^ndx3Qbr~HNQER&j%^2$AlEaXu?{e32S>Gb4fz#D1SOY$FQgbo6INUkR^2J7mnNhR z8w5`r45JCF9b9d?`1%;33xpKIXu?{_q~vr_SP7}KgcQSQ!a73}7L^UY21{YxFQgbo z6IO>Nthc_M@O458`#iIQVKiZ_Vp8e&r?JgZEAE-Z*Chyk|hv8SZ6XRIlqouJ+O(dp%MJYLW*HDVV%XKWE&29WYoC{DQsHB4u;W$ zbvBcd!`k!p)uZ|P7{R{~QVgRBi{{RWbUpRZH6;ltyw1oDhS7v|4wI6@8hGy?J;y5L z@FXF{Fq*K|GATJ-eU8ogO+xA%A;mD7u+G(lwPTJi$k*$@mhKW#45JC_JSHWFbxv$o zOG4^xA;mD7usStiQGW3?Gzx1#2K`GC!)U@<2X4ZK!>;(t`w1yDSL|RIO<3nMDcOdU zUwqw<;HL>GhS7v|0h5x`_2i42?np>&5>gC9YNXc%hulf>sv`|mr3-N;yO@(Mm1A;k z7sB$^{a*R2FGlfl-y(LX;p~erJh&G2e zBV-ABVI5XL1o$hC7I+_PaTfVQ%-qykQROwXQVHD(j_R2soFf#9uOl36jQBjViHV`UA;*-J|~##;KIoQjzR=U^yh7Mv3?li-|;^h|v5_s2>rhYg+mq zJ&IhaBQ0HCsG>Wu?AVCK+%dpCIgwu{fq13#JoO{qRXq05Dt~d;6!BbFrs3aLHKH8ebtYqE$YVW8{CK zucp1hqvXd+@azPxJeQ*=9o}?feo)q)DKH$V#80Dd2RyF^u4WcTDf(28=aWx23~@0q zr=6g~#lszOPjd_BVv8L(t`HcRXO<3nDE?F6j-G3;&jauI0%NCd4?Ir;Zpn%E`o_R} zjllGz?`OcRpJ%UcKfLb+=58;?Ddkybzn75Se*p8_JdU%na~5!40W-cphtt`4DJt+{ zU~XQ(aYI1N>`dDT)dcWh-6D>o__6Y$i{I@ir#~pd>%_$z*H^~r!kvZqrIny=mU0{} zO~ZW~9*cpQNKb;`Q1t1-y%M-EFyDw0uGmEv?qkp~7M1glR6%jj4OX-ClD@<6Y{w>g zQUiyTJ~S=T^T2#1a8~Kq2iyT*zFtb&to6}LCu30f^H1hDtN7goTstshmvNkxUDhE# zP6g(@Q*}6!_+QO&s&+_I&+mf12{mY=>o`uai!MJT;JyXs+j<>N7cNEX z7~FSXOZVP!SlJJ6pGp@4b7LdNDdFn$^#Se$U|x)HoRvO$3Fb{;#?rlU99H`1)!{;5 zE^OjBD}8nFxEz?TnmNu&AKh*}3a#7~qNTIaHyR$-1M^6$y*{#EH!ySCIL=DnP01kr-vd)Y_ndK9<;Obsoh>j7h(ELTfchC%2ljPc#ZgxJ&V=`=z`P-FR`DAMkN1K3 zjP5w&u+rBFzu{1NEh)xfr|%|U?xDNNIIQ%QL&597Oj^TnsHUdry$HAyfqC{EjMeQ&~h12ADqI1a1yR>7kcm>1V^oRvOwsnXZL90Am$x`;Yf3R z1<+UWBRpbpsl7h>7RIjx#!er#&%eD)lCrO`*LN~-Cku?7zO}&J_hW2dah1J3Qgw>J z*y*GGXb*7He`2qX?6+KC?DTn|?{~lry4GIbba>|ojGewW;CUKwc|XvT9>KkbJ18iCp9A*UQ#i>516?>OW@4fae9d)49un*5;(JY&tP~z zFEAWw9={La`37*0|6Hd}^(Z#^q~rV$m@fqm(ZKjQ%d39)ns5Vgeg{n2M!MqjYlhS5 zONC$NMnWVGD}7lT@m(35bWrXRf>W#V;sGv8VD0j^*rC29z|}a=$My_X zMbRpL7eUvR4)on8FtSQ3eUAb6tOI=?I@GrZxP1=v4Zlf_nSFj74csJwwabryLw%*d zEq9=AwL^X90rw*Z`tEY5?*ZVpIMDa5Lwz3u_k{y}={GyekCDK61U4BWtX!G&M|lqQ zEd*|f1ATFa`pyFGA_w|zb*S%`z&++b-y06~bpyA@fxfg`oaM*iz#T2HcKI>Kp}qp( zN*(BHaj0)4aOXMDx6z@#+ktz)fxcH9>U#^gj~(bsxz$;I3>3v@9-9hwKi2p znNe^RfO{R+@wb9mCYkl0ESvJvK(iX?QqpKq=4eoqw=@h}k zcGBUJCnFSESsSX3$D@&&_BcMTFciGTa8p}2s^;Rg(TwVN6V}l^8L@aB#hKEu0P~4s zrG6O~W1ixY7MA3NO7a%^^Mj#ce=t<$3;IL(CB?zAlA@5m*q2x2m!=AEk}Y_#uQHV9 zD=t`CSP%?gM_e92imgmRd46dq=vyFV33xwS_!3`HVL@nqk#9jczQxfm<45`w6qcAK zV1~eI5}?PH2N8K+QAx2sw4|h{VzD1D_3|JzY0!(!FDc9ShboE-gCSpjzQ4RYh$z1T2dS;FPR?<<@-wU>VLnC4ivOxskHTsaI_*8jxMh5h&1CX7)QbDJa{EZ z`6XqcCH}JVLP#$5Eu^cd*t)h~Mx03oOQEW$D9@L_C{$WjSW;FPJULWY%zR8ZGeqVqS-|jkA%wET4f(v1k|Mva zn8kstRKYcndfF+vbV*5J0RzY38IDFztjo65q~JwTb!F0}>a3U%Y4?qYi+Hl$9?SZBnDS3#x=O;kV5vPLm2?Uw#oDlIM6 zD5j;_%0D|>rDeG_idCozD}UKEM+jo$esr6>E* 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

bVk>}p z9`z0%N%g#WIArv^T!`#Fk2WfbAd_7zOFq(VzlggW2gl(biFB#IXx+q|`OY7XU5^Ei0AE>8$c<_yyOY}Dv-7?}* zKbV4_mS`z@*uj3r<6L+sD1_!dIJFK2>sb(8G+fMgE{Nqjpm7QkJDaOOhZ?VF%7P3F zFza0WKkMD`N=l0ha+Zi^@TfJt6Frtg{lbMqE(}&|&ESP#*j^+dwHymmmlfLPon)IU z$^)t5g29Sca$F@?Vagzu4=hNk=|DOVa^fJ0V_mLqi_l1LJ)a^)R8Y4Z~>y63^3Pnh}qtbP;#ikdk^@ zmnInb(}SX(Xda3rYt`O|kZz)zAsJz8K9@m;YZdY0mbc9& zl0RJ=mtRO~l;Q}sKU2!GvT{n~OQ$LS#&6#8tMTUH zm`;>GYCg(isuDhpg&XnDfQErS3mOi(6Ep&J59naf=Rm3Xp9jqc-3wX-S_?|eITN)b zo0Cw8^(f0~6!IQRd~20xIkZoI2$tR zm(&zmSrp#^I$HdbU8*+v1p|A9(D8k zl~BDhj>P2=pRVzn?S#eK?pQ9=`ElfUq6yqIJ% zjXKP)xP%sNab+`%=HhU2B;F+8$L}fQ9NJtO(ZvoeXhw)8KMg2PpcEi^&&7P8d?8y8 z952qvl``>3d356+8^9Kwj3{+P^HRP$fzsNw3n-1olR;;KhJnrj?FL!^ z+8vZ0-8~hQ>LDDI%G?W-y2%vOnH;@@LaZxUc8x;v&3RIfJV?D7)}!;YlzHB}-00ZG zuQci|A(lhbsGe17iD*E*HoXGJ%;nG!$f)?#<6rgNY~mM-|IsA;7e*@OhnmQ~^qG&U zr93VGrHM2bG#oS!l-8p8pp^f`pwt8@+ysQ=OZB9T8cND^)i$x#`43+MxG!%GLot-Y z_0Qi)k-Qt+w%YO3Kb`Qe67@eC=t_a&fUXcI3COt?qU&_?C(7x3L?utb|C_#BN4zWg zpDc!`aVW2j;br@(l3GJ2%8%JPH=@=lkDEZLb#4L;2fZ1TT4ysT<^K*)YMoS+Uk(sL zvUQ}4T1Uzn-70K!9CW3vAb-~x)Wk3zzr;Rb0BA4%!!dBxpa-GeIef{Xwa+XK-Z`k}r{xvTf>Uh!qeP zV1;FZMbf7-!q>ne5Ot?fFwh%9X17>Isw!Q}77~%gd(xs~fYp(@9TJ`Lbeg~x5|IU7 zgoU^PHVdi=o#^ETGFK9j1^s*kET|kR26ZK!Cb5M?Wbv&h#ww{-tkprUV+)DM;=djX zRaf~oi;Zj{5m_9Q7AFN*C*3AhY0;q5^=u&#S^Op~Z0#{stAkdtg+yc#(2VO!<%-s) zI^Dn)5|KqqY0*fG8`(l4vS=eM+6Gu{RSbK3Y+?(E$fBdPppq*Knh12di7g}|i>@Av zRZ@@UDV=U+3yH|0r?jAQC=0sc)#(6>k82S~JL&c!|EuA*A zg+ydA$YYTy_3Rc~*g_(*7$GfA3A9eh>{8Tup0qkDiTJ#Ytt29=v!xY{5fuk7F6Fe9 zEhHj~I8U5ao;WlY=yW?l5m_Wj3#zkNX+iUnPIt0}L}W4D zW6@jc(afdOU2Gu{S2xn!NJJKR$t+n=u6)Fxud`)2Bq9sEc2>v8l%9)p z0MPr{LL#!b&@0A`Hj4+?LL#!b*b^gGs`jy2JjfOjk;QtCMW$4Zu~}?m3yH{LgRtn@ zr6~T3mUJ=!ez7A!4?vc z#e+@8c#JJ1B8%z zgHBJfg+yerS6WbAWlBAlRtJ5GEhHj~eIAQdQkB;HIz7!65|PDQ(t>LDHmUcqRtKe< z3*|VHh%DZh7F1W6QuP6w#j|W75m|gHEo?K$2x#fFlPx47i?5_bhXAXCim^khgYIGr ziOAxhw4hw|ma6aBEOxVnL}YPTT2QW(g}oem*g_(*_}OC-E1lDpjZV+8g+yfWN0SzG z%ciVdiO3=_P>d*Q^V_87FQKK=3v3|~S)3#-sN~9GoXvvn7M3w2B8zs?f=aH+VV|F0 zWDAMNqO-JU9bmQYE%P!^67ji;EhHj~Zqgz+zzS9|WS^I2YuG{}vgjo(Xhf-U?2*di z^J2D;h%8R`SY%37+Bwu|En7%L76YUO)vn6bDy3jgQ_^^-i0`%WNSL zS&a0GvBGBY3R_4-7GpgzR5|`@v)IQL5|KrMCx)^>206XT77~%gBxymtL|J69zWlmZ z_L9qmEm=$z7HxYz(bjtOq%nf$b0V6lDXq^3QBVGO6STueo6)m9T+um(A@mI%z^>otq-xnpt>V|Iom)k18%ZcV5!Z-?a$+>h{yN|5)+IYcFr=J#yr+ zFL^%tk|FN|^=^3O zx^;86-;uGh&)A2qE1I!7_S1qN=f2qQ!R!~m`nr1k?ccxo{v&Iz+%@>YR^8gSkIK8| z&j%~d?seyc$+H&h9CJ?oLs!4hZ@`O1Gq>M0bIA9d);>~se$T#BZw(l6sJ432JJaUe z{8>=h)c0P#yZQ4)7rwXem20mb`sf|k-_U<;%7a7iEbO$;TDJM)CyFk4YGBm$tE%59 zYQ7?3+_vehR=o8>_g*j0A3gioPrn%Y=+^N;Tkd>#PvR#%X3lzY)8`X+Wm^3@1TIUA z_+si-OVONT>N^Epb_UklM@}6|9;gq zM_(!0blu*^i>}`l)NSo+r+(i2&M%sUc8lBnd&+62?fD}maLmu$D|cM~LHqe*PwoEx zx##q1z4!fh?oIDJIWn!`XuI#4zcls!FQSScYIXO{S!D};88xxzm)~sJ5_INcuBTF7 z{^+A=zvMhJt@7C!6DG`^+xE!GS(om9CgIpgeb3x-$^D&LJbuz8U&ephHEiU7*}ZoD z@X#Imdw+R*|3e?HKfL&+$d(&c)*N~2#i;L_r`&YcqPq?q=aoYi9qQxWI_cbpZn@&Ow|B3q`M%$G_s30t^1Me{xW8?2)_rdcb^j8b zf9Ko{J>Q7C=fd8r+JF31kF=M!9eeAumrhPS^ScMe?%VzIjk{(?eSY_jqYDa8o^ani zs~U!!(z*Ypwl78xYE_@J$Nlu2y!R)Z`c`e5w-Wc=d+g|S4d1pYx&Nh|MN5juUA!PD zWcIPOU1I+jcx8FixXI;r9m%`6=Y1Vto_@GK`RIMqx9@*FbywbLXI(y}#pfHl9^12R z(#yBpJATRbyXWLx&~?hu@7}oe_LEoqRQl1X>wkLjyv)~vFZ$@U7Ev|lJh|b+p#!G< zmh=5POFJB{{`vV=YrBnlyL7|d*(phro=BQ8Fy-UpwJ#=S9r)z=7@Q!gB}=jUqau=PwyPMvg7Ps zKb`;EloeApEc|t8aLWEi`ev*d_0ghJH&5R^@vBkS&KSBO?z_uRj=b^QOH+Q>_jYW< zh3?a@|IO<7?$#D9_dImr7xP}px~6w*pMBQ_ESvu1x^`D@KBG&Q9yfMOi~4y}?&9Aw z2WP+d^@AH1_q(dY%INS%qvO{6bYsWoE`PN?wDX{#t)Zs{Kl;Vc=UZ%^IrC`W3!fXG z)BEmuaX0Sl{MhpE7CoOay6WTj^m{kIV!d~`<0-d2hxbLkz2%Pk4rP{a?Q;1&D*{LU z7QOD{Q9mE=G$m(a?@gPgRx;b(m>`trIK2QSHbc>RI6zGE}mcZpcPc+4*^j9S$YRl4qy-X~AWs2F!+ zudXRqCr)kHuz1^3Kb&=`j(_`SFReK}sOr@R&$y)hnDy&-e0yfcJ^%f@_f*Z_)AMl8 zuRs1{`NQ|mn;G-OuV3{1YULG6CvBXm`IZk3`ZM~R*?(M{QC{~!V2>WV?|A&k^3nIM z8#`fCW>WD52Y1}_Y5v{6ygIzw;1@1h7*Rw;OLHH6H0$Y0AG!3v zheIamco)1LPiFEEEc1BBybW(2dkS}DtN6v?5kEh3;J1%^G;j54 zivww&&zV>eJfP_L_jbQ{Mdj$nm;5@s{qJv=obp=Cz%y39nLQ^Y*0k698xsbcb-|+V z&(i)h|6ctgM^{9?HE`(X7cM^e)t~3-{B=0(>R}nrUETMow75^+=-=)1u`BvcjY$pK zwmqx1eev433awus+^y}}%#Mru1+04g$RAs-j?E1F`QoSUO;I@+&jJdwJUG2cU&UajM#bYy`&b{+39e=>q=kNGA?u#GRO&Ay2{kn@z zd1UFTFU}co+1Dc{oISSf`#n?7jCic~BM)TnGmqc8tWC$O8cxc8D|Kkw-MvHh>iir! zP*AbsxAQI=f8*+>kF9LE>d5X3mMu8eVW)0??N7Jo`r`B>FWvF#!k%xqE_|+P-*dNK z)3-xOMrx97-?#saOpgwV-lFR>{PWdgf4!;ss_WnV@SJ1ao27ns)toO!mfyCm=J7WR zrrmwZX)`{5s$FsBuOD4=*W`7d@7q06+w1zfU{|m2pAH;)w#k3>!uGRH?~^`f%1w*1 zUTb;l*e4%6WoC~H!dtJJyR6&8x%1++zHYx~Q#U<3t$Sh5TSNNyyzt1vuz?@<-jT6p z#|IB}4(ofccv_~e-*@i_ov`oPv!ZqTEIh0AYX{G6_lmC1onPI5;bkwcj@IMxp?4-Cw7?d)phcKhC;W*XO>Xnn@dfS@D3bucy}r{hT@Y_PeLI z`ZS`tj7Tq?=q<>IIf7t8j7Az`X3omNXAIew^0huK76`r30g)aOGYhB?GgI zbFxa8ij6p0O9cjC`DLVm;%VLpaY@%q=zN6hb3&dpusEBZZxx9=1P0JeA(TG4X|%c+ zj7S+jbm;J5;u2TrSW+@Fiq?HL$;d$?+uJ2WMh+T2ILwfY7~Y*F150ztOCuH+Kp=L% z0|TlFB8?t&{95d}0@+JJ7r=o5xJVG%q=$#-Nyp}gzJm-5pfxmEcYVUuN0!;{r=`$| zu=#1>jkwPEImzCjBN_#L0L&ZQLW<%hnu4h%R?9L4U$_B*G0`@yqE z(81*r`w8*#Lpv>j0ea6lVO7?%-hSE$okRH4`DyLtr>)Rgg-gPhs8Tv0czoO( z7h==}Xg|MRkbIT5pHqdOn{0l%d-z{PYw$n{9r2c=-tzI&<+!>DUKD z&+*PrFB}OBcmzyKHeAC zP6M(@voNJ7FF$Bz~SznvcS_A`Wa=&V3#u$P~qkOl_eBq3%&Yr|(abHk~l zAJYDNU_f`3XE1m$z#OM^nhgxl-}}9ma@8B&^*lo8*yqFHUVfs54tb+o3_bs&ao+hE zDRlPZQ}>@}FF&J%&P05YpUWpNxX0TM%_`3G*C;PPqlJzOpXBF)@8}x}LiTY=r4AJD z6x8_{?d6B=c?=Ao9zxb#@43Ik+s{~`W1lz1c=>S&9bK-?Z#;`$V&*4C=-AgAE-yc^ zLWj-;)RNN|Zt_vjaYBc_4bbB~*2_=4(Ak4e(pi7n`Gwy3Nf0{pjlb^C@m_uq9`!@t z6|@FQPF|Jl?T1zo7^f}yCzY*nUVhv{hss5x{JX==5ZtVv2|}j=V%=VDFF#bnfdQxC zldNBU@@$+EO+S-_&g=NpekOYPNfbKt-78sl`TSjUZPU+Wq4PGxdYmSD`I#bg`s0&Q z-OfZ5luBsthe_ZA1Mb78&d(GtKd4sd#Nd;1F=xn;$Gr11Rp`)ssPmKT+M+x$%P@{=lbXm+L4;eq>Z^DY;bp74VcHkT{a%g+ptWR3? z->9H$+shBFGy((Yo6abpCs#(j=baxcL7>wgg`#bnNq3rk9^=p+jd(N~?y??da_%2S)+}a#3)dpKLEb^M%d>+?Uu$=uA(VxjXo#M)23m!ATmL*Hmp*|)DxKxLSIF!iJC zRS@g(Rp8~PNa%clPx7F({VWkW_WCLE@>48y=#yr_Ue8_$$As+dg;Ol@6K*S4 zv6r7xp+mJqrHMJ^5Ka!JpE55$rCxrP3Y{gA_g=-f(9 zkX(TQPk8%Tjw6BMt;)K+%Dw!YCv^0BY<>Ca$VmfG-q z>W$v*b%D^SYD4QnnO1oDSt)c}_@sL7GrbfQM#$b?7lL|x}H~g`B@`$L=OS_&rjo1z4LRi z(CLIg+RqvE-8Ap)(bqk+WcJV<>xY?GhX?zwyZtf+t1}f$6h~|dHK0Q z=-iLb=J;RO?2(Dyey$Wc;mD6}_ba^oTqSgd;FHR=yzK>>z5QUSML#@*PhCG(dHK0o z=+J6`^7Hwe=O8fa`5K{P_j9$EpKFDVuID?RK760IpX-E9q^+K>_42b(=rrAbt`|B- z@u|zTQTTy?CE-@Ms2K}Xrrs=}>n@qJj#~>@hiXJ7t&^(-tV8plOr*0oXK@yOHPIkeI2hW;kEvA!+NTdTvKA!opNeI$-(1}`H{+^#x@}OoxrOvZnk~h30 zUwTRY@RHc?SCF3j1xTfGl#6CC`K%Yw^H@@Z9N+*aV7b{77mfWf& z$t>BcBy(9(uOus25<&|yq`@qSRFY9FnX4qDS#qV4xLC4VNupVT7s!b;h9wqkNJ&;fB1^GeN#?O+yOLzG8&Nhr3THAN@s+Y&}ls;z3 zxy(y)t(Ro2mxNXqPS3PXa7rq@By{c;I$Vl1TEb=Tpe0-ix0Vcw0-}_Nf8i%uu=vQ= z6800TCA0(*iO$%UEZ@yOsvux2-lJLV4>Y_5wx>hT+L>CL+!YCbX9a;uC^D|IO zxNqcY30uwA5{^F6OR`W)2I;{=y$`WONe2y~HP8&!(e=y{ZG><7R1P^78qvsee=T91 z7FwdKP`n>Ul$0frLT6yP=MI4?NbvnTJ}KRoG4k?oUiXe_Eu})o!mXNoU%?GHfNuxr z6aVYJUf0ZHb*{1!I+i^aE{}~^@;f_-t&5bE&~e0~eN|B(A65L-)?mC$j-+9Ir|0MuTa&b+au$EsRc2^~kQ z+k};l^>gOOhvgm-#Mb-DO6WLZZ538J)^{7rzV}!)qmGOubR4m6ht$࿻OP3|L+ z_8H1b=s05CA*^()qub*z@mS4JRzk-S>rO|k{Nx*l$!lSXb&;|XI*wR(Ibxl2#68Gk zb)&KpI*wS?j#xCleO~*i`Tf~KhP2DK9V@*4SC&7+M|_~&~e1NUs&n(qH=kx<|r$n ze@<*~X!SqU9StQtowszbSd2(k6BvJyIuSdTkm9ldqimmaHEl$FqN#CpOJ zi~2?fK39IFtb~pu){|bbJXWnjaS%!9IAT2osXRN-@!F+tzv|{#QOZi_IAT4`Ry5CV zJEhn89;+qFO6WLZJtM62JWumRBFB12SqU9SEZPV1oWGvCFcHY@;TON9Y|(bJMoX+Yg=#ZA_=cIjvXE|%wv_Itb~pu)^1^?%k^aYyQar-tWC;F z=s05Sam1oJ^jN*2tb~pu)^mG~ z4N+D?#}VrlVWsP^a>(>=yUctkjf?R(kUR8~UA5$jz?Eb8;^IaZ%8IEW;49I@Vm)KiDsbADOou}V-@LdOxS zPFUINFqvb`S5`vD5$kU(7+bR4lh5?0hrDOOe5*zPO1TwP9v2ubKTVtov$CsyCxC!gi9 zaw#jJijXpVJe7!D!{9Y?G$AobMYce`)y=dqfv ztb~pu)|bLc*CCb5#j!RkE1~0v^_3$QmCIxGp|TP>j#ytiV*R!@__=6~)wwGUA_*Nw ztZyLol70OEJIAVS4j8!xv++%f*vJyIuSO*-j zt`3{|@;Hw5ma-B$j#vjBvA%w1$u5u8@KbOQN$5CY9fH&|&(n3~N{&^ftb~pu)_20H zHGSfr`i95qHDx7q9I?K4#G-45p&YAuHylI~I*wTXh1AnteUIM#p~os(SqU9StRIAx zZm*Lgu6nV8V=YuxLdOy7up`#KtgxFsRyQdtq2q{k#1V_GQ%>Vp`;?W?am4!35$l;_ zd!O}K9amOD#}VtOBNnY~3OH6&cN|0#I*wS!AobMY>r*f6=dsFERzk-S>nCBQ>u~KS zN5>81Sl1{kq2q}4vm;jcr#H0sSiPjIgpMOtgCo|5lRv#Imt$F{;vkaHam4xsQct;> zUs%`LV>Lio2^~kQUxk$}S9Qax2j_FFS;|W2IAZN?hA^_8*`I*wR>dc|7EvD)>(K_sE$h;MG*2^~kQ){a(Jtap@^&~e0S=ZJOJsvdaHZF5Ve zcD)oO9Y?J8j#%`)Lw~k%D=VSnh!rZV^!RG^eeZma)pg2B=s03^aKxf=wcuEvDJ!Al zh(-6^c;<~y*Br-h(&=)Y(p#2G=s03^a>SxNqBGcPnz9l)j#%{Uo+sA65kJiKSglu9 zLdOxSiz61TZ6Z0=9%UtT9I;Mz#9DE7T&l`&^IJEM+BhaBm@hX=a@wtmyiS($01dca(@e&sSDLM~F8n2{Fy|J&LKsbrXIB zB$m^_tlUKiFL z1A`%#CPHtBM@`yIcOFllp%vs|X45A@ke;5mxF~&mPAR>{U;M_cl;CZyBuOsJE5Li- zm6~{isCeJMR1&|^;m#61_qq8v(X zMn--fS~>^srYN&Oyiue}OUl}jREv#wD9DUy6?>NC3wPwt zl89G*+XV?;Z}YbwwZAmpF1Nj7*DiMcK!^Q^^Ig^UBaZhZ+Yi`(Ou{aguaC7$ZaayQx0TajAaKtgk1qHB=4X3i0 z20XuF<0~7YMsbdGN6{>ed=qia7Lq||5s4&mQ5!_R7Elz8h< zUleN$ePT_`Eh|`5!d~>LRTa}U$i)pDS5{n{Q=mt&4?7fedisRPG2;``Q{B_2OiGWB zNsSpkRGw2Q>$*p&s{Jc2#9~a8UuQfnH>23Ed>c`{?R32%|BjBYve~!+S51ld;Xkg# zSu{h(#*6MGmO`RK#bxB@XJ%wAq6Ma$Z=i#ixEl!6Qo2}-2P}t6a%XB8GM%FD4L$_kcY-4oH&)kB2%&c10Cj~m|? z8Xg~w9M=x~TcB%qerh|NH@U2LdTv_P>DG@c0jG0+42%$sUP2h28`tx4*!U%fm(M0t zm0SCQUR{RXMG;*QuvNe|<8wa-ajM}Sc#BZZHK9Rof ze0%K|G@ftYs_fR!eF#rY`?qi5sTft?ym)PF=JZz3d31I~)-$&=bQb+p*X~cW3!?p= zP)|EN;jW4Hcw$BEvdL{0?XGDh?TQ8yokz^;PimJFoPPd}sXeUi9Kx-r!!~~Ap{Re+ z(jL@v4mm+g$C-zM{zXfBP{)bH5x223590Z6WDjLOsW>CqrZOr{(~8=qZK36>hx~($ zEZt524@S_15CcnWp2*!4t{1%*{40jDNd|I?i9T(!u=Mlhh&n(sekd4t#=rOowxS^mPEzZF*-@ zyY@pi9pSGV>X3T+ zQDsrEj+?ECnj~X;`#IV7` zqisUKK~Yh|hYt@AA2xL8h+*Q;ypZg*E37YvtVsX(cDy{T06LGJKran?&p@Y3WYhkt5GY*fNKM~y=`P)xep*9PU-_eQyaT=Y zXGopK%2ABNMbPDIsLxJ5YJ z7dqD|y&&+u%0YThLubGM>8~-pI8@kl=u{1qdUOk-FMsPGe+fD%|B-r))id4Pdk%Cm zq71!k@k?V_Qi>S8ENc;T)=yOuG>FSecHt#}^owNKT92MyS)ZdhNnMs}r`ezPs$L9#Ymo1)dH4yue5pnC?91OW z$djP+g3^PTtY^cY8*x8?PVWNgFGTw@^irX>7CIjkHmyfDxsE|+n6gCbwb1@-KkPwA za`AsDbdD&!#`2d4e=RVWrj?MDe2uCouaQ4`*kA{A9w-%R;^lpf>Aee`SIe5#dmR(m zPtbW`xzuZ{UJfCDXPk$5XhqZh=*G-3(3yRK)Z=k*pmU(&#CjbrLjA64T5lfW4u;OvtEFCB5MT97dOg-y*2;^U)@y)X$XeX$S}FCo zo{j!O^TB-R{8#BU)n5XkoOG%57YyPne^h_BLTBrGsmJ5UXb-x%`DN&QdYPeT&5Ul9)}B|vqR}&82Fqw!r||2=p4Py6W3S%X!vyBi1P>jDN#N9%AX7V zo`%jJ*9$ez_%-rJ(^=mtymlA=lp5;?x$t)fblTh~^?1D5UV=nN+T(u$bY>|%n4vwQ zT=v%xkRG*D7IX@g9@UG`GyGA#UaoWiMQY67bEn0mXNfu{?`|JgOqMl?VIGMznRd>^26Une)?Mnz3cq&_lTeVo`l|BKm2{= zr@!x@_lqC?PQKZ{_UH+{GnH;r?J>bme^a4%jvxNc_tW2M=w0cDzx)04w;g)B{P6dw zpZ>mq-j9Cx3%$j^_UH<|zDl>L_K5S--z4bG^uu47pZ+d@-a0@0-Q}mh2ch?*AO7C= z)8A*%`_2!4t#0+NJvu_Kr_$y2Fs}3He10}`CM!L8K6mNsyeu7w^kzb5fggHHpmUKQ zdh4OH$q&6dptIc%y=S5Gnjd=aL+4vR^nQd+;AU9^P1Q>q=$z_@-s#X8;fG!fbf)^D zHwQY4{Lm|d&c%M{T?w6Az4bE77DS|4DiOF_>1dhQ=dwLiNAmsXaDNzj^qU^odZQ)n zVf;Ua|FKp;D2N}wh+a~hHMcNxq5M_!ypoKP#RI`wqpZ=P0rTi(JsquX)?-U7rjzrs ziVI5$=a+^@PU{z*R8*R`IPW|>sumuH9~s4WL&a7HDa?W9^n@ufv55(IRjgEQ)}-=e-02@1GbMiJg!ojqH9*+}HE9!{5|^Bw z8Z#ch@FPRCY*KwjOyY$2^l^zX<5TeV)0UxEm?fByisqV-gds7-br4FVBfhlcuDnB#lc= zkBdpRy23>{I$5BVT(~T!czQ`rF}@4RTU@pnFJ5RFx(bJyS#e3z(q|-0OPK)6$uSd& z8*KH(;Zk9lnhaNoiLo(plhTu?O-PzHA$3;zgejsPt<$YGp<}W2D^r}je=?ap%go1ci$Q#vhYehwaB$jT{6EtLMPw$@VAkSG2Bjc;WIhtk&9^a)c^ zt?po`L!|ra52%XZ&^}NtF2Msr>7`aAc$yoUni=F6YzIwhYz&(5>B*_naFs1xO=n4K zNQ%(d$#L!&d3<^Y%W_YcLc=XC!J>Tjf{U3+)8f%1gTI0U>-n5*e{0#J{xWZz0cJY+5#W}@!S@AjZ^9nEVx|axf#hLE(u8<%lsbG)adAN* z8jPYX0Y6jJF>y4!l0|XJ6BXBus+pdcDoUf941sh;MT3coBF7X~WHSz`o&hELQL;lc zYE)cO@~i}$E@lbWOAt6Qd1eaw0(B0mH|l|+b5Jbu4t~gBu2$9Q>|IGT8fl}NEm>z& zjE+<&I;JX!ilKc|H!1=zY5?>o{*$rxq2*8efQ<0`qi_6>clYbdzq#zA3E97)ZwvXJ zZ4(D2T`}sV@s~V$%Z@WA&c$|1uYh|*iv<1)(zX%+_UY~G;HSy`MPUAern}_hktryz>M3^ zekKiHBit+GZ=V0wi^q>$d35>uo+m$Y*&LMX7a{~BcD1Dcl(>aKQeM>|Bk~qeKr%9U8sjHv=E9LH8;7qa6xg#;&8eR zr6fGEJbHM)xij$yQQ@+Z@JV^4C36Qw&CM&w$}h{#0UQ`La8UG+;e!W8%`ICz7mpg1 z;e<9Y_g`>SQ2I~ZWEGdr%_?19lp`ILl$On(KX+-#-0?XDCAoQ}bLFYAWWZ1=#9Ug@ zWy_UZR#DMEDnJRIWXs8(yPzyDJ3D9ozfz1s{LFlDY5FpJQH@38KXj?`2VWWVnCUcON8Dr*84@tLag6dF937nBB9qDXt0QTl9Gj3t&}Xp3I)m$ zdYysjyYE(3S0xLvx+z(R)eDHe;%H^{Wxak%7Gj;rdV_${h2Air{=(l#B@406QnC;$ z1}IbLC9vKEB@3}8vEEdmxk7I`5WZhQ4rVD?h&4yaLaYp+Swb&|_41S~#9G99OMp^@ zUKtR5_tVN+u4EzB`AQaIT?8~k=v~Zu>y#|STF-hLfF=vQ>ws`Vgufeo1GQyy%UQFA0?zM~=~BY(Ea8;wJ$)Mk`}cq;6*qVlNFS3z8l ze+vOdTcx>BNk#r6DTkop@#H5F-G*wL49S2DD?o*zX58y1guB-T*fUR!i7M-;GwNRN z3U}{?p~wn4We|$n!*(=sz4ddQ&0*xa0AvJ;0Z=sE97m!Ok-o@XV6A)oF8Au^%JKJ%5pE-X+18%izsMngewt2+%f1?R%K9#)MdGyZufE2bz+3eeSBBq`r1Tf4*qZ`5q%X-qmL(Jz&{tcXFB52 z8Ox8XDdSWTyIEySSR&k9YW-Wg0^!=RHe3S_e6b5-K~%tbSqnD62)sedqI9>j|MsAR%B0fEuVcI z8sX@hdwd>Tedz!0K%iw>qXR*VE7$7s_EuRK71Xsl+A3@7zPve%L=Or-*xJsK4rV1x zXw-|-Xq+Td?MKSS2OB8|Vf3CTc%ajJkTnK~PT-B^0@gG<#Ff5hba)20X9z~aRntRI zx^mGyL$;CT%hyPMeYO7=ebGHi|2SWIM94{iCe79Rqj6&BVXM5$J0p-7L{Y~((-d&9 zds9b6=cb0D6=;w(fe|f9Xtfz+(H)Nxov5GxpU4-jv}L{|qI}V+TINflM)HN}JTW4d z`szHlr&^L_wNPh{a#U!pTJVI^8X|mkL+8@A3iWMwaW%qH7fWup!xgr=A-mn0HBL!R z=~C@YOhdWrg8~pD!ktAQlo3q80WHKBT21FvT;vRNua^UEB*ss1TL;%cL{n#aIz=Ds zYLKkrF>5Kf(#ZM5v&e7;$ zAi6kfZasxh7yg69k9@=k)JUcOwMox8l{;1lls7s5qO>me>Rrv`x&L9&%c4AULj|%! zSBZ^IGts(XoC}g<3YX@!AaP{Lw@x#ygO*N>XhetFJdL_kU&ZkTkR5a>ADzko=n4uQJhMXQS!hi$jrUy%>bR{PVHBJ-czrIP(8XfqW55f zRMiFr2o-CCzefX*n$ZW+-=RTB&FKT_?@-GBKT5r+);uY|;F}qIpuy83z@D1ZmbNXm zF!+`RA8ha^89ct3b|n3aQ(8#3Gul%dBY$lTf9-|@I11d}&<{2E4hG-R;5!+7XM^uz z@FyF5n89~7_)`qNo56QC_)`tOhr#zW_;7>oW$?WXzK_AHp~Fo;Q=~neW@ms;H~2`y zUq6FC!{E;}`2Gezz~BcO{C^By{}!3f)*z$53^w>720zr`hZ+2E?O4$f#_{MOxKgww zT6fvgsQ6}%{z_MF_CyO4RpKb7S41TV` zpJVXn8hpCJ&olT8gU>YhEQ8NB_#A_uZ}1BYKG)#$41S@(FEaRigI{d$1qNSe@I}V? zV2QyO8+?humm2=c41TG>FEhq}xiKD>8~W!N$ImzT6^8x=2EWqaFEsdy>FpgJFEaR5 z2EW?i*BJc82EW$eFERK^gI{Oxmm2(fgTKt+FE{ur4E{=kzsjhO4F-R;!CzzW*BbnF z2EWnZuQ&KAgTKMxZ#4K#27i;m-)!)=82qgUzuD-ITMYg-gWqb{-)@YDJB;IZ8vI=b zUv2om+u-jp_}!qoebL}wGWeGb z{uP7YXYj8Y{A&jPx{;qZ4E{}nf6L(CHu!f8{#}EA&*19}{(Xc0z~DbL_>TUl{zC2LF}8e{JyJ7<|3Ke{1ju4E~_OA2Rsw4E}qA|F6OSVDN_x z{)oZt;3JIqeU144=l27g z1sY()ALu+R?o6?ZqKxtkGWfv;Kg8gN8s#5m#P`|{um=Z@HvEk=_)!LbmcfrU;-78A zKjD6Wk)IfYk2Ux>gO4}(1cM)E@Z$~MZSeG6i#^eOt@bp@&HyJG{A7d2t)GrWUn<*E zvavpxYVgwxKE>cu4Su@8&oKCz2A^i|vkZQ=!Ot=HxdwlZ!JljJ=>|W~UKzj{2A^s0 zSw{cMHjd{Q{CtC_@6GHf*XXZ#;{qI8%nObFy~tQ!<{RZ%Z14pJUuf_}_RIh;G5BJG zFEMz!|J$C*>0WSGx+-r{sDu3(BQWj@gFkyhYkJ_gMZZEw;TKpgMZB6Ylc}B_WFO^;GZz~ zCk_57gMZrKpE3An4SuIFo_87i?jiQvS=Jt-{+@Flww^b5ul)dHeyNRj8hGso3=wZS zVI}MbI5se`AK>8k^>*^FvZVyr4{+%J!#{Pza`UxWX_?hN>_(LatD z$LVlw4}<@!`vG)QW-#&?V1+S?WE9QF z4Mf+n0piIpX+ifLNmS0Ll2H|-Y9MJ_!?IeI)v>IeQ3IpkW;#X~qew>4jNFXU809i5 zXH?0kicvMA8b-B@>KN5CYG4$Mn>bbdF^Xgq&BzU;>W@(_BYG-C9<2nD{;C*NGpb=! z%czb~J);Ij!B}0Z{4t7T6wS!ZD2-7rkjxeC@K;_c8CCJoYL?Zotd>z7qk2XSjDnkM z&tZ%r8AUU4GfHEW%cz`DC8H`v)r@Kw)iSDMRL`h^Q7|^NRQ)lEWE9QF%_xmgE~9cr zm5izwRWqt#RLiK2Q9YvuM#0!%Q~6^Q$taqUn^790Tt?-LDj8KVs%BKfsFqP3qk2XS zjDnFll|M$2jG`I28Kp7GWrSxEbpHc7Rm?+GEUN}m^9!R|K3d19o>2p%;FGlHFh-G# zq8Ygvr7_B7RL-c9Q5BVN}bgj!`|M21dcSAz9^*Q6!^iMs7xFjB**3Gpb}%#i*K54Wn8{b&Tp6H82Xs z4P+{Rj3OCDGjcOZW0cFNoKYpCDj?bGs##XUsFqP3qk2XSjDp*6{uo6vie}_yl*TBR zQ8}YZMpcZe8PzbVWmLzgo>2p%U~H(X`ePKyD4LO*Q5vIMM&*nu8C5Z=W>mwdmQfv} zdPWV5g0aD`^2aEWQ8XhrqcldjjLI2RGOA)!&8UV^Eu%U{^^6)A1>@>N<&RM$qi9BM zMrn+48Q~EH<)xBQ6{BiKHH>N*)iJ7P)Bq&=ZWz{&GJlbbq8Ygvr7_B7R1PG)R5GgK zqt%RR7}YYWV^q(m0Z94_?qFG`$XO3a<&RM`BR8WoM!Ag2fmHq&Rq@ekMm3CT8PzeW zXVd_s^4C$LFd&sbM$wGijM5n8GAai`N5N*)iJ7P)Bq&?1$WZ^ z!hlr%7)3L3GfHEW%cvYkisE$!RqXrrlK;g3g0re563P@U1Gpb=!%czb~ zJ);Ij!C~4<7!aDB+Luu@BR8WoM!Ag28C5c>VpPqjhEXk}I!5)38W;t4)wv1-Qtitq z8VE%}p4}`MQ6!^iMs7xFjB**3Gpb}%#i*K54Wn8{b&Tp6H82XsC5&ocMv;u78Mzsy0Y!^G znF};bpmIK1$*77^HKQ6vwT$W*)iY`UlKmhUw-KoPF^Xgq&B)Ct4M^JNGAd_O$$C|c zsu|TVs%2EisGd;+qhQ?Dpz_Bkl2J4xH={I0xs1vgRWhn#RL!UcNR1C5Ih)n-(RxM= zjDo{Ce?Yhxq4|$x(LkpOnH#8|Kxsg-M7fO0f%=Q1l|cUys0v8xRWqt#RLiK2Q9Yvu zM!~)0yFIYYrV>3gM@jSEuaXdt$cFC~3iMc7_+A%wapdD$z?3QRC>JnRmyD^pv>aDG zz<4=8q*dCAd_=m}1w|ZeBi!LxuV`W=v%WQ6=im+}YY)7 zSL*b-i*;`CEN!^$%>e2sJ#8&wOVj7V_E6Rj<9`eOM_c1*3BqYV5SCKbhxpI&9PzwI z3@;7imkr{bVjbG!#NsQ(hGK0K8XAscXTV`nKxuAXiPZ(7NQnMKH6;ZU6=kMo6fejr zMaK#aje?xs`v!S_LOI@AgjXacQ5KHiza0NM?FVqF@&^e&g53k05EAeO~ zp%ANvWlt#-V#WJ@4@opViysaxdTqo!ddAPKAE3vB`jF+W3yN4hIwGL76F!@j_P}RQ zX(T>_O9vesL(SM;Ki402aD?KY6;El09mG3A=y;Z5MNh?Jo{Bw*Vv81nRvN`lRr$vU;Rqh(rd-Kq_5s5bq)vy!xu8MljX?p(97wa$cp^ciONa!wTT_L?eY+VSA~WrF zphs5XjSMRyf-6=?dg01;bj;;>`u|{wRDKM~^YLzgi=b^)96!FIm4L@D#P3qrZLsZZ z9ULockVAT#fUvNv3T<)xxHAe2EIGhXA!3k-CoAzN=}wm$Pu#kT#Xxkqn^!=SJY#4* z7tP~?-eoh!7$3BEPxZM6)OJ6HXH1M56_dTNtfW+RY#Jfa(D#wl2yx+%ZG?2dNTAM5 zZvn(e$c!&3#hVU8Lz8W?l;SKgxY8gi!+%mhR%TKWUPT)kI?pDOS&%<X14;SW>Of~42*&}PT~%y~h9Pdzdk;~H zrBWP|on5R3HI3;o)S*sPucFuxv{v#zG4?3vanN3%!Og4+I{Sx!&LBO|Y|u8K^FiBz zmV&kiT?*O(bTw#4(2GI4fYRta8T4AvZlE`V_5|Gl8V*WhzBgzf@(=;q4zw?5Ptemq z2ZBa|MuDCIdN$~pp!9yE{-Bwl13|Mvqd*Hm2Z3G;IvDg?(4n9kK}UdY1$BWw13Cee z`qe~GnsYYdU(Pv%Laclold>X(LK=Go3qSEJo|P6)A>&N}s~e*JrFT3~Gtlq|vf_ZK z@Im;Kr{0ztvr;NT6H|RG1Dyd{4oY>iTs8gmz_RHHg;+cBDPO_$ zoI)Yi+d$L?t*knQLaYWLX-lmjZRsr*QbzBfkTTs?Eg&)5it<5uTa5q0rrK&m^#8oA zIy%~A>Ehy?jBM2{+vT1MlG#>hIzDCyd!G2$YDN|bl9!*`F?P$iqG>N*W{G-R_tvq5KrQW@uf zQk~<C$($x5i{ojv2pYx)9^c58rWfhb*KJ4b9P?U5>0HnS^ol7SwKlKIb z>(suKR-mn^PA&o+54sAJ>Swj;169Csz9b~aoqPo%jXOdi)>}Z-4y~;B6bi9^0g|@V z64I7tNhzZRij?VbcOSIOaTfzw82+h`7B}8r!-xNm$DOZp5#`ma+qJ50F9Gd?Qq_Wf#@Y+4wJMqJBpFKTtoESF?UDQ}uH>XatU50ZL`L zQq>RDnXDf|vVNqD>PO0S{b0$77t}c~x#`zgseWdFE@-@dVwclTMbOk;4rL!nP2CkZ zWK7+a5P41AS3#(!X+3pU*<>_zhpCm7yvQgJSs0gBo|7#uC+0!BFIM?U0R=)x7ZZbq zi;D>AKgtL{5N*3wNaX`r`r4oN1Y9;(`56mh@dj$)C($FvyZ>z$Bk`UC99zsfG{@Sr zYjw5)xl-w^m(ln~qEp%+(8C?50GZp=&AUIt2)cLiu7=#`-JKsSJvf?fkkb%T6X+yshCoQk_auLpe$vk3nHm@hRxdpg(}#0{R>17SL9x#oIt}sb}2|O0{|i=m1c}s7M062NY`t z>wZwI&#VVPi$Na-#hA4o1*KQ7ZwGxB6nUyR0QxxSAD~Zz24f83Qmo=M(4C-zKzD)0 zgW}Sxg2pKFF6uoPbtcC>A-v!gd6hEMj6fmQD=d4RWxulQPnO|QQQ6|+P}%A^qcgO| z8gmBfQp_2sb88WIZ`=uxmI=kLTz^r83MG$L;on)sH)r%XrGyWe{vX9VSfmYC(!dj8$dC(=w|~esQu6%M1Sf8AF@9Y!fUm0Ovw}q5o@BuIQl&PV~jqr0WvD* zW%$n(l?h<~2?$%CNG`^YU6lWidxftH0c4QoJQx0TqH<6h+OGxnqK>F+*d`KdlNUj= z!M_Ab<$W2H=0f_qLDnIm5Nj99sK%s>+D_{2XPF*r)Mv~szck1wb_)I%o}gZ*W&Djw zrTvR&IQOxC;eyyaNmJcu8J(o{I*)X9qCA^*_%`Z@%JB~9AkcR~X&qAsN@aT=l|=h*it7R}}K}!x~6pjea;8GKxd-^G;A-DLD%k=iqwbFJF=VOLZ2FJnBUGraV($ zpn9P6D(ZyF@*3!1P|V^Lr1OTVE4r;f))gVl_xO~u*A?>A)qRkd*AB6ek$-B3(#Gp* z+~B`nL;vWSUH2(_{ZL-b`ng)IjjvH_<7?I080T5hm+0D8)(;`MHkPvIz)P7Pdnc-& zvL@E(X230>ds`}Za>Zc#q4Yb(NTTT4A^>l~p+ZB0nFwbY{(pwy$b zmNIHh(U7+7O_%t+64H29ei>z&r@` zx6^+!`%>Z=fiokJFO$sQS zKOaBABQBF^A{a=PNS+NuT0d3`nf#!-qZ;Xe|C^Nj1++cY=Nq6SLEi#R0(}Q`0cag4 z)h?pd&$# zfl^!k1WJ97))KN062ec};ByggfjIM17#~TE02dC~Mu5Lxu~R<`hpA(vP#+u)A*I_o$dl7WlC||oaZxi* ziHT6Ts8gPV|5W@_Iv0ybD(gJZZlD>Ubjr^Hr3nmEjJVjD59$J+4@v`aF(}nf0Vs8* zYw#~S6CrugBW2I4qxelF)}vaNdWTr{1Iu*VQ0F(ln4mJyAfnjkH{Lcga?1b4a`j(Y z(7TW~ophbs7X-0^aw3=rIvR?TK<9xbf>OCAgHoLi!@sOkLLt_3EUQ(>v#|G7S3wv+ zR9AFU*?CRYm0Y_1r4IZLzwp+J`()%zC(1AN&zAU)SHjMy3o65@pj1~qK<9z>1f{y_ z1-cjXY)~ra7*MJ^DvPW;LbC3pjOtFxJYT+5+J3T0e)qQ5)taUsdU3rQzeyDS|MB)E za8Xt5|92cz1Ql@4EJww}QUg&$OC4l!Py`a($^rybN|s=7Nvlz_G_bu(HtVdkv@75os6;oR#oUoCxFp=1t)sCQ!FR|Dhv zk^iY-4DJF~1ljv^24^_nyhbY=j-oC<5wqDA=8#pyg)7HVe%$*jI@sm{nH95f9AQbo zu8ZQ*jKt&+v=p%#K*H9+c%(=@IZN?I5se!=w+ zuAu>|GpB&o0arI%mJbM7XN+bMaZv_bp`7Yi!{KM?SlMAx!d6!7ZM%RNIJ9(GXy!5& zNQZF6<1!uN%QD2myAi91<4}f7!#RLV$9O>IHOp1zH8E*;ByG3yjWBR9T%0;F2?wc# z#p0B)u-JuX#~R4JnnVyn8V<2>Fucy_O*=O);0kFQ$1 zz=6}=!Z4DmXfUk!hQbnubVOUiqMp<0pKCmz=5olk7{^t`AwqJbRj9F5z|O`MX1uI1 zvzmMWN@_qg`C9N|Kn!?kXmgTRR8i)gmpZew_@cadHQv(lW30i@en1qYWGP-@ym31aAD-8CkIEG8$Ra6Uw~W~{u_{y z`3GvL}c#^z$=qhZ^ zWH6eJab|%tpe#kilRqERF$s`^^~r$U0rB+ScLv~8KvtIX0hvDqfJ}2CAPe}cw65K0%R>giuxB|z>><1!z-c&x@3AGPT z_*+9t;vT{2S-6YJce1wEI#{Twz^=y?W}J^-*0(UR5%5-lnFUQF9k`8Q9%%h>72$e> z#UY)1S%42C1LtfEIfP4%LGBETSp%;ehePah-VR(n0OZ01*9~@qv>u`GB?8cLD=TLS zR;F9AvQyzmnVDm5Do(f7D6t(CcqZwIA*Hm&xSi0)MGSUw)r@)S=&5m%qWva z+hARKV($0B1;={f0+fAG@iY~<*=?|X7veG<)69gl!j-Rxwb5Ae0X_$?6X0Ax8iY## z8OnUX!GM23!iB_u|PX9UgB-eI(7 zuEFgUzw+k}04X6cO6(LgAu&yIaYk;sJAp_EiBW=M6Q|+8WHfA);V^a_%w0@ZYn0FmjC7$vx*Y!AaKu~AD%j1p)1B^KcpE)^8hZ2}_0kQgPn zb;TZrwbgFc5)z}tS$+vsf?Q29-J?Kc7!spIij+VmcUBUd+L~?)5Gf%sN}x9dZEjBs z8>sZ*hXKRBp@QJpFShO`FGuZx3MSnPd1bj`>;?rOZ{u}UxNWVl;IZGgQ*wh+t z?eytWXV**}U0P8yv&=hH4ghNU4;m0ZAYtmPvS|Y*Ck>ifQtGX&t*#kRRWi*u^h?A; zm#)8bzw&--@%eQ$(c z*gEF9^AEIsVb!#O-a7~1ziHD)Jzu#sY|+A{ADx}?#*bqk%HMM9pl8PZaL@fWKeYa- zPDwNNf0kEVwq$zG5kGnR_WJLwt7C^PnE&m>ldo8N@s1@A9eKa*@l4+%*IxX``)B^r zYs31QD|?<**ZYHe#ytDKC2Lk6&H7^RjP+w5Ecs;2;_PPEeA2$vFP(>Vj?A0iD>bgD z*)tc%?0>EEwIBaH<<+)($Nm26!o^2tPTI8X(3Dqi{QHkq`Q38PZ1(!-`5V72dT+?v zwNFO9di93k?f1M`+AiVDfvacT|6uD*EndCOTV2@so=$mtTodw!-t$D)ug47C^VPCj zPT%#wt4w1{N~96 zUtD-$+%VVBD{F{67DiQF(W5deu2QzR)@C*T?p(95HFvvKw9H z%Q7=!y8UNi*CYAg_&T4tX@_~A)&AWFdj9Xsz2^P%FJH6t>}?nSY2Lp%tZ3x8&wB29 z2_}}YE=KZ+Qrw@Pr zuAVDQ`8gX#ly&HL^(gcHz7}Vl_w?e*SC9Ap)Mv)Lv8nT?b4-5oJ}LUIcWb)7ky1LR zuxs3d<7!NQGr!FET)#2@o5A0;e&FC4$z$ffe0{&uCRV+F$K}%^&RYM)&2MLa8Gfi` z-K(e1`*L&C(zEt$zxMX;h7^=&7{cJhS@bSCX!se(~DQtDnwUTbVR-*NSPMIKHX9=E=0W9&2B|_N;T>o3_CDZgomM*|mcwPtyvQ@CjsLlXWE$Ybn_jWy6}+Pcr-LIuVrP!% zj%ke9Q_zmlISm(dS*7UXbZ`tr-j%Bh|Ld3H`WanVkW_O}osMz%rPS!n&oA{$%>{+7 zd5}~KP@N8r0x6ZTC>ot1F}lYkFj@pjwSVouL8^50Yvnq(bLLp^|D9Bo!f~IL2c+eRzI#r9Z4yN-82qimPl+M+$z)viFu7 zFbYu2+|nsrq!CzNtwDD>M&Xw%pB?_eQp*1*sn$VKs5lm>K|e1a?+hi+(^c@y!7tNt&a3-W z&Rg}Mk|8V);=|TR*H!AVSW!MEaXRuXJP|=Wv=~kYA6e2`(X|SS4_6AE4j2>>pRcpu zzBxF5x(l8xOIW7{h2;`Fhw*EsJu--=M-WfzAfBFrhjqtHyEBNVm*DvU@iD_{8N?GS zc)D5A9u~yYTkwQi^t1@#IZg1erI=wg58~+~c&uq}6T}l2#M3s2r?22CL|C*|bWuS( zr-SNrSb3s@c+L0$c`9@-7o!zDYO{4==R`wJeHJ6juFzo4)NfGRDC znLq7Z#t@15^bP-gTfjJs?+fse$DuV z2Zfa=c)nIV_dj2NPBJj8L4t=po|*QYqA1^36$2cOg>)~ieP;@HV zo0J5TL`%}b7%;b_$Xf&yj$?oHgZOpe`sks3x5&1G8>38>yWlaftf8gOhOg7X)UlkN zy1M(LeyOXJl;E+2HC#xUHe>faf6kWe3uI%Rk`g?&uto?eGpyepOS{T1wOvUG9$Q!= zZDHLs@}4+3ZeduTC@H~X3(GB}%&>}jzq!~i)tprc&W+1y3oC^bY=V$((&mwqWnaMi z0ZK~n*uokGUwu&eb%W`W<0x`3R8oS+7FL#!GV5W@{+(C)rFJSQ!D9=H^K^Sya_q;j!qjj_ z@Yur2wuN;7O7Pgink=NubhUk|tty!eV*J`3}SSSV;*UTUh7X!m4?G z$TxnePV6?}1dlDO^FZ~di($!m6S>b(Qi8`876y@)y0P+wtrz*FRwyaKV+-s2ps?gz zhGFqL`*ecG7S;uz`t3Z!@=JxW^M?~Wwy+97wWmwYiO4-tNeLcXScO8$EH8%TmzuAn z1dlB&4h8IC$+;EC#^Xv#@YuqdCZu#&*X2IwmpY`R1dlDO;-IkP9F1Z1kK(WV7!Z0` z%Xp&%R7)NrEWcElk`g?&uu6rLGU!I@O`pWdxgNtv zEvy-~uvib}T#sR$%;6QB;IV}@6I6e?I0o=bO;J*U#}-zZkTTOn8ztwA4C6*6C3tLM zU1$p{yZP{*eyMkrl;E+2b&)Ns_KtSFzf?Mhu5f~f zb6Bo)v08||SN^f+nWKh+vl%_$%ooGTfg>!7R0Sz|1nU`i=m)>lb`_T3u}M|hq!$XANZvvDk;HZle*X@We@8%B_()lQq?x853hOaKmM@x zDJj8Yld7>vjo+0y&M(E?%XEUrCglaypRTGY8OUZcH)bg*!DExEwMqSV(R;7@r5;vN zg2yH`+a~qp?g2afQU{fk;IT=~u}M8VY4}FJ)W8n#gcCeAskxx~)Ain#(HQcZ>GCQm z!DEx+RNpVPs`dWWeyJywl;E*RU1F13Hfi&{ekrjW3xB}_h#giP1rR@YQX^L{^LaZT z7gjHYkM(Cj@yv^Ak_HLV0>QJ_Y4s<5F0_u+A475bH@dssndvDhx#=nCx#^=Oq~_#K zNzcw7KgFHkCN05zu0>3KFXIG-)kh9aP#T|x`+rNit?Y$5Y?T0FH~-RLt0j51`rN?yq^FE0h`32}%bAegY$hpeUS(j-ZH~$S5Qz zCMTpMC@M`I(ga1L$qIs^(B!dEP#l`B!Hh&xtfCoglVr?*Sce1p$EH;Ori$8wZK5GJ z6Ds4}RAGD2O&nL+gKny@J?JKOME0PYDr^n9iQ{5xz)cmk1>3Zts4dtgiduth;^^EO zY*R&T!8UDRYYVoCqPAe0Hb<}p+eA@YuuUu=Il>Wh?IzAp%%PK%wU6kVVzDxsC~8e@ zlP5dYY;L-6K+sLB9hR&{&`lH$2>N&i!2xMK9+8pqbO!gxgps0H<1>!SvJNy?U)+Nx zBo1_Aie@{|;oqwh2Ygu699LHp94np)^6$0C&*fY699I``%-EcumSUu6kSwi?_wH9+x&n%b| zjE!~LD<`}WXC@>ixhyUrDL!H7kii3!k}X7_3Gwkshq2V%66AY5)mb%e_r4e+vfwL`0iQ!+9nxx07Mq3BI5EN(!H}xsB*i1FHSobLjIS zuKA}E^EarZ+gePLmEfCQe4 zxq}F)fON#dzZrK3SzM@a--Z8a;QLeYA{v%(R!?|N1E0Tq{q>YZ z5kFDtGJiwWQ%0)>e9tM~hSCv-bi4zeBa@`IhUx)dr|2~qhh1>j1RU*4sC4W`IyQl4 zUXftKX4TN?V7Vm}OCIw#R66)2$qMjYS|Yg`O2=+^TnC;he3}l&C!wM8kKwlAvvZ3J z6|MvN#(;0^g_5x~K&bQ{2H#HbJcUQ2bbMm&57*x=dn5nO!}DezpXkCNn?mZ_4Zh9b zxr9$h;kx4T>+{zGrsJ~N0tDq0$*=F1%-q9km1fkKBt1`5fwxP`26Ae)4@Xk z+v6$cKt8jCYsl^$Ppa{>7E+0zkrx#Tf_L#5* z9XuB=k$kZL4TbyBm6FH&4HfP)@a%LI+6XSX7Pvx%`zh){)KYv5>uSL!zAe^JxX$I0 z$NUWyF8c*H_?}g~Y?qxnx8Rv}t<=_ua=QPu=kth_lE?fF74BGg&IjL%inpO~ z4V1@E;Q8q~sg3#K57%E`ViCX7ug7cDt0W)mRj72#1>a`yoPLw!Yi;VYY)Yn2IIg=C z5AW&R(eZBUwjk0de?RyhSG=tEf-i)=caKxwr{LRv9Qs20UsuK3Sp1TY zQ=c1rS;wL8!sFCe4Zh2cL*H%3sc#+lHXcJ?G_vh=@O-ZLP|X@FUv9wo?HKx8kZ*T0 z>=iCL+TDiAqXaxvim$QqxJK~^g^lRD5qx(YL!S%s+rhI}@ii8|cDLXQak%Iji{IIb zM{+it-Zb##9z&lCN-Dr}jpA!8e%ryb=NS6fe!o{d$BN$}@cnZPeT-kXTk&B(Ty%}a zuL3-mD89z>Z?)o)8XL~PHQ;;j82VgL@(OsqSA31duiI@nSQi&vWAV#SJd(5F_+^9d z+~d$U_c-u51z-5p^x?XUBz>(_$MkMdJTi6-*T1L1xBEEseS4hxegfa0$DywaCz%%4Q2x2V*H7^_lz&X`nB&wp z9()%ZhrR{JsqYH#tvrT47vlFYcwSe0jg_yl2IC@Jbd9C=^fiJ-|1^|;1Hm^!@oIh3 zYHG9~5Rdgn;lAkH?E?b%n9qUE7wrz><9IaC`J&^uTenKmpVR26Yl!)sSP!#om!!{r zM112KKaapLNW~HzgZc&6R$Oia+r8nA{nekE>f))D(=HTW{wc34shw3?GXVGalKj~* zjzS!tgs-)pY&?M}o(ad56<1f*R8IH0;>P!N*lCK}J@}=se?eNL&+`g3O$d2^g$+ zZ3zhE&C5sRQ?hch(+ei%WK9^Cj@NNz5VkY~ie==CPfahFke!)dkdm63o|jjUl9gqo zDA90hdX6oclUEP_`v zBQ zGCI8=-!mb5Y(ZK|ehT&^cY)t3_z5phR&K$#oU{p9>B?t6qO7FSa`Fm1=_zUH<1uj# z7tt&T6-&GW8y<5lH0DhiSCBs?Hyv3M9`hpz1uEHjsMyS$@#)B_G@-4GvCAmPn^&%P z4Q5tMuS6``L-->4Lft6T|IF-+9DIX0JO*!Rm{CigoSQQ~zaT9W8j+b(3>W;rMbrz% zrH{is+CW}rst_GNE`?!>WHS?Gj$~wJrJIR68M1#tR{AiPEQ;I0vlnu_x(0{H7VsOd z;W3F|&dVR4my(fQkeix)?xa)?DoS`viB3~iWl@RT3W)^8!Hdnju|_VN6N~K-Qz4_0 zov)&prwZpM_^HD2`-$x5!w9sR(FM8rZNtV>Yl3EP*jFj=Y<8xAlH$F}dQ{X{!7uwF1fn=5!%_yBYt16|cY+@V1NA$u{L!L6B?32?c=Zh+R zm?4Fz(yZ<;QkTqZo9*onzt=h3TH=$MHQuytH2195X5I4FYx>*=A(e&z8HO8VhtT1N$2`e^GJ>;88D*W% zG!-m-r6suZJAi>!$!v&OxvWZThgB3)@nWwcOpj@bMg2n^Cu5O}i|j@?N~^4>5tZ>` zo8C!O%uJe2evzHFo{wHEvk*nb;=Er=71#=aF>;|rjLON$N>9la74!-4suTzHQtU>* z^81_JqUvN5;M)O)TuIw~1FOflvYO%%+8Rxe4TPN&vo0{_SXub-@!W|y7;`X1A$tD{-Dd>?|I)%(PVeGI! z+$K4e#!VbK_{+ls_l;MGqpOBR=di<{-klUaH&4InHn&x0acB&q1 z84URuMpPDla5beZHTzd&QDFC>Y!`Ei)=^ks(XTNdSu;dduv-so#$sgfmdqoShoNGK zQKKjq4m%K-sLLE-(V(lk643F8!A{8WpJ)W3;-dNtHk+(m5d=qdqD#p{o#(KE`M~nd zlGTV^8wa>z9Lu_}AMr73o*M9}n$70Lv6qUib?{{>^842ADQzZmu_ptSeKVMT!^JO5;opdM z6uD;o_SV6&4R6l-ZuzH~B}XvE67-!L$0X!jGwhYoS8ciD@iWFum0#SCcJ!DwG5fr` z*KWM}@U5|DRkcOE{#fuYPa4{?toFNUV@JK0bKS75Td;J20HPhQT-stri?yr2pK|lY zEAHR;`eZ!v74&7RK70DI{+s{U(|_W+;m=Mk#nP;xzdiq*myiB_?Qiqyx_5qb`FV)> zpMoBi7kSypl=trG+jj2@Q@`u@6N;c2^*=G;vs*9PQ}XD4Cok*M;kxrq!IGGufAoCs z7DJCLZg%$ftzUk0Tk^Z&07UQ)?6&BJ*tqvLws5-+Ed6~abPsV-&x0qwv90a+`i$y6 z^?B{czjOx6+4DYiF`rI~4*ABh*j(shkT!oxVgzmeWy;sn>>|sYFuN>yfsr3;-{8X6wj(HDFw>U8z(0w4IB_Z zwYGdJ#;3KItPYs@f1s$s`)}10S9_-xb66u49pf9#T&*!zX^N|={#6QUW)@YKmQ0;d zTUJt1I{p779hLY_Y_+#w4o-T+g3!NIsp1D+m%?1)%)FAa%6}OvTi&6X{CkZmozseHO1(8D|CiAd zvBR5!71PW9kE${(4@Qrb|2L+GDgL*~EuUI4Z3b6mp-8N~a#_2Dkrh*bUVIb!5pK_j zG#*nJ4!8w&2l|Xi;~!x62w!fsA`Pc&0wXPgNA4MG1z%f5i!|CPT7=O-^K}KbPVnKR zN~N!-qD2_7nyz(c&@t<=EFy?|%Q#!yV{y$KcZ+-5 z!c>UGH=~Ett7q`IHO3ivMyip6FEFL!Z-9}8!>6)9FTgTE`rOiSMP=AS1*g9BVH~~t zg8@SmSB&vZeRp-okr0pgG5(-E1oOlqGBFY z>B{0ULO3S~C;C#PP8@v~XP)P4J{LFu_7o$7<1_6_fOW=Ifa`R>k9;3Cy@IP8Mc&fP z@~X;eZ%zKp+KP*?BGWE9Su3z1I3cJDKBwXak)z=p$HdCAlGMry?n%YuK%Pa}6TUf) zik#|_vWlWvcrGB16yjP3PKK(vB%>Dl=Sam+Ngo0=TTrPY4%81Y3IwmIndkdrd?wt7 z@RBEli6g?S5oKCExR@XP1T)Tm!7+qP|2=>#-+KX>7wZAZb002w(hso+an!SQ*JTEox;zwP6G|rF4`%yCkA?8+8 zBDEF;N@!Ai}7keit%i~i}7y2%MGuTt;`(eYgTOBexSzI z*7%t&o7`}bSza{0;UcfRrvek1;_U!T`vY0qlxWsPA9qa?ls)(TgcI8jN)RM_46^ zovg7l6xQ4rtg#W=w?tzXX{;KUtZVZ$X7)s{A*|$p(@Xin1^q7t>=D=#v2PY#y=PX{ zF*+c8QO%T&Et-aI3ppoy4K8KmIErSYb7?Ks0udTq4TlQTE73o-7SDAgwMvX2KyDAR zSJLo1y$BP|67V|BKtxw^HX;qjkX(R0apgEl=Ab8PfdU>HGXeyxukz&+niu*%;MaDQ0c^AQ5$bCOJt!ACN@SLrjj zrp)_k%Ac#4mfqG3hC#7BJ%H>*xmlZTs3A{nMRxeuK1Kp|089Zq6>t>b>452g%(7fS zZt#T_^0D{M2jqB)ixYDJk&V7ZfRh2)2G0fL{=4%4?*YW1z_$_be88swF93WI5Iwx_ zEx((3E;(mYXGtL-M1NVHsI5M z^8vX5{8GSQ0e$%Y2XG-^IPwK?_O$_oh4l3Tyb3T55Z2entcJbxWdOov`fy+}&wBJ- z0JsKlCg9zGvjNuuvb`X!Vzk0E%h3w42yry|XM#2hzr^Ipv~1mx;-pYw5tLV>^$iM( zFrEe`N9NlV7GZn@Ool;SGK~Le+TWVi3R)!}zxFQqn4glyQ`aPoHdfO5YuZpv8?I@Y znl?_;Xj!E!E4$QJrfKDxHc!(o)wE@rwnEcx*0kF-ZG)ygq-onU?HNsbS<_zAw0)Yk zU(-CxvT&5|;veREa1g8y*~QVk+q3v-abwiBNqpHH;gOE+-yQXYF?<~AwYS~29T1S- z7=c{|rGmjz>^_?Zhq^t^-JZG~)F`G8$qSRQ-GFk>S>-a6TyoSC?hY7+wA;4b>P^E! zwZfZflRYca95{_QEmluC>LWNV!6DrEHF;a$d}3GB;#Z)Ho;Z*j(~vAoNMxkUq2liS zV8G}nYRRpEoH&2Gwc+hxlLjr?sBKn1+eWQRb6^B*OEG3foE{-Y2o^t>CoMkgu5K%C z7S0Vz^Hv+)X7vNa{o=XdMy;4oi8#j9wOZy0*Evt|`d$Z4!kMkMtf`N(-y(!vb9eSe zGOocDW~AYlW;{$BTQ4ytQesDdwHLlllhRgZWolWsRq_sHC*o)*r4!qy~Tqj;H=61M-m?__Mu=y&LH48~Bg{ zbQN3a$!C=Q&XqavEG{^nMeYLZi3{^b8yhp4Z(hOiY;p7l`b60@e(jyp$v6

w?~ z$fILh=w7-P<>A(Xi@n?^d28II?k@?rzd7KZhJ()J-x6@o#dgzQ^qPlo=Tby^uw0oh zJ#ckU^d~SAWm#_p9xk$ZUQNa5&(0K+5g_%mLg5I1}(iK)##x5}*$dFP`~W z|6T!H1^6o9oq&4)?*)7lkU9Py;5UHp12Str0Oa`hW5A(+p8=i=_&Hz+;1__G1AYa_ zk?S{r%K^UyycKXi;N5@+0PhE^2YdwZ2f!x*e*}CM@E1VZ(?fu)-@gH}7QBEfH(>RG z>2855375qcHqsFK3>#LMfS>7Qv%EN>nTr`Ni>M!sUeqqISquy$#M|0QwmuNq+D@{q z?Zh%xvWCiZu4Y*{VPAr0B4&w_!W2q905a;|#z8$!id=XG4X`Jy$ zT7stW#864A(X=_5wpi1y(libkrM{aqjpZq6>ox6BO?yJqSn(y_OPcnMrhTAkKWN%P zO&jFI27QrUzM@Ag!dMFIOF>(%un6O3V0#7ac7;V4`+!MVZkv^|?g{9C(Qke4SvIcF zQ@sxpnEe!<(ZW)wX&mol`!ez9kSqqYj_OTfED4{?0vmkq)bJ(S|n$okcXe zqHx*I)i+DrzSA_^K1iM!P+?<1YlW*9u0ApNk#79#BKff>Q6EjJ9lBtqS+BxD4zj;I zMjJL(*~aRkl9FmME~kNU<1!t?XGKFgjX{d|5svv|oIVDmj!yu40DcC@czzDZintz^ ztcb)S3>ptfTdlANBMUt+1`GMf6*biHq-;Y^dU@6gF)YdF8YT`o-wz3{aKs}YE1*dwmC~I!r-(>()Mav zsM6ia(q&17EZEaR6kHH%eY9NUo*m9=ko%$-Ldp_leZ2u!7?#)#!(O6n&VvFG&~ z8WS}<_Q#KO{u0I4)&Bn%skHhmwL%pk0>+i4#294jTp zxeH?B4DWP8x8c1&wAH9*F^cz&Ck|VR#v1i_tEHm+T%M!bIS>b#ZCc)-EpupobhjR& zyVZ@GKH-Wjy#9I_T5S)hSqcbM;1SZ{h~FhfOP^psU7e|hK-RVU068Mw0C*MP1Aw%?4+65*Jq&mU z;3mKa05=0}1>6Go9N-gxF9B`?d;{<)Kw6z=0a+%`0kST$)yuj}EW+r5vXnF~+e%s^ z)mT(K)JM#_MLoux50z8a-)^dw`75lhqxEm9n%ENcZ4&F7tY`fepB-x~=t@CoVr|nM zR=j7KqaHI;)!7N9K^5lYzzUXAT{eTy?5IZ1Usgkx>6jK)r)XTu74elm(xkl#*cG%r zfHW|#1G28a378J}7T|cmw*hGm-vyis_yJ%s;KzVihci9}ycqCvz-5460Ajt&_zI96 z*0+Gn%kKbLeXhqPs}HdVW3Q&M@=IDH)kjtuRjOFzh?{Lzh`_>q1nL3{mjiniE)yCR zShy3htpy)DDy0E9UMr&uSC2D-tqhBuCEN$aAVwc7ub|S^1?T~*=@?%YAncPKN!%JI z3-C5T7T_I#oOrGQ91M6jAk()FkQsghE}7xPB8**{wp(Eh_C3jbkd1+ac#@3;p8XII z55iCiF0?xFoI8ZKY<0P2t7GT07>~f1HH?FNpv9sN!=GGMc@J<@KvSF!S{GdGS$WW{ za&q)wE3JwW*=S_3G4;XD>>S+i3NAM0x^9=EFxlL4N!6W0K+iB4oxJ*Pn$`!JC2fSpCTMJ}#`p+T^4$hZ>U&sYrme!# zAFT0czePeg&w|zo@NvL6zfZu%o%Fe4wfGO~F8KxL##DN^NR$*PZh)2Y}HGt6J!^Sit4sbJI zUqH5hY|aqz{uXIS4H(m;f`*2mM{_{wLfeVh6Im4>61XZp*k(WctKwGsfmQKP_5_z8m6y3?)&;5egjBKG zbt|TMa!O#09n;2;nSM4Ax`)tQm|hG(M6=ll$h4#Sh7;k&?>|J?%;} zsF>a-*NdI5LOJM*w>PVMlQ;gv&tyvOqdM;ZQ%9j^Mc9t4y4_6KObqy86LiAJss{XL z;Q@tTx^sHs%jsf6wVnCESzUGX$#a7VE(ZMZfPAAl$5B>RQYGdCxgZ732do3`b;xYB8H3OD++gSX!-$M{AA(;t zk~Uc{@`#~4NBxE1T^}uYQ}9T(M$8(jKvcOROgb4|p!LLsnS`9gSR-&3Jbp$b;5dY0 zgHycb{D3i-39^oXn2wm!074GcxmZVMP6hJitseR>54h)0fX*D+ACR~DUi8@({|96o zMJX~o4q50}biC*LMAm!kFcFTWPXEuH2-kxu^aS)) ztk(kpSvwK|6UhVU1{?~=NzgFBa{cnP2z@G8I*!0Q3gJNVev(f~O*N(bBo zm;tyIa10WF7B@dTmX0-;N^ff0{Q^g0xksH3W!qmJp;G|a5o?(guYJ! zF)a1%1LUJf?CmjD0R91Z4IpjIN zfzy;^n~kzhQ%oCWnWk{$wFZ%6ZRIp2U{H1+yjamKUV%0$coxI@?80R_<^$_9vPe&2 z>X2_7p>ez_M_cRiLWShZR9K`jPSak|wAVF_6ICgTX{?ex zRnssPRkQ(`h8Cu1Xgf-lV<{PKwx*5OG}LXyH%-$jG_6|GF4MF{ns$w*U9V|(Xxd$x z_OPaH*0g6e?Ric6P}5j@Wt_L7!+cQW>C*~}FdUf9yeVkS6&7K%1NMfXby8S_aUU=# z`=G*X6QFT(vDXNfnEC+q=&8@yC;~C{IU5jDpR?7}NA92r7&}9?LyYa>Q?|x~UB1EO z*-z2>jvOLl2q^EzfKH4IjY1U5I^SHeC;XXwho(+v7lQxM~sAByu}9Gn&t<}IQ*i3Ic9g6 zOW|V24}RpBJ!;8Fle50{fkfa32H*!feHQLoiYV>ukDn`Xg>jd^c)I9+n8O`zfwQ+L z&{~6&_NG^Z;~Tjch6K#hY}=m`l5FLxdxoI$ zg+UK4-)vF7{xWbOO{NQF-v=S>{lIVwE@|J1$wjJX1g#3c#3IC^i{zudmwepkDQRp4 zl7@0oG?a*?4xPpaP5F*vEKI&_*f@k7j{AD`*(W2n@Cjn3R1`VRqZ*hC#z6 zY+Jv&^nTj5F?eCy;s9aWFz*-pC@otA7yd9g5;ar45$j3ZzDpX8`2j;FK zdSrDA3x`Q!7FH`5G7K!pm|KPmcr-U26WQ7r84@fb zC!N6QleI$Pe0q(nvZ+jlM(SagLcVt)^CZV^ROW7_l+l(W;_=3%V72$SR?;Ho;k)Jh7%rf~H zDjv}Y$HgrG<4fg>_Q|;CM=H?;nJ+SOlE~V~k3FFis>JK}c)ih_(%O15qaSup-U&WA z0=K4p*sy|vSp$a+OJx+GdRpZy(dXqNKuREXlE@hyV@9_e9=x9WW#|FyflE!=x$|5+R)Pf+kCPq-Oojg=fMWnR z15N|PqaojgfLj2)fKLKm2KW>p>k+J?=>1S9eLHZ!3-DFImjK@egiZE+2Z(0uI|TS9 zV0*+3D?PrhfbRpM=QHr=$u|=4BS5~6^$B1xAZC%`?ZVFiD{#LTa5>Q-U~RaUtId3wS?{&)p=m8%7LkkpAInuA<9@Tt9s> z>AA9J0XCUCC6c2SpP@7*`v=X8Fs)f#tD&Cos3mxgDZ;{F+6|@V)`-lovvx!+dDG&F zbZgHR^n4VaTX7lYRuxy&<7tlQZIbjdw62o-EFRB_2&Vu`(-aVE+;#zw0tC*n2sC3x z*abie5WtvFhu{nr04YG=XGGtOQdqD6NC5&Im6!s}g9She5LjUmXb~&`l1-qt(A3^C zm>DEHb0Qa&WwjKw%f;HYzY9x>)MXBHxtO)Xg+~Kj>W2vwe9TUN{YgIX!ryq=5Q7B$ zdM7re*lwX3FB^^k2aK5!W-MX|0>f)r3Tx#wu`U`jyE``0Apr}(JmIT7bhrQqgzE0p zyM&^*n+wKZ7rgR|xe`?n?*f^jF<=xIEFPD(A2=4AEf14XroGJi16b;v%eK+U3$e6WSVO_ zF1@+{>)SB_<~xh%hWzgj`ru7xE?}AqoaTK?dT%h_R2-33wA zT~Xj1Cb)2!F4P1u6Zyjl;u>7C`z98_j}#bh3))2rix7FZM$mr6FR=(C4Q-!Tq~TGR z?D{2*T|co1gI&L*v9pjgcKwpZu3ysF^-CJ9ilotSN*V_ulJ+L*0ESu!m-887SU5v@ zzbk00`@|wxFF8a4A8Mq)FyRCyWgk?SeZpC2d2!E;xu>3Ra&8dn#XZY}bMX(!99p=* zC@t}Rfr*tZ%&%OA_jEo|^r)E{Otogf^i{k=fX)EJiTbGe=eAu2VL2JZQq^K?Iz9yi z&cgAH82qjgSOI>exi$^*@1P6~FvuKxw#8M7>&!+BvU(Ut8yUi3vjJ_L8(x97mX^eB zYpu49LtzFF$0ubjK)(sMnc6sb4ZsCQW6fJ-muHI#Z?%c%3pQyJrHvEYlM5A@fazw` zTH(saMK=MJo{^ad$e^YG(x{yaNTYThAdTAjfHd_N02Tul05bmy0oiEQ;*yPqScF*T zm9)E+Z-m$YBx$c{8V!=9v81FdXCsmptuTD&%lx8)bvf3(A2P;DN%E`^6Mi{TRSOhY zdky%U!|M>hLTsTCtrlWSYzwg^y$uA3<%R&Un;^!zXc^?13$xy+Z9Cv=*3J4#QD@Cn zSj(_Bo*waP=R}n4YY}q960f#R1bhJDRObNG>U-95I{NG0isfTE<}({^7hHQ35ff7%^Zo%qCK!`K z-!Q;O0Mh|C0%if?QKs)=K=d5G1%Q~k_!a}A{}7{*X8>=*JtmO8^?=U-J^=VU;4Z*j zfNuf50Qf23i-3CpcLV+i_%h&OKs@U5{ROxOFbwg19WWB`Z9pt@8}9(Jp1cS63-}(z zmC=+@NQnA$LZgwvfveDowt9wv!|b4XW?5@Ko{_|xNF$9Rm+YlcBo@KX85vxPi8N{y z79sLM@;w2XD&568|d|b$vd|dR9G_H(FS}#rOqiKnnHbm1>HEpz}?dOAK!sI!#%Q zSEBT ze3oaf;T;l0T!4LMb|OC2GnXQkC??mJibzWB$m`k(cA3RbiX&yABJcuNJhb#7#} zPFL_dB#U=V-q{_Iy#|*Y3Ca$PHdn<5FN!;znSS?{;7?!0^2f*tG)N ztbMu8C;7|{aXl!3Bg>yaYXwQJ2F5Zd>E!Az3|M-Fw|ZV~CC=>;ll{pigAE3Eg#+dH zPYS{2A1UGhInl+jCkuLvX&rAe5ga|MOj z1;=r#8&JgtdTjG^4$bMz4NzyxTixM#1MY7KxSuaW(ekU*z1e}@tM1LO^r5d4&h-Dn za<4nocts>9%ZVLoFI=&TJ{(4yWj6w_J>W<{E(f>)nKkKvLjbXo>>C9Lv+2tO90NEF zFbj|d9=kup{-$ieg}BcJWL?8TpO5BqJm4C@34j{_CjxE*gvs@N4LAj`IpTCaU`xOY z06PN~03uAj7vq}+I0KNyaUtN9fENK?0|-Cg^?;Rtw*XcFJ`7j`h{1q?R^ZzKI2RC| zx`E90eGCXw?)wICAt3ATVnBA(kKuARv7`3a^AqW!@mZ{Z2gP!mV%w5v4j22Hz3 z)9%)^^_s>71sTS6P2=~&H;O!97fmd}m<(*EpiNa6@(S4Vf>y4u2xAK{DZ5o+_D&u1 z{&Za8S$2~;bqJ})0AiUSH=t8TetXG^@DgTj zs6NUQvX81kjxEC#CVCr*u>>T>ypx#OMAalYIN7JBH*4DmCiK%56fFUm*Q}p zIcYlP7c+qtew`x1dJ4;rHX|(mQoxhpw+xWUfK?Ti|5`v={*{0kfM{7ht~mV%a26oO z623WrXlG*K_h!JQxQ7+?v5UJE@FqZvG<5H`Hcit!n%1ouKEQ%-BKcCGz#@!7 zU@r+8_7n>YUzG#)qM+3(3}1i+CS|uP%x)=9c=`iNX?_Dt&w=nlJvWX_pdG}ARA4HF zMGX1KHsIly&D3FJ-a6FNGtbT_B#+fPjGq-&CTyz4*r4rZ?IxvP+^I@pCUZT2ed|L7*4NyI}#!;ik$=woFVWM=)hKhiQ+kg_F{ zwo2y)+;f~rXIt^{36lI_`kA0MxXjV=f3ZQCd2$%A3*i3%U4Tab8LOj!0{{&y$z~D& z<^zTSP6liNSP0k>kW0alfVF_F0h!M@Kt!0G$APCcalmIUj}tOIfggQLkdq$PA^V`u zT229vdBl>p3lgRq4utuLc8U&7Iy}D>X6G*4O0z>OLVU~Y13_aQB^F^YFC-sVDkR@0 zn)ZdJVT*|3`&rYDXc}v{l;u_#sjrK|(ENdI21lfL=am=^cxfhImBe{#3X3p00{c+# zouse`zRaLxX>6pdjvDs9RycR|9qh zyali?;H`i|0rAO9A9?QpWSZ^-WEXfhE?F0eMTl*8lEz$-w2hjNg9S;meF2h&+`m00 z876)B(iT|v5ua>JMprO-X!z`aMJ~?#uoyK6TfmP3_ERuUK^H=ze=H&OV^8N?Jh|&3 z@jADt1Icyn=%EXJ2+JEzX6Tg6b?&gN6(6&Kc**IR2qDq`U=c`P1bO- z_6ua~qFKZJtYRArqOv0{t!}%g4qvXc>J@i&a$6CZX4;vgMk&I?L|w5MkwdkPHEI_q z+189pTwq+}14=v{$}`#60+Kxockt^H_E6NrOhybnCDp~J;U>DK0 z3CxVY7V760>Y~=yq+XG`Lhm3yOSEJG2bV)VJBLBJY-!to-HR(s>~WA-48mR_Xh|BY z0w#TL)3oP+)d{}eG}ak5N77j5f5F8CiNF^iW5LCKj4wyUAFB}R8U_MWN=Zb<0 z9?CPXwz#;ov;-$nP}`tDZ6!0sc9nPwJ#$6{Y?4?ZO9q)IG-IWW-|jZo*sSs4${DQ< zS?SDa%rnSGx{k;%`X36oXJ26YbFJeLZVpP4_+_3m4>^t5r|2cHH7tixz|Md(0BMhB z0@B)H5-*+{%>o>UdralUS3oKN&&PcgU@73mfaQQSfY$@g2Bejm2gt$td_czKGQf_A z_vL`Y02cysx7#8>EIt`m0ImUC0=N_KO2AhEmjb>9cr_rN78%O{4+CBUcrwzp5|DN2 zIzX21I$Y9r62s6LypqO&x}@c5TE37b%5*EC0ahta+#f`j8! z&UDNVC)$_%;GI)!7v3jmRtb(uOvj0#l#p0B?!Ol_2Zjh;rb)i(5{Tbb!k1x4j1tUm zry(R%tQe~4xCAc4kQgQY5Hu01MUt;t0`bdnkCc!YB{+>j7)-g6;3(B}PXLh;5~D;j z2#)0KYICrGnLcK+BlfsR}rrQcc>W~<9(CRylR;?UHtFI&<6?MZEDKtt* z&PQ=M`CMNdso@mky{84O3w|FF8091lh|yhXATFuQRf$n!TM@RS1%~wlo8^+rT5?h& zB_u|P4nm?;>t;BVR+>5naV;*62I&axvE2@ejIG2N+lK^=v6VC+e0fN_?Z9MCNsJo1 zHX2*0k+GE+C0sJL%-g$g3&$YhaB)~bM`(}jE>LA`CC1op6g0+G(twC1c0xKy4bvDk zo+iR>C~u`kN=S?noQkWOpz0qZ$=GhdMMr3l?QT$HY$e9nZW1)cR?>io*M11;B$Z)H zEF9RtMq?{AQbJ;sNS3kf)C@0qb;P~Q+p_@qWg$93a{BA-9^A>;N{q36K+qUlNdqFj zNk&K~sSI0U)QCqI&|}TpRI(~3HBv%il%Si}`5ZhR}Q<9F*9^3aom9do=W6R}5r?5VfhFhbz(m-5N8MefzacZNnl^Q7_ zF-lC65->k)RcUa(Zo2n@$kLD)C1%R>u_Z5(d`w>~E>n`wp1zMkk?E5d)3;gBSQ?TB z#IRa{=4x^1qA4fQ* z`xJ zPiyvcNW16mmzqUAe&lmT80UQ-<5=ujWzz;sP8u||q|{qkTU|4ts$`mR=$D9xE?s}= zfcI{jJ>!8Nrk*nKt{a~H-<2arIzpiMX^XJ>2yma5I?Z3P<{r2}W4lNk9IkV@jMppU*zk0^(OK5j<%eQ{- zAHV+M!=>l__1fDnO-b0%?bp}-n13XDLH2bQ{y955Z||eMi+)_uIqsGVuFgC7+Pk9; zU+(F1(-EWn`**i!xpULyUl;BvzM#DXZ`~E)v)$q#4&VR>Q(Y0msG4m$9{`|dZ_up~G z*LNF-JGR*P^4D8yrk-@h2IKofi$}h-v?k`o#cyxk|HtdSe_68U(9QSe{&LaEL#O2B zjD2p&d6U}geSOlztUE55ym656T&q4if1Up9IUju8Dr$86y0s?%)0HK4+0UJobZNqW zGs>=bd8|qQGhuY<+K-eyDI#%9DS7 z-Tj-(u9-dd#!2RV%SRIaNk0GFzaKgMs^}4Qb&n4p_0)$M?~T~8s%Y+qA3IMy_4#|Y z9h!Ic1ItEc4x5%!eQEvU_kS^K!~b4SGVjaMyZ3zYk@aspvF83C#$E72{rvai@86W| zc*3}4{o}u$+IerYn$86Wvl-r+kH>woVP10Nr)?6J{c~B@Re}DI zQFrfabJ-{J&wuFj$W7~~+!pA+r`7e{FMQ&H}mP-F6&@ojf? zhix;~yT2PZVP2Hu)7wr9^lx8w-P^xEZ9MS7*s|GgEneV?J8jaA!++dxx0yeI{P*oH zU4G7h_eVG?F1o4LE#HR?PD#Ie(GMTxhMzpu^XyYQ2AclA4H-A+x+hPnJ9tL&nE5YX z->=2;(}q4XJbTnDu}1cb-TwIMAkZ#Q51cw(_!fzr5Ya6Jgs&{Y#wiE zl%0;;PI^zY$y1GKd6B%K2B+gg<#Si*T4l*&^F|L!96FQ>YlsUkQU=Ax52RJKQSe!k z0LmbDAZ2iFASJ0VkTRqykdnMKfHFAg3OglXVEpPp%0M};)p1Tt7_!~UlQ=XXX<+{V z%8(>ECds{6(9;9r=x@@+?L-rrpeN<=6rMbI2|0Pwh&yDBF(CY zK28UF&QZWxf0p%XupX{|Ivv~$a5^x$7D0O0|2Q3QBdk`y?zr$9Xk?FLjSqdCjxZ#u zCosBji=MfH5`kZ*!yN5h`q9BvRvwx5NWl{;__2!q$txImAUIoCtp(4!_(gESMOwm= zdfI^Qba3=T>9mg@{VZ5dTfq~Hq?mfz1nG$qJk?51kLRvM6$*?`wBT`B^k4@JXx6fb z5j^|wOP4#X9h3y>X$K#tW4lF9Opu=Tg2!C7a627O2J7h{c;;I4v=7qLQSg{$QCDzq zWUwAIYs9CuMNh{dJzR@&I=I5Y)O?(9-c`YRM0<8{mSW~}=O8^N2|avciY52q(U(pQ zu47#VPa3lJG+=ZmS@g&{b~30=N2>6}>ej*;-&%QO-QZZw>Bzz_lDEg zXNhw+OIT75q6j^Fdy6%xO$N6JL%>#7y9=J(h;u(+bf;SM$T+(|^|ynnc$lD6C$f`omiA$Bz@OJTk0U!Nav3wzP+b{5?B3 ztlokLPcy}u4Q?=B39R!hC8vWkEc$dx`Z+|L`v{)h;9=>~oo3M^^Cu2ef1HbNyW|}! zkBl>l5Ih(17uV(IUkLLXm_M{|PRA^eX^H6iTEdcg&H&Zv;Mx)`+Nu3FdxG__Bw>3I zkP8^y85TV<&cga@TlZP@q4%vkGAzzDoQ|Im7Oma`Q*S^*abv4LX9}Ko5f)2@Za`32 z@u2$i=S8Qdg_TE!l^}SY!7qD-+P`+L2o7tY;Ngd!*h1(Mg2GA!)gKnqW#y4!4H7)G zy=?Cte#~7L9M)jLvjAby%Fqo83M&azdstQ;8P*WNGZw!LYwfyLJA%VX7Cg*ark!qx zB`m3j!w{!~^HSE0$8K-`Pq3b0f@dyx*e>XX3O(he<;6H^NI4f;C@3}f#)O4Z1%c^2t=Q)*QZ<$)l|_8JE3)fLo1}jQuP2tu@x)@ElPEn#jk(xIvN*hh#n1e1>Q@F{M?hH*iswh1) z1{OH?n)0!t z4Aqoh6{Ury@QqLD%=}4Jlt}PM6i;=83)7T!iW06VpDId(ru1S{fje1KQWV9dDMgCX zOH(dalsHXUttkC9Wt*bJYs$NdlBg*^D@u~4v}N}ooSD*IL6ku@3Xb2UaS$#Fzby<< zXm*6-2trV>BTl+lO(7GXJiC_z2FG=+AD zR87IF0McnGLE$<*`vR$lmWX=DD=64eE%o>*X1e@RwA~wUkyq*=Mm^+}6k?2zpTd;V zX{mwq=h`;MV={E|P!C5|lESo~ZKE*GbXv-cps;ZNkGJmtjH*i8z99j^poD-ZE+Qia zi46lN21S@a0uu~LNCJkULmChXNlYdb8=)x(xVGK3ckC|MDAoY3fQxHyt0*X|#IUYi zEW7^C^PY2VnVH0F`Tm>SdCq;$TTXBH+~QIn!DeW=-QC^FAu2pkII#lx1u zyA#xUFGm-m2X7)%dN@u{6qE8c#ZGx!%4Dg0V?jwV70$=WGNLFiytdR#0c7hj zEhRi2TO&ov*m`K}j-wr^54Du=cx+*!;%{BR5htfPQh(P{!sD@3C{o&6;^jysvXRFjJRVy`pgOh~FGuP`EhRi2 zTa!e}k6*@XOX6v})GP@X)&wmjJRVz<;p^C%x9#f*j#Q*+T?E^?&yYboLJ z*qSC%?sz#;o!H&s5FU@M>7Y8cy8Wrgy^hpLT1t34w$2qPV~c%?TJ52YiCRi{JhsmB z*t+xWA(uK*wOUGeJhnn2<;O46aKTaWzo^w7Tv%6XDdF+hngL%YUVHk!RPRWw(^A6Y zu~i~cCSI(|j?~LqN_afBN*ihB=t!k&DdF+hst_r6yd0^CT1t34@tWze#dtYVby`YzJho6Xbu{B4e+-c}YC9;#pAv_*iRiHYyn1+tjDOyT+JhtYFl(98<(Tda6 z3Jh&b(o(|XvBmMRW9z98z7IQ6VJ#&*9$Q=sar)&QYk!nmJ%M1tvZjbE3aLAnIqNpP~R=&Luil<;_@E)*#fLa)>jN$Og7JW>~lRD$x>zsA;iT1t4t?-otr1?~o_ zd#oH-SQq1rj}s>^?PE~c>^b$=^vvTDobhq{ivqA+~g++M< zS)p;0vNNqvsB&&?2=6uE8@sdW>T2pVsW6(v*S9p()m2o7^XqELDv+Q`dU9o5xS^y9 z#4zp~dx;YpD)90_#W%LDq9UiVw2rSMwC$>=9fKv+TZS>sPz-kLk13l?<_r(p=u9s|NjQdo^t*=j>xW~!VJGtYg(|`89RcS_e~0Eg zgBmGrK9j0~kX79S>|aWat^Cd{{iP z=a$T>2v*fHm62JKLb@sxPMHwO&K;W<2oz7%cD)6;5T8iRT2N8e5U#LB70fHiC_lfU zKCIPbiK^@g8RN1-nR$hwU{*$ERzV;j#Y-8FOdI(G62*g%Ek!lq01WMi~%o5Hq< znCTzUA9&N>wq(WtvBP2e#tw%wQfN~geS6#1onGlz^w=@>gvZrQd9%~w(VB>@)18Vg zN!!0Q1&m%RvQaTd@$~j^UeOrd9;;FQcHrCrXr0TWENW!tiAA(;o5GQa5Gn3TiGO#T zr-Suxi|O!cxyTaV=E%-#^4}9RW|0g3$>7kK{!hh?`Txxr(}d=Kqiqzvosx~OvIIsA z9`$c#XW-OHLjoDrDD%0O|40P~<3j>jP&2axUz;xfkCb5K?H*{VA*Sz?!Rf>Nu4C}9 zw86tqKW)gcbQclM!D(s3hJo|6;inBdRlH{S$}hXc+Bfv#&?D>du@l~E!{Oe~&1)_Y z+}xWk*Wv4K)*E>HLyolWcrq4zFQ=;O!vO)S`)K!$R{A`O^TFfkat?p@{2A_@!SvxX zU+12Hrx#CDd|VX?bdT0I4D>fOkK)8$fEfB7hiBK5@V;A|JlfLtspe6ft?TQ1GVVFy z*LdtebaESZ*bfC@X(pH z96Z+!QGC1&87qA6gYRANJfW74WItQ1@cF=Z@@d#F$BeGBp2syGSC3Equ1MN=&6`>Ac~`v<)HO+#JcEl(T} ziX5@#duKko<5xy+W@IIPZ_e=X!RCd>11?p&9tN zR|&6LF9&nr$LBhiu))N^{Ebx(m@W^1r+>My$-aCi9%`pAeO>_HAHfrzsrV56nEFnI z#|rQ~JzMb|0*Ixr81z$dV{SEX&f#D`8!LS52Oj{>kGvg+qcweK!mT<)`YuKs2gG9P z+X4E+;AyBLSL^k%8_Lx!;CZl4@$~`33ST++HltAY8Ypq`9BApM#jgD!TiaIHOvBEb337fPCU&mRZ_%KX~8NOpdZvjuYrHT*g zW5#zM=>5UdX_?|{Eqv5B2s{%tUt9Vrz?02}5JzkJIApp2JU42-*7W@hzCVKJfy=0^ zZGEqS=O@kAmcFFRF?L$fw!R<=+)(gbv{Lc$=3T7($b_MPf+u6O;`6o}PJO!o-rs^} z<{HJSt-`EeUO{tBLj*C~Ai z0I}km55AV)S=O01D!!utvFb+)=!G}oT@E)ZzOH~+`kqI?9|BM9t%|Q3AeO#N(0>L` z;5NnATK@W>uLwNh+ZA7H>9-2r>%nv89g2_X5-WUs*1rrqZ{Ml-5&^No=L3DN^vB zKg~X!glDppq=^_f^T^{^xf4?eGh_fV>|S{*-m}C z!PndleVy-VUw$NkuaD+!D?f&}Q(p%7CbUD}oObG~2j8N0=)0wz`qqN)k#^{Nxt;pn z2H(fOqR)@4h`Sf%9w(2EI9sb9h2RNkzP9q?63rtD+t9Zhd{?(a-@10{+X%jG?a;Tk zo%))=_ia1$^~0KO^h&^N!G`WAt2RXg-9PJIi(x4a$t?rNvL z2f??o9s1sEr@r0bYi@_W&JVONKa#-LNAtFoAH&6l})cHJ>T=%DqLGwdIoX+^u{jyz z3h}a+&dFCs#vnT{W&}>tyq*X|@^WihW=2k4ZdPb=Ue2TmS$Nh_nefCRQfzEq0XDQv z%FQkcWsDh|d zsGCr-pmJ`*T&pjJ7?8H8q8EORB1n))D>%75u2EQQHsRTr*NfeW*IWqPiTFwP>2 z+wOA#N=$S zw z@g2~_WPW%>Gdo*I5!pm36QNi|0`FN-LCLYhau_H9gvIP@Mg1O^i>%TioG>9Ify^k# z${5N|0x5dP6LdeQ{1|I!Le_-5f+=W&3bV(^?pVf*WrE?I2P-OWW3zLzbnMXZCMN$3 zS-lrFqbMVknO%Uk5Q?z$o|t?r;$2sduYH8Vc-3p7w3%(Sn5u1JYJSBa#YjyCCT2=| z(m9l0R3Pca08C=43*`_9^Ih-xV}cn4SUXBg&ZQaI4c`w}2OXn%`HXu;j*cqw5g&6% zJ_hQ}$t%dT2I7LvrzcO%a^I=a5>{3#QOZ)qT++#z>CGmVmJ^{xZK$(LKHkEl zvQOHqBD}&NQQFLcirT6YJOD7JrY=}sm&+~Sm1UU~Gb^jni84j|!)&Ic5wnWni)wL1 zcQPYg7|bgu!Ye_P7)rfvjD_P;#%;pjA?X>Sn3w8`iVwIVWbeV2GEhJUV!U!>|*36uVfmF z5vx)%HZ$Zu7GIbj+Qgw-Un6l-*IiOGqs2u2hF275FjC2?TN zn1o?7#;>QVY*)>#r1}MjN>2Vcg{VMmxugPRqd{YhVn~=QIVxRPT3Lal{;+lFL51pR z6WyOMcx*d#*>g7@j0b}UL5lD7&Ec0v+J&uVpASvlhV>B*0N zx9jA|cc1laaRqJ@2>rE-Uf=o4x4->n;i`T|Jhplog8ie=6AHUtIx6GMwa0hc^QY;b z_WB$d(SiCmPTGCboL%LQeP6tC;9*x!>x=K43H{xz13C@=X=#TMpB=LEvCZjkV4H%_ z$L5y(=HudTPU=#7)SgAB9efU3KjNup!J#Ye82;N^_jT$w`kOmmUUiwg_#gDD&1Ze} z_kr8v&bYVb(ShNvxp(ayC=0U%p#bTl-(dpni5qT}Aoy zSq+utF0AH%P<6^nXK}LpUj|E6W=0W;WNw{^ z=Ao07ll&~&@<-4fy@$4~tM!C-`K)*0;?}jU)^6?cSr4PV`A}$&XcsjSv<3hg89@>&0a>m#9cK+8mz&*}@;$3iQp+U2t@ zg6k8Z@nu_p7 zMP^C|es#!rcYYx=B`&U|BLNKf1xGv`9Uwe_j`-zG4M$OC>7Jx5dlK-0qtwNFEqo8E z>lS`3uw{_uZZOnz%dZmJFymBk%8?WB*Lcy?R zVrYPm13}1GqYpCM_&~<^sE-YQ1wRx*`(T`cII(tRp>vnR*TrgNJi7u<1ResM0PF?~ z0h54ycsLoz{VqL#-0#p6$o1XBflQ+#fF}Vzz^OicLzmCmZ_^HFm(L2CViH_@af%=0 z#`|6i;q(j593aT+R$_+>UTqLuSe7V_>_L|Ye{H%YG{+EJUt7WBO^X8Sqj>rIM2m7H7fO_?+?wy z1FfNON!={G6SMVlWuaWLp8BDQa~gbks|cgS+L|hKT=J=|RQUA3nHN`6TBOvuzj2Sz zrvwGi4SE2YyBceKop9!X#+sf_FMTllET5fmW@;K`-&Owt=NgL40pSh)> zhc_QnIx`1{cysUt*c{zP4o+z^2c6vbPjk^U-hPBba?w%wf0C2;BWIYC4*;2y4+6&l z9|AHb{|IDGt^+bB*8`c8@8eWCNtaJP0itLdwXaWj6m5@93%V=gY_`-3f@qiG&=T#~ z4=yz5Y`j6Q4GxDZ>9SWzT!q#gKuR5aovZmhRBI0%R-(wZY|Yq|hO42k1^HP*QK~5X z@@E>qX{f(V7{pkhLrWMP2g-Y#)i8m5NRZCD(HWZq(2=o;Z<%~jh0l>g5ar|SsaCi% z&8M~uwnKrKFa|BXNlA|px8{BrZAiN@ds|=FV0llF7awvomtZmVIfhG+SDf4@zANzi zgt(gU%f2_k`T@U6HUX|LadMM4~NnlI`nr|cOHmeijH#`{=ZaMZr3$NJ{^XP*X&GfqK6-j=XET$QG zpOauUGOdb%#{n^dZDb&401JSnK(>Zuz;fVB;5^_g;MKs{z-xgQ02$_bAbX(sK$hYK zK(=WY0`~(k8gBdycnPor!qW)s3|tIkek}pAuDy*@)it_&7HgQIJ*8bfYmZIaXVbVz zU-2bsmrp+7rf4iJbou1dV~Un$(<19>PD(9<>{QPMs(LPci$qt2j9oohVgIx0x$u8c zJ%_34iBOp8*_Ragf_Pdmen)WC7Ek-r{2Ql^9)_U5i8Dc7IIHUDNL;HrS_v2PI>B0m zUsXpp!lmlyw{R)hw(2M!B4WAg2s|6*S08%BiMvD*b+oGH|4SWZk!7=r@ORhI<54G=Rwn@2dJY0Ikb{BQz@b3)Tc-lqZ=DXD3rq*D z01gLU0UQlvm@|P*z#wo3FdO(X@ND3Rz#QOSU@q`qKx}Ysj7PX80-0Y0K-N)K164=q zQgu|(SVt9Yk9KvHkCrML>!{*m9aXf$Y#QsRqVWMY#m73TX!eLmmF@xjL``rdN3$bR ztngt$jBus53!W$i+;pt`Zmu(7WrH;?qSH7Fv@ST)ab~wxAbF2BgcZr^P`E~SA-^(q zjnyfT1}l1=gipNGm8fwjhoQ`Tb1+Q2Mzjk3)l~MIB+PiH;{2S z639$qcd0UoE}v9fMSDp5x~ETQApF6IL_KzsG$AJCZaq>6{ zY0Y>Y4P>7515&*o$clrUEPZIu=e#?@7R1CRw_PI z35s*pWTpf-#KTwNb5dsP2Zt5JN2k-ov6STpdvtmSwJY4s^ja&`Xj0RYmR%1%3@kiKsBQVDPH~&+mbI;}ITX$Mkf=#n^<8H&=E{j&M;_ zOgc6XMhDn(hm(?05BN25B(2k)%wPhiBCJ*rUl>od8d5ogo`LJYJn3O)Z~$xtg8Y6r z5>90bl12}o8wLeYp{xLm{lc`FQLm*KD@YX~$z1aSBh{*vA_Oi5|F2k)u;~Kh3L6?w z(HAS+;)k%=1`OR}7 zif^3lDue4DvGGT^IP}FgG-Y^(q(ml-Ucg)p5J(QlN3i|y;VzzMDN8|XyMsu0&9ioqV^z+?`u zc$eN6z9}=MLsxS_SxlM%sy%;Gi%A>@20+%UPnhVDlI~D28{`TV+uZ0CD)#kkEc67f zG;&hNdZRxVLRJ=gZJ)14^h^tL;m2<);owS^9~j1&7guSil`ONGC4JTkq@y{Qe$+e& zC!en6u^fF6({vTEFK`X;IN(*lGk{kEDf4^aYTymPn}N7>(fBypa3k^@#mruSOqWCbX6$zhwRa?haP9g@YqU^Au&9*(c{P%9_-Q^lEkB#kB>HI;3o#(*W^nz z9&t|Sso5y#Oa)9b!{>@6)2rb)6q3=fJ$E)O3Oi(Jugx*^E6!vZ7kc@|uczyuGlzB7|L)p_vWU@^(p?#Xu&;!8r(M&M51O~5|`*8+C|9{|1tbj@Kz#S9 zk#*o*AbTz>OEk6scLN#M4}h#`ui#WQjV_;cl})=&yL?s-h5)@i>pejxb^d;E$a)Wk z5bn!#lOs}S@}*`;R?RdXl855KtjaTF$-#Uq!Ylvan#{OP9LxAQSjw06B;LHkY|1vB z-jd`cq_x;qT;^GS8zvY#TD{v&N7_lX?W8I@sgZUZ0^*#RQcT-v!Ic=3VQk8abY3id zJ}85tov@mKeVgjOT!O_U<$bvXi&?6Cf3|6dB3l&A6xd@x84*!nIb7)p8P4)EqY5mx z5tfI}$6JX@*;&_1NezNK`Y7m(~j3%IlUEPq9E_}T(svo8i zW6gBBThnhxf#>y|!2ZCyfP;be0vV|LfJ=Z60Ivi-2)qS|U1PEign?k=A94K%khUHJ zGIWmvxkkGI_#F`4v8?-`tjSvKlfc6fp67ta0-J!$yDdOgKn@2~1*FSoy=T)t)GnXJ zbuPu%O}l(nx=kBl)67&C6I{+E2jCSfzexR2lSbU|KnV@(hh9_-aW%sHV};W;Y`4vYC^99j))j==7ZJ+CkOT1&8QE(Iyn;~vrxo%lSL-Rq3>P> z;1xYKH22H785PA+?SHqMRpz!i7#?1C!Z|_{Kf}O+VQc|%y7D>jL?Aw;*2szf7eI#p zOCWRQU7RXc=<-P^QZ%NAq6L>8NDr=IV=av!8V}oz6*O)(2v3(3-cJ_nFOhpdU{i^X z`FJ93A2rI2DAIoEMZVy6(L!enRv?%sOPj!}TPKK%HGj*^l0{ruQF8|tZsj@wE^eAk zuy|8~?SU&8nyl zmEt`(oaKQb#$oz_MEIHJRYok#Fv=KW4ju#JVjmXzIFMnon}cECwY$d6M*GHaRRRwO zo)2V=n*%%u^zJPzkv}HA{qQhJE9u<}>7D8#j-OkL_fgA4n>q|H$c1%fDj(E>t2-wc&d8iN z2Pw?37X$kMu|K*o4LB881jIyB?ubkWGAI6wQ{@C*KI>_l)}&pn!*r40i4w_bT=Wv}n|AKaoib~s^J^2We zIT%i6k9$2lgk)#fX8@T!B|v6RDKHCI2CM{@0~x;xAhT%~PL)k`sccfTChe>5RhUsP z`g}9by$T!+KJjQ?hFTlVvh?80hGPv`#>;AktR*qWx0=VdBAFCxvbOYKzXrci=uFkH z!@{>Ip4xuy7&{zE4Y@|l2?w>=GeSq((t`oVNW2|iF~UBf`46ocu_yOlBleuZZ6vc{ zmgFqu zB*wH;IF=qvN?Lvm{Ee48RQ($4z&fEis}bA{rH0=L7t%e)P(8u2lg|?@JFuO+fn{xJ z-i<nIkLkYLnj)j1l|}r5jo2nLr+}n7<%Gj$IufOJBFUP*fC7>#*icI zX1?*yq^vum5W|mJiD5+K-7$=ayc5Hy$UAY2h`cA7cH}+Lv?K3{rX6`tH0{WD@kXA5 zo#xXq#BL?>Keiru&h(6wJMu`E=Uraz$Rl0ucX>IHmvp((<>f?QrAvdcL={S%-Gopj%YdzVDJ_H=w9S(Kq z4!%+^(&6pcd_BQ`FxWMdi!Y33AZ@a~1MpA4pMWm|e*vy$H`&2z z{5>!MSe<}00WJV`0nS0dx&j-3-GNIHer)D%yaLz@coz^Kc5i$D2wROz%Oim&LG7zJ z)nI}y?5DM9tFa{D6Q*K*)_Dl-YJ-jb zsll?q2$qvnXJ3S@sHH7V&(8vL!jPtx1)JDpVuc>}#<9${YFQkE<(3-0EQO@HvA@QN zFQQS?PH4gw&sD2^j8-syOHga5Pgoz+#{2tvGfGhe4VBrJb98T6g_z?Tx!Lo|n2#Oi^%N&8DP)67g z%~!t6ZMWE4B%g#tDoz|n=wU1$pT{sZv!*_X*94%>P;(j>K35*OVNK`FGS0-05pfiF z_?ybYkeGw%5X8x}xL6a<#6kkEvA`mgWE7B7z5p--h_jJ0nZOd@SYS199Iy_U1N;D3 z0Q?Au$%@=HLq%)ck82bvS$dlW{1Vr@aK_rHgmP~7lENj&45#HV88q;WGiD6Nk9x(v zWS3uad!hT19+BBKB$ANk$-i7|gN@2R5@Y3Gu558NY3vRH7pjlqniZx1t?o)BH9K_a7{FQ(bwdL0mrT2sBJT z2(6EH`K(m94hrog?ebyos*zo$T|O%?3Cm~x;HuApD<@#NG7G1*%37I~vMMX(EHq$E z4PCZp(Y)2t84jSeDvKM_{O4}lW!5>d7>0c>i_^JnBFs%Q*MUuFY<{}a)t!&|s6Cy% zmCsVOKO!;eDS^c!Qtn6i>L7V|I0=MKZeyhOAjSh>NLiMk`BJbEjSgrQ9> zom=iy9pBRDQ|(n8R+Y##)D56<^z;bMJXA4#IHgo?!LFEF8(t`7Gu7~T5lsmfZdjGQ zE2X^a-WycYbf}d!Eb7Sp_(b?buenl&f$_?Wu9)Rn)}I9qG}%1NLnG|Mom=gC#mL?G zF}^{Zhu~xZ z5ypDS;zL0V>a|&vD)dq)Q3yRdIJH8HV#wW9 z?A2tGQ+Q|&9xU)@Z1RKeNhyBp>68vE`LaBs06`4BnxeLBl$%CusThR>dF)25=8nhp zV?vvOUq;C3k+`!Z7||om5e{rV2L_{xQe8uJbxCQJdr982fXhsYaiCaneTv0OZO)jD zCkEv+mhL+?=fFEjNwW~LhP|48c*9K&S;>Z%R1molg(9(E6#LsA#}TqT#aMl4;DiBGOFzCmIhOiKx5FE-j2rzSQ_N5Z!?@ z!Qws@c9|V^AIRp*xEDIhD0siIyJ1)Dpv^(5!H>dYE?I z9-9<{$k#z}g>zh0O=(G0y{D;Xy(m$7BA2UUJWY56IImaStl{Z!8jH>i+)f??EDWqN zI83A97IC*93=8W84%0LlRvi}8gqX3^JHo7fn2t=K-Z-^Es}_?irtJklc0hGNc0gg^ z0AK@MScBgjv zB(93@6`RKDqiAe}luV@s|2zfo{KhBLv+#_#>&GBxA?t|I%tV&TAxZGhuYmi3`)$b5X3w5|Rx-SB%+ z`oDN|FY1^8U>I=xdPm2xORDhNWxBPFjw5^?rehnYF0I3L$MzMj^EHjYxUv*8wK8$? z_%UAfYd-^N7O!ZKee}No^Kc!9erzJJ1CVJHulu#v;8vxFF7=?aqOHKSqCKKrc%_6* zd&j1|Z`1bMH0F?!#i&PIU1gA^Xr4YSoqNUo;J31d?#x0tK)W2|7)kF~;En`F=vkc3 z5NH{$hD0=ygF)+tla=CJrwC-qi(@jv;gYi1(n7YL*_;jsAZ;4M{F=(@Fs8}O?I7rC z5LBx)%9!ITP}6XlgJBR(V2UPw*GV-n-vb%8gBqWKTO~bR>fWcK@!qGR<={OA{>YtJ zix1of1|(YmfKLDElqNdD*b}u(oVx3$&ko0jPM6Osjt`wKpH1|^4H^#Ynz`_$>gjN} zV8yp-HxjpbHm=Mw6J1qP&|Cx>jjksn6mVeMJc>jFjKtv5bgSV6hMZpL4g-2SyYW|- z^l0wvmQy`)KFf+^A05R|!N++~R-8>~`6R4PVHEb$Ke%$4T&TVm>pt{p=xIXUspZm^ zi}Ad7bxW0#T9`sElY|r1vbF2!6sD0C?ny5?jS={6PQ$fr>?-kGmLiBTOtBi2B`yCg zJQ(vtpeyDWvZY($lW9sn2Vuvtjf|CX9>!bLj~HGLoli0t3>Gg`a7-fE$?r>wq zO}cc36!~+g31#ynK7V0{LXxFPjOZP2Fb|=oK!z;DG3E8c+VIHdux&O&C?i2sX|4}0 zZ91CaZG;wBVTg${kkv$K%)mE;&%-1w=#ROU!)MoM(0cnkUu{w_Dhw%D` z4uO<|zAaFeDU=nNzJQ7$%_{x$OzGFO2g~*%lj93Ofp16B2Cp2|<3$trrHgNxsO!L| z!&gg8B?=fJws{F!`2s7O~+`aojFlSebdPJA`E>c!xhTjm|gFi4B>!Os$55zp7rp^4zi z49O|jRy7=3)(}0Eu%rzESSO1edCj@B3657Juy(NkC01!+o3a2wV(m=h$OWt20bYuD zzG?(9Y)MisB!8fJD1yom6mOS$EycB%!CMbO*-=MN6||K>zp(NOwIkSDu5htnWiVCy z911bWC8|qRUC}2le*Qktx2?d>LpT$xEAjg=sz-u#J6!wV>L`OGx)Q99H7!B*?EFn= z$K&^T&=V{^KB8RM3nK4!>d5_%*4^TZt-_)&!TJYW?+R^r2g_P3u8D9dedTbyBeX~1 zV(=2IVQ5qSB(5LedPQ7#*i!B@;JpQK;Z6!d`U+h4itmJuY9O9qmBaOt(AL1EhJL(n zuZDhK!iBpmuwkKyC>Pu^Vd4Wfk^7_g;V$06=>$BlI~?k8j|H+8$Y_8ek8xn==U$xW z7fU^a`fyFHET1!@V~rO!f$kkI^u;Km2~@MiwxFV<%JrfaZi?ICQYPN&`5JmLHH{s5 z=|KqB-iqPH_wnMzAhN8Nj_c@UJ#J9Xgin8*d2!Vle7l^?q4Gh9m_w1b(M8U$si~5+ z?HM2{1!bk<8!+WGlQ2WnlQ2%>0^sd|GcQhFpC<373gX(fj*jendG{O?d)d6*Hr+N-PrD;_MLOpAJ)cWe4D z7#Fh4VqD*NET98$5HKEi7O*3bGM#`Nnk52Dfn9(X0J{Qt6XsAL1Kb_RrSTp>P6`hP zvexwmJ__suygQl$ZKs@+h z6#(A`76I9woC9nI76ZQqP67T5oC@sR0XyA*xC3gP2Rs@W0-gn&0UQe~1x^B%0nY=@ z1kMG{0yY3=11|xd59DKhbAfAs)xcYT^}r3ldB7&%eBg_~i-3Hf?-Jn0z)OLAtZxzU zYv64_7U0`~-GFxhxlv>-a1`)<;4I(+z>9zn0`CMq1pF)TVc1NQ@;1U3WlNSSp2cmVi05O)ErFMvM)zX4*q zuJtXjKd@h-)p#cG7~o`Jf8bo;Fd*-GpAKY&O9$QtJOg+)a3T=zC9(>DTY!bYmw`pV z-M~q}X5eJtLEt&S1k}qZK=vC`ft;^#=Begsbos1u{PM9rl`Ko4l4W^QG(JSCXme~DAIej-i)`8=o5n}B8c3`HjGYgWk!Y}P;noAYK!!{Ac-kxvcMxrd}jRZ2Bn1D(?J`cCb zN4nJRenqz)6X0&YPzszS&q88Y*XYBA0O07K|=BSOMyIPqG z52Oi{HI6y`YPhF7?U|at`4LFC=a_oFBAYGJXfDlam`FW|UOnOy?oWMbvWBi_i1u_D zGLn{27DvG%XLAhYs>J{b;z7J+m!%aU*enzuE-TOer}evKN}c| zto>*M%nI9V@WePG#?&%|jv8dM{?|g-)PK`1a1D+_MDLiI!(XQ8uMdAYPz`|79(|hk zASNfLfUL)T=Jkl?HiROp@hfR8YyEMW`<1*e$(sf|%;4}AxpD@FuOcORnC0E~^tC-W zlvb@tQ_0D64gycZi6_nEI1jxM(>?^G#S$O`UJ4upoC!P~I14x$cs`Ifk>>!5fOCP< zfz`m7z*-QD7K`;K z;4`TChfUf}Ag1!OV415#F9C#bZ8uTvkGvNC`?8CEm z1F_G}`T*Di_#w~_+ymt1mc76;fgb_K0rvq}AO1#v#QQm%s+Xb5XO-gjbD=TS>GH{_ z|L;PZk6*fc7DvuXc9?egtkE`YtW7JhX_IYQsZC?8Rdz47X^l3`ycAbWS5_vZprzBj z&Z-2w9}17d_z)NlsuQqj%(zUGz+w^k492mbCE{cQR}k4G6jp>IzH7rF0b9iw2U-W# zaX-A&MiTu^9GPX4UsLnzD&|$zG}L2qrni^`=&KKghgFBo@Tr=Xi2(q^m<3D*js*!Jg1Vy_K*NWE8B>c!uLgg|^cqJ4?KHKX~!onCy=>7E1zm)+c~)nIl#bo{c1866OGzgjlzcB+Lae3G;v~{abLVB&16vp`tMf70vA9!upqV zmO&Im_PKuhy*Roo9s&_o)dVcm7?(*%PGqwpZU7w*8b=ju7K>seWGf$}YCApxClmyZ8Bfu|q=nZQ$lOyFriKX5vb34AV)C3qW7 zmB4hV1Xi>r?TbCpOApMBbx&*{($X%}_QtTJW!FNIB^(p40Nx@U7%BI~ImArOT$Pc^ z1!nOK_EuWuaw&S=hJngw=>oqM?qj(8`=L)O+#c{d7wRrqK=E z18wJ_W9_Z$BgemL_K-nc7~}@^y?T8q(}8?-0d>JASr`}}eeVTASmA~wcDOl49G4y+ zbK>(5&IH*JsK&?raIMCq9IdDk>teXx6~4#uyH;E;;+K4hvRR5FkObMe_X%hT7T2r( zD72$+tt2?=pl_lz9KW>YJQkggtH^el8*x}0#sJTWEbUmht*$ST7lUM!Vym~TCC>(T zj6){7&NhMv!NLX&2ZyhzKr?)GuWz!e&^;L00ybN zW}wXPy5+@%Ju9iB;LpVi9AwJ}DmL@}Z|{CQHO?KLJXIu|aqTzydKgTY%{O~AjllE_ z0*}P`1_?M8pw=;s7Xmrfz7WW?xfICAF9yy4E(6X1E(dbVbQy3t@N(caK=dT?zJ}Gn zO}NHAghn=oR{}YI`YrG^;59&|2-b__1uD41(D);+Zvb{i_-+LHfj0q90NxDb=DS;f ze9GrmUqG%Uum(RM*rrl-JKC)?_*t9Ott7Q3Z5T%b{ zP_#6gHo~R_Y+8;@V~JL>t-oe~hN#mK0p7GP8iFN?HgP2k43NAqi$) zf()kjftDakZ^~sltXgnHR^baoN^Lft+(s3~=H|+3slw@yh;g6_bEspexRDO`L%u!Z4NrnXKhN>Zt?{1)dK)1BfL}+2C9aWEHFdP6O5fX9B~(DqsVU zMUKT>6*;iPgKGig1`Z(_PX}jbEGl zzys@0Y0zccLFeahIg~x5-`-A&F4d3MhW=UD;K3d~oTYixz<_-y1hW11U31(X7ahUg zD$CRr-Xy9yd*g0#%RE~Nc37Zac9axjA+iXR24j`AM!5O+s>0JCgTcmAC zNP_)HhXfhsv8z)Zp&Aj7fiFAE1dF3Mc6A-CbKzp2o?w+}T7t#VkQy()0vD&n3G!8k zUE&%DIkq2R$V*Ryc#7T4cw+P82$AT-{? zRI(%CdQ51ga6KZf%i(%gTwCEQ~OI$B@C^`7{C2iNQ3`X^i}q(`EO zRpa?la49XkN2!Ji)8S%TCGr~zdR=@eTxx)DEnFXoJ~(7;oBLTtMJyiN22ZYJTn?PZ zo=6?7bZ~m}2=g(FNFct&Vheg$AN()0-+4zF`6g;yVsf9f+Z(`$MJc@xTUTW47 zz;%C|?pcdF5S)tO(HkBVpAB?RMK}gKQ+&;G`|#v@RG6)^5m@?9MdtD-*4H0LT=UjD z5A#^j2o+j;d47hz=3__%s0- z^sT^b;5HzKxR?~ny8KRH39erRa+voDkU9Q3@Fw6JzvS8c>91Xl3I1_j$@Dku%z*WGz zf!71q0&fT22jsU3?+3mB#B=P8uK*tez6r$h?2UVX>ww(-upam=@NpnE#akPJEK!?* z{6^tZz!QK^1IGZL0Zsru3(NyP2b>CQ0+s`}0&9TVfQx}I0NF-t2XYwx6izh|rOPMn zi=y!^h@u^X^i;F~+U2um*);BfQG6`QijQ|N6zxwoZKq9p)26*^)7XC~*=C!@yU&XD zgH7v*yil|*+U4VW0yGV81`wCe8er3ow`r%@G`65BeEBx5$flVENc&au<_7srB#9n1 zU@vLDJh=7*Xq(yK?#C%(fi!lK4)lKbGa-`cGwjQj4GnI-s zEK{>k*EE&HmT?@s=YO>JQyoq}xE{orV4aTNyT!$Bdabywz^~%F8ZKsAqQ#2+u=qZL-}}Y&Dt=iJ6RbV9 z3*}A<*r&kshz^X6Ko@f2oX+%Ahw8v4)t2K0W%_&7oSd<_ig93a7IjCKcV+UytNR+Q zBvvow2UicAX2&0!&%U_kp_<$Cl84DvN9!cryfS%suz4jv$0Iz<6k8hG9f~Huj3-0S zb%dvdf<_aSk#YYEkO6oZNW-rKPXN9F91MILI3D;8umJcja4PUUU@7o@;6=dQz-7P> zfn0~%1H1wF5s=F`e*-e0p8z=^+Ye-QXaTZ}9{|1s{5x-sjJio!>yO8VH^V*9$nEm4x?j6?vB?6SUqq z+0~aumea|Vb>W7RD*a*7!jica=6je04IAncQt&plRT5I00z@Zb%%CR`H=e4l% z!V1}j%HrH#XyxTmRjrGF=~*Lpsm%CgB|^I%!F?>?p}n*1_uw1%8$*=qghie&qa9JBX7QUUk390!5>a3)w8_+>Fo z;OjZ$3#|#(61X-9Edjq@;yfG$Z(KyPwF-15&t*7Ekgobr%~q?$L65&@8+I@10#OU9 zZnT`|);+sO+~uSZ+>zykNz+O>xr$yf$_dBLOm^p`EG#+9cpkHLE7vGjSp37aS`Fiv zGN`EprVFoO0?V4}I93;>R3MwR6M$^aP6XxxPX;m_(|{~uFW^)~j4q$m0qL)3owUnm z^{{Eo9mU7hW-V*eq)$f+khsm{W;rcIIi^LfqQVO6rf8j6Dr!p+Sg~r zCB#_?Z2fUupg?{<#&0}IH0GA#Vz}aw9`QGqYBgG1Wm5P()mj{uYdvL~MT|m98ARaq)jEimehvIvb zO@qT?9-3nZ9LlzGQRBHPw4JbkFr-61IXQbahtkNLRW3@DDG8Qoop{3xJMc%G%7$`L zqOwhipKJ-`q6BxIA!nH)+QxaHnu9|qWkb0r(GVq3Z`gtVv?Y{_5*IlVOBCx1pqS%d za3~wfMTx~q0t??gwZv&IiC=69<)XypO2XB$6@zMy*Wge#l#3Ev6F|%

51D>_84O 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 swynmSVJOu)OeEGHi9GkpAW8IrXyi*|=00Eb;c +#include + +#include "detours.h" +#include "Console.h" +#include +#include +#include +#include +#include + +#pragma comment(lib, "detours.lib") +#pragma comment(lib, "ntdll.lib") + +#pragma region Utils + +wchar_t steamAPI_Path[MAX_PATH]; +wchar_t steamAPI64_Path[MAX_PATH]; +bool steamAPI_P = false; +bool steamAPI64_P = false; + +void PrintLog(std::string str) +{ +#ifdef _DEBUG + Console::Print(("[SteamAPICheckBypass] " + str + "\n").c_str()); +#endif + std::string logstr = "[SteamAPICheckBypass] " + str + "\n"; + int wideStrLength = MultiByteToWideChar(CP_UTF8, 0, logstr.c_str(), -1, nullptr, 0); + wchar_t* wideString = new wchar_t[wideStrLength]; + MultiByteToWideChar(CP_UTF8, 0, logstr.c_str(), -1, wideString, wideStrLength); + OutputDebugString(wideString); + delete[] wideString; +} + +HANDLE(WINAPI* OrigCreateFileW) ( + LPCWSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile) = CreateFileW; + +HANDLE(WINAPI* OrigCreateFileA) ( + LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile) = CreateFileA; + + +HANDLE WINAPI CreateFileAHook( + LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile) +{ + LPCSTR newFileName; + + std::string origpath = std::string(lpFileName); + std::transform(origpath.begin(), origpath.end(), origpath.begin(), tolower); + if ((std::string::npos != origpath.find("steam_api.dll")) && steamAPI_P) + { + PrintLog("Detected reading steam_api.dll at CreateFileA, replacing..."); + int bufferSize = WideCharToMultiByte(CP_UTF8, 0, steamAPI_Path, -1, NULL, 0, NULL, NULL); + LPSTR ansiString = new char[bufferSize]; + WideCharToMultiByte(CP_UTF8, 0, steamAPI_Path, -1, ansiString, bufferSize, NULL, NULL); + newFileName = ansiString; + } + else if ((std::string::npos != origpath.find("steam_api64.dll")) && steamAPI64_P) + { + PrintLog("Detected reading steam_api64.dll at CreateFileA, replacing..."); + int bufferSize = WideCharToMultiByte(CP_UTF8, 0, steamAPI64_Path, -1, NULL, 0, NULL, NULL); + LPSTR ansiString = new char[bufferSize]; + WideCharToMultiByte(CP_UTF8, 0, steamAPI64_Path, -1, ansiString, bufferSize, NULL, NULL); + newFileName = ansiString; + } + else + { + newFileName = lpFileName; + } + + return OrigCreateFileA(newFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); +} + +HANDLE WINAPI CreateFileWHook( + LPCWSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile) +{ + LPCWSTR newFileName; + + size_t len = wcslen(lpFileName) + 1; + size_t convertedChars = 0; + char* mbstr = new char[len]; + wcstombs_s(&convertedChars, mbstr, len, lpFileName, len - 1); + std::string origpath = std::string(mbstr); + delete[] mbstr; + std::transform(origpath.begin(), origpath.end(), origpath.begin(), tolower); + if ((std::string::npos != origpath.find("steam_api.dll")) && steamAPI_P) + { + PrintLog("Detected reading steam_api.dll at CreateFileW, replacing..."); + newFileName = steamAPI_Path; + } + else if ((std::string::npos != origpath.find("steam_api64.dll")) && steamAPI64_P) + { + PrintLog("Detected reading steam_api64.dll at CreateFileW, replacing..."); + newFileName = steamAPI64_Path; + } + else + { + newFileName = lpFileName; + } + + return OrigCreateFileW(newFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); +} + + +void LoadHook() +{ + PrintLog("Starting to hook CreateFile APIs..."); + + DetourRestoreAfterWith(); + DetourTransactionBegin(); + DetourUpdateThread(GetCurrentThread()); + DetourAttach(&(PVOID&)OrigCreateFileA, CreateFileAHook); + auto Error = DetourTransactionCommit(); + + if (Error == NO_ERROR) + PrintLog("Hooked CreateFileA"); + else + PrintLog("CreateFileA Hook Failed."); + + DetourRestoreAfterWith(); + DetourTransactionBegin(); + DetourUpdateThread(GetCurrentThread()); + DetourAttach(&(PVOID&)OrigCreateFileW, CreateFileWHook); + Error = DetourTransactionCommit(); + + if (Error == NO_ERROR) + PrintLog("Hooked CreateFileW"); + else + PrintLog("CreateFileW Hook Failed."); +} + +bool isFileExist(const wchar_t* fileName) { + HANDLE hFile = CreateFileW(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile != INVALID_HANDLE_VALUE) { + CloseHandle(hFile); + return true; + } + return false; +} + +void Checkfile() +{ + PrintLog("Checking Original Steam_API(64) files..."); + + wchar_t exePath[MAX_PATH]; + GetModuleFileNameW(NULL, exePath, MAX_PATH); + + // Extract the directory from the full path + wchar_t* lastBackslash = wcsrchr(exePath, L'\\'); + if (lastBackslash != nullptr) { + *lastBackslash = L'\0'; // Null-terminate to get the directory path + } + + // Construct file paths based on the executable path + wchar_t steamAPI_ORG[MAX_PATH]; + wcscpy_s(steamAPI_ORG, MAX_PATH, exePath); + wcscat_s(steamAPI_ORG, MAX_PATH, L"\\steam_api.org"); + + wchar_t steamAPI_BAK[MAX_PATH]; + wcscpy_s(steamAPI_BAK, MAX_PATH, exePath); + wcscat_s(steamAPI_BAK, MAX_PATH, L"\\steam_api.dll.bak"); + + wchar_t steamAPI64_ORG[MAX_PATH]; + wcscpy_s(steamAPI64_ORG, MAX_PATH, exePath); + wcscat_s(steamAPI64_ORG, MAX_PATH, L"\\steam_api64.org"); + + wchar_t steamAPI64_BAK[MAX_PATH]; + wcscpy_s(steamAPI64_BAK, MAX_PATH, exePath); + wcscat_s(steamAPI64_BAK, MAX_PATH, L"\\steam_api64.dll.bak"); + + + bool SteamAPI_ORG = isFileExist(steamAPI_ORG); + bool SteamAPI_BAK = isFileExist(steamAPI_BAK); + bool SteamAPI64_ORG = isFileExist(steamAPI64_ORG); + bool SteamAPI64_BAK = isFileExist(steamAPI64_BAK); + + if (SteamAPI_BAK) + { + PrintLog("Found steam_api.dll.bak."); + steamAPI_P = true; + wcscpy_s(steamAPI_Path, MAX_PATH, steamAPI_BAK); + } + + if (SteamAPI_ORG) + { + PrintLog("Found steam_api.org."); + steamAPI_P = true; + wcscpy_s(steamAPI_Path, MAX_PATH, steamAPI_ORG); + } + + if (SteamAPI64_BAK) + { + PrintLog("Found steam_api64.dll.bak."); + steamAPI64_P = true; + wcscpy_s(steamAPI64_Path, MAX_PATH, steamAPI64_BAK); + } + + if (SteamAPI64_ORG) + { + PrintLog("Found steam_api64.org."); + steamAPI64_P = true; + wcscpy_s(steamAPI64_Path, MAX_PATH, steamAPI64_ORG); + } +} + +BOOL APIENTRY DllMain(HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved +) +{ + LONG Error; + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + +#ifdef _DEBUG + Console::Attach(); +#endif + + PrintLog("Steam API Check Bypass dll Loaded."); + Checkfile(); + LoadHook(); + + case DLL_PROCESS_DETACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + break; + } + return TRUE; +} + +extern "C" __declspec(dllexport) void SteamAPICheckBypass() {}; \ No newline at end of file diff --git a/SteamAPICheckBypass/framework.h b/SteamAPICheckBypass/framework.h new file mode 100644 index 0000000..80cbbc9 --- /dev/null +++ b/SteamAPICheckBypass/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 +// Windows 头文件 +#include diff --git a/SteamAPICheckBypass/pch.cpp b/SteamAPICheckBypass/pch.cpp new file mode 100644 index 0000000..331e647 --- /dev/null +++ b/SteamAPICheckBypass/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" \ No newline at end of file diff --git a/SteamAPICheckBypass/pch.h b/SteamAPICheckBypass/pch.h new file mode 100644 index 0000000..f693f3b --- /dev/null +++ b/SteamAPICheckBypass/pch.h @@ -0,0 +1,6 @@ +#ifndef PCH_H +#define PCH_H + +#include "framework.h" + +#endif //PCH_H diff --git a/VersionShim/.gitignore b/VersionShim/.gitignore new file mode 100644 index 0000000..b43ba3e --- /dev/null +++ b/VersionShim/.gitignore @@ -0,0 +1,4 @@ +.vs/ +.idea/ +x64/ +*.user \ No newline at end of file diff --git a/VersionShim/LICENSE b/VersionShim/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/VersionShim/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/VersionShim/README.md b/VersionShim/README.md new file mode 100644 index 0000000..060e610 --- /dev/null +++ b/VersionShim/README.md @@ -0,0 +1,19 @@ +VersionShim +=========== +A Dynamic-Link Library which exports the same methods as version.dll (winver.h) in addition to chainloading additional user defined libraries. + +Usage +----- +Rename VersionShim.dll to `version.dll` and place it in the target process's search location, +then create a file named `libraries.txt` in the same directory and list the paths to all the libraries you'd like to load, +each on a new line. + +You can optionally select the target process(es) by listing its path or filename, each on a new line preceded by `*`. These must come before the library paths. + +Lines beginning with `#` will be skipped. + +libraries.txt *MUST* be encoded in UTF-8. + +License +------- +This project is subject to the terms of the [Mozilla Public License, v. 2.0](./LICENSE). \ No newline at end of file diff --git a/VersionShim/VersionShim.sln b/VersionShim/VersionShim.sln new file mode 100644 index 0000000..57f3bd8 --- /dev/null +++ b/VersionShim/VersionShim.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33209.295 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VersionShim", "VersionShim\VersionShim.vcxproj", "{7D2E1375-BF0B-49EF-BBA8-C134A347F1C7}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{39DCA191-5807-42D8-A66A-373FBE7F5EA9}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + LICENSE = LICENSE + README.md = README.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7D2E1375-BF0B-49EF-BBA8-C134A347F1C7}.Debug|x64.ActiveCfg = Debug|x64 + {7D2E1375-BF0B-49EF-BBA8-C134A347F1C7}.Debug|x64.Build.0 = Debug|x64 + {7D2E1375-BF0B-49EF-BBA8-C134A347F1C7}.Release|x64.ActiveCfg = Release|x64 + {7D2E1375-BF0B-49EF-BBA8-C134A347F1C7}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {577CC093-ACE1-4DFE-BC2F-AAD2A3A7FF00} + EndGlobalSection +EndGlobal diff --git a/VersionShim/VersionShim/VersionShim.vcxproj b/VersionShim/VersionShim/VersionShim.vcxproj new file mode 100644 index 0000000..fb61af6 --- /dev/null +++ b/VersionShim/VersionShim/VersionShim.vcxproj @@ -0,0 +1,84 @@ + + + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {7d2e1375-bf0b-49ef-bba8-c134a347f1c7} + VersionShim + 10.0 + VersionShim + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + Level3 + true + _DEBUG;VERSIONSHIM_EXPORTS;_WINDOWS;_USRDLL;PROJECT_NAME="$(ProjectName)";%(PreprocessorDefinitions) + true + Create + pch.h + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;VERSIONSHIM_EXPORTS;_WINDOWS;_USRDLL;PROJECT_NAME="$(ProjectName)";%(PreprocessorDefinitions) + true + Create + pch.h + + + Windows + true + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/VersionShim/VersionShim/VersionShim.vcxproj.filters b/VersionShim/VersionShim/VersionShim.vcxproj.filters new file mode 100644 index 0000000..533c30d --- /dev/null +++ b/VersionShim/VersionShim/VersionShim.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/VersionShim/VersionShim/dllmain.c b/VersionShim/VersionShim/dllmain.c new file mode 100644 index 0000000..6c509b5 --- /dev/null +++ b/VersionShim/VersionShim/dllmain.c @@ -0,0 +1,85 @@ +// Copyright © 2023 Xpl0itR +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include "pch.h" +#include "util.h" + +#pragma region Forward functions to system version.dll +#pragma comment(linker, "/EXPORT:GetFileVersionInfoA=c:\\windows\\system32\\version.GetFileVersionInfoA") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoByHandle=c:\\windows\\system32\\version.GetFileVersionInfoByHandle") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoExA=c:\\windows\\system32\\version.GetFileVersionInfoExA") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoExW=c:\\windows\\system32\\version.GetFileVersionInfoExW") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoSizeA=c:\\windows\\system32\\version.GetFileVersionInfoSizeA") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoSizeExA=c:\\windows\\system32\\version.GetFileVersionInfoSizeExA") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoSizeExW=c:\\windows\\system32\\version.GetFileVersionInfoSizeExW") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoSizeW=c:\\windows\\system32\\version.GetFileVersionInfoSizeW") +#pragma comment(linker, "/EXPORT:GetFileVersionInfoW=c:\\windows\\system32\\version.GetFileVersionInfoW") +#pragma comment(linker, "/EXPORT:VerFindFileA=c:\\windows\\system32\\version.VerFindFileA") +#pragma comment(linker, "/EXPORT:VerFindFileW=c:\\windows\\system32\\version.VerFindFileW") +#pragma comment(linker, "/EXPORT:VerInstallFileA=c:\\windows\\system32\\version.VerInstallFileA") +#pragma comment(linker, "/EXPORT:VerInstallFileW=c:\\windows\\system32\\version.VerInstallFileW") +#pragma comment(linker, "/EXPORT:VerLanguageNameA=c:\\windows\\system32\\version.VerLanguageNameA") +#pragma comment(linker, "/EXPORT:VerLanguageNameW=c:\\windows\\system32\\version.VerLanguageNameW") +#pragma comment(linker, "/EXPORT:VerQueryValueA=c:\\windows\\system32\\version.VerQueryValueA") +#pragma comment(linker, "/EXPORT:VerQueryValueW=c:\\windows\\system32\\version.VerQueryValueW") +#pragma endregion + +BOOL APIENTRY DllMain(CONST HMODULE hModule, CONST DWORD fdwReason, CONST LPVOID lpvReserved) +{ + if (fdwReason != DLL_PROCESS_ATTACH) + return TRUE; + + LPSTR fileStr = NULL; + DWORD fileLen = 0; + + if (!OpenReadFileUtf8("libraries.txt", &fileStr, &fileLen)) + { + MessageBoxA(NULL, "Failed to read libraries.txt", PROJECT_NAME, ErrBoxType); + return TRUE; + } + + LPSTR callerPath[MAX_PATH + 1]; + if (!GetModuleFileNameA(NULL, callerPath, MAX_PATH + 1)) // NOLINT(clang-diagnostic-incompatible-pointer-types) + { + MessageBoxA(NULL, "Failed to read caller path", PROJECT_NAME, ErrBoxType); + return TRUE; + } + + int read, hasTarget = FALSE, targetMatched = FALSE; + for (LPSTR line = SkipBomUtf8(fileStr), fileEnd = fileStr + fileLen; line < fileEnd; line += read) + { + read = TerminateLine(line); + + if (*line == '#') + continue; + + if (*line == '*') + { + if (!targetMatched) + { + hasTarget = TRUE; + + if (StrEndsWith(callerPath, line + 1)) // NOLINT(clang-diagnostic-incompatible-pointer-types) + { + targetMatched = TRUE; + } + } + + continue; + } + + if (hasTarget && !targetMatched) + return TRUE; + + if (!LoadLibraryA(line)) + { + MessageBoxA(NULL, line, PROJECT_NAME" - Failed to load library", ErrBoxType); + } + } + + HeapFree(GetProcessHeap(), 0, fileStr); + return TRUE; +} \ No newline at end of file diff --git a/VersionShim/VersionShim/pch.c b/VersionShim/VersionShim/pch.c new file mode 100644 index 0000000..b47bfa5 --- /dev/null +++ b/VersionShim/VersionShim/pch.c @@ -0,0 +1,3 @@ +// pch.c: source file corresponding to the pre-compiled header +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. +#include "pch.h" \ No newline at end of file diff --git a/VersionShim/VersionShim/pch.h b/VersionShim/VersionShim/pch.h new file mode 100644 index 0000000..e078cbf --- /dev/null +++ b/VersionShim/VersionShim/pch.h @@ -0,0 +1,10 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#pragma once + +#define WIN32_LEAN_AND_MEAN +#include \ No newline at end of file diff --git a/VersionShim/VersionShim/util.c b/VersionShim/VersionShim/util.c new file mode 100644 index 0000000..4b4f5e5 --- /dev/null +++ b/VersionShim/VersionShim/util.c @@ -0,0 +1,93 @@ +// Copyright © 2023 Xpl0itR +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include "pch.h" + +static BOOL OpenFileRead(CONST LPCSTR lpFileName, CONST LPHANDLE fileHandle) +{ + OFSTRUCT ofStruct; + HFILE hFile = OpenFile(lpFileName, &ofStruct, OF_READ | OF_PROMPT); + + *fileHandle = (HANDLE)(INT_PTR)hFile; // NOLINT(performance-no-int-to-ptr) + return hFile != HFILE_ERROR; +} + +static BOOL ReadFileUtf8(CONST HANDLE fileHandle, LPSTR* fileString, CONST LPDWORD fileLength) +{ + DWORD fileLen = GetFileSize(fileHandle, NULL); + *fileLength = fileLen; + + HANDLE heap = GetProcessHeap(); + LPSTR buffer = HeapAlloc(heap, 0, fileLen + 1); + if (!buffer) + return FALSE; + + if (!ReadFile(fileHandle, buffer, fileLen, NULL, NULL)) + { + HeapFree(heap, 0, buffer); + return FALSE; + } + + buffer[fileLen] = '\0'; + *fileString = buffer; + + return TRUE; +} + +BOOL OpenReadFileUtf8(CONST LPCSTR lpFileName, LPSTR* fileString, CONST LPDWORD fileLength) +{ + HANDLE hFile = NULL; + if (!OpenFileRead(lpFileName, &hFile)) + return FALSE; + + BOOL success = ReadFileUtf8(hFile, fileString, fileLength); + CloseHandle(hFile); + + return success; +} + +BOOL StrEndsWith(CONST LPSTR str, CONST LPSTR target) +{ + DWORD strLen = lstrlenA(str), targetLen = lstrlenA(target); + + if (strLen < targetLen) + return FALSE; + + return lstrcmpA(str + strLen - targetLen, target) == 0; +} + +LPSTR SkipBomUtf8(CONST LPSTR str) +{ + if (str[0] == (char)0xEF + && str[1] == (char)0xBB + && str[2] == (char)0xBF) + { + return str + 3; + } + + return str; +} + +INT TerminateLine(CONST LPSTR str) +{ + for (INT i = 0;; i++) + { + if (str[i] == '\0') + return i + 1; + + if (str[i] == '\r' || str[i] == '\n') + { + str[i] = '\0'; + + if (str[i + 1] == '\n') + { + str[++i] = '\0'; + } + + return i + 1; + } + } +} \ No newline at end of file diff --git a/VersionShim/VersionShim/util.h b/VersionShim/VersionShim/util.h new file mode 100644 index 0000000..1cb4e29 --- /dev/null +++ b/VersionShim/VersionShim/util.h @@ -0,0 +1,8 @@ +#pragma once + +UINT ErrBoxType = MB_ICONERROR | MB_TOPMOST; + +BOOL OpenReadFileUtf8(LPCSTR lpFileName, LPSTR* fileBuffer, LPDWORD fileLength); +BOOL StrEndsWith(LPSTR str, LPSTR target); +LPSTR SkipBomUtf8(LPSTR str); +INT TerminateLine(LPSTR str); \ No newline at end of file