From abc7730d94238d9fe62b62e908d1aac2e80863b8 Mon Sep 17 00:00:00 2001 From: meishibiezb <750783119@qq.com> Date: Sun, 15 Mar 2026 00:56:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Content/Blueprints/BP_TestChar.uasset | 4 +- Content/Blueprints/BP_TestCtl.uasset | 4 +- Content/Inputs/IA/IA_MoveAction.uasset | 3 + Content/Inputs/IMC/IMC_Context.uasset | 3 + Content/地图关卡/Map_City.umap | 4 +- Plugins/VisualStudioTools/.gitignore | 421 +++++++++++++ Plugins/VisualStudioTools/CODE_OF_CONDUCT.md | 9 + Plugins/VisualStudioTools/CONTRIBUTING.md | 49 ++ .../VisualStudioTools/Config/FilterPlugin.ini | 9 + .../Docs/Marketplace_Readme.md | 57 ++ .../VisualStudioTools/Docs/Troubleshooting.md | 55 ++ ... Studio Integration Tool Documentation.pdf | Bin 0 -> 232900 bytes .../Docs/images/configuration_page.png | Bin 0 -> 87093 bytes .../Docs/images/ide_support_ue.png | Bin 0 -> 10657 bytes .../Docs/images/test_explorer.png | Bin 0 -> 61011 bytes .../Docs/images/test_options.png | Bin 0 -> 103887 bytes Plugins/VisualStudioTools/LICENSE | 22 + Plugins/VisualStudioTools/README.md | 116 ++++ Plugins/VisualStudioTools/SECURITY.md | 41 ++ Plugins/VisualStudioTools/SUPPORT.md | 13 + .../Scripts/Package-Plugin.ps1 | 43 ++ .../Scripts/SignDetached.proj | 19 + .../VisualStudioTools/Scripts/packages.config | 4 + .../VisualStudioTools/Source/.editorconfig | 91 +++ ...ualStudioBlueprintDebuggerHelperModule.cpp | 246 ++++++++ ...isualStudioBlueprintDebuggerHelperModule.h | 29 + ...sualStudioBlueprintDebuggerHelper.Build.cs | 31 + .../Private/BlueprintAssetHelper.cpp | 113 ++++ .../Private/BlueprintAssetHelpers.h | 26 + .../Private/BlueprintReferencesCommandlet.cpp | 248 ++++++++ .../Private/BlueprintReferencesCommandlet.h | 25 + .../VisualStudioTools/Private/FSmartBSTR.h | 63 ++ .../Private/VSServerCommandlet.cpp | 118 ++++ .../Private/VSServerCommandlet.h | 29 + .../Private/VSTestAdapterCommandlet.cpp | 288 +++++++++ .../Private/VSTestAdapterCommandlet.h | 28 + .../Private/VisualStudioTools.cpp | 19 + ...tudioToolsBlueprintBreakpointExtension.cpp | 576 ++++++++++++++++++ ...lStudioToolsBlueprintBreakpointExtension.h | 64 ++ .../Private/VisualStudioToolsCommandlet.cpp | 492 +++++++++++++++ .../Private/VisualStudioToolsCommandlet.h | 24 + .../VisualStudioToolsCommandletBase.cpp | 88 +++ .../Private/VisualStudioToolsCommandletBase.h | 29 + .../Public/VisualStudioTools.h | 7 + .../VisualStudioTools.Build.cs | 77 +++ .../VisualStudioTools.uplugin | 38 ++ ...rt-extra-UBT-args-in-UAT.BuildPlugin.patch | 46 ++ .../azure-pipelines/TSAOptions.json | 21 + .../azure-pipelines/compliance.yml | 123 ++++ .../azure-pipelines/release.yml | 117 ++++ Plugins/VisualStudioTools/build.proj | 24 + Source/lonese/MyCharacter.cpp | 20 +- Source/lonese/MyCharacter.h | 10 +- 53 files changed, 3974 insertions(+), 12 deletions(-) create mode 100644 Content/Inputs/IA/IA_MoveAction.uasset create mode 100644 Content/Inputs/IMC/IMC_Context.uasset create mode 100644 Plugins/VisualStudioTools/.gitignore create mode 100644 Plugins/VisualStudioTools/CODE_OF_CONDUCT.md create mode 100644 Plugins/VisualStudioTools/CONTRIBUTING.md create mode 100644 Plugins/VisualStudioTools/Config/FilterPlugin.ini create mode 100644 Plugins/VisualStudioTools/Docs/Marketplace_Readme.md create mode 100644 Plugins/VisualStudioTools/Docs/Troubleshooting.md create mode 100644 Plugins/VisualStudioTools/Docs/Visual Studio Integration Tool Documentation.pdf create mode 100644 Plugins/VisualStudioTools/Docs/images/configuration_page.png create mode 100644 Plugins/VisualStudioTools/Docs/images/ide_support_ue.png create mode 100644 Plugins/VisualStudioTools/Docs/images/test_explorer.png create mode 100644 Plugins/VisualStudioTools/Docs/images/test_options.png create mode 100644 Plugins/VisualStudioTools/LICENSE create mode 100644 Plugins/VisualStudioTools/README.md create mode 100644 Plugins/VisualStudioTools/SECURITY.md create mode 100644 Plugins/VisualStudioTools/SUPPORT.md create mode 100644 Plugins/VisualStudioTools/Scripts/Package-Plugin.ps1 create mode 100644 Plugins/VisualStudioTools/Scripts/SignDetached.proj create mode 100644 Plugins/VisualStudioTools/Scripts/packages.config create mode 100644 Plugins/VisualStudioTools/Source/.editorconfig create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/VisualStudioBlueprintDebuggerHelper.Build.cs create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelper.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelpers.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/FSmartBSTR.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioTools.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.cpp create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/Public/VisualStudioTools.h create mode 100644 Plugins/VisualStudioTools/Source/VisualStudioTools/VisualStudioTools.Build.cs create mode 100644 Plugins/VisualStudioTools/VisualStudioTools.uplugin create mode 100644 Plugins/VisualStudioTools/azure-pipelines/Support-extra-UBT-args-in-UAT.BuildPlugin.patch create mode 100644 Plugins/VisualStudioTools/azure-pipelines/TSAOptions.json create mode 100644 Plugins/VisualStudioTools/azure-pipelines/compliance.yml create mode 100644 Plugins/VisualStudioTools/azure-pipelines/release.yml create mode 100644 Plugins/VisualStudioTools/build.proj diff --git a/Content/Blueprints/BP_TestChar.uasset b/Content/Blueprints/BP_TestChar.uasset index 65b54e8..f825d16 100644 --- a/Content/Blueprints/BP_TestChar.uasset +++ b/Content/Blueprints/BP_TestChar.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7eb6a63b18aea75ec12cc858e7ca54993a6c21b439cb22c46d6f991320b06d6f -size 72951 +oid sha256:7cee5c08660418e74ed699ffc2467c3e8f04b9c044b25527a1e23611ad7aa453 +size 36236 diff --git a/Content/Blueprints/BP_TestCtl.uasset b/Content/Blueprints/BP_TestCtl.uasset index 365d682..1506592 100644 --- a/Content/Blueprints/BP_TestCtl.uasset +++ b/Content/Blueprints/BP_TestCtl.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae30dc9d254e57dabce747121b874daced93909023b2cb536cc46cfea4f65c7a -size 64872 +oid sha256:00245e635d260d624275930f39a423379193f5e093a7529958e67f7a82186756 +size 19656 diff --git a/Content/Inputs/IA/IA_MoveAction.uasset b/Content/Inputs/IA/IA_MoveAction.uasset new file mode 100644 index 0000000..082a453 --- /dev/null +++ b/Content/Inputs/IA/IA_MoveAction.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4053c8ea76d600427afce479743b9eee28706ee5bb242957440779f764bcbfcf +size 1368 diff --git a/Content/Inputs/IMC/IMC_Context.uasset b/Content/Inputs/IMC/IMC_Context.uasset new file mode 100644 index 0000000..c85dbb2 --- /dev/null +++ b/Content/Inputs/IMC/IMC_Context.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16c09456d7dca23b046cb9540b811211cea1afbe8b6038bd72bbcec1089e7885 +size 4410 diff --git a/Content/地图关卡/Map_City.umap b/Content/地图关卡/Map_City.umap index 14e164c..97afbd1 100644 --- a/Content/地图关卡/Map_City.umap +++ b/Content/地图关卡/Map_City.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66924ce9555447343b3483cf7c97fe53a7e473bad1593e78bcbce1c483f1d2dc -size 902481 +oid sha256:fdc4b0f23f3e211035f4d02ca5f6be48d2c8422c6dade1767187279fbb591905 +size 905654 diff --git a/Plugins/VisualStudioTools/.gitignore b/Plugins/VisualStudioTools/.gitignore new file mode 100644 index 0000000..15e4cf7 --- /dev/null +++ b/Plugins/VisualStudioTools/.gitignore @@ -0,0 +1,421 @@ +## Based on VisualStudio and UnrealEngine templates +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +## Get latest from https://github.com/github/gitignore/blob/main/UnrealEngine.gitignore + +## 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/ + +## UnrealEngine.gitignore + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.xcworkspace +*.opensdf +*.sdf + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* diff --git a/Plugins/VisualStudioTools/CODE_OF_CONDUCT.md b/Plugins/VisualStudioTools/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f9ba8cf --- /dev/null +++ b/Plugins/VisualStudioTools/CODE_OF_CONDUCT.md @@ -0,0 +1,9 @@ +# Microsoft Open Source Code of Conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +Resources: + +- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns diff --git a/Plugins/VisualStudioTools/CONTRIBUTING.md b/Plugins/VisualStudioTools/CONTRIBUTING.md new file mode 100644 index 0000000..51f9942 --- /dev/null +++ b/Plugins/VisualStudioTools/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit . + +When you submit a pull request, a CLA bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +## Code Style Guide + +The code in the repo follows the existing code conventions described in the Unreal Engine's [Code Standard document](https://docs.unrealengine.com/INT/epic-cplusplus-coding-standard-for-unreal-engine/). The `.editorconfig` file at the source root is used for Visual Studio to check the conventions and report violations. + +## Pull Requests + +When submitting a pull request, make sure that it has a clean build using the instructions below. A core contributor will review your pull request and provide feedback. Once all the feedback is addressed and the PR is approved, we will merge the changes. + +## Build workflow +The plugin source can be built in isolation using the command below (which wrap the RunUAT.bat script) to ensure it's correct for submition to the Unreal Engine Marketplace. + +From a Visual Studio Developer Prompt (or PowerShell Dev Prompt), run the following: + +```cmd +> msbuild -p:UnrealEngine=[path_or_version] -p:OutputPath=[absolute_path] +`````` + +- `UnrealEngine` can be either a path to a source build (e.g. `c:\src\ue`) or a version identifier for an installed engine (e.g. `4.27`, `5.2`). +- `OutputPath` cannot be under the Unreal Engine's folder due to a restriction from `RunUAT.bat`. + +> Note: The contents of `OutputPath` will be overwritten! + +By default the script will disable Unity Builds in the plugin modules to catch errors from cpp files not including all the required headers. It does not affect the build of other targets and modules. + +## Unity build errors + +If you get errors due to unity build problems, you get the same errors in Visual Studio by generating the solution with the command below. This will allow Visual Studio to suggest the includes as code fixes. Note that this will overwrite any existing solution and projects that are already present. + +```powershell +$env:VSTUE_IsCustomDevBuild=1; & "C:\Program Files\Epic Games\UE_5.2\Engine\Build\BatchFiles\Build.bat" -projectfiles -project="full_path_to_game.uproject" -game +``` + +The module rules for the plugin check the enviroment variable above to use the more strict include settings. + + diff --git a/Plugins/VisualStudioTools/Config/FilterPlugin.ini b/Plugins/VisualStudioTools/Config/FilterPlugin.ini new file mode 100644 index 0000000..66565e7 --- /dev/null +++ b/Plugins/VisualStudioTools/Config/FilterPlugin.ini @@ -0,0 +1,9 @@ +[FilterPlugin] +; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and +; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively. +; +; Examples: +; /README.txt +; /Extras/... +; /Binaries/ThirdParty/*.dll +/Docs/... diff --git a/Plugins/VisualStudioTools/Docs/Marketplace_Readme.md b/Plugins/VisualStudioTools/Docs/Marketplace_Readme.md new file mode 100644 index 0000000..cdb575c --- /dev/null +++ b/Plugins/VisualStudioTools/Docs/Marketplace_Readme.md @@ -0,0 +1,57 @@ +# Visual Studio Integration Tool + +Visual Studio Integration Tool is an Unreal Engine plugin that works in conjunction with Visual Studio to display information about Blueprints assets in C++ code (requires Visual Studio 2022 17.4 or later). + +## Installing + +### Visual Studio + +The tool requires the `Visual Studio Tools for Unreal Engine` component from Visual Studio to be installed. You can find it under the "Game development with C++" workload in the Visual Studio Installer (figure 1). + +![figure 1](./images/ide_support_ue.png) \ +*Figure 1 - Installing the Visual Studio component* + +### Unreal Engine + You can install the plugin in a couple of ways: + + - Through the Epic Games Launcher: + - Select the "Install to Engine" option within the Launcher. From there, you can select an engine version for installation. + - If you're using the Marketplace website, you can add the plugin to your account and you will have an option to open the Launcher in order to install it as detailed above. + - If you already added the plugin to your account, go Library -> Vault in the and locate the plugin there. + + - Through source distribution: + - If you're unable to use the Marketplace-based distribution (e.g. you're building the Unreal Engine from source), then you can install the plugin manually by following the instructions found at + +## Enabling the plugin + +- Through the Unreal Editor + - Open your project and then use the Plugin Manager to enable "VisualStudioTools". + - See [official documentation](https://docs.unrealengine.com/INT/working-with-plugins-in-unreal-engine/) for more information on how to install and enable plugins. +- (Advanced) Alternatively, you can manually edit the '.uproject' descriptor for your project and add an entry for the "VisualStudioTools" plugin. + +## Usage + +Test discovery in Visual Studio 2022 + +1. Begin by installing and enabling the `Visual Studio Tools for Unreal Engine` plugin. +2. Open your solution in Visual Studio. +3. Click on the Test Explorer to show a pop-up that will display available tests. (figure 3). +4. You can find the logs from the plugin execution in the Tests Output Window. +5. To refresh your filters for test discovery, you can select the "Options > Unreal Engine > Test Adapter" option under the "Tests" menu. (figure 4) + +![figure 2](./images/configuration_page.png) \ +*Figure 2 - Unreal Engine project Configuration Page + +![figure 3](./images/test_explorer.png) \ +*Figure 3 - Menu to rescan the blueprint assets in the game project* + +![figure 4](./images/test_options.png) \ +*Figure 3 - Menu to change options for Tests Discovery + +## Troubleshooting + +If you encounter any issues when setting up Visual Studio in conjunction with the Unreal Editor plugin, please refer to the [Troubleshooting](https://github.com/microsoft/vc-ue-extensions/blob/main/Docs/Troubleshooting.md) guide in the repository. This guide provides solutions for common issues and is periodically updated to ensure that the latest solutions are available. + +## Reporting issues + +To report new issues, provide feedback, or request new features, please use the following options: [Report a Problem](https://aka.ms/feedback/cpp/unrealengine/report) and [Suggest a Feature](https://aka.ms/feedback/cpp/unrealengine/suggest). These options will allow you to submit your issue or feedback directly to our team and help us improve the plugin moving forward. \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Docs/Troubleshooting.md b/Plugins/VisualStudioTools/Docs/Troubleshooting.md new file mode 100644 index 0000000..3f06739 --- /dev/null +++ b/Plugins/VisualStudioTools/Docs/Troubleshooting.md @@ -0,0 +1,55 @@ +# Troubleshooting guide + +This document describes some of the errors that might happen in the integration with the Unreal Engine and potential ways to mitigate them. + +The integration works by Visual Studio being able to invoke the `VisualStudioTools` plugin using the Unreal Editor executable in commandlet mode. That means the following must be true: + +- The `Visual Studio Tools for Unreal Engine` component from Visual Studio must be installed. You can find it under the "Game Development with C++" workload in the VS Installer. +- The game project must be built in a Editor target (e.g., `"Development_Editor"`). +- The `VisualStudioTools` plugin must be enabled for the project, either explicitly in the .uproject descriptor file or be enabled by default to all projects if installed at the as an engine plugin (via the `"EnabledByDefault=true"` entry in the .uplugin file). +- Starting on version 17.5, Visual Studio will wait to scan the game project until a file with the `UCLASS/UPROPERTY/UFUNCTION` macros is opened and the Code Lens hints are requested. +- At the moment, the Code Lens hints will only be displayed for game projects. In particular, the files in the _engine_ project of the solution (with name like "UE4" or "UE5") will not display the hints yet. + +## Code Lens are not visible + +### Verify the required VS component is installed + +In recent versions of UE, the generated solution comes with a `.vsconfig` file, which allows right-clicking on the Solution in VS and selecting "Install Missing Feature(s)". The component is part of the "Game Development with C++" workload. + +You can also see this [help page](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=vs-2022#step-4---choose-workloads) about installing features using the Visual Studio installer. + +### Check if the opened documents have any class decorated with the Unreal macros + +For real world projects, scanning the blueprints information might take several seconds and be expensive in terms of machine resources. Visual Studio will only start the operation when the Code Lens are rendered. That means it will wait until a file from the game project with the Unreal macros is opened in the editor. + +### Check if a `cpp.hint` file is redefining the relevant Unreal macros + +Some projects might have a cpp.hint file that includes the `UCLASS`, `UPROPERTY`, `UFUNCTION` macros. That might suppress the new logic in Visual Studio that uses the macros to display the Code Lens hints. + +If that is the case, you can remove those macros from the hint file, save it and try reloading the project. + +Note that other macros in the hint file can be left as-is and do not affect the Code Lens hints. + +### Ensure the C++ Database is enabled + +In Tools > Options > Text Editor > C/C++ > Advanced > Browsing/Navigation, the setting "Disable Database" should be set to "False". This is the default value of this setting. + +## Errors showing up in the Output Window and/or Task Center notification + +### Message "LogInit: Error: VisualStudioToolsCommandlet looked like a commandlet, but we could not find the class." + +Possible causes are the plugin not being installed correctly or installed but not yet enabled for the game project (which is required on installation from the Marketplace). + +- See [this section](../README.md#building-and-installing) for installation instructions. + +- See [this section](../README.md#optional-enabling-the-plugin) for instructions on how to enable the plugin. + +### Message "Command finished with exit code 1" without other errors + +Either the game project or the plugin DLL is not yet built. Rebuilding the project should ensure they are available. Then manually rescan the game project using the `Project > Rescan UE Blueprints` menu. + +### Task Center error: "Your task failed with the message: Could not find a part of the path...' + +This was a known issue when trying to locate the path the Unreal Editor executable, fixed in Visual Studio 17.5-Preview3. This usually happens when the selected Configuration in VS is not one with an "Editor" target. + +A workaround is to switch to such configuration and manually rescan the game project using the `Project > Rescan UE Blueprints` menu. diff --git a/Plugins/VisualStudioTools/Docs/Visual Studio Integration Tool Documentation.pdf b/Plugins/VisualStudioTools/Docs/Visual Studio Integration Tool Documentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..edcdfc42fe5cb9a86694c820beeceb46e8840d82 GIT binary patch literal 232900 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

()!~8 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 z

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 FKL8g8?|T3M literal 0 HcmV?d00001 diff --git a/Plugins/VisualStudioTools/Docs/images/ide_support_ue.png b/Plugins/VisualStudioTools/Docs/images/ide_support_ue.png new file mode 100644 index 0000000000000000000000000000000000000000..2216c0c6ef06f9da92edc73782b30a67e6403265 GIT binary patch literal 10657 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 B7<~W$ literal 0 HcmV?d00001 diff --git a/Plugins/VisualStudioTools/Docs/images/test_explorer.png b/Plugins/VisualStudioTools/Docs/images/test_explorer.png new file mode 100644 index 0000000000000000000000000000000000000000..e72d9b5117f6ad47e05cd14f3adda743b9e0852d GIT binary patch literal 61011 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 literal 0 HcmV?d00001 diff --git a/Plugins/VisualStudioTools/Docs/images/test_options.png b/Plugins/VisualStudioTools/Docs/images/test_options.png new file mode 100644 index 0000000000000000000000000000000000000000..3a035e3d131615d95063a4d958ca5710b9640c5b GIT binary patch literal 103887 zcmcG$byQnh6gLQ^h2o{SJG6KyuEn8Hti_51hvIHQN-6H{P~4rOf#6!8XmF>f(&Btz|O}&w{mBNtn!A$D1CFwu9zuhc&qT+6m>yg{+(NNg{ZwdBg`ku zqJp>1ocnFF(i8OC_I>XRSD>ABh0%=o*lEQ6Kx`H73%q}6{3{~~f|2fD%0)K*8W{2~ zy;8=i{%=rkC^FH1Lj>M*NJ{@p1k9+~e@BO`_aI^Zol-4>#E|yy@GyK7w!fpL9cw8C zPku73WHfK`TRp?B;G`BB^N@S^R%-uj5^N2kfA|gA=e^GVhtqd|Eu7w1bFS(X%1*P_ z4z0I)B|R($@Z%W$38Jc`_R!&35z=$U+QknqysADRQ_QT?LCYorc-CJB2YjLI7s3fX zr^MNGy{SXTcR1*FU2m(I=xRLptd!z_ZLqh^HzQqCnQYB$D7ot8iATAV7Tf<*8xqW8 z=`qQ}?`uvBz047Ek!v#ahE)aV8*uK+jW1*}RwctBb5fPb=Xp!ARO?D8_nZ)w;%GGK{2`Mde54g7u+iz3=YwWSDar7HX4T(~hu-YCW1s zwqN7u@0bh;#(JkGY=qJ7L8G00H-^%>)Q5xegR0)%kB}eCFyRg35Qs9O)Id@axlBb) z+*oSw9+p-*6N!Yk|3(V2sUz0hBSi3O_Rv%%!}d}y*Nen1Q6S;iuGoDz{VBY~-N8$p ze0Zb=o^6)2wyY>voaLA0(U4&;y~BYXsQ8y)Kd@&TL&wsq$v197K_nE9%oP$dM%A_h z12KGs;XI(LaIe_|*Y5LhsV2kSEdek0+!{H~h_6HB$=TX~*0 z$e^tgH5t_uAnA}j5LR$UD?vw^(8L<`Bi4>?)S1No%dA85R|xDj2RHe^{do5S|C;$R z-;9nHWY~vwwfubTxCGtb2My|#vo^5xbU6kR4*&LLHZ*eGt644MWVtfAG`sxWXALx} zF{)?jHFYD7%m=@SAh?{Q53A0Nmpwxo7H3?;JC2!H+U#|uCR=$SZqrBkVQGC~`)LB= zg@Cl zFV$8BU^imo_a=nzcUwDNubhxa{8+(2qB_JyoZ-NjljaMOq6PK+lXxAUwiM^*5l20uCYcY zNTJZM7EbB!vg>C~s%eU)5x36){E-6vshq$%;Ty+NW@b4d}Xp7o~RK{IX%56YE@3pSI|@6(#yRJTT7(ZS_6uAHb7AK`C?*@2SMvu<>1kl`WX zX*gY3;WwsrFCCAI#C4}wtxn%@J2%HR3hXI;X9U*6CzlY|*2C7U4=L3E$}#%@fv_jG zvmEpKfc^Vafg=0}*lNy_RdL)LO0P(CYxEGT7Y8`&8z)qhl%s&VzZ{t@*aM$nuS{kO zZZe4A>4iIGih8sS@U+rzPHs$v!Stw@C&BaTc8{uR_qEl7T$-6UNJu_ezCZg>BYU9( zK}bna@^c;dUEtAaGAsAOn;J!b#&hcd-t~Dorw6ZZoBIGPYI?6aVXWq$e))oiXy!KMT zYu@(+MQKISdxa&+Zl3g;t$T*dj5B~1Z^((eom)MMvFcUEYFlI!#W@znNo3(O`Z*;R zRqS2Q#w^^veaPU?)8ht5s^koDo}7nY@R>Y^;Lp*Hxw0H8r8cgpXT!XvEWm2nOmpYV ziyuD{nJ?Dk36o0$2V@X-Ab%Lwv|U32rTenqTfTPd0~+BbP+0oGSn#}zK4(o6*FxASygPENIOn|=(K?7poOwpvzhu3Rcfxn+r1QQ- z3FMY3%r&(+Sn{#=YMEyAB2asg<^|+KE~>b+t4P1Z(C9A`_ef8&Q>z%3e(o#cxdp zoABdJ9<@qTkvO`fvIxN)%Tekbk;1qExU_O#0j{gbysGJdaL@; z1m;>A%cl*ZS9+z*Q(Bs?r5dy(nUachfwaTiZoY!4K zXyG2SxM!}>>O`p*J-uA~bBEsVu=_*UWXaTqsFT|OG*&DuV}`iIf&`oX=@)b z1F2|rLMl4%x-bMHR~1%~xnb`YL5|FeX&yhOcaJMA@DA{73meK{jG89leBKAj42&Ud zW&`2=I zunII3);pnkVldZ)Y3C?9m_;qzhUwVo*~YVz%{i_sQ@>VsB~Qk9KRA+bkpVI|Ytv9k zLC5cLbs+a;oWLoJ^@kOqjwQ~koHNuMFr!ES?R!*CDckfo_t!B9A>n)DbXCane|c0MQbtQfar@rw$o8RSiRbT7x zi@S{uPyEP6Ciw3|Nv9*hR%*LG#ha0i5D(GVil7KRpzzf7-3@t-fC$*Az~XAdI6DZ& z+#Z(csALHQr9f>1{1`GCjbt+}U`MFCi?HJaUJv8yxmw3DI?k-hlkUd*FCLZY7{OR6 z0~<_sJ*^KOkv)k7c6XDM)X%*+x=~0Rrqn49+!Z`)_YxAgtf7Df1YoBu4r8-y~%)VX5&jVo=8o7(MVE3WwJ%--BFbvMwWF^7YFe9;KTe~t>%Zx zzN+yXVXz;i-DqGC4hP1_B*E;%c8AsgY}UPEA-bzxsX^a6n+zYF*H<)FUwijTUcNkf z!9n59($WgeQQL=wPpoQwF!MP5;O#z$%U8tn&pH~~S!VP;#P#NU-8GXcy- zdmpO;*d5xGUi7E*FMa=T8rK62H;W=#@hY!MZp%B{3fXjxailV(SSs|&8*nbP$5@N5 z&Bj~wEPOwTTyP$t*Ty^bBjQc$W8)PSE z6@Q~xJ8c+PW*P^b?P%?SYqi1%Y)6wrHcguY4M200LjD^y1Y*$lmlK#p%zg=7ly44fnv%Bj&NvKT1Ju*taVsoIyJq{o=`_G=92g+5%ItpdrOfp_^I|L^^mk%F6_f>{D7`jH)TD zpytM_huAWwC^@$2y{b%pC1p4D;x&ZHwQVyT*1Oo71Q+mL z_pblL{A{%UJFqpDSEix0<|D(&b$x|&gOmZyFL*XO(*5V4$vzn$$6-{qpjq(_WQ{iE5ti8qyFG3{z>j(nnrQHgNcsK=33^F zNfqB0FZXs>=d8_sI9K(g{hq<9PC-s~0EoF{9Ut^CBi8-)6F84L?k~R)GCyhPJ!145 zv4AFuiE#L-L$uwwW83toYQ!T=FJMh?U)N(#@deLnt~f6YzQ5lc8{OIW_;nKhiwBhH zd+i?S{)k|u${ zuA1GR?0q!o|9PUNt~{}d0gnV3%m6HiA;Z>9e^NaixSIZf#(33e!*ATU;g29&Xn8i^ z5wS-lUfyFdGpDyfMpiK%_xgb{r)I}e|Kjsk%E#DvkB;s?bpAi_dGc=O#M+^Boanf= z%zr@ru9ND2g7)3<0GW1XIS_PrVg7;p4N9(lD1IBh;Z-(Lt$OC!6zg^J6$^S3JDwl-;JbZ$kNYc&UT_|jWtusKgtRohL^cZBd{Nb^KN^*4)y<*bvuvC- zwDv-uFs%c>m%_MbS^b7dio(_SD(7zibh`@YdRLbl(T=+%Me9krcAdF0;SSJD_w|Uk zqaDNmZ~vASArqAcMuo|u>aeh6!FUI9zW}RmComn4Wpm8=YxqN` zWt>Be$RzN`msT~AHL_b!o38f`b~`R2D}SFOXo({#n+qA5rTbmq@eFH1$e@E4zcMNX zH?!%SZKOjcdL|skc3)TdB~qJjM;0{Y_-WCC{D^b?4)r(-g1-tp77_?s>20K6eXV)g z76OZ_l-O#w58lhso!mWgIQdD3dmOVu=?#YEnCj^^+e_C^)-VLHB_>)soLSm;-)A(r z!TZ12d_!A;bx7q`hx_7NJ=JZxtbXo?ohI2oDGou?YHq<=M8l6X5|L!9t3 z^Y4#>#fuR_6gY6eM|JhM>qCDOv?;&fEPU~$b}gUrgeon2cbZNyT=2EaTRZpfzI&9> zhT&LNB9q)`&Y!b7F)8mbZ3axLMj+Ld-NAP^7bbq)SKGzJu*m(jatZQgmCIW89V*aI zgzc?>poI5$VZ8sJm9NC-`q8k9JBq4HH2!Myx)pzbZ!NkzLnPS|JpTzFF$_7qlWn1f z357`9^DSB{RXPimTX6qU!4nDvNbbpLmIOiih8<}9m&;*3 zQ}i6R5X{l^HcmSjhZ6fROp-Z>)5r2d%?3C;{ll^yw}8vAspsK-Ke!S|DX7vOu`o7? zBEz@v^tSk{h(zNG6Li7v7`^@4@H$gm1_-ZOC5Cw{yuhaR!K~I3z>CKL1pq+6-`aTj zxMj`Y{uh}lfN@9(ylUI;Cm%2ZbTSn0@58%~O#ckXlBxe@l^2kQ-0rD4>&-u zxgwENI~IRg_T(B?g?2!C$_U9U_HJE%TKW22=TAP+&tYaU)d*~#@#AM{+@k?hwG$`| z7fL1$->>cbHk2*3{%o9+@_`mE3ohM%6@m}XQUnV4fj{cIFloo0{XUz0s1K%3hAkx`jy}9L#+D^w$hEMEn;r7`6 zRO~BmR$lftv<7%&E2R_K_*Jyr&~Okl4?4tW0v}c%KiK}oLRg(5LdJScf1+f1M=KW z&jmJVwX{3kXgtAu`1ud7;MaiA#?_r7``$o-5clD%9t&czd}>aEMpUmK6dl5clAEj( zFQ{G6mglBTd=u{zS=IJ{}m^_v5CaM^vU=c)O0t7KefVlu#2r)_LtKox=Qeg}t`3?;no zdpQMcw&RjHD5*tLWF}na^*H`j9@=!I)_A?1Te2qImt2HNoRg#Ln-kl=5+X;PSypAO z{XN`Q8yg@_jmlGj!qU#YgxsG9d1AjW8N7$TsP)mp&~DPC>F`-LOIf1WVn2n@8I7Ck zp=^yPweIil{k4=SN2>v^Fm#p!?V6)qwd3?bRczmu?6h|D^yjDs`qS>G6BA!yP(b{N zD^rnLYxX zOu#6%L@A#|jmwCm!oasE889r8+18uXydD0be4fsB${>6cPbePGl#}$CPCm<-4lThct?Wu?Y}g6 zrRj?@q{Ad9mP>HsJqIT8q!W9!`5IGq4sRDY2!h$dxxXhWR=l0mzM-KoPXEPfu@7CR zt;7*mY{yTJKIq+;j5G3cuowu?uO<%5YV@j_c#%!W66tf@tO}RMnA-5q6qad@a4E_r zmTx>*V_*I-wgZIX`qe%8h`3K!MF~-2*2zCrv)@tbphrLje+kJX!5eeS%c^f1 zt=Wci_wu@j4|<*N*>1CO#d?{?#$<2ilWU;5ZMK@fd@-V!#k%BbZSN~-XZi4k@U!*^ z!~M$U&*D{PjL(IqFExVYPus9P#5{R@ZK?S8sl6yH%<4Y$<>DIj{}Sb2_tQ`Fmznvh zREh#66V;XUTtlcY2lVA01;~ui6ga*1of8v*X3`3g!jC_G@_msJNs22PIoEu#a_fb~ zMyYOP&)i9P=w1n()9&7!TEWWJF11?F4)Lyig;~r_wh!U24;xh=b(^;gOzV3p22qO} zLEBGfW@khE5Ep)0hltC5@%1^2Y>f+mjt*%{OAD9XqJU!+prk?07*z+AxhWS-X)_?j zTXg=#KIV-n+g<(>eiErLG2JA_8D7IVY+=U&!JchFas%%z#SIVK^SSJfqU?%}1pj-N zLVM!n9^RCL7ukTQohBmt9PvzTn}#nQ6Ni1S_7-Jm8M*piOPjy5gKMRS;9{3szjJn< zirnO)s9cwFp^m#=`mc!%z0wsz=5MVEdsiJbRhxm?~JX^jLzkKgZUA~VJMp0ngv z9;)t$XCLu3gk)$m!&r{Btq6r~=>Rph@H2m0T)|X*_a)ceYkukhW|ge+gJ;g3s(bDm z`nITr8LaIfm4U9rhD^%@z-;8m?y@JIHZ4_}nCHF(gUH2mgY#7X0PO`Y_0Bk*L&NKa zu`@x`Eb2fwg5{twmul57!f3#=Bo zc%5-E#eD7klTyJ<7BcskkVO5SPn<{qgHVy*R4w_{ILANtS32JiGQ2t;Pushs6L^o+SRc7wf8 zW&1OVyW}@89mlj*7$!XMTBF1Gst|%yDxMPg6_AY*(zmKJM)|F<@OLdAv$tPtE#iW~ zWc*-*@tY%RAh)_`u3mtz`VDm6x=O~}+pmkFp_@VtrDfg{+^(* zZHfvj%V(z>nuazu(yR?fN_9EZ^ga)~HTk-D&~rA3FRjy6DHyAqrUcz;FPx-SUUY|< zM#M?vQJaQeH*P3ic{T#_Ip_Z*vC5V-TaDh0i#GWtjPu0~;meN3IyLXzaeonO7&1)K zd%dtxapQQS2smrz52d(v9%jv6&4Yv;Z_%&xpLo#^Ozd_ibElLXny-D=_jS`vQ+;No z3HUms14rgenV&JI5^~Pr_Xu6>?N0Z;XvJ-APk?Fv zW*+h(Yg{GXU5k_YzHLeqz&b-KT2fMSS>$)k3^%~R92y$xy1Q731|x33TCm($-1vY= zXGRyCB(v1J?OZSzw`*cTGiy|2qW9nS8*6G&21@lY!8 zsWIukECgVRXzEzxukfEV0hi}-vs<55xC^PW1+cZd)su*R+yvC^U!~VvoZ@VR+z)in zpBC)`RtrZvD0EqSoD;HqujyZe`eIcIrJ`0IbV2a;z4}Nni{iGlFGlOoqMJq?TC5W4|Z9s?(Re_kHz~DFI%NW z-W(|HUVSC~=%sy~WCnhfOk}{}h+FDZu(9^7L_X%mZ1|=LoAN~LKoN)*!sE*}5wkVY zuC5~GOCS^%+rH1Chv@EUh0-tewi(I?&&c-(aPMyz);kf;{z_101pXX{-Oy7 z;YQ0jY}HRHW1?4jdu~>Fw5;KJ9QU1awPYjyU=jM{F1C5x9wx2(0mRg>3&syqVKvtQ zDrY}RJ$y9DN-Pv&#NOCi3VEqS-50#o&P|ppVk&AwyrM$D`!6r!8`WIaUY8by2_58( z9bK+)c8mJ~C?E?jXfZu)c6@ebkMFA-&%i2uXZ4NM(3L2%PW1pXp@i?wh}PRZzL`{C z2egBIj~CJ4i$*c1g0xhTO7^GuB4Ktg$QcPJF8s9)AK(8tlq6c^N%yxW)V-oiy;%sD^QFF;tVZXZQ|# z4(_q=xd*PavRDT@k}|p9(Tih34co?2ZZ$#e5wlWeM?3giLk8^P{@tCllE-nlE>d`U zv7+w{y!rx?EGjjm&`pt!gNo9}@8<1zWG}5tD3mvE^ll;A4Pigo6Pl96?y<5{E+$TF zBHVs;bBcfIGeKu;I$Mv3p_S}UXWy{{t(|UMjpMH0nzo8b%iE>~5HG-&b+6l8x42T9 zG!qohxzH1=`(nhu!s6Gi)!wu`CuR^n`bx1&;C8;J$rN?UrE= zM1diu?XfU-g{_4?Q|z1#Hseh5fjth3F))0tsyJ8Sc{#TD>QvS}hlNPuz-k-F`dH(*w=+n!h~BR+gPHD+Od06}_yGtzIr}i3c98(Sh#y9mUCDq1%_+ z3t%#0rrc8nABx=o+@umgS*kS0hNc|OE_Ph~XP~?>e>#Ab}+;yOJXnB4iFW)*5PROU1#vwR?XjPSKnFTL(gu{#g({z#({-}#~my?2#G(8 zh~~Zx-R^nux`|srR5dCOU7-o7YArDNqTkzNij4Te4=1T5b2j7n`7XP}3-C&0Ab#V! zUipY6<8e3ei_0xqAF*Vn{OshX0;5u74Xdfoo$IhL@$!qln61*4Q1qN-}=Ii`||PiTj{fQMVH$>t#d*Ba#9sj(>uo-B+fj`j9YQ{_~7YP0^+mcItD^ zk6-l84*b?wYIF*XaN=XH^tHs08&^b-^W;=Ib1QHSUCgLBzzkBhtqwKvZ)F?9?(-(i3|dj&SN(doAk8xN3Z~jZz36}QlEq>2g0m|> zc!6up8=KGZhtNSSCQAR3xuEi0#@QC}TAU>Afq@fdoC+!S0xreTipOh?WT_ua`jIEj z+0yU|=o*1z#C}-8E z{lwm~gp0W3d#6p+lE<9F-lk5 z4;`7h(sw6b95=&VCkcnJGZEU;T8={w**Jk}U6Bt3h&>B=;H_;2bM&cbgsDke;fQQv z71ku0^#E#Mh%5B~jGcXp;uc;Ni|}o>_=4(d=SPX~(p8tYe}Wk1H`44Ey^L(?Q{*i9 z?p6`RzkC+vjIMWaW}%%V_F}v7#xDtY?K@vqG%@41dn@GAA1K5+ zHYNpS4*|6b!4~KoSIv~VevZH?BgtBQj&}KF=T3_Hmf#-VRvpgny}6XSpV-iSUu^e7 z&dw`$QdsX#Q2U0060uppp^RR38wPO8%ky^6b=!j*nGq_A+26Y0IOZt|w7fI`;as?i z2SN^%HQV&37;3HJbVT0?-Sl#*x^2C#o)-UpDxKwIJR4KXz`q`Qn&od&l+~Vw$t2js zb{a1#BRLGGo6n{Q41|U|=|tV63XIyZwfZG}Z{?%zZLBkpmYYlT_tZAMn({rg>0g5K zhPCV*9ty6+1udSp1~$D*)EXU02zK39S$}`rp^b3hS~_PQ>kb0#cs>W@JWsxOG36KSedC^TyJ#_c)J<@EAdU!|#s>EnE~v)}9SGAR z%zv+{cl(~SckF`=zA3?;f~2KUI*^8GV#F2hPCCnuRBPV6<{Ve(+3Vz<64kmUGbB}3 z-W>ZVnsO@WOGo{VR7uc$9liQY_U_5=UTY)%Z}c;MBgVGm2XxQ0qn;7oHdT?U*n%+! zjgT2I3Yd`F*O<3CR)Si`V8ff>eu&{yZ7R=ABMPA@GdAQ?DDiqS_=d{hz8EuEMSv14 ze4=HOnjDl+v$FQ{ZO<}m=J)J|U;TZ_2OXY%%qU?G3+=b>MWKNL=dL#I{Bz!M`f;N- zzG;$Veod-Pdfff3cx9J`TI!=0cid%-96@YG+2)+J^_#m`p=tV{+%m)*kBHm-lTBv0 zS!EJ_w@I|9KODyY)W9M;Icg-EN>dbBZsBFMZB~3|A}t+MPoBRKvD);}_lHdRLlk;pM6S*s}s4Fh^#VJoNzET*GN>su0 zq*iuLreSCQ(5C)TadpP)U{Wis3d2+FyJUzHdW2bWhZX7CA`CVNN89PBU!f@ z)YsSlFq7jJB8!N``;KPSm24a3ZDYL@R`I26nhdy^x)7j zs;b!%-)I^q{gGCyAg(CW3}m->h&+3$&WPz3tmzA5X4Se{MG=eMap!;9-AN92f{@7l zFrpk%XMub7S`z}N{?>WNa+x9%`FN=EQSgyJ5H8Qt)f19P z5c#3aud0cDG+pf#^b;1@zoYQYZ&LNvD!kV`Pr@s48!$D!t~5?b-#f+VcYM4ypA#h}XYFz{Mk~P3D%P5sYT|66UysFHsLUTZXY|MtGM{tA^4;-JVz=v>E?X_AT@md z6izEIGk}hTH?i2M;AoLl@WUbNiu|#x{gGU_>;Cg`J`V}@vDC(aU-1CVg)wwB>4sl& z{apqfH}+E1^Gq7DnZ(YG_oz3ee;K02gH`=K_O$KORsm|z6T+#@TqhVPW=;9uxuvBw zDgK9cAYlGqlKTH^(f#^^k`UTqHvo~O6_P6c`^&rj|D{-8K>BZuK*%d)DKf*y%=Et% z507J+D<33c(RobN@tF?KNMzj9r~HC~X9kQ1{v+`}u1aH)(}G#3p*nwcQf?=2K5~+M z`xWZ5XU`nZO&xQJXTp<`h~S?S&EC#jM32Nq+g2>Z9Foi)_XkiJ8ms=jvSkzbiJiVr&mqYfc0J8V1omjMh~C-gz^H&Dx#jiu8w0 zy=;vAuTlb=Uy8~w)-+~oM%P|LB1!yiN2PDR{iGNvfcKSAC8u?EWe~O}Wb|8+4JDaj zKd4J@YR`)69GT2*nx@eqYxd=6K*Od}eM6;Wp@7rcuSY5Cjsg9Yv1CoLB~6=rTNUH< z32CdZVgEGqm8561k4A^7IlGhFwrBmPCxp}YhGe3u#v zND+?|zSn#*#9CFH#b%M=7*x|x^#~md<&#D-qH+Q z5eY)=gPCI_%Fjao<;o*dkixMl2eMcn{BK|_7H>K`raNI{$ujNzE=K*9DXcTvh?dy8 ztrHzM$NINzWV?rJ6FJF*RPW7Po%7duS8c8IZ(W|EXlQUl6-f*$!zi{m=YmgDPl5GV z81&Jr)&ChYAvLToU(L?8#{*vIq2rXjVg9zPbfyJZHm3G!SLq|>Ko&RfX z+4dlrpkl+S{3~VSgR3dGVSf)E>~_Tew`Lb+f1hdRwTzE}4F`56Bdg{d^%zFaTRgz?enj6Z+#AT!b8_p=YZFg&3BGH#R?{Re{vlWrz8lc5h* zYoJOH7R*5NlH>DN>B;jPuS)z;nO3i-BA+_?nxD5uNnHJN)3V?GPl7tt(JgCbMOEs3 z=XW{otua8pTGJn3a5%6vy~vn!{>r~KS^Tu`J!?|zjJY&@>m zCpMGsWl|egM+uIXXa7-AF14f+_6IB8r`Q-680&k3>yl~}_eiyQB(GRYgQ~K9`u{V* zatQD>F3-C+1g5`D+>onhJZP-vVk4qZO-wSnV5BPPc;f?fD54)vzNYmF9UB>z6NvdC zD0y1-Zj4pBvWN)oYtlQ|w}KPR zO6q2!hAMGVcj+SK!ZxtRt>M%ZF&?1QPPD%(2pu@+o$(g>lVi%xeP3|xPd(I7_JBC9)|3xxI6F#`-sHPrAOu~|fYmJWcn#D04P$>np(7vd{sT=2^E`~~Kw7XhNPr5&eqN8NRvD{;9lRW_W^#-mcqOIb5Tas`sA3ymZkDFMWK@nFFG$&( z#Z91b5y2%>)~XTh_MA8VZtT1BS?%=}HQ88|i;!!i2B1ivn1c32Jeeb?MoK*ODk*SNm*N*hUh5A~YVMgw!`y%t4*&Hn zv%?^b95sqC6tT*ZpNDNuA#+#|7ey+b62@BjJ{X#LQ8V_u-TU5*eAQ`H?L3on}u}Yu`E>m3@)cZ*O|KVqsl}MI?I?~Fm zUS1?~xFc7o1(*-BWVi%f%h))JhCq^3@Go-ON8KdEG(}Qy#zrq{RKx}j%eulB^gJAT zMf41Rr5m>zQt^o<6AKiA#a0ae2v5fyij=?NKACQjX`l9LuVU}#c?(#0)?^}sHz6u~ z++Og2(V++=tpeatl;_vo0w?5AQGiX$I!o+~FiVAtEkFPa~d`r8^(*$ttGL7aBL) zOzz97G7952H~3thVE)vho=He2Z?W?uuU~wfV)Y^YQHfc`Q2t+7JCRbYK&)54*c2tU zW;`99W@+jTyvbv~$El|!o_q_J5%ezPf&`o&jZ#^G4bw)i7S>{guV8AhL76qsyE7(k zAh#axGuk$lu2lSSq0H0nCyX2fD`o_$=dyT=J26}FW=@3Ni}^v4JNCfpIf{Xm8LOv) z5j2Vbn3!r?A$5U)kL80ztSW*jSWZ!nW2mn^eD4Y0#vB~4DU!xsPDKAXD?17}?G-h) ziB1-iF0!DJg7c|eVF0e_pw>^7yw~s{va~1^;?-xLN+y|g)Z%A@@(a8|njAFj2|qM$ zEEX?-zmLU7k!tlQ(_0xbFchDNuR8FW6h$nCOdbhmqj`QzqJ29So_XkpQ=yCdd`o$d z=t~a^*Q4Q3^9~Z}pbKEFg@!#EX|_A!hdAN+r$Msq>~B&JPIOq}P7r)HL?-+8C*jts zFo8W8oPsyZxo|IQwLNY=EN-1Br&y1XN{O^Bx94Xwnh&;T+n;>y215C! zHM+Zm@G5o*^Je;(hBse#3+3%uy-K*}`~IgAV>C4PN|p1aJ7ajp^=EgrQq$xDs6uyT z$ko|z=ox+ZyrwjLPqW)G5+~5jB^VW5+|QmlZCa0^FCKU*Z1p_Cm6I1Rh%^{#q0w$6 z9$SuRiGG7N)QpoK?hV9x#_g3RV62?*^3SbvZ`*k|>~UOY3t^*Tvo*)cDLz+ta#lnDt*tj;%vTTpF=Gs`bL9%_k2j5GJv;``SgszIft zdCr1(I=H>gwoUN$@TP7Vgu|w*N#}IwK8)1W*2+Z_JBugmoTdyUXH03}w52xweEB*F zUfUnI=;u`_mM{O|-U-o zI$XRVCCM8lQTw8|awGP&>?`BZE#X2$sHX}Gj5jAK3zD!e(~z@n_&OYJr2br0J>uIN7rIdOXcGjzr@I( zlY180L*4ebCG&QtsCbzz%h5LS(+EN3>#p18KR&`E9kIPruLq>C8z7b`gwV0K!`^nW zrx1~!&oyq&0O#llI-`mOhp472-_RzlkK)tWY)hw&27MM*y;q5Np%E-WWL*sB_%MqP ze8Eo!bEFoggdk5zpM>Xi{No1u7z#UWT32+hgw`iGM`#3C6kW#ovVCK1Q;V-J-0wO| zS`K(3?cy}A#Y@azZin%dTgh|GQ&mV*!aHW*A@z)_iz1xA(Fx&O8%;3G`1}mr4urh* zK{kfwP6FiCNL}aqL}UR(F&P>9nf^`m(i;7Th$cQgu-Din;l2?;7U|NI za*W%aZO)7h_8G(jil{*k`7uhpW*?Iudsbklx)HOsgCGE}CjR@PNOjK(%a61d&F1A? z4e4j~9I9q1OhYe}0Np4Hzy{)f97RL&38Z0%953}x3?^~|Pn#cV(m7vvZ!`Yw$EIIE zzq19562>K`h1GxKBS?PxP%hqYFi>^;k83-Q4$I$u=&k0NI?G`LcQlhHmo!T-;HdrM zaR_;GJTvuLve3hL`!Rv+RP!XlNXvyn3C^wd{6d?q`WaiUtK;X^U%bKf+Q zxUq}4U;cZ|@tQXe5Qg-vIhM#k++SbmCX!I1_Cnsk%E3}ORQK>0ZyBYh#ipI}^&ln| zKL+(WzI=b2Z%>ZGz1NhN(;LxA?Wi9RZp~-G;#(S5Q`i41=yc!YmQzUnyS%7qTHI=R z?g1xQMPn(=aQ6Kfvx)7YO#@rG&76P6e5&XZ0!)kDHo47e3VU0;c?|OlN9{;7+rceM zTm3+#OEpm-la;gE)1b?N`f zrhs*Bv)N?j@GDH}?=rh*V$ihL(JL(vScdgj#HJu#tM407&KdG)NETz9<33HLva}#GvIWjVl&pq*C1-4;HcuOyR2{#q^h*69c4Ll-?p}PbOzVc(FlJmq-=|*8Q3U55y1)G=JrAgEzq9Lqc64Ax4OTtGmj9*9f&ZKT zS@?e#bbV~fv8KFN&M(L?DSzlcHL*Qj@BPg)qP+{Am{6a!;WPPnwNXEfC=DHx^Nk^A zMCC&h)MO6C8~+S(Zdr)H8t}fY)%^FdV_8zUn~a< z6%`&qED8d~{oidj1zk|Eotrkz3$4Cw8M%R3$ExdL)x(g9KAcLFODdoLe$-8}+--6O zWEty;<{+w)!#)QL(lTx#i@Z{kqoD#`w(r9`(pJk}_3odH8szxU~WI2c4{UD#Y#%>1+X2ES#!^ zAeL-jP_c@J!C37}JZx-YD(?jpdqqr;we#`(HyHcuK+40HYd4m;#o|FBm)u6IBO3V@jjl57Fzh?{sor8lLRDg$;X0Xn_zU&sCLXS6(TyWkJQ z!S>PNkpOKfcf+B4jF>yq2nNKO9k>C;G&NC}?mcnfrL%l!90rZK#!z`sN;h=09{n5^LgNZRG~;Q&dEG?9JH2yly}*mSA#= zSB=T}#>Y{5FzSO6?#{?)G#byUmQv8eV@lS;XP9Wj+)}q(^ zSV#3{iXTx0FXW!}u=}wLUT~VgI{Q3-x{{jrdfCdBUU8_-(b{bdp-W z^E!NT15p)hWde!)v3!xre7N~;s=j&*&vMskn?I36&nCKMSm&h1xk{wHddoJTgTw7? zs`2dEdO{R1N*Pp01SXwVj4+jK4e;{8V~>^IRMHzva3Dvb*qHQ&3$chj<$gHV09&$@ zg5JsNr`hCED6A)`an{{T^Y}5e*XTsdn1B3znNh?35|J=|&Dz!NqeQ|Awdzwss1atP zl3t)zEyY5{9t#p>VJ0K|f&493lp6T*Qn2vRL*j%qnTejU#JGAvHNi!AO_6G=5z_@Q z?3`C*XptXopBH$|4ewxP>+>O0w2+u@0DK*%is(s1qModT>h;HQcTHqU2keR@Lvuv_gjflq*7p^;xvt@C^#zK2T~`&PB0O%=j`KUEQ_A1 z+@V9mlj_S?wZ!5cflWB64JajqZWb75oz7mFM+pk4kc(OpG06SI+sHQgUo8Z{%M{%+ zA|@s#OBAp>g-rWk};IJPQj80bMs$L8FLs^F$Kr z{0z64IuCia{Jl8H>ogRg^yOa`_-7A{;sDeZID@^>o)DYXz@DA(q(q7jI#@g7> z4z}9G#^tfuwnI=zt=UmiyGbTYZU0LShy#^1{yP+nkFXOpJmZV8v|HmMGD4y}Fn1+B z58p9`08^~61m_!DE9wt@h*qXrf(Nl$>#YWG09*6tY03j?i>TmODP(ECR^ox4EOh!< zchG8{L|D0tqG?1`d&Cg}KciT`#^g!Vzcn(W)=mb%tNXtjODuC6p=4y!MI#W5xI~)k zLM+O$czk_bdSO9qF{c;^RdDs_o5+D7v4l7ehXqSq@&wfiip_Cp9+@%%4+>gZX}d4d zNx`fWW$DLaq9g*W8=fF>l8&a;dN9>!!BzW+kuKJKC1(QyzLyfT$*?U2XPvJ%bXuoql z$XR!=v_~|vs+Yd9pNu&>VNcF$S|ZlwXU(m`0{vA^;KOn~qaS0lfak`q>9>$WU|7(O z;^Tyke?ziA#CEr**=Oih8XngjRN+Jj3>7#SKdgITRoNgy0~1(I5y+)85qsL+Jfvnl zL+QUNZjMc@HJXS9Ac7r*rI)N+@F2UCk40{t0`qw;StY+Cn=w;9mAa9t+Ky*6H-jKu z#%-~5qr6~p13jxm^0sX+q}x5?{2PK!f~(%pV^RUM91yt&DJ6IT!3&~&g=4Smm?hL&Vtmq z8lwWXU=^-e<|9JwXHg`&N;&YITjBcMTymU?V5_YP<%1F2qz=6FJ@o}n6pa!)Vd+K} z1M3`IBO8#l24zWf309e17P(PQ;8C>xn#*&HCHF$ElG+khlTz6XuY&@r6~LpUNVZ=!5GbmM_htk&%-BvcF!6Dn71~kFEAg^{N2`$&b##s1 zsa!-Rl_yr9^${~uOw)&coaF`cYac&h)0ctt+7YF?_&=bEL)Na~se)!6{Q zsh|5nEP?iSoAsBGnLW|7C=im~xMVtY@{ck16#I!pPY|~_9luSbwGFbnriEom{4KgV zuq|`(&V@}TZHOkKM{ZaRb2@XW6*XZK9cI+FA+7s;;5;_zl;hg5*ziNl240rG4IVoA z6-n6hSv1>AY_y5sYXU)L?>6>TA%^+KsgThA_phcq#0u=1h%Jpk3wz<5s7fx}81T4K z;mt5yiJQ~(ckJu&JanL72_7}@wki6q(uGsOHQQRSQD?*GD2biH7^n{Gl&fj=<<H`=iLR!OZ`5Wvu(=LwccGk6`-SAs0%0i?iiSRR-W^Vq zGhRz{a7C&i(0D{rh{=-2m!_JJiQFbyv=-7Qyw>4_kaF@K@@M|0MIjHTi z{=*8j&8q+`>d`Tb94b9iVxY8uI$ii)x5IH#YpSh_5o{1LDRIXgr-IL)lL6UfLwS7T zOI$N}%N9e>r|;BTShXpTVUx#LE6pKqcRPK>bRw5UyWZM}f4vgkf56tHxM>kT zxgt@C{mOi^uj@tJ`TJ^879>31*H@|vaMel*A@uprP-X%C8fX{|3lxgh)C zk*~`c(%I0Nw4dOrzjs5y!;K2>i+yWo=y#!D8B@{I)NR&28xzkXVLj$yb^L-VjBa%= zmX{03LbAfXB#IuF&u*ivym-ijS(V0#y`EjRC?u26}k`2n!9&l^IapoDOW zHbI}~SLtJDd##S|2T56O<+x6F!=$$(t=a90`wsKD;2Rz46$2_cOT_UzIGaIX%(QIQ zhx{krt3YWn5_DfR_)pza*GqWGD_k5epZAK-)@d)O@A@o@zY0X%Z^L6?MV%=V=dVNY z;mlocUc@Tn(n6szBNsIiqs43>8CiWVX85vhZ05j-)w$^ak?n_U==Ej&aNb1!BiP$= zvX=(K0m>w0VL_3TA`sa6Rb-;_+6$AAR6TRH!fU`Da)SRfSK*q$V=QpnrkB!s*6Nga zQtf03j=tq3Y!q{L$jG5}=h$F&2e8qHB65J6^#(NQgBt**;k%VcULl3Xfb7 z`Z6{y-rnljcC-^E`Q;E&qrOt1^IJLqZX(tmU};yB*zPs*z4AaSsDK>+x zx>ZBv^f2Y^8EUB?K^8i+Y(q|CqGxk*L+ok4K(*xQwjXH{i_eAjTKHc)04gK?%WKK; zATObfvgIwl=7bAUO?hvatMCt7IHdR%9f9?7fK_fpF~2-{D0w6z^l~KPMVA`I9$F|6dI4j^p19l>a5d>drZehaDA_43oa_$Hu*5<>c$z45_ouhLrlPG%#q z_hRb*{w>~S`ThqX_d-9S1_SO}XIJfB#TylsQoL%lm85%e(G$|ZfBy^sm!o#dbHM)3 zga!!rD7fw0H0qn|rC1fYlreghaN(LXnPFOMI&_jm_Q~?uc-2&$8?A7lSsx}Wj`sWX4Ck@D96i0l6Qbp0m@_rE>mH68_Jrh)$d2jXSC|9tNUKITbyo_a<8gm0NA@{^NBmIM=bdGN`*TGsqxq7vjNE$IH&NpWDR16879RM8;uE;BLhVsv zO~>4hY{d^wNO^FiJhT=Manoou`SaI^>##Y+djw0L*QaWZ1K_Z@_&8q+Np-45JTyoU zS=rb&Zpt^+KO()kQLEU6<-PxyMUhW7hz((b$@1Fml|m7V$c>VhUNk4ug?qLxxpP)H zp!r6`1#+ZVYRz9_#+ou>pruflY~Z6lh8%CS2NuES)~+Hwr;#o;+H=Gc5r+vTlPwP& zLQf9kf9v-B!7ylRvH4I#rr=rGuN3$n#Qb1tF)lO^x_nONm2%%D)7hc6;8_7=*P3c8 z0YWx=y_|TKy49%NBR20wc6Q54Ph3Xtn_G{QB}`hu2TcFBiyr*Z5ZS~8_p(B*Pn*X# z)kSboWJZ4msc@p5Y5j}R3?*Ef z{#4Z@Pkescs$9eylXxbR{RrEsAm&0P-?PDFD3wP&>$KqQBDO`JE+oPv!td7T{Zc&V z58Q!PBVu>@KRjK^tfb24PCXr8Vs*?4B!#DkvR;2MWn7HEeSK&>@@wB^+~m`eRenA!FPVCJBECsoi4pbl~H#z<@#ju@XsQ)PLc>mXRu`=eNsp+1sID85}t%~*4q@qLn^ za?(mo4Ikf|_>I78`gX~)j6ir`-B<%@iUBxZ*(qpmDCsp?j2=hl36JP6c&pOT#S|#V(@(B zVQZs=dPN?@3eQuBuInrLhMI4pRY-+t(t^O2SRVo383+m>`uz}%iOKgb=8gMY#Cy6+FY`(gk9 zY#$@xS3o4yUe@8fyKnznF{ZBCP2p`ioi+soke!EP&}f^d!{8Hse1M-59=sU+tYgE| zGZ+Kk-M`xI)U;AaY~Dy{ChY@OZ%ddbn9iA~v5QHRFYld~mQpw+p6lXs;NgZ0to)@;Fa0(Z`U^dkvUDqwbS`q_*son*m-{pV4uC--H&e%9ZzQVdV=VwvYsh#RNAwk zJknBjK*}K&(7cq3X=Q-F#KNR+fBcG1zG%1RTxPN)1O|)qs0qg8iG}q42-W`BUgES{aU~NY zEcbY%5C8DThf)weWhK=VH3-z-PU0-Fw~LcS_6k6#mB?wQc`0paGjXGttf={I2^No# zFNevA%;gxiB-dhwM_AeDV3{?9H9ys$+BPy1l}WQZ!3NaAFZNos+dM zb%q?)X6m+ffvms&u~C);mrOcQB9#aEZvZ6Ubi-tRDr|ez-AU1LtB%Pk>TsO%6Oj`} z!e6~>9=WwtxM#7`IbRgiKD^xWT+tyeTlJ+|Hv%M-OKOp{h0Rupu1mF_F`!v^_Cl!z zhgEq%B-1^o$Ht&rN0U|t8;5gNN=R)-i|Q2bqQCO(aXy)5&fYUn>42ySyieC1345fx%Jsl7CN?$*a(lZF z_kV+`tiT=v)OBe0I~s6F*5I1`pPFaHuI)Z^uKn{)Yi1|w1<;Pr|Eb-8>P_lD7;2E% zmp|_XUjF|C&i{9t{m-XZbUX&E8-K*?(7G^AUN0|zVbs)51H`sJ3OkBhb#NL6|Lk`v zejEdkf~H@$e-O{aa;JUq*H+nwUn&u2;9-CRrz*) ze()$T`D!H}8OI zyFW8nO`|5J0uTg9cPIU;qAw$|3P|M~@-h;@(#SZ|Xi(%@d7%P37t8O2 zh-PnWd={LE?+4R$XL(@ToneK`lMlWPB6$kw{XWlESrMIL-)kk4qq9(d=~4~$jtsML z+3JQ4KpUj`^sMGXJCn|qHhkTSuxGX|HMkPipdv-eK6y=Xq-jmd8BSdKVRSBYKBRbQ zR9$^W?`<17Gtn0$nZ)!?iQZS}APSs$xGpd{r0J-zQ^1n5&oh$S469UCu-r>=rX0RE zF3S|7%iRrAL97YL{LjJK7D7Wa3di6U)KU?;~E`n zYY1T6J&@;7TTk9_9mYgtl`|j_>4beE2VDPMIe=&VVYm^+weJF#Alg@k-x8-&Pr0M^ z`i<~52vfVLtXl13O2EE&OHN}QN=pk8M#@5)6S5RJ;Xk%JSNnyP3#F2MmY;3#e-Yz; zq9B`FC)lqFiR3md$}{7_j|p~9rJ9ym5H}Eg#Cubh-xg6xZEDzRKZ3a9c=ptK=fM>7 zk!oWosAiW9r%zg(78>;yHN*?_Od0SRk?jP%p#!`^Co6{TIpw6jf{xVOMcq5^j7}@) z0C@@~OZkpf$@aaNzJxfQjKwf#u@uvq9fJS$>~y2t`W;JYL4m?dk;UVAb!5mG7{b{p zvtUftfLrcK{Sof|7C#41zi}Yskkrh4FZIa@7R3xsbtIWuzrKvUGtP%c4;h7~1?Z)} zDaH10_MD)%a!PQZJGsL?JFw9-TJQHkxQqm_F_4V93_T|d9Ep7__pA>Lt<~^9oimib zx+4<|#4klLo349^nhs28^NmpV^F=A>?K*i&>m;igVPOD+(AI=!AiEC-LFM7-!4#JI z51$k5_m>|(!EU{g3Vf>Ztq?^b5}o9~G$S#jerZX6S_o+&I2~AtNYg*cH8cD@`|e!# zi!IY(hR@>N>(=-_d}|h#4!=SLiPZsygLPpduJqkR^?ltF>&cOqr#IBiEk;-c_(5Je zPILtdU10=1L(+1=Do~-N=z*3FA6?x*YmXI(rL6513Yo zt*h@AVmFcDJ{PnMb0ywe#l?0`K4K*SEzC`}K7GW( zhk##h0q08>0@n*epibMt*BvTXxswfU=%xz-Xl7)2;!+iP@Z4?1^RuyX_e8OsZQ)bD z!h`i#_5&8#iC)r8?MPbk2`2M7D>(p?X&(u)}7IM0to(QknK1?E9ymv8L=(Oyf_PTn~k^K zM;vV*&>lx`W~#l{nI_c8Cr>^6=&V1d#$mmZd)`{ z;Tl2*|6UeSAu^t2FtD8GEhaSB-^jzrq$=;&x;=jn;}h-VlC#aHq20k1ezp4yM?|j< zCvq7bK;^S_ctxrq?`kw$bqB@S$za8whMA@_WvagR)c%fieF>a2kd3YT7RF!URg-=( zjOu!#>Z7j*gSBtlj2+o|`q!qF;@Hqn%d=0*bBe8a$^kHsb{wC$mpo+IKCYZ;5>&Bs zIgjA7M9gTOZq1e{#m@EPM$T|$)o&wN&u(N8OigA z%L}ne?vbrYB44QQPpo})v{$dYC-Jg`S`{isVe+)JMQZF zWL*}LDJv%=A0jGq0hW0ZlYzDS7urStMaJ0fW(}!=G>wapFm`7wnd6L@E?BZ?(%Lk zx=vV&MAPi$qu42=e0^_5*`!4-(b>g2-pk)`?6efD>c-*X{aG$)9;f?lNDVsZE%om6 z8YaB6PGm_f_#x@;kAOI?AbUhsJs)!1^pLP0T?Fa34;R^a{+bII3jvxVm;{B+WiQmL z)m?d34%8?tER6QaTDWcFbPLjIOMcY|Yf+O*%C>taTi&7Yb+}MpBp5*DN|*6Tn}k_H zyu%sc(Bn2ZnN5;4+7vTe*bk2pW)_SxofRJIBF_)WVlbVC!3I(7kSzD{lcL^=5{T%T zz|phpaK2Ch0Yr7WWX!hk7x#i~@ttUz!{>K?d57eIAG|3uo4=)%QH2xBD<}9>I7QL) zJsGqb1?&VGHy4V>RUuMabmOF;RuHp2;X8wpZc;nSy5mKfZ>$TD9VZG8F!#DG!Mn3+ zmoI3&Yzgreb&A@83dk?qp;XTjQUQ99Xtj2T;YBrT$27vfXJ%IE^!oYtok+JcP7L^P zN`Q_{4}Jeb%k9nzlOFj}zY{EavG^bSj2MlI(ciL938o6&!2K8M@7a33{p;j>>_Lm2 zqR0zdT9on3=@FLBRBpmei%o&)Y%}*W!LV_o0(X$%<%eBChB~-4D&s~wvmZFKv#Q>Z zK)6bM`QCiV!*vS#v9oHJ1jGtRTZ@38aIa2#vl|d6d0-5ydQtSY1c-oZS41oqty0x{ zS=F1N;}#KNC-6(j*L3|6Bg;=n^enfM&pw8NET(U;cB8nld_rIjeuT85-q>sf0g*Br zt02YskYQ2N``2$iEc%X-&f7<0cn}{il8(R~6!}Ak@Hd0pi7%$CiQ;j~=TRlJEHjxT zE-Q9tGj}7|X%G3616I2(*pJ3ZWMjN`tW|T-4}Ot+2uQ*$%Pm*lg)*07jF^7^ z{&rC`g1ZzI$zL~<`^i}%HK0cNiuTsfR{!HS|D}g-G2q5Gwuynv8u)g*j__abL|!`# zX61|icjnmYCRO}xW3CDUzcwvgBh_AxzUjM5rSs97Rz&s@zcpIhxQN4-@BG862oH{6 zH`vIF7P>la7vJ(G+3wTCm3jU2^^s$RhSEaB^(Suf$Fh zQ1mK@G~Lv51tMPc z%E#Gyab}Y0ozk<-wNs~<$-e}08_#QB>^ei57+16VJ=Ev%0xk}E8$M4fXhM~CHEiD$ zf#S4FNP>JbD=sg)uqM(caLF~L*5X}?d)Zx37uR9dRU{Q>I0YMf<34l>vVd%JmR8%( zeAC^|KE&Ux=rE5fHEs+%%1)aR%%&L1IJefW=;w#z=KX*)G5a}@h52~sjjMX+^m)Y* zU+FqNlMFhVGD=w;?`^Qw(u%0GkJHbWE>x)+ib^CH-bZ!thRQ45sxZ2#K<_9$tJl4p zY`V;ODKkNm#-Am6o6tIKkip#G=%@gUp&-4FpGH-Pb~Iv5iXucXl-UA`>0r4OkQT=( zA~Y%y{SA2}=jv5J=*e8$&a%xse?s3psxJ8^SA;{c1e>VRZ2iIRiIP7Lo4%^<&a;%4 zaT|{_u&`v>T`xY-fL4;_15wE$&PiFFHwp*EHbha9H!qLAC8HVkb;y(QG73hIV+O_Z z@&T+E!f_&IzDn*h@3P?zl<-t$zRz_!gS^Cb-bdnIzJKT%Kri_NbB zN5>3I8sRi7iDCK@vg%wkjiKv8(NPmIPu!3lLHO0!So@Nn^bc}i+@GWc$+}+;xz;5I z86-%s>sFaSLFY;~w4f>zbSlZ_16((GF8LBp1tYEWoh{z77=tW2u?dRuv~xW`AED6% z9`~XW#8qI1rK(4j@cg0C43_BFBdJ05x!ED71hV&>7TfSkHFy(lCy#90L`B^a8#}8~ z(@4Zq+R^8p@gBt1p^kHD zaFxrk%)E#)tExD85f70-QSJ&?f@yb!BR4VWP;N4F-pQM|zAym6?6Q0$J^FIFE#1l_Xnn4J9Sx?7FLw@RGgi%qh zOigUvI-&t95VE?lu4pyyCl$9bv6f3ALVUpU-MtdbfEPwLgtz8I4|f1pRo4x6db!al zRaM*l?v_hntoe#!BA2lmxc__skBX^YPP-8!R<_eCr}n2$;OQ8N_^fP!mlOpBD{eG< z!+tEO0luuQTUhi=M@7AyCn(=WAh4vlTfFWUnLB;9LF+txSAz6oHi#S&x{r$6BAYH-ave&$f_)y#gp?&YPL_YDpR zu>+Hfj7X)>SD00KlZ%dQGVFnz@06L$ zX+l@|xPqgWySs}sXJ}&S>E@iMBW0w>7l9L0yE5-Ech{(v@edTxYSB^Tz zD=v$8hP&4~nt>K(XS*XbI6PItIh?r>7QG;<=v>ghj43se!ji9{KHD3Y3;PoS<%k)STnY3|D2O}e$j&J?bnR3ToL+k6J_0lf$rDpBM zd=fWVXt33h?t4CY+{cBBY)PCe#H;aw>Aeo@;{y1F#Ve5{u(vVI{Ii?5qfo=&8x!T8 zn>coucc#aE*iK&KniCZShx`)}}90dW2f6nXHh%xjgo1rE?}` z&aNWJcN$DS6jtmae)XYy=bM+l<7HXFuNumgV+$?46IzU)A>y9zI6NYIR%;S#dIV&| z8vv%pd23GryxmG_=T+w?V03)kkuJWD?%y%c@OW~oD&9A!ta`vN?Hq+pHJ+cRG zW%-W{K^DEkR-dgYxnZfkK-8TBs4ktokCXo6AR|^xxqYtfs{%cm>7<8du2_-tJuTrO zRb4$ z-k0ykTl8td0d4X|cnkjx4%32ePpYg@7n%5t+FQ&m1!nVkWr#n~Vd?(OwT!+tY6Ut4 z)~BVQ5@m!=Rj%Am0mq~CNH-URkwRt8*22{AXV{Wl%OSQ!XzZ#j_hc!TN~n=mM>Q3D z?8D|Rnj4m7%Ou96$(*=iY`GiyBy^R@*-7ov#iGiNiY8{0M7fW3SmCW2%WW*<(nCVLf2Jv;3ym9H$arU*vS^yg-V8K;*Ox`yw>z?$*U^ao1@>Qz(ptY7k~_ zwLI&>Ni235I`HuDh~j|pV2akUdSms;0==51eNx@+JnqCtmxxqi)RD{p(_Vk$=}l=M zHKc>{mEf`}3q$W1P7|{SyioRIH0&nSW~oxlX1mZkCn}zY{OBjoi-~Z4HEn`DPRW8o zlLacsaY$V^Z?z2V=(h=QVP5Wg8I*?89lVA7v11U^NS?um2vB2M3r%L!fb&YvgeIf~ z*MfeXun>p>_4w7FIu+gqO%=%m&sym8lNjN`P&o@|1S&{dx z7{7&W*S7(WpDrp)R7kjI&IZATkhm4 zAf`XFqPgo05-%X1B|aO6qwb4GrR_+uY84S&^**&4xRzO;EOUC7#ckR=ouiP=K>OvV zNxx1w50Q>J$LLl~b}Y}le{sl(QSqJ$Zv~k#jLU)&ODR{HT-DvJ{pgvTl$?Fxv}kTV zTZGv1^yDflT;IfIz2_u6rIi0I%xfjl0iNd^2M^Mq(~kUF*@;x9yU^n%`MPn7$Cyd% zQkyZ257Xn3lY$fqra^K+V{)Ks^3_F#QydnH7S#F$mLqV|rM$o^GctTEPD&vopS&Bt zZus`eh@6}yx3r-eepkKL8?{*Wc!ghHA`dGDiSXXHYvZr#HRfQVhK8D4$lCTlIW`Q^ zuDMuxcuP8IZ2M#x?1p6=(o`7+!nO}oiKrNuINDh~rbC^xD(i|4_VZ&*rh<$<8Au`s zv2x;q201XobK~SnW!I*dCTZr=O!9M!T=X?CrLYO0z@cI+5!D#(<6<^PFIBUtCN{57 z;@Y=IXKo9$BZBR3CO^n;SA1uD4LjxmbJ0GWiR0Y5N@hBZaiPv3sf{J%>FuXMw9DWo~|}gmDQ$c45VYSIgufm&iUe;Iw|#nB~vXda=uI zy4Hfc1~G5w4Xjey#wvPyHBGd7FZ;ZZY^qV`20wCm9A8+Ct}}Md2Dvv-*u*d&+TdT{ z6K;0W)y~$ux4z=C)>@k?&coidUz^MP4L#c;oMM(`f-8+i&OF+s>@)kFHMsb}4pRYp zUHkO>Y5uk~qtoy9J{!67)4b-rGuxDB?b5kTM`REI8zS%Ikj=p@QWLJnI6g{;m6#>pqR{!tJ7^*7{Pq#L46 zIZsxq9zPH?3JeEqN^cycFc#?T&Nepnb+{JdVpfm?E;q#FK4f9t^#Y0y1)|^r4-_U! zGLl3o(Ba_+r6tT9dI-t)HPs;AFL7g#*X5-e1V{0@aM}*btc~5puC}U2*0pX*smthO znk%K4D+%hW>}rzCvM*r;zuvrd3)Lo1^&YAaFR3KmGA?0{*yd!Cohq`BVEA`<^oei( zCmIXqJ{k+H(m#O8CyBUb`J|+i(FXsuy6F~);bA&cJ!x@qVPp^rV>11Rg^^6GJHQ&* z_K2QK3tz2fM_7KhAA|*fZ=6Sy0mWbI^QQ1fmB-5pQR=@QJrXc{MP#0rDu7!JsM4!C ztW=@Jar}&iRZ5NtnYyu=bIEiCCz*g6y?oxk;#s=(%KG1oEni`oqDyGCg8KG=5piZt zX^5H`y_ITVDwMnQ4|9D6g)(Xp0jXP#f5U;uo-~WU*2@hkpjZyw=Wk{`U${oE(K2f2k~$m=ucF2bmaR{TBO%Hg9_-_MLpu;Lqo zXH;yle4LP{LxrUmItQ~@Y&cvm=hcv?A(!#d&pcq&&j;lGVa#?g_CWXe)$(h};?)dY zpN$gVP`kVgih`ryYS}=tUS`=nK-V!;24*y(We6jw#OT%tl1Qc z2U9cgpy#u=9U~-P@6zp3jHRU(VqFDkI*YYzSp~*=SMgFEF~7({=Q&Kq|07Mp;bVeX z+n+;aWC!rZCMb;lj+Xer|Be~^XI4{gMJ(Pi{A=JAZzuh~*0_IUM@#3crT0!x?!7;{ zt`WO-K*2Qf<|Ps%V30w2_U#28p25Z8>OTxBnbdz%$L`5o$;iGw8E#U{>kTQPt)oav zIR_y1jySnXArn49buveI{yE!73^?^^n1@7_%w3~8;OnOZA$Z#5ldTApZT&eKJ-6+d z&Vw$l*l_Tjv_J!s4Zd`X*Lf}S{d$PubN{tr&(k~)pQgHR(T5VTOWxG_i1}%|?%QBB zF){6z40Kwd;kVAs*;w-ls{HE45e||#QZyI~-O0!jlfbz+=T*xj;QM=%iTfv_t$lpY=gwo9Z2t!m)-RWqD>5J_Y2Tmx`UjX# z7^6{XIWdT_5mXcj6Eh_dvl<^J0ray@Uh|hHbnnJIk{k;uq@Wpmi}1zG-VA=gbx`Tw z9s|lR?G|14w4UInYnlFObS{sTFvbek3SYAHF~@rGS2e}e8Q2uRqtRpc+uydOoKY?w zf=pj{FpQ$tugeG+d;n|YiEH*P9dE(f4{8W;kO|M@{26JnlM+@$(#bCLBxSj3{EV)l z(W4}K)f`NRNa)s@ZcY4{elyd_>NQX)uaI`X1%-zJX5lEkY1t3TKM8>QvGn_9CUdP& zRQKM^n-~>vE2v#%b9sqVhq^y7p6J3@-X|gcYF)E_tDtZn@R2Mfn5By7=#Vit?y%vR z6HS&PyOmv9#@+7U{8n+TU7@0<5b?ri>dWtZZ*;CGYw`&3aX+h3tAquRkR6|_KHbxA zbgkOk#g+Z;;skbQxyaxwl5*=K=J4p`Ex#?_u`W6Wwu&S)3Bv_wcSY3mEL|=w8Z}qo zyo^HC$aZvjI%q0WMw9tjNDAZE)CxnU4{Ac8Te=WxH^pWY*G!G^EH(n$7pCc84^p{Q z{OZ|?hG!UaYT@Va6}*4y$w;WuQA5rTbqaknj{mrt3`%{m zfaHRid(FMwPKySnms#K7;AftD9t-W2LxLg7@;sfBSuH?? z%wOFp?PF7WPRbe3d+uc(-TIj7d?{Jae~snZ&6Eq_LNyX$s{`6>+O?!A0MIElC>kA|~=J_XclYUMeDU6XmPSH(@qyNPWrMSq$p z@66_sU3ag6ROa}|S%(yT`QdFxeEp=!bgo{(G6|6US&Byov|%xPd5+YAXNa&hA@11{6zlxPHJ%KUsM@uDlK1*W{%O%|==~#~kAKQZc zi4Wu#I>U|QP5eXHqh>M&4oryR%Wfr zHS**+<7Jp8^s#{Athn#l4e^49H|5;3^x1D8k=V*BzT;GK^E7JA!i=sTH0GpGa6u8BYG{6)-gY}B!0UyS_@JxxszNmaQ6#1kz z-8fe#Qu20G_rQ7RI2^IvuD^2FPdn6oJ+mt<-P2a3pU>>)R9ux6f=aYHAZw z_+y^;v`=@{8-L++1IU%@;Wg)E^4{}{AbxiBHf4);7*SUwk=errhQxACAq|@d@e@CK zdkTs{Q&q8WaWCA|2AVeyKMq}{=5B>_rEXgT;;^0?;)$FPF1kz7_3sw$DdUPc+D*Fg z8Pnx?9s%Y?l{ZE!o6mCeUXDdndf$)axJwO{R5OD2Iz?JGsAc;?f6T){1yG2o!6t%B zpH-S6D5V&ODnnR)A#9*t#WSMwS;Ung9b%n8-d3P(%Hn3y@k!$wm`O#OXOdWl z&UuV^omWax24I(HFF1;Y5p*>|z-l-0iKA^zzgIH6TIm23%F>}PdNnx{>_6;`$un|0tN!EMeWhORCO)& zT@^&+m|utK{Y~n*uPIQ0H0pn@&LDxmDm!2+{{N$tBR<)0k6^qR67u#hHyV7S28?l# z%ot`HY|TyurWA2`=|1lEVBN$y*^bnE?mgh9H90VK%+W#VCOTLz&8?NlcA?*)g!yK3 z6Iy^dZFIjdrC8MUd!zKzAOM|)o!DEpp+o%vT-(K=%v=AcxEF=jYzx$QrCaN;-_N^D zd7=or-6pC`m#=k#pDu9d4=md*D=fkI?x?xGeiv1(ckk<4jy>OGpID?xS>=!uh(?KBDh6^X?n-QE#O;$Rgaqt-nzx7?OApAM%&g_G-kw%fDA=H*X-PQ*tjgs zuTXDjZRy1q%=*bl+jjhH}&B03JAWd;MnK?p!AM?6*iki;X8V z4^Wta{2PY#--#oxO|~l2tBz?xZSy+5$)#m9deHs;GHI;;YeWu}^`cug?C=F8tQyB^ z`|f3ll2I<*3eq~1dWrb9UFl#R%=5rMcJLtc5n<94>1#{F3bigqqduP z{HD7WmWsqHXdRS52c{8pxx1p5=57^olG(nKJ`bVA;snbASq=nqmST5etawthJ`&Mo$Fp=UEDoMBFpMxxDOl* zCrC0ySf(VG0yR^r=C7rjWC{Cqs;z+nceAIE3xxx7b$wC!5wa zj{UlkVU+^K=J*p^<=2w0fTOyI&)PV1A843ui#!C_cDADm11ndo0jUVk*kS0s|19(X zaCn7>7zl|=AE_Fg-X%tSS!J38L|$!eqKtLdxZ|F@PosCd$4d{WC>F)8FAnSL&OKU7 zgV{cPIBmx;Z{@x|iV&^+`pp6ms2Tkh6X$4i@(!H79J8AWE6HmYRl$nuo>&fZuieV@ zF@H~^9b~A-xns=E+qrI{`co2iCAd;XAXLLV{{?oA(i}0H$H#%9G00qPdz687uvO^I ziEg5u%V*!P;Wx3{?ZVtbdOF58QU**$60x{`ul{d+8C)21h{MN_R^ih@*Q=qr{-;s% z-k#kD81vrE&uj|}P%P?Z2~E@8?f7-6`wTFnMuzK*aTE8=RBzo?y|skKo}Y+SzE%Lf z?U55^)qzFs5(|^9!Ck(F`&1H1IcqE6TZie!_nl;JDi*JfIg99)I^lnb( zz=AiC-YGgXGvYf8fHvyOcT7MYJ1}WVpK89)>FS*|(yWtdqrEInWL7&mP>+seHb!Lx)&N|dwS;swNcY4ZEe-I52z00TpzD+nm z_&O86EheY9X@br7X+)s6BFB;^5z>)P*8m>PYxM}jKbo-V!yCiMqTT)+vkiRM)N(~^ zZmW{z*vpN5eoYu-DH=sywgzR3kmgTi7C4C%GR*SqR~ydEUc{VA4?4d9q)4kmjkl&5 z0^~Ag0wb#jh!>NQa3IYR6nLB&a z&(TEOPoUA=azwLGpkDQus5(@`uc#H5d1xt$BgTC)E|v7AN6P>&YrcwhHa9QP@-AZ9 z%?TpG9^6!>Ax}CH)!{G8u^gD~DIh-2&oN$FwBMBa6H$5 zX3l=3vODdV8r(N*YtXEUKjEy_@VoS^nkaSPPz0lz!Tfp>g2y2)O(jk%xxjAnz=>07fyG36r z&6LOslTuq@@oEXAzmIgKBKhZ=)74duSojybRZ^%HFcLyJ!U6G7!ncVT1T{2!Oioq> z%Ob7+f~PL>6nQ%HGOCm;8f{6q_OF8&zR?d-{SWBsOYuzWJEu%@$T?Nbm6W*?vwwCM zC-FMn>L6T=emqV{&8q66A`&d0L|!I_rbNqHn{M6&1;G?+97O|@yA!=@c!L^55h~*t zW(Ibbv)m$fF3*2c^%n$)Eg5#C1~A1}YQ=gtQ9p-#zP*nU%~LBQoM023boCdP;|WRt z>#k2|Z9rO^byVzKU$7GHXP6A-L(@$5;pydQAy$Su6PNc zmWEE*vBfMC5cpeQlH-kQ#UGT_+|znSVPn~Dw_dE}ARccx0JdZuSt``UqoK*zi0=if zr7#U;JCtY?$ny0V<$Q)_D#fY#$qw@dk2a?U4=WBdR(pi`j~?~@ z+*)t^;eL0eWb0E`MmNGHQTK#x@=XHIBp!}dFKc)^!kA5dT=n--3Y?c|O1JI<6kM2R zu}~8<=!Z=6Utk|S`p@WswOXq6H{DxN*D){<+v)f;O?Vs7298n!#@uVJHOSBB0W{9A zu>qS#Inb)p>442ty#-x|5SLN2ZuWswyPL^>@K8I76pQY{39&)UOAg2ywG2JeSu?=k zCa2CbRrh5v#dJ*Nm1`Ny>+IrIi+c&WR?!WC%2bl@jsmqa(-W*YDJid-e7j-h{ab(r z$s|jSENjp`Z~Rpmote8$oA%wU#%YJ*iTCnx2qT_69>bnA-{0J^z>Nn#_M@|#yCZAfVG&=Y1fansSNO^ z^E5uyj8-htLzVc2XU6hjpx_M)x+P_cd4mRfy%cRn7zu)FYNHp_7f84HPB$bcaq{rA)Yl2M+_I2ZyhH|g?psH8zvdUBC3d??c=&mOid5O6#rv@VxhI0@bG`xWNmF`R9kDla*FAC)NRO=-c^|}j&TL!rQ1q+6ObSdfpC{%+2d4(&JV@sp zn^HZ%w!$M*+W6K`Gikx_xa!y0ZV3aQ?_@R02iV|*_+;YJo-#M8n0^`-n?paa(bUu% z2=jv$695@DR__N-i{hlR>6UG2`O~;L- z$5Z@_m+tjcVy(e$mfM2&SxNPw2##v@z7cB#)3YbC(Y-)=s;Y3QiF9ypQ#*QWO@5xZ zrZx+|Zf;tXDu37UM<{9|V$ev+cYD#KZ81D=VLXQYjkyq`h!F34jMfmjCk&0Ws!6@$ zT($cIvxQ_co4L;Gcjuht$*DvOvIlhh6W~i!6&2n(b7H=%%wtSQmo(7w2KrK~?-#Ch z)PP;6dz*NtZ(4 z(kQIm>02xHp0CNE1l8w8QW`tHaWNjO-1ME->JIqIEZ)fasvR|__>7p*_^~4&+739b z0U+L~s=U7m1nyFA=E-X8^F??`zPDuk*QTbo#k_i-Ty+qy zDLA>l?^v#ctA`S>&3kcPWd7I|)`Hst)ZdbXVWhE)<==O6@_+3G<&Pjhj-tp4Y0t}* zsTU8hvf-FCVrqVFn@O zyi>ScyU7taz?6a-(?7(rfh3TQGV+!Waoa%*9cS^k3nB`TT6boo#HCI=GxCr=FDAH& z=2FIh%9ge}16F4vL9^5vFRTx;q>gTi1!;Q`5et}hg)CnkPeVBXCVo)Hrj!bu90A@9 z?RL6oGCU`fffP1P9g>9Hp!B{$KBcpDLEsHEnX$UiK0gMqClp$(GD_MW?kYr7L49DE zXDhpUU0~9l(aEQZ+*uDM(u30K6b~)0JNayyS~RudY5n0aa{Ej1j)f_VRprm^#pzFH zNSfg1j}2qLRG;DOvZJh~Z-4FOj+0iW$M1sLW`)(QJaKvK4Ay#$a2Kfdh{i|vN3mR6 zJ2E}HS}H0dWq5Z&4L4=WLC5CvkHq_tJHmxVe3_@}aE$!-7E?O&oC?;gLS6mBq7^bY z%1OQZ!<^|KFZ3zwU`8ymDZ;+X)KrVtGBLgzE>uJqQQTKv$R-`4dMnS&N$Q@rdx^>I zUlpDly4!3F7?iY5Y8EXca`iS086h8uwe(p--}?3AXprUyy*pfx2Gn@$uKEP1mojTH zYrvce2zF?PqP+^Qli=zJ?^3VGP(Fr@%+2{6oNzwndbd~ftF>joo#T|&(NcsF10hAh|ZcbWry%e_yjzVe+B%(w%nnrn>SRlsZi^=A!qo2b{j?%|RB6nyTJ z)ubQC%Tmzt4&IaYe;N)wFv<>MX2YEcOjQ+Hormok_?k?R?`|Cd5!;!g1`(Q=ix$0j zHK^BDkY)xlnd33$Pl$w~c^3D-tC2IB)(in6bITtm6%n`hJ8V6P7vvX5B1eLiDKs=h z?y5XAd9|*sLGE9RIdzW@cXNt87b9BvgnK$p zQo&b^D;;UL7;79GADE_)cNG~q1r9$o&N`pt+;l%;w=SNJxPUVxZb}{R35%HSx1KvI zVsWDB>Tp)fTrlgt6hD_Pn!Ihn+5QemQKQK^?npeJqFOv{x>S3+X7JTp>ES|jSq!Bd zhzDRa(@1>0!UdY)iTe$F;;i-f#cEIt96g>e*l3r; zDX&n(JAv=gUf&l4mYaq0mD_l>b4njPh^8sAo54e9X8eY%L+p= zg6f^E;e@;jKH((zwf8~}oLlQAGs%JPY?m89Lhq;1xrcjE*rgUeZFI6Lc-LFDJ~DrL zPhMXw`za}ZzCd57dRZ1yIkHN&H(%%_=8WKLRgigeD-ejUx^n8thHT7;U-{@R$I<50 zKz+S6lyqqq+7os5)ZsdS$Tb#Jz^>JYa` z(S7PE)A-TwoBqJh?O)}vy$zO#faj20W6p5`6aH5Sto=nMdfJ+$)D>QlxR z`$W~rbD2r+9beDkH<$bTcYvD@nw?D4GUs?$mK%69HJ0Jy?CacWTXh&prBf8!4vk4n zPFG(RPx+sd6jHIwLhUm>FEN(AG?Rcx6*Y;Ld_gho;Eo}5XOvu zB3NYvTDLiT{&OSLLI>@NN@PG2fqV4GT%|{p@@)(A@POuelY?IS0U_xECj)AyNlHR0 zZPWl|l%(8NwM?{Xm6^B>u_gI2qA()0D!x6-TsY%0vLH>tF}-CTL;Y6UnE7|$9DX=P!@I}xWfIU(E2>| zi1+ML(~#!fIAkZwHG;P7kZi;`MO+nhzcs0-+37kuGE(o#k8wRjC5}bG_mO}3tJZ$r z`r^b>T0`sw4&JV5pc0KHz0GFX0$%6dn%$a+ntAnt-4d zui^v7*Ni;=_5R8cW6D6YMaV`$^yi#8m}XdXJN0?~iqOj*Bi%B~B$#7LlVCdzXn|8icqDn|w9zqKp#kdgKN$Qpf#jE&9J`M2+W#}vY~lmkf{bKJPr zOMSmAZ#gUU=qB*YGqZ|@R{;D&qLl9p;a4W{#jBh!&TRhmo{p}&2ru87(FyBY3)CkF zt@K~H$00Qq7YHqGVZ;B8iisEUcrU{=`vu_iZy!0GS`0e8UGHzP7Ndl}e-GMm!CC%; zLHnPU>o5w=#oW%4Yf0FPF9p=F*j}VF4F8KA^=X=zdyC6lF3xl}p?FjL1rG>Epa{`* zQkzLKy^J)lWbyx)7g7bOb^RF#rE3u7>Ob5soanR(1=ltT9hQHTh!&VHdVDLccJFGc zD_5yB1ECBJjHHb8)MWPyX{+-bdu6R;M55P(cqdriQo%v$dM1HPeg!BHW+!NnnH0U4 z`98JboWXTNuyWe+{#R4Az=~+eX1sNy!`pxP^@V^p&}uw~j6&$VH{7EEdLJQWv~yZOEj4LR_Ut~ zFv#`Az#Weo4Mz)%r2TnB#3oP!Uqfp|6&XMzg)be~<%xgZO69^G8qf3c(7mHbFjK0Y+ zAK_WhP@90$^+nAp2srqcKkKLZsiGgNb5i|sP`PQ58`~?gF6LJoqWhnL2k{!vIgZ2C zvW5+o=-tr-)#;X}vaIdC%z27nUZ@2gv0uV_ujS0DK#~4-+oam=%$DYcg;5?cZWj4v z!!~Yz-ZkWP)5SX-EhgQ$xS${|aM?q2M6@l2hK5F2T*lR?AsQN^TQKy0^ccp@UToa- z{g2le5j~XlG9(je5we@9h26GRlGD#XFjG2_=SB*OdIo-MW< z@$2IN#ZnfsnV<@OzqSPI$mNJ75VcEBm-{&n^A76L>``&MA`o+HiKBtfZ;7NtH9Mue z$%OFbzn56PV7y9D`0vIdPI4GLVdv)N_Ex0x-WBKxq<}zc`Wp&oZ;wT9{AR5Qbb~Vm zLPF6V%ArIIT{ZOCKv3={!3e6~P|IGdlM?mMo!&sGk;(Zk3*^=ypsJJ)rQoftL@{PP zPqbztU+AeLS}4RnrW}j(g7u=AWbitLJI6ms81aDOf4&`2(9{ftKx*a|lQPyd6_8EE zfX-MFCg}cYqA|BF*Zq0jS=+sl43Up#m!s)SiJh$rKIE;Ze71>^l9dbmMR?Cv6v?ur zg!e+e@yI>O8UvIuv-vRsr`B|Lm#^lJZQ3%1XQC#zzf)5rTAdW^*t%LQYQB$CH{MhP zj&UK7O>VY_5xQ#`yFNQ+QOg}wf=tIQVI8b7cWG}29#GDIUP>RaIj92040EF{GL~#q zT$!BoyJ!DYlZ$ZvJkAd-^Gyg2rsullnwRHl7Rc%Kz-iU6OO9@ua6ADaGzotzKzMXB zj8DCa1RIU@#*{z50~Lm7R^4YcORlXfbfbaLy`QJ+taYZnR>e)$iuU z{?o-%)O83*FBtepS$28GGP4^lno1orpFmAlS*Hd>%%{VlIGtO*o-(G(T{bekROG!VVmy z5H~-#hjIlZvZ2^JqEiw;FLK>frrjI!#uHlSslPcaS0(%$ZaTuVVf12@Rf2Tp-yp&* zI!r4N7we&DR8x?+!(Y#E?yu0Gb*m=eCnoi<}2;#_<%KQ|bGuue> zcxZ6+`C=Rhk7UKLHrl+*&$*p)h7)69IQq!CA>WcHbBYGVu%Mtoz}B|B-ucPFo1{H^jjwoiU&A{Q9SOK9N}H_7OFXW$)FA%rYNmIFIuJft^UpQr zpr#LtIipai?TUQ(IY+phZZ7~*Qv~(tSD|>z^q7WP(mzDfPBQxyLdxBM%Z+Z;Z++L} zowM~EUU5`iN5eEI z9(*6y@j9;(Uf1JV;6kY^4Or!m3+)l^;utreHd}q+y7=_)x^4&=^F4Dr%BZ}C0laGD zLe^s$c?yBwx?K9}!<#aCOgsesuEvxGE)iMH24~gxEeg7Z(WmY3d?eRJz^+*pg3hex zDK)T44+fr#&a_EZdA>z9pX%T_Kd_KKV!c&lZym`I`Mv1Cy>&N9?R3{yW!?yf_N$!d zknpYVHD4nahDaD>z|~{D`*K4~;|hu;79$xeHE`D$XA*yuK+S{yvkk2Wrc(TD_3Q7# z-W>AL`gQu2@aCKACzibe1Z7d1oFUIsZv^Gn$YRj!@E7U1@}Uc*^jIO>vC<6}1>;C# zn-X4fZaf6GzI@Ne0RaI}2P>`K0%p7GQE~)aHJ7Z2b>aSYFJ^CQsWy#FJ8oIK6c8I5 z>mP0i`>`D}|91@<>4wp7K@gJJ*FwLg<#(;6MaT>>v1Yt7PrW;lH)f)C-W8s3o7NT5 zWM6+qP{y=HYh0KMRK)?hT5{_SC6E0i;~H9mEm_1mZh+eZ_7qJqV^xtn!9k`*UldD3 z>+9%VA{>pXgFh_yNA=qT5SIJPGH=VHp&!Y$)-5vh-^LIQv9QgAm;!z^PQKNQV~U~N zG5>998N(!EvV+7^Q@X=S%0@yy*TM?U^z$rb?nOQgUbG|?O=y!Nw;oE5w}qDWO!UAM5=er_h3moi-&Q!+xG_a#!*$zue&^!B)r zu&;~I6bpFzYkgL*=6>=K>U#j*l?5%hq=_grNym z0e!NifGh3wcQN-F)|2P`UNvS!Kt$62;{n8Dv-fGQYV^zanLLN~E;z5LSnF}0&lgsr+ z^1A;-fEu^4Y`^Uw&X%6D4ke?0VX#^v%wKD&=ryGTirs&b0^^==Uz$+EPtpf>(HwDohw$1+_A5);;|)Gxw#Y=6{ww)hx##xZN`Lgg?j(a3~z2CV|-X`nW1WT`hni~nyyAGrUi&pHj>IW9kGxr{74^cV2g$L>l9jSMjRf-kl(`5(50;%08~AbF!~E_47o~>nCjq#WY{9 zN8_uigtRjQOsICFgm%z2@t-%3yPTuyqtLDpkV}kT!a8ly3l?8aCS||O0@RbV1g7g; zlSK#I*Pu}1Q*zw_=d7pSkCgTFaB%}d2Mj9dK%@RZ_ZhD$JkD=#*B!5OY0~LVd^t)} z+$^*y&KR#tFz8K?Wh35oZd>cTj+%(?#(pOlHTLQ^_=5GU!d{qL>Q|AGW6il;&L(=6 zRqM^*(+y;W3x!t3w?z6>qy~Ou<`fc+gMSIQ;v)O>kZi2FjpG8+n-o~CQO7<+rT9J+ zRK~L&qfiJ5fa{ii&vA6d(p!BRAwrv6a{$wGzIx#qmf8=200nmmiid z(Lb@wPo$stu|PBwgjjv z*Bdtu?2=lp>sHoC(EQJ6Er6Y#)m5V0%FwlbRA<*nhq>+3LyFY)+D=b?c9hZsSq_uoIe)NfyofhKvd^aRUv39eHP{{vj zPB(ay^L&u!!^p-hMN_6{CU3(Wfihd`4rbX-+?*qBV)<2M4li@~F-Kirf(bYSL~-R4 zYg^wFAs32kOK~>nB%T-xJrnprWT8}aEl_K#Ty3RyWRY`WUf1p}C_j(S=P2)E(Uoxj zJ8(HER_YynswaEc0i7&Z8bN)J(LdRM!mg6_9f)-!*kowLNV2LchNl1LBUZOEhx$OQ z;cewL?gU4tV@x)E@ZrZDuJ$E9>ENg4wY_hV!%weI`Qkr)?9MIWphS;N=g-^>&=AC>zFIVs)SD(R3lh9Ic=YB#ReqMc-TNZa1-~O?4 z54ouB5RN@va7;`KT`m|ypOpqZ(&mqmMs#jtN|g1Z^aN0BI(NS-Z5Fw>or@ZK2-`oz zux-{Rwqrg=_RK29mLlx8D`Oi#M{f@6x4-6sRpg%G3oU`ORuIcOi^EZ|4JjnlE- z4vKC31?x&VS4~*rY>9F&yJ6ZxWam_sZ-z&ANfys%hxD|AmMMY9|61t~v#0a+%y^%Y zx?DGvriKDqu8{3>b|$_-+9E^0%gAmNR-!|OWK3LHKR3~EM5B+qKm;N@x3j)?D3d?9 zRHmEZCfK!)O1@7sE^wVL$%YFJ2^+^fKqybXDhKOUJ@%OvF|G47xzRX=^ax4h-eIie zQPlkbVltFcP@-I*P%oz3+Nw$G@T<@P;(oZqO@u(kn6jb*0z3CF)1=&*o3v&c$Tbv) zz7CsEt6|bb^_m@h8MCZEyO51i9rapi&yUm+M1_X+sPiN*ofTs1PI*lWI>ah%&iuw& z!XYitp0ne25S1CEw9|y0>^QXH-`+N58i7XFM<%w^4eWi`wjJQ#e3kTy74+*|iIHt_ zz7;Fi1$H$i{+;NFg<+jMI$t<4MG0PWeib1we$+*|9LfHud?FT|*1SZi>vd#}ci6tV zkD2Khinox;Mq-7({k2tK;w&~$+02JB@}Qt?2eG_e zzZ+sJ)vc!zn}1DAN!pq^v!1JNT6I$G{)*F!S+F3*b)b287kLFP1s-F)iP zF=ZjvD)@VOpSsGybHV#M55>F|S6y?c3}R(N(r58S#o-IrxM@W<01xXEBlv=SMFQl_ z5cW9!2bim1JE7+LQTsL0S@V*>ot0h_gT|3w-K&MxCZ6B~^>Z8A+a+(BQl2?N)oBMO z|C?LX6>HUi(FLmgM%B$3l40JNd-NM`bpC3wYMRnTn$xn(ML5jiRpA){_=Tg6j(d%; zUB6>b2B(7spKC2!{Ke{spyR&l_5Mh2AO1$kDhj*d1)Ht|LM)O@vdZGuv5;0bYXt!e z?dz;QtH6%6pcd+8)UB~DmNUpHjpURcQEFrbZ3Wa-wQVq+6f}(pbo=r4_AEepu?diZ z#KH0UG{qqGM?s&NbOy|DcsK7)t!Mp#TnXtk^cA^1KOTz`>Tbs~IX_%{%JK6~gt!Ou z0-~BOOS<6@cWa4oyvWc*cEWBsVUexkenS`^77QQEdO2M&VgpYT}Do z*Y**LYyb1WNV6%5b?=BaL6jqEPgsK`vQci~g2kAlnjs?@g=V-Na@@~4hg{)l#jlSs zU`*Lm)4Uy;Tb3Q>(ijf#Nb&)VLaU~*Zl6#E-&o7fo?l~iUR|KxOPYm@fr>7F9x5*+ z@a6swQZqqPPL^{n!=_Gsxf|EPVX#NS=gG=19;&@#Fqx@m=PsmY3H|$2cdie@9t6xV zBrF{By=6UQHQLeF5rHr{^RCerpQ{|ExJ|)lo#8W2~I1gjr1DGr5bwz zl&VLrRM8GRgxS|xU^t@ePL)?mL=?CUl9b+SlFZ~<%&0qB_NN_(oyBL-dfreHESo>z zJ>7hF)Yn%iy@N0PM&7?fSu=HAT}_~9%xn0qaUc2g+~Q(^p=+D9(c0kFXcHZ1A9>@k z9F!cx;C0P*9(y?zs^^T87OCY-_M{cXHKK78AyU77j`Bh6KT>eT&M!xzCzF%8Cq%2y*Be zV~^e+HcfIf|1iV?*-awgNs{q+d|4nFM1)WeE~&uTX}Mrr4mOgt^(eR_0-j=E;DeNd z6t7kDaMNpzSAdkyTh+WBO<>B%A^&z}5FX(mkSk{x5-zBKYKiHYe)%$`QR|Z$j_G;#Lmsijr=m`m_Sc7)-{r*&4r)5b3pB_z(<3yXE>05Z3|Ebce_Wh1Esr#em_os1I0 z3<*S^upuRh5@84IZ{evMI(lVb$? zofZnxCg7NkT-pLW>3If31_g~{Bd#gwz&Zu%vTicupOL*q)-2;j0Op3(6%5yg2}W)g z`AL8`i7@k!@z{rz<;b~|-aLdSk+TqZ8*7@-TrVnf!)SED*dM zqyqCbdSKCYGZjn6uK8PXo3`Z85FQbgQ4n2u+I;<@B0*_=ju%uXE%DV?fa)s`ZhQfKRtit9l7f@ z7esYLN|VweOiAg^e$WzL`MPH>vEmO$GLVYb*{5&ILd%?nhtp1VYOJ#v#A9bjh?tU~ zN=R)y|Dz6Mn6YQi-;C@OXIjNWzE2LqcI5V%I4^*3|CoB=VNco~RvT#QWHFCSc-@Q` zZp<&DVOmmGlnFoTpm>r!$207s9@4nNcXVIkn)Oi4A=*9~2k+0o`rUP2n%9yt>~od# zhL1|E-#PXw*uu6+xHgY$Jg6ILSLrAB+9XcX)}JN*IAqPemhN*B6_x7)jy0jOqzMyI zUJbD1egEp`*HI9B)tkP7mP?vN^M?2oASmyMO4HBQ?RR7fznNhngoy}10}48kKTkC zBJF_9FfBlS_EWAMl>;#XtsdpiV696gF#1eJDVQsno8!HwF_yzp;79AcPK5k(tbD)(Cx zdtn94(UNcpYt8zxv6*V))ep85Hh!w5@*t&4Vv>rV=3(G^aJb9?hbk~pzC{C9II5$e z)}s9c85q)&nhqj4-xmg5*;phh?He5M(RR>_%$81To3Rgj3YIpP}7@>m#HAKaF@!4G`HW5@HQ=reziOOXEFnIvMd|y%b)jNC5VhVYYe? z3nmoDEQ=gGe^7oY-HNyjen@7%9U1LDyqu-BT2*chb{LUuC^v6R4gjY9AeLDOI&4JQ zJ2{{l=A11BS9eGY53*PgZT*L>v!%12 z)P+*M;s{nfRra&x#R~6V(b&E<&*pVkI*5a8X;x(=f@A3Fy@|>kjhx))4cI;*9;P$c z<`jJn6{W)@r^n=DvZv=fD^4nXcNaJlbj6nnJx(#J79$;^gu)B@Ja_7#Z&eEE9m!zRdgPc>*E7bCXZ`e!`C^`IemeCx5n5ra@Y=d=6JJ{} z5Ma!hpQHBJS}K#V_ZQG7YSk9Nv=NZD@^)aZqU9B(9duTBd6On*esZ-?;T;6pv+~R4 zx@PmrJ>h+&IEnFG$KmyWI+kRsq(zAFPPxGb+(x(vdzmCXUfrvwN$}YXU#&$38WFYx zIV;Cz?exz@e2f5JiynKO0)qG+&!`q%bi0b}!_Pan(N&Kky0&9N>8iPZIG@psJ=!_+ zhuvf!iYRj4My#70okW~ADvAkfhi&NcUC}>mYo0N#JS!n14+Z`wPs(LKGakwDV22Yn zIX32FlIjZ86G7O+He-0zNkXbN?t}1_H=l~N#meY&Mq?ow@RGQy9;n+kZC?ZzV4M>g z@2Nv~rxlL1Qy?l(hpU{!7fqHODuud?&{J-SWoDlwW-_CA&5`ld!(@Dyzpq~`ZVUrk zJ~*2Hx_lC{{xb)A^RV9I-WB8$1>!Ngf8 zQph(O{a`Myi~L({mh&g8OdC|)-PaAwJcI}!+G{og(G=a8h|iy*9F!V9SkSPuZ}iJK z4^pdpLQ=u9Uq1*}bXl4y!zJT&Ch!1C^fo<9E3C@4jf)C!nzp9NH&|LQ>_k;bHf9^c z3b^2+%?P9vrpZuY^wqA2y~Tq}(ILshQ25f`T><7gk~}y%4Hu-AZwUKvoeVv8N@8@Q z*zhD+7a0lkxG78(R2iVHpIKmf!U#@Z7qp(L13 zVGVcO8}+M2K`<4QbL6B?bJ$8HF^r9<2X)P3A{Ts2lYS}lK!$@Y-F}*UY13Ih8CE?? zlG}#7zoMQ!9%i#_@tKGsR>Rn>KdiuqT_?>W=BD54BpJ zbRvnpRm8W{m$UM^+UfmKavb0DSluk91sf!U$HS*_%Lw58jyUbe*q!dvay~BkU~Z* z8B7Hhq=Y-|BU*O{YAds^`nTh^1b%=(ul}%RA(plG`#;cz-dWb%ZLEo)gR9(|-%@ql zZnVtRl(u)H#gw7d-C2wjo~e=z+z^Gs$WWUdQIZmv-jP zR<)OyeQtA`9W_b7Fhu`mJ-S%-of&;LR}=)PBn~hq8ttfAB!UJRR@;c}J>zVg#f*EH ztI=HlU8Er|r)rwACOg>gH04yE5nt+AexqCL1c7+2g-AR(Teg9l$iwur-8f+dLPm#U z>0!C(nGG#(9vzKSd%##&zWrr1PQ|Z{u<-{bzkvUJESiY_y+63F`D4Z!YmAbSq}?bg za|PV}02p+WER{>si4go_8VdMqnv zWvY4KZc`L(2C+Cm!>9jsqpCAT2<+qUs1hG|Li-=(v1-tNz+8Wd4*y!r{|^Jx7<>JH z&pJr;e}YY%38gSIVJG*f z4?MzR8aKe6;)$>0xu@)8DIh}`#VKB^BQ{z}e$O|{lBD4tY`5WusZPJrs(nO812N<@0YtiXk^UGbDn7#BnlU$RCi-d~Q` zW)SmCOEA#Cl}U#L4J{R~NyA;L>)~F|Of9D1&g45q-EcuV_V;2CgwvO;_MJL~07thU zjh3C1G_%1WEubp%tZehB=y+ALtIAMZ=avtT$r=e+7AavI9q6ZBb z8gMFR-@5z}-mj;faEf+?H{vM}i-~aV-_h+y)s4}4$#6-Go?nh6EwzTf14(M^AIIaPs-afWAq7Xhz^hZ`ParY!#j>IRA_Lr%|Q z@&HZ%ZjxkxjqEAT1aT17_)w-B{B9QYW*_IfA7Kl%3t+E*v~2t{s2LH zeKqv+AOjWu00%{$D%cApa1TAu%6Qp@C!~aDeSIhW0%|ZKv&~Y?1hW#~Fmisn6KtYE z_9V{RR+5N{I;AZ$fEp7+oJUYRx~JsZ!*LHK1U)-Ew)@+TQ55}ntQE8xB%L; z3NK05Yi$RO*c?Yen-E8MPAq6Z58LMe-Ak#3$Qk4|LI z#8M2(^22c|OIiJ$sZ$z-TwI~2FlN-uJ{trV@-pZKsbPNg`YVSg*=Rc#zWR2VyI2=_ zO@sx=YeHR5)mi$T^=9YzW8vdwih$z=LylAwH4M>PEW5i1u!ZTjp^Z>{O>r++%gSjv zdPdFA(kfE@Fo<|UU}Rc(sg%2XlXGkl6({rODC*xoOJyQo$s6b}hZk#Vx6Y;&hsS#T z@>1zrAXp%8m?S5!+hP7YpWzV1U$m27TYcgL!XWE4lIZWp60SNc*~^0|5wSxP7YpgK z{0HG_YGm-u$p43;M^lUwC%B66d{^w>>$!^isQz_N!kDOHkb>dgL5K2ErTaTV|3lk2 zM)HDU`#Y+{U+Rnhhs&!n-_kZ5iA60T26iBOD!Wk(X06}&Vagb2rp$mjuDfrN)+fjZ zNEJo3sn=3Qhj{50x_8hLSk}sh|jh7>d%&6 z2BSyI)5BEs9l_>uir%zb>#uVl(QsE;LL-);5tccI@j#G`c7{Sepbe~Sb5;=h+521S zxEE%A?DzkC(kiYQy~uW8x36#eM%J%B3Rt5;2+dbYKfnYr?c0-)P4tua;(4QL!D4fEpNb;`>Oi*$4=87cQc>N7Ob zzi}vU#H)Yft`fj}y}k9`#+n4D#r~i+B+g9SDRbH=<%YJ=eAZW5sQ7JE`)6s=wZA&MB! ztPGg>ZYUniAfDy}N1D##!gl0&M7Y^ zJIjY-M2e$}d$#*&~*k$C{U74b>oIuCZ zmRwRM#H>AB-X5Q&9^=gIUN%i9PLT$MEYO(KA$u-a-)A}J#0K15xG$mh1t* z3EsUEAX{06^=Gn~f1-p;K(Ag`-bD{G49-N*ce&ZqoU_KT-#+l7iDD(y-AFJIT%nz|jXTNK**$z+B<>Psw>2ibWR{h{h7w5c4 z2?#N6A%Lyp4)ZiGv<_xQgH+PDL=+!Vg@}*}tkLiIJu#bXeLxTZ=HlCCBdpgkBdGa% z&#YRIuL9)A38g z4(TbO-m>uFOn)-I?PJVHoQTik?u=KY01=PPt0@lA@ueVl{sQWdjo2|jDfCf-GvVKF zZv1c<7etwo=Fb$S;~^;<#gx~{nL;RVZwBlQf|vGq@Co0!uYwz{&wZ6+|M1R@gYR1e z?kT!a5wd>pdmgVlmM}qC;*gZ65J#Md30Ho%i%y7EJ(`YnOL$!i60Qg=|GgP&E~*%4 z`gV?zanZ|U@q%>wk#}9q(?ObgUEBGjL7qoX%dPNk3j}9_!6Ia$A9hoI*(R z-fCNirq%p)l>y3-UIdD!{Hld4@2P5t4<-(5EP9MNksW-J(VclTm9(RsdJ;}Z6%#gJ zgm4F0;=XlpkmC@gE2?XmT@1rC0h81+WY*t`oR+x~wKWcIL8kt+EO)8V-%8+*>!UEhleXc`|K3(qP+FMY&b&(Cr((!e)yEFU zg`qkH`U;v)MU70ByA!kL1`mqCiOprX2X9~eLFPbP2n0JtB&l5R(dcb?>yFc0Hxfoq zRXffF=mO&ZP+MnNhy;bD*-(Ni0=sY9ihIU!;9? zR8?=+t&&QLw3Kv%boU{o5u{7Hk(NeKX^?IZknZm8=16yUcf;KW{Jrn{efNH2+&k|6 zM;U{2Hhb@9uV<~f=A6rx{92%a>H3TDhInW3)x1D(24o^PNiCA;#$ZEEs4wMGaRG}{ z0e&q&^T_=WH0C?JF8h#Bhg7`lXs_EQD95^}Hy0vNA)t`C0o2v(CF1lNP)~(YITfud zj1+*<2*OrkCd|ClOIJ2{_Z#a@{nehKETqWB-Rk&*m#+P~D(bV7y~~FTr`Fj=%Q@h| zW0Wmty=bX;4!b_{(mDgde$rS5mPX7x8*!}`9l7zX*!1lBy%$1tH)~kTh?+0|$>uE7 zAwaxKedXN<*F4fpE%A4sW$o)lErtm?Q~nL?NkCna{jO?b{ljzY9dxesghohNdwi7n zcYFMR3%PK}G17}tjFIn)oQ|XOTnM>_u>Ufu?@AI*r`rq ziyQ^+JXe!D4{M19)CKXhaSXP3rr)y*iv&HBYGnJE$fSvETiC~SBQ?fRG*oD3-B76i zZv5n`;80VFr$3fN9a;IFr0VYlgJ}Q5UiSYr(fYs0%l_oPDBeWZR+`@X%!$8kSahl< zJTZ_Sn7-q|Iz_vb6q}TyV0Ek?$9x<*ruEdm&Y;$>$zQGgCuJd{1=K;-$9aTue_;&+~5ln^u_a4=jE1$oJK78x;6@p7vp@YOUS=m0eT3LU1 zj_4U-NE5~-Nyg3GMwDP?kd&GJtCIKXepjwf_&ECs(_Iksx#SS{~G zCwRPlqM$N~RaDQ2r77CbTyrlEo}hS;+*()k3^BhV#MX%s+>~|5ltSxw<=$D?YQ4TRHke@$r7w z<00>%<|{{I(nadIq$%&>B_#OB71DGi+BK;*DilAJhH}0Qrzj-Botq3#r(6L zeTa#?#kB0s?spf(F&(&gC_?-<%_(unT zc&mFM86qM9d={p1I_0R3T)xhiC)CXx8B%iQH3KRle>wMU#ml(^k1TK6nwpyRCmosk z%g3)y^*9RDi9PTda$9G)yc+ThnVwdkbvqeYpYLGGMETfqqlBI)n-$NkbTwKHXrELR zzXnl@M#=Ggr*PiCL^2}T%0FP~ZnN@y;e%}y1pRme%^x|bwEwdRNNsY&8|up`N{qU% zC@i-T2_z}*vJ!p!3RGMM)gqqat&^hA62oUmIQwNdR(Uk}jNnv6u4FwRtgARqTww9 z7veZ)SBG||Yoa^X8?C3p4_m=GCOWv|+zWhS2$F(aulXMUKj?1qV4q4@Z0h#hXYDNj zV0T~sB~ioGhG}aRkvY;LiicT;ge2c1euZ3pM0%$jwHYB$UtVqP8$b#7Wv8I(@MhtG zFqHqAYP>+hm{3cm*XA?lE7$(p4auJsKc90x-d0+C@#6k}0rR9zFbu4h-rHh;K&shf zZ=VZVutpLw)4z)Sps!ccfxEF#vRa7jRTuBLgaLClQMNUQnlpso^6U;$6l7 zN(joVvH4X7H8f_eWctR)3UIZi7VgR6O}74azDe+zJJ@y)6i9-wUX}juWUBLsY%gS-_I*m`&X5Tny|dV$ z!p+F46bL&7$-cZ-!D;;k=hgOIyNiKg&mCX3T1o~KWv6qrr4y~Ukp8OX&^TRv0G@*C z+xxapTtnCV@#4d!TB^Z>QZB7Dx^IC9~bmxy^u&_hf$m6Dk0ok-{jjDLUtxNekhKaveXmwsK zM{$x&Kq84ogmD3>etqC>PXuF*}K0gKKJi6v(;dHm@?@IN^m|5DaS z>1@s8k7AY?ehsQolJc49e8`zD_`Nyu2%=;XI;S1yH?yuwp2Gil4?)T?OV+)Zo2WNYlBp)$*>WlG(lSpYKNEATnFsS~#?c(%JH zgK#E)OC^j~+&tJWs8NDN=5Nkmf;=*q+F6UJP9evg;9`>oY{ zSuu;J5({^ak7oKt2*dB3A)gUDT3cYHt7XU&uL;dPDb_LdilLFOjkETm@5{Jtl8mAC zS6U84MCX7eaOcL6xdM?hAHAqMR4oC~t(<`11h#17IqI*)?O&YYnq|j#Y-!0x(;dUU zp^HnD$sK{u2|`elyPDh5zqXkiE@v`|4i8>mG|*RXwQQzq7k9qe4ejO@eEg-=z%h{H~Li z#_w>Gc2?uL!>wtPgjc5yYTNikG_Ek8R-pfA~tCQX7=bfKn?0E>Sq zzr?mZe|Q?kw|QC1RI&V|q0lReQ(4luJV%#X((t)AiEp=sXihG#vJPcz29H)ox@~yE zj8Tl=_3{TPa)$aJ+%Vzvcz%#YJPKeDY{M5M;Onv%_yFwnzbjGc>#FJ z*h|OVJUm-?5Z2Q%S+@Hk<0iIoR6nI`KJ#1k!8mzP{bHpnD`-dz-*1%X`f9;I8ZB^_ zBXiqtM><9DV#L?@tb%R9tB`bduPxH#09ge-$bS3+cQtienQn*OGDpq=L%N*bY%R~G+*B+>`ARzQWm)Z{mbq^j1Z{9fx(2%O8VLZNn{pH;pSLIgu9R}LFnWMh z5yU(Iz-9C30Kj2b7sNN0u{o_X2vB@Q8g`?!rTfbW$C-hL-S8fXa5j+7^<4MD%0{1$ z1%1xbZTf3;G_*;LIXVTr+;X{dzKQRolVH92eygi&iq}IB`M}FxW=)*RI#8Cy@b?p> zT}az-jik>u3bFLn|IEFSMUfHB(l!AI^?`02qL~c-r5~S(WH4pLg8m?-Gy^34Vx3WN z?0or49;InOJ52wXc`4C=Bhwhv;Gkd~)+E8=X3ywyD!Cg2JhqF#%AKBRj}H}d**Cb- zhARHd`@&&V%~T?AUMM09VTA+{v2kHHp`_x8lo!@R2>vXhIyt<0?A+{2_V0A@aZo{8nZA{*~p*w@H-&CaVNQ-$^Szp86z${C)-`yqX}~7 zCQ?2No47B_V!)|0w)u2(U)NzwbDeILa@h~^eEaLzVKiPb2-L{v@8-a=kb`ft*Ueww zT0PDxYxn#$iT9V1Bea@>-3g7?pa_NK=C6df}F68!2Gp zclhz%c7cd5{!-3I&~!X(k1Q)H=^HS%UeBE7n~X%7jO63%n-`Z?&J!T>ci)j~tU6Fs zYRY1mlIR?PbNPEB+)1v5@Ox<)Iw_7QoKOC&5?@o4ScwfRPw2)?#J>Z6i&}RWX}H_X zGh>?0e@D;_1$V=Xt?Mt)r@y{(j@!Yz-U5Ap|$=1Erd;PHR^ezSdTkL^1tbWnU`16O$K* zbxcbq`$HWcMM2vHbGCeUp0B+-R|oGaH=rFkruvHQjw|lNhzw|^D#5bpV>zEg#gLy0 z|6uns$wZRf*s*h@2cGZ^FGN6WQnMb?r8{ z?MFdSN=IBhzCoXcv$MWu=XDZWPG){K-?l1RV&S(0k1%%ZEGAZi>0}WMW$RO@d7_2%l zQ{RA2eY%}&OwQuT`Zr1mpU?lK&iEy%2O|*pYiI?j7BEu8goGFO(UI%UVO^nE&hBJ)~CxO@b6)%PPHaY8$%HC6@5XCY#YywDlAYLK`R|nMeA*4OjMypl zb1VD7UE+jxC6<#yEl^7sJuyaBI4~v}*K^$*5`6L)=W0*?3p}EXf*JW4zpYZ9Hh_t2 z-U$F+Le*(IIE^e+u*vWv%(Ek1UX|Y(6~s6R8$__m%(~hKmg{F@Q`SY?8d>YjwCRP&mrkscvwcf@$_^nXBNyYXon?HbE4%|0UQ zB>)l1K44f6c)tL^rAIXUj=(idF`)4t9oum_E0VV2Mpr|czWKL4RFA`$j1Y0 z)?AYHR26|h|35JG5z_$3eyZ;ClJ`{za1tOmeR^u^T6^AToDe*nto3uiV`T{Z1SWxC zg@rd@13*&+FavQ;Uoz4}?CQLjTY&LxOVxICMZc|0F8!xHo@SuD_5!P*7_Nb|A)9)% zpAV4~n(bqSpz%9Dd8%*2&2T}eaqxdj6F+8qXE`*4P~ydDFDN@jI4iT+K*Z_4CkC$> ze}q%jQ~W})SWuqcLzK`1yaFZ7T{pFJ{^!q^|HczIUAWh*=dXE>lWvbj^7KlZwL z^M_+lPGF>3A-Q1UrG1p3=qMZ^v<#9;uYxZSB;c;B=S*c9Ps=9#Q+NqO z5FXO?+wk9E&Q~D&E%#5|FN)u_KG6+MDk!jO=&7io-F!cH8;iJCaC!fR&=jP2=*2Hw z(??wG-JyIMpK0QeNX=*JYTV~kjOsey{@5@Oh-{1{p6|#OXO@0W{?a6i{QLk`ubv+suL0uBKUlDkP z1Xp6cz<-7S19j>7aPW|tlk+}_g=lYY@5?DzeBqA;dZ_8)rfG#z;L1P#o`Z$O zXK$t|y|nao)5G1tr?RPcyuA5h#k`k`K2q$ZtKtIJXpN^CjKn-V8h1QRZb_eSPe;D2 zwjaZDDJ`zMmox_}A5L5@2;47JSG_~T*MB^fIVJ=nK6xwt)9t)0rNi3e1n>6HSD;;` z>H1^+{q+tfU;^ZFcO28y&N9U716dgWtXltOfCRfmYnLjTW5EqQzWP&1K4z!Z;aFtSGJVeOGN5#m9 z3c*1EBI#$q8Y$O7?S7f@9?BPmfLU>9=zns?;*sN+^?9&a(Vx8QH@8vzP7;*E+d1-c z{v^2phZ&k_{Eo=|+LZTpK2%IREAh)}!#rTCjD)Z9 z>x24W8n0CjI@(0A)6z{&(L)#AJ zHj9~PNMz03`OKI^Y!{&`5=0&$!!h?8ias#T*1oSTbfvS)aV4eoNb&n>d9u4xqgT`B z1F^^H3eifJ&R}cAQ2h^F+;=r6M2GubL3b&A+&`?lPl635kGn&U(usN|R;V7vBQB@S zt8@=giMqsDDesk6&sOd_x&xFi;AZU>k}fkJ)=a!Mem~${_TBJ@;FZS|7xAXv7LlXE zJVyTl5QHr<;NwQ~6TgB)yvW|kDGy9{{8DgaWQ5c8oK9UsW2`YN#p4Yd8=Dzx-(V8Y zz-XK+FmSRk6Q?Ka9RUHsmkpi;|1Kg=d~4U4nSK^5v60Hfr7r7seI0jdEb=gI#FdXY z>9X?|^B2qRDIO?ak0#phU)FEmYTOPOg()XGw((so$sRGhW>FxOpTFQgx@NsLKCPyU znBMIaZ{+feS@pxbgSjp8c;jgo*ew@r9pX|FJ@mwOEx>yE;}g?PzB9T#pU|{J=0E(3 zn*FSs=;4S+zbk~`5*YUxAaE5S(9$JvZ*vxzDsbr|Am0*GTU+ZK${qF`pKDHnA4;7e z@n$nURBx`9+$HgTy{Tp4?sR0*iJ9r`F&giA8_{x?EsXz{I|EOfX_r1~zK6RJ?)#-E zmBVx*KHs5gy{|D!23{N1_vcxcy%X9ZfYF4v%7Y#vLV34m0O+cyJ%$MH?lJb3mp;9^ zDL1nlhfAoQI0@{Qt=-*z2*UV$E*Lrw*Art$@>DQcBmM&k94mo3x69sH2%_F}wq(+e zep5%R1pxtAlhtM`lgm)r04oBPa%++c_Nowg$< zC|=oPEyJDN!)U+gL=AYq_Jh9a`NQo;x3lj~D~+yJug=1FM7iRr1UjzYJ?0y<1dp#G znRubwMcu+jMW@vlQ5(swD2j@TW&uCl7_(lwU-jv9Hr?+uE#Dn@dQL06weyEj!-^1R zJ_h$#dTy|KrQa<5%n1%})CDP0WuT54*?48RU>{P(AhE zDQmRJ=GE&z4g!t<4Os>JJ&e7ohNH9z8V}AzUXk-c2GU^pm;*0#A}j2~uKO$N&3DA= zPyVAh0^u?HApIX_608f3bjrE+L9vI*!uBKHGa}{ccmLWWI)+{zb~av!L8IoJo}VuR z?H7JRw?iSIti-OGcgdS(oX|8iH}~mUQ4sP5;%?rZUD($*aYn>nBLT;!GtSKnlvc9z zOxQWD5V`xqPZ-8bVselhj8TH%!Qx~7O#@tOYv`0_rt3-nw6pr+)#6@X{87{`M_5e zUZUadSF%^fY%(^$j-6${xO^AOpjXy9Y2n3K(h4DeD||(;i|}Kn#BL0x>#zL@YpKGl zg}Rb*zujQw@)JMoBA;xaM+j+Rtzoj}hNJ-h<7<~-hX=KU+);%2sTE)(9 zjASh1A|C5Y+hDX6iuvlA7>=X5f)U?ZuaJGH@&FD9p&VMWQrZ6_K)(k3uOef=12hFC zZ9pGGa~+h!N#mvPL`jJMkT7$Ny%-qOIB?I0>*NR>bZJ z>zJF4B0)kp*sRJtLgd%H2!`eACF_pG$R5<@0hjA+JQpi zlMU*VoHPQQIy1G9367hUbqJ6_qGSa=%fkA9-wjc8bpwfXV zD72Xe+WwsCfpc-4stDt4Mm1M*g-}UC`Yq~L@#gIT#FgCz4))&@w@KjBx^KOOh~8+K zUEr^_mKIj)cDEjft%D)78)3#JQuiVWxwrnv7qsB zbulGC@j~lm;wH>6Zq^u;uI<>HbsM=a+xWv5q4_i;PLf6Lk@XNhnvGd8@xrM3L)40} znk#CpJf21$8Q_`U_#BnQ=ga6R*~(u1Oxktn{Ezcm$6xsd=cIXxW5h{;^43pfMOu`} zSbI=Lt@)Uh$I6edUnYsF*nj#d+vdbh@9R<)-CsD21TcVtX z{I>B*`31;Sft73@HU7L_W996NkkgV>@GWOhZunb$DC6wS)^MC19g^W!I;=CO(~m|b z{$U#RRaY4!DbA~yFL(TRNF#=?YXH*T#f+y!{iI}DtXMusGm)K}+!#}>;OsABO7c6v zg8=dGPidHj%4X#3<@vdK1Itc*=kL_>NNT`n7GMUiy%Uv~fZh}s&Pvw6TB2JB4hU9@ zwN?zS*KVxL}d9b6cGlTeFwoq&{7ByW(>W`LS3mp->QX{9|h)$Z^ z`hqzxLOgrvFXvYqy393&a>f4;KyK7#URFrhu z8B>#!!M-PQG1?4(v^JITSK#e{Rv!pX^ctmo+xoP}ol5)jD@yFDU5i%26XR7+jE$9m z`hm+;!Z2guW>WR@I7GyK9?a1##Ac5T5tGIu9A`D89H8obvI|24huhB9!;U;0zs@}E zW4UA#sOcWWdU#g}qzmQST1SgMsC>ts4=cR3rA16mKy9JTpjrLv{%&~~_w2xD|Ca3% zBh@r0@fNr6x*1;nvqQd3XXHm0h-z+IxDp4cZ~y=5UG~8RRk5sK97Fg+EN$1d4AuLQ zvXNCkH#z<*ayQGx-?=MO=0&2LJsvRhrX8kVdU(ahFLo=cn#1x$4>W?0ubCY7oD~j= za&FhSCVnIXn}eNTB>8k|pyTY@X@=M2)^%axhr6i5BPVZ4IgD3!rNmr|Jbe=hPcZR= zD_0EuROXq|t>6Dl4$kv%RL*D;I#u~ySh^cy6m;DOrp}!|zsR$DJJNKBSHHk+x&HuN ze~ennIM{U!F8l-q(;X$m2spHkOT6)Mq%vy(7GmfHf`%riALED*1 z)2HNet^cZS?Y8JqpID4+8&&ZB;Rfo z(jk*E`Echn8?=5?sc(0VcRA?ffz@C$=wQ*ZPQP5ig}33N!*1oc@F~-I1TSDQe+_m04oQ*~Cp>MEc2hFIy*S8u261VNd;?^>%jojqlr{p{|q zGkHr?W=|>KpWL4?E_pUOAfC^ve5X(2ADq?Xd_4lE(>$>}=nqSWREp~HcH6xn`=U!B z-VVim=nNR*@ZfYi*VPwP+4M7a?;&m4qrq$ewf!b^iREGznBD;sS=cpnKk?A6;aP(B zkk0uhgebuAmY$zsxnKZISc_t$@& zN1J;w3Zv60Wu1s!(L_j8zhox;aL9vmC3nyT-#$={R$fg|6}7%N+rt6UxuxGnb5A8V z&8x5kCT*}t#Xw&<4_ZaAnV=&V`<=Tj`fy!dP26*hTN`<;T|0d{oYg;OVL$09IUUe1 zwT}O+6SbL;($@%1caPYaq~k}ta`vk{Zwe|qp8?g`9d$|>-3gHG5K(Vn&4#<9+!bwu ze}OhLv`r3f4lV@;H}j91hlI5?^h|*iA~oG7LNb zw3v*?cMtqWrf#<(Q&+Mx9S)8|zN4&fSFVS?-bE*x5JurWyi@jMX%3$>!Ufgb6Qnf} z;x&8Lviy;I2*OUgdnBxaGuj~nm6%|F)#Q4itf#NMD)5|Z(za}*`n}`y;%kl`YiT_3 zQ$ZpWd=s=HexxpXR^mUA3wpD3>sBoTg{Fyow1XU>G$Y2MvVbvw0Wd=eMCkrpIyp&_ zlUgX3m20XS`Fxp{l2VaUW#e>-ma?6TTCNxKY(7YH$`P!bm5d08NncsssEs+s@iy+& zW@t*iQOtgzeK95Aj}YVR!*eHAP5_^__X@Y~e9h{|rj>*CAU#JQGdi@8w?*KlJXZ$= zCpYrV0E(^w$U=@718VpD@;D;U8hCD784@wMGSnvVh-*#1{e9SrJ$|h0nMzO=`Y`p?806ucpmvLt)^D~zT$2-j<(Ux{B0S%*6m>ny52J4 zq<>^S#-KpTrpU_y;s6)VF{N&DRj>*CDyfhWy=DY$5h2A@v&sS6ovgHuJ&OtSwBRyY7sS6}Wl3J|ha82Yo*1LTuZ;Myj$L1Jhgb&V@X*y+wTGrCr zH@gnOFDJ?Rp55$)&&CoAju{dTMa0kq!MH}zqcgr++^y3F zIp!wIZ~>R?0obmRe1qzuCyh z3A&-AcSg?T4Q3DRX76)buGFwWO{R6_7OsosR!{CSo)5{X5$x!Ir4Zr`e*rlXWZfrs14p9)&`l^s}u3YSy8* zB$?OTRedln3jIsLW5Ht`ZVn-vLto&_=B5~ zq(1Q^whKlkluc=a5r+E*1R-@-ksFhmBVXQ+N)bk+tAuC7y*$m`;udQNPFTzTR&KL_ zgu6j^$#|c(r}6oTCTMinSu;`iSK*?Uia-CO0&iFZhh5 z<+c(^TBy${@-h)nqyyasmS}8Uxj6~uDw(fsB+o>pgo(0PAU!UwIvKkta&fFE>z-f_ zEL(&3SCr_-TWD8;r*WGJVH^Be=Xmb=AxdErdZ#C`trc9gfC*?RPY2s)iCt{xellgT zU>F3FSkmLyn0~+CE8pjr+xbP`DJ9TojOnZ8-bsF ze5m%QRfy!h@FRpk3LgJOKS%3ZCLOzNA*oO@G04EEow*i`z_nSS9mFC%$*7);q8&GcEHqA6M|h z?JEeud-H?F6sami@J~}*FgY7SMI{txjb ztH*j@MbSU#4$_6ez3=FWAB<0l+*bwVUIPiG)}SzBN_!+Qf&QzI537NIjFFDHG&!>) zq(USw{fA@EuKi4ZNw54zZJMH^i@DkB%9X4GkXZX=FWl%U;Z-=P{-|I02cllMAa@c( zdwbsjr5xNXUOms*IuQ1ZLHNq<+%SW zFpPn{RSZx%xPM2w?YHUA1`X~!cBD`}xBu<%Su9q25+L7eEFkbn>i>kSq& zoD2Zo{2~T%n$+&WoS4^l4oGwZfmn5Dxtr6TI*2-Z`B? zAj+5b=R+OR*e{>;u&Hog_bbqDg^(-!9h|Xpk`MhpG zvA%)%+2TD{;ZAjcr1!fD4i+b1hJo%M`w@qG;hGt-{{IY%s{GgAR3cS=d>z-ru+9@) zC?P)adj)C89U}i2Ah4aF(!@jPFSw$%B6xK-Q@rVg@$|gFYX+k5szCE=j=(*8bK4(I zg0_T~h|1Xivzfo1}mFa$W)Q6BGh z8dAY6o2n+>Pd7TT|2-shdx4(F%VsX2ZWT3bB@3Z*fISm3&J74_b2CJy=6#362EbaD zz&>TuEw7Y>wfjR5$YTG3P(wx2eYpc(8gTD9W1n)YArDDKB8LUc`-!1t^(KayPCr`s zXe8umJ$6~ktPWK(VKMW4>EBV7ifo8j1myJyML0@E5A2moIFX1z{)BL9;XBxV#4xMk-Ex)&F2 z0*M7@cvEUf$i2rS-;fZan7GKHF_ z;l5)}7#|63;H3h~V^jfB!+AghfP+}5{Hw^($$sx=_b49gzS4;9dI!>EfBZdZR{PtY z`1--V#KMGhQ4 zyqelxVYS*F6RB7R>?+&a+rpnd5%Zsygc|bFOSoJ2Dp)KV=65OiXLTB{H;e}DFCb@) zymVbt#DTbzKd#EKazIUJy3bzWD3NrTp)F%)Gw#n5^qr4T4c5Y?R`(<_x1NMl4ALfl zer1q0>ERl&ARVPnHfK^0)|ooaWBT!HihWo9sDAbUvlL&Y+DME+(%K@%j(%*gJ3}-1 zgpU8NoxaBRFZzW|ucu;awE#bvAO)7eQpd?!ItRp1VqIB2!2W;bzcnaxgcx`a-JZ3` zzkv2ES^{@wF)@X{^+)=%o3qoFM9}u)%mZqtO!*#35we=o0^k3qtwo^n8?Nh&+~+0- zOykmOvYo=sxy74+p#}rCisyOVvhlOafenG6Kmwh}z*!gG6^ zT<7MERm~dK$&2A9El-woo;T^BkLtrMno`kFc-UO^o^*VCEPN9IWRdzUAIbg9^U}=9 zXz2I-Gv^-&rfW!@%Q&3e#?>TNfBqlx8Jg-3|BUUaV}&SrM8#^Rh*}r>gAlTJ9hFkI zQYAT)IyYPRYfR1w7?k+f3ZWDp*AGV9vpyQ)36mNe#Dm%yF@|ZVCQxMj|2RWOZCBB! zRgMUhQifs0)gd1u9rj$)?pi*Z7BNZAci@@ivvfS(7cfBH$)oTb`%SwuUy7p!`~kFVzi$#2^LIGrch)u$Dq7vqezfe= z64envJX3t)TQjJKy34TcqOW=I+%|!fyeeEHr1llqBE}`)XQSVDIdye)PSM9jviTa~ zA_VwsRkFoDPhBkMaSPxXXyL~&KWWH7c{9Dq zBp8Gu%@DMjv%R~d)MLyDbM3M0BUjpL^C-5BftwDdG3>)uTaRQ zNvTTfj^&3?jHn`DHi$FEA;(nu&7O=$1!H{YfoR4YC*k|_9f;!Q59<|uOUUPo{1bAn zc#2Yia0+IU3?0O@hJIXno`Qebb(OE1S8;T}Yln}LPZz#isaKnczNKlHhb0IcB@K5{ zR9xHrN6f0#2^m8ceE0(SSHDWG)#(Zp5u~w!oC;Wp4cfx+`lfN*0wyE+p2g^x?gZdp zUnNJLm-p#IB+9z@c-%0d1yUJdMU|UWxP4dA%t~)FAj3#(8vD)5D-q_F^b{5tB6nng z63R5|j!b`bM`X$?tf(7-0KE7ipf)Q^bqLUX#vB1wfltbt%D_^rzs?|Fv*Kmo$pTs4 z76FqF&iLCv#9+X%s|pyT1hg_bpRKl5GrwK29~bq3gA2=iH22EH8&iRKM=^q7;gwg! zZuKpI*wI51cgg0c5Nf7>dF5FB6*hafvpmg$*PFYvZHUbu>j;K}ocQ{N8R&NcLhg=e zfs7r2lwxRUc=vDm$7M%C60SU;A8#n1+5rCE*sU3lu{s)^`&Z@ZBM}~%h{eipRv+Vh z@iB3WqZL~6K_5*m zt4z8e;tw$Hg-|;63+0<7p}3Kk;%ztLEE$D&sHiq`ns;Jy+z9g?e7{d_J`of6*g2`$;w+(-F$+y)cZ zdHb*9od5!JLACX+599yX)4cw#x_lY4az6wUU`Eg3v1Z~&nG_lV5%+FJJt}uos2fu8}{-nA= z`NcOAYl7Ld2E?7d?->(Amo~-vII`dge^c!EgXI~Ppmf)i4$~t$vaXbE7edMHVDnGf zmU#T$zNjgk-)Hqk4|+SKP>Dj;sn=?pKE>F~&ox_w0hg4AoeC7{TIstFESN&yDB!BMXpcP;)8#zsQ;B$T!Y}i*9{A`%h zgLh5pn%um&!vap&kj6FT!HRUGA3mPT7WmwR)~&9qLnlYH-bP^zQ~*uT>#5*c?Wy*rzXe9;;c^3F#7@09_(MmCz%yH2W?f5=9GZ+c2@q{CE|Q@gT!|VMsy5#kJfd9&;-2 zJ`Dv>zuX%G&dC5Da7r4eJL3DMQ%G1{w`J`;-!s6$%jLN{lh?`X*e2B$@wywJh9oju zg`A}ka2D%F%$on6S`uFDwvi5CAvIlg|1op?<$(rp*SDmsnv1I1BSemByAdb$Lf(-t(^{&u9&VyMGkc8BXo@mJ8Xte*>y zXal@xL$Dot${r}|A&ApTnoq$J+y6t=-M7hcn{B1S>;&}G2Fjmhc_kM z3}%9J_&V=-tMF>>e@PGt42VY)*!x{$Mpd;AVXPFcdYY?xeLqHC+xZnkG}iAFcRJPtoCLbyBRy1ByjIbLPb+13}x@_azJ6 zQXdq*&KiSHinA44Pl?RcI>6MzVme5DE5{WI zQS|p~g$HM?|)SH*_hKFDp~%v9|NyTJr{2jS-JHP{$V;wca#(UcwCWkaV?H zZ;KEKw~Q@|ogprCAp@aoK)f=bz606v9Ucd!c7YW;8$GIQT+sua=5eAxAGT|UOq1lv zMRsK-mnYPmbq$zgyV}A0CHwkXOU9o@;y?Edl6lBCi|%=owjt4<70pjunv&>WofUTK ztT%pb6Hnk55G(zz~|Hx3yWoJo)m)-&W#k)u6(Tzr>ui9 zdtG-Lia`6p?eNDtm&QYS%?gpk3vfa85*tw?-*XJVdzyL*<%QX}vM=n}>FrVQfbwP- zuc;-{5t?7=GctweA+NWJ`zsF2dc$aU`2EYi*~>L0Tv zhXSP;`5zM60ZV8WE_;{-m%gvePQ-;`&%~Qze`=rln|1vJXKmY2p;_XFPqZ(r6v}u~ zZIj*HE*#Ar;7$~}K{RwyZrUxx>2xc0VF!jftD++lw>1_KYF3u%R2Rx0t%`2xKsCf4 z3omcY@A0qH#2(Dm3pZml6Qi6**_I10Zo|}kCF)A)CVpfCzV>#X9^P72tCw#CE|<+U zqFyYx=UrOBAKrcofnt%lt$-9u<_ghQj6iU51}N&l#DRbivap*ft9g@IGHZL?i0b$J zw7v{4uD3`{tma9zeUH$uHg2iHGILc6WK!2+bRWkru-z{cv2oGca{ILSxRw})cCQ># z*Yop5eg5FxQwC-o7-!|;>K1UvA@C{c3jXXD(Zkh^edZXLUHb6obpbN1FHP~HWoM^g7|%whA|Q~ zGzH(0RSvzyd6pRRpN)mdOk>f6Oi+T++7~#FlSE4G{>~6}7RD(@g@^W2vF$1MH^3~e z=sFIqPcOIog(7KPUPC4)^xZ|}R+05$y2sgQQ`9`$pI5rZGK}RX)R>^SW z9B{j8tU)&4&teX2q3RtZO_Q9qQYFQY7HK59}m0Jps5ga|Gl3#LrBZ3#R?TY zspy>K^W^J=rdOZ4g=qO~)uW-W^k%l=g*R7O?JL}0-k(^Sj(A^x)JBb$U@Y{7^<+RK z?i~m_BV-<*Qe$sibO`nmgkM$YoaPIC6Hx1sR zVzw-`!{RL!EO)1c1J|gmy4%yF?)B7EPPAcSoJ9v#Zx{aFli#Z|NBW%7geM4~mgq zBZ=r0y4Mp*Stb$rMD51FJ$kd5#u>jc&KT$YgW*t|Oy2pt zPh9tPf36pMf|pGnvwQCJ4%sJ`Ced7=Fhgdhc+)B9&vbbzjl6g=ZK3}rvJ6Ne`!ZSs zkd2f1y@)C+D-n>(p*sD@la%IH0_iUWVDR7a84yG_$I3;}IZ4(7E+1@z1PSmp1Do^I zmmeSAjtAMz1i_}s<^q_@BOq{tL@j?=Z{XIi53*sSeHVnly*XX83*X-kSYp5$v{zmy z>S}6OLRtde>M(VApGa81N0qKrL$`Duq7L_)V>0rhGYsPb9kP;dx<#D1G0MN1 zmK0<%yWH|?SCg)c60^_M7b>|FIsO451F!jy)0!Bp@SCc(XUb$!G{0QcA2l|AK9U!U zZF=R$5$mKsDQy5Ct~RCQ<+I0?gSy4J6R*p3!jr8GppcuIbISGE8bDa zmo^(VCaM3pHhg8^3U4qUw-}#%3F01f8ecBg@%hK zaNo4Oni}C|0;mLk_s>9>RDlRbJzpB|9Dd57-cy+;HkMRxMa+-WtA3~#IiqpT0k$*!Yp{b9A+6F0q z&iW>C!1&hyqQgS)Yvt;R^t0O+3#E+{)Fj9b$Mr5$mVB6qyOUR02wZsP1u_#e(NU9f zNVO|+y0SX8i~5*;KmQb3sk%(FvXq7({xN{>ctS5^x1YuXFVcN^m^?N@ZLIB+og7ev zuv?fBC0y1o%6xzCl!QJjO#dpFNv!!}YpD!_zF$OTa{LhIeg4zG-6u6vr2Jm`0Y*Dr zd-;Eg3iNQ;D}Mts1X(7TFQxoAYAoc z`e<*fj5&cg@+WRX+qG@?iXNJqC^J?dPS^1!ZUD+6aA5j@&KC3fpT4@{SP|G)PTX9j zy5HfTXy&s))!<8&qdabY7-fwoG%Jpc|FkcxsoqvV~|jyJ+DM_gkSCK1*dEF1MsBZ zWa_UWVyNQy7>iXg2k4&kc`5MvU=u)&v~GT@vlQGx0MtLon67Fa*&`Xa-}DiVahXm1 zL9ihFwcs6qUxJ#23sqoxI+g1ur|s_)$MYhfkG0f2b@j*ko0#L#CX zOAizr5Vw^v+o;pR2v9%&!7=*fEP3f|`T3IGj$@t$roqXLJQXiZ^;nKsxN(u&^2Oo( z%%rxXGzTEapd~?4&gC#)XxkJc>CcR-q)?B3uH$@O)Q6TSk)mjUT} z1o5i(nv9cY$mowt1s(OWvV6dt*+}w8G25XdYM(WxMValZtWMw;dj5ZBw_ivh*)902 z!8{KTz&UqAieTdl3rfH}8qZFD!Xgc80=1D`zXRZ&d*j8U5q*|vr@_iA&B1Pjr4$}1jpO`w!U=@Nbib4NQx;IwpfcZk zkG;z28}Mbc5NHy>Uge%=PP;&as@IuSRak(UT~X_NKr-Z>NEEdt$Es^%BW~Dd(9el>et!Oi*4$o`F6i{hm7wfsQfdPAD)RDIe1N%ofhtW zCw67&j0#39=4og^Y@A9Hd1VsHbFCrvLd`FQYD~lA6QB2QC^4xMS``N>)8hY{$N-a6 zZUO(5X6Jhhs3c@tws(@0l(ca0DWf@hch?F80?q#@C~kqaPF^n%-@a}H;@b6Rz!P&L zNJvQIO!mGI#DlTr0^pcNwmm{C|vZOHA*gsen_`LK~v@8@60;Jo#? zpdgI`S*M)5yx-ztRtP&?gRj8&?+EO`UI;z<49B=~xO(-YL>?@Y4*69^))6W$p}a@< z$%oXY?N|X?f=yOLG&Y&NBN6?%t@BLx>FFRP=!6UM1zJ-=G@Z%i?HY1n8inh@J%+TR z>X$rLUbl~?RaM)|`r&z$n`8;izts}1{2m@A0`@fxb#L~=E=fpd_y^`m?Yx%9A=2ZG z4saUM`cgjvVHv)_SWT-zgT7;d@d129kj)NOz_=?(V~P}a@y#6Ro*4yLHvR|29yslw zq9)LvV7&G~HUHWv!e#%^+6u{TeT0A-xgqywAu@4PAEg#3sXq+<(-#Xo>pNgv z$&H9e=-V-BxQ$-IR*he@sAFIT0n87*K7TC@rkXK827K*dFY`cNBrVW76;|u))3Ssk z^e#+1l2j3B7I+@&?{m*`vU~hj!!LL}j`t@t^LiP0$T}lwB{J^~{p!HdFMkiqfF@tB zV!WoekPyU3-^#T$7$Dj%t4B^tY!+yw4y(TxCs$LyIdqJYWHu1~Xh7I|P*EYer;d7) z{;PH8r-)0UM?@@1W8=FsGV|w8j>?%1H9s|=k&ntZrgGfUXndN9@XJVEY65#Fh$bxF z$i+}^w2G8g*W%WtafEAYzVvAL1F|Mp8{R6GQvKaa8XwI1ig_-nw+$9XiJNXN>=NcIbD8TP?N9>aqZmE0m2FDp7xV2~ zb=GsY8xCfBQy44ABPoryABHQe(thM#yVU#*1==igoWZo^$L|^%i0EBfUy!%4^m+=n zS-l7@l(-p!(%>a5RbgnAwOm%vA~aB&KAKs9kXfFj4zBxF**#XDnZuZ&e+ZlDpHb44 zqy+i`fd7N7{Fkcw%MkZz65W45LZf8=+N@+BwIDFin%V%UZ%)mdi9G>qXCLTbipZ(-K!CHjPKRwW>e{+1>aN*DxRk2!h44h+>vHxg(hHf(K9)lQ zQmIHb|8ze>91Lzl&0wePN8tphtc;x?x+#0xj3L*4&+XFCLB?+G*PA;SCqx(kX=uW| z3O(hPd9lW%ZVHMT0`E}%stT9SwG*02e!j!&ldS1T)sOOB1hhtJI{A8vKKE4cbgg!# z^8`-lQqv~nHh5U^Z{<~?K?wJdp!1lrLRR_N@t5)nXUq2E=3kA!L-pgT)TVO!B?j;8 zvnxh5$Jm3}cHTvr$QMQg+B%e+UvKq-)v7{{{7Cj*1KMkDpnaMCoRdW|pN}*%zv)uA zM@_+cu&N>M4F=QIL?@*xZu@CMjk#fFjS`D(5n{;MX2o<3%$2jrx`zs=q6*8Z$0XL| zrtNldOF)>jGQ+D*&^3}Hs&VB%dTq~5Im7AR&-TIzOIk3AT*p0xXh0K4QNp)%d`@86 zu50UCk4$Q45ETCP25JIFaXf(bX=KDM{8OuK=xj5NJ|E)0kq3JEA>CvD-)XivhyT)S z`;7l+wut{Hnk|gk|L-+h*|Etc^-Fs1REF-x@xZISMn#ZfYf!GodD!OKxxO&}hA_WS zF=GXyc><75zWA#d`6)r&zD}PA?U*=yKXTAkVKFMJ7rkGgux8`c&Fhn+SK9Iu>hox0 z?`%4Ix9|?MR@5mj*@>-xWuwfmV+&~yvjsQ4bj0?6(C}*?Bzz87K6zc7pU5xb8F!Fi z21vYHDulbP1H=iAUqGZib`3!ThhNTBE4*H^YtUV)oPLO14~*#c#QAwtPTb1^v4YB9 zn6G=T0j}L>JzyIzDsmPA@(ym)*{xZuqS(1g#imPBV?SU&y*Wl@>1lhn(usJHd-fpg zlKw;3<@%4XJ3^At7bvrEvXTEe8ci}aEGH7-tMJhB@~gXJT?fR*;@g%q1&Xy-+QU1{d$0y@ha^6MMt<}lW7H6{O2zef= zq;69}*cZPgngN>a#B$fmC&t00wHy_f879o$*GHO_f~m+4)) zPji!PYLfM?X#1sM+qBA3#IAKzaV&$MlB?}WkLHY%R0AKc{t%|QW0wCqf{TaBrGWH? z>T^~kQ4MQFAXVDarJ;!V!TSxq4_E4v`hz5z(uX36@QS|)zG5-GjnyQg@g0h_8Dbb* zU1SLe=sjYJjJM1>2w@RJTlw#iL|S3NqVckP8j5u`)lN_0ZdTWED+npkre2?=;Q|4q znP$-+C~d^+C3-c74i~=qDY-6#XyFdqs)ktoe|MR#n_Zz@uT2f+JUc6ht>*&`J%1)> zba-ccjl)%m>cp8LM3fYBV^Ao@#L4nm9wI9^(b>gK%11&<_~d_x1anTS3Wv{3GX4L7 zEp(jY#kUbUz??2M(9MES*DwYO8*enH$%){xSUv;tI_pA(bSst_Au>Lh5qZE&g`4@s z0C>L~P8I|Eh=MY0;X7db+7EDLV}(lqgzXC{{sN#QtB$pflWy`b4{-H>)rPh*1Xa%p z)B8<;ySkcW9doIAl)0tr(jc`ssi7HTdK$SMm@3LYE+ld9jWNkq1H@!N6s5SAkU^J! zNyt7_o>IW$QbhZ(*$2Tx1z^elP=9EiLj!c~Nsmfswcf`c*WM#G5~(^Hk^))8WdYd8 zz(T1u19cBERT5tLgM&;bPbuqN?jyl6TvQ?QpZ}!}4SrpLV)vEopkX=;J>Kpl3Np z3l^74nC2tnWLaTzboTS#ojgusr|I>~Um|DmFzEG={VbgCLlIt&L0l- zu^P~p%A_sJfNtwCM@$wdTQ`>F;%59WC>iqx#;XM3Hf3@6j~_EgXl>;U3Re^yBa+;Z zMyY8d>oYScuFD+k#6$30qO$0_rgWDf!wR@Fx&2a|q)dwKiGe_9nEo1NkH`y@7VNyA zReJW^K?)b*2}A|QuJYj|Vxy;$WD?b1|Nb?oi@<=#mqjJF$^jbDr?dW&r>c0}A^y)P z#kC81N@*5=#rqh5#z~U(U9kS>HPe?iDv|KRw}n18 zKUjyr5aSVYL+)N4VRn$d0U29{;Lzd}X>K>!sB9d&nmVR({4e(m4g8n5&zTpBSYWV( z-;!xI9&yHv8>4ParK)v1AY5z%Wd`UK_j?n-`9dATW(K~9@DC(h_K9cs^P7ORlq9eH z_&ZuW zyH;eG1un{EnyqFXehCvy(9}wF|Ep8`U1V(v+gxpU_C`e>$Wn$>5&X>k6e<}4mxO6- zakHFHzs_4Oz4zfCzp`IGWOjlts-)G$gu??kmS4OY*UIUSF9AZgemh(AZ@jTf6j!8E zAiQs?UiEoux7iJ3G(-+>J857%+tO{NYG?jpN}J|i<#CY43p`@L1(8$tc#MTf01%(E z1;g9-SveTFl#g}Rae#oOxUNVNPto(PpO0Pi*5bWlQA;Uxk{<)S77gf$=>N z0r1@YQquGmDiUJ)o&f`iq_jgF>Wm@$D{k}t1Vk;SvF@<0LaecR{QbFp;#UNZj(|`* z@SES-#*!kY?^G?o5(m;OEq+Y79HVbx)u(~1Jq!JIQFvojZVSyKvzzE&;4HHacfms( zK$qekz9bWNv5#ziUK=2mV&PX=+WY(c4gZHZ0Z`;k z(uYY3!;vj;zIa_9tcXixLrq0g72p5lF+t2K#m98gM|9S|QnJNDd7;2%f~4>59~Y`I zJO;JPjQz382>w-+s0@{dBGT?JtRQHo@?U=jYLE}t1Gcww*l8Qv1e0NA8kpOFs~ZEl z9_9RTcRwY45Yt(-HJ0PPbUK_EHz8=kK_%%WJ^t$-wY91-4f~za5)vVK%xU-FG(eJu zuIUEg;m7w#qgPO*(dpjY0HBsY2L(AOBlr15(l(H0QK1F(`iHiu?p{a#C88VL#+w0_ z#%`CK`$-kpHij4jqC1dFf8W*wZB>E*Q58GTDqCo6Hi8K)&@uD6tY1wR$yLNvR=%@I z8XeNIemi5smGb6`MK%BDW42z+Tp0&_x0LYk z1zk)*WTblh1$4b8m*j`rW(@$uLaCYCkBRCUUU&i`inyDDSp+ne5ok_3Q65n{Hvhw! zC|I&jNC7$}6&E82%@4N#{Kt>8LrgmUuG;(@Le*UAu1j367vUupj)D@$4b`SfwNaJ3 zKsU~`C=Ll&@?NKX=Tn;x@bo8Bo`nb9=fS9P71008c=8hJk^dap^vemD+TJ8^xGYe1-V14B$?5s9xHm1 zebeO}gC-=dCg&(X#(Z{dY+)U-Tp}!!6pLk@Q7kltXQrSLiN0Ux_1mg5NPdS4A7~nR ze2l#8|0?eW+mOcsQw7Znm{xz5JA^pT$4VqcD$=5muqM%s(}99j8j zdfJ&`GU!msh&4C~(}AXf|Un*a~Tu<9)Uj-NXv;N@$y3m+hMXH zJ*1z_@qGpG!skA>Ir)on5^;{$6>EIBXMM9_*@42|hzxTd>3r#QGcG$ARVyy6D?p9> z01!qNaZojPm(P}bzN0w1uOZhY2l=2LcsPFyqk1;8FDh>mPe< z%kx3=UF5;!u=*wAyd$dOOdgtBJ@$SNM|j_!{P(LtfcL*~B%Jv19{5kZd_Nx5Xp}bY zp@Mh_gWbv$r1GoArblBZFG3>{@v-c0A`>1CTMQi~MkH)$LC@n1ty>8s`-yKewGJetMEg)lt;e{+hGTL|N$3Qc1ofhPFPg zdo_QA(ivv^F=>J@%J&;&?Bq8(Gl2_t=&O?q(1{#GQPlWI;vufJO8;Z)pkiqTdftp> z!VhK{>cg}qz@BMD^w1n)6iypdUL5khU)Bvx;vNw zR?gMuaTlYU0wWCt0!2uqJ(llqp<6cxFLp3xC@PJeV9Fe}xBUl$t|`QOi?-k*lbvO( zpT|m#W61fgEM?8dRnB1gA|h^ZpQE|~UJ)@|+A8Rw8gljTNwzH1pOpKd-WI#88u-{`l%_PbNXBC~dLuLz6p$wlk4n zUXfsZ^c9NU&5_8*20jUbZ~E$dyS2TU?LXGdUhih+iE-@Bwv6qM>=^E^qs(7qj!?Pp z6hK&_Xt}AnSE(LS3V@gmRahGGpCrVOHMu9hJU$U5pY40uXIS)?pnOpTrWS}vB)Hrw z0*U0Zjhrfeizrx?`YU(S4#kooTFNEW}riMD7;H}2J z&v%3dxiWahQ{%5nw?PPbvfNY5L* zvkYKNt1%g*4Pz|QD#E_L6i;{daJ-w#+7 zqVrm$^Ht-jX@64HTlU6d|MxYiCrKUFUe>t$?1xKRHh0ZuAJ6n}4gMrkLR>31%}clM zdLVTyoqxIh4OCAaN$jB*DKm7UCA1$MWUM=+ltnbrSj}nQ?26cI$%O28*^H-#>r3qg zS)r$0&y2^UsW&B=SJA0~!Bip>`owb>NuJBe!JscZ$tRQ~YN8xGpX~#Y7rrh*>@ATc zT(HXyx%`{)?N8&rIb7`uE4fWcxy8@MOGpr>9%jz$Zv6sD^f}k=$Sy3{b4(8#6qmKP zSJXI}Z@7@d2L{>}Qy*Qbb`T3hFM;`4_wlS|_A@^m;(pq}S|xGmo}*EcsYAh&L7J~r zAIzmmzBda?6%gsj;u%~F{Vbs9JPg^ZAD9Kp%?5c@*p4O^AKmpXHe^2w|JlmDkorQe zl^AiUptDu`MwhMeqRpGrsnzQVU-i*r`(fp~>)_Z%w$IiVL_IpZG0uw>UJ7w!zaul~ z@i;D8wcE$N%DX*bCq7L|GirkYe|FjzD&|@$?(xv2j)S7I|x&nu|hRBox8{2pUcB3(KpBV}H$GlJF~Pc7)RP&Saw?@}TI2VtB%mJha1 zMM@VITj? zdy(|?OQe%^;?F>N3nVP`dRrkrp6tAkINmE#f{WtHt?Ur~7?1p{E>guC;E*utn^f_w zzvq4Ubw%DCliABW5C;Opi((JgrL!yUjuA?4agYJVR0yoH!*Ve2g{)`s`e_Ln1*1FqA2$u07JCe;z97Te90wd2FD>8{+PEm~P%xsjK?rZlmh zw9yYqqa({S&k+?!3{;wP7!OJd4fXet6QT3JA>~qAn*2V@?bI9A?8L&VIv|52%DpYv zHA&Q!nY$K~KlRnB0=fDOz#k7H+b8S0UCoDPMJ&I}G(1C8J&72dA~Mt)Ov8^l6|NfC z3t4xGvd5tAnPAJlPy?td;B&T=%Kos*p2ee#Pp&T;ZZ|%cZ%4i!gU#3&(5j0q-%D8$ z40l}3B^mNUPKmW=;9eV{>l@BmCROz1@H#I{mfwizC$+tB8g~p`#!pZhwm*%ri01?K zFl8zexPVaVjSg+__{K0S?K3q4?BeXrbRO}#T5%QuyFe37;GXvk`q8wUU?&*{@AJK8EOWI%W_k@IlXuOFc9{C{%XQ>T zj$+-gB&LZ))P#{Nt;%n|R>1YiiI}?%VQsUS9%YznHW$3;AWM3}N`8VY(LnAc#_WFk z*0oj9WYo!I>SplNro2j<)v|h%&p%5fSZgP+b268|Kzs z?_gVh?o5u1K>`~m&7Pf@W}>+)%b-uIRFF?3HDWibeD(!j#k2Gy5q%Ga0b>wB?JmnF z+r|%9>)#xuMy)#f>@{&hPn!mB`9k*TIfb{1nj^zMgEb*w(_rdz?g&9Y!!BP|thC`9 zT+ZAWeuCVU5xM^L{XKuSk}b?-Rugo+^MHsx`Y}kD0V0iy8NO8GK}JG z(zH6PZ)j-xRHr4Gg{b@$fQh|Z#R4e~opL$nEzP0KJNhbXx^k=H5FWc$UcaQ%N45LE zIgc#eJYFbk;Z|8Dv~Ty-xLMZ1rN$<2Ls0Di+POUvyOA*(viMsM z=0suZFPWxxc3;_t{hSD?qu+Q?bi9(;)C}gatOHeYB*UdC&q`!krm@J8_!!dM$z$0X9HO-C-*<=NvLs_;TNP13nlT&J5vOOcTVPhx)v-P<9>5iCTs3aW z^!lP(^=+ms$wi~lWZ^Q`*Q2ktT2-A-YNVu$56a!8nH-1h>{h^E*~~p%H8FaKLwXZ| zCwRBCGj~hzAgJVNJf;SthIRUGO~dmd=@3p&LIxqeK9k=ID2;(&VoI0P8kw7Ou4%9N zPKn%cj>9<{cbp~<9w}GDs*c0ofmd7Bef)d}7iR(b9bUvh6GZE zEHv>YTFNPQnj0iP`&>17^`1eK1=e>{#egj3#?GfI>(_2Z+og=EB`;HWE*0?!ElH^XzKaCToh-dp$N6up$0$yfp#KEn0 zRx(p^>>KOuh@X`t7?Y%GdN&?KDYw*hO+_rqXgRcWNy|x@mdN8PwDDTXtE}Wwky~$A zvTw*_K*^@H^jUqE8YLmGFFrVvYcoLOLPs;W_h0M~VR&LsB3p(??`)hlgnQ5}l|=$M zXw^c%`d#tWDA*q$Ojl*}vVI9~mEv&l#Nw8qn#iA3}h!(#6K0r<3WTu9&Uw|+8~+!0T+W1LUz%w z1*mbRU1LPW83V=vMi~Psg`S}&LOIReZCMrl#sW$GW_Thb+Q>%aC9UNp`T2wl27B#3 zI`6xYr?bT~3(~l8w^Y`b_wnOw8)l64ez7 zS+#=cLza_(FfH?LTGlzLqr}6^tuI>2L!V6aRk}e_v|~d1*Rt|=NA~_yQKLq)=Frmv zR?Y0ErM~@>F4Irb5#vdNZevXqUgqDvtRr7^VSDyX#}tC#ZrAHpVeKmqftm1gg7`3_ zA7w;83N0}6LMGc#@5Lu`(f!R=Ru;WgIcTa-SeXf-$}!ZfREG(O^^lbBTO&`oxZi#v zE#DPKJ!RPg@UDRL;1~eaxu&{$N`SLmz@dnX{DVt4q~*^s2lxR@wtvh&!1o*8cOC$* z4!nNCZo(r8j%|?-x|m=}2Y>&zib3p_rGsxG3*|>@u9t1W!wsd)*49Dn5Y5WM(?4dO znJo@qLs|E{Efie?gQxMEKBHjfZ@<$BRI%On!zu?5GEDYY9L#@v3PTTOz$MZAs0VFj zuSm$Sl-Mu&G{Eua4(ug54M9z4W4E}%q|6`T*yLc;!ke4`>Zp5-cU^{xt?LB?UjXjQ zi|o7wG)-Q5u9Nn;us3di^l;s-ki2ost8%Z2at6ge#TX@N1Ys$cKZAKP@G)# zeakd(SLjqL9%IE9JaRLqfjD#OSVNkzJn{->Lfj=6B~Or#l{J`#9FJ|whYg7_16+Rx|OBS`&dL@zTiR(q(Ld zWCeagmrnK5lVi2$??pjjytWhNlYV_e^L%+-pJep~+Md1vz^5t@un*eENtH zeXk&kv7hfs(JI~0Nnip{PAuJIU$L(i`+DRRA?i(|TCbN>JRyR->sWRSz1Vj5Pq@^- zNf3N#iK)fBs3%f@ui2o)DK0X$?o@L2j`m%2RjSw~kjN076Am7bW!UoxdCrBO{N2Ed zw|%mxQvXS=`U2bIf=^;wI-+yJZ_?L<#T%`#E6Yz#(@Fk=Hw`G-cofp37<_Z0Z)D&X zj)Pl36#~n`lujyI95Eq-sM$Lb&-N%%%OX;JZ5=*kGXqAJ>%;5M0ylYQ34I9PwBxf^ zGT%tyF{24?8ASw$y=g+kT<_4CN1P;mOcR(ryihd^eRiP38%g~rWO_AT@zG7LEqIO) z|3$|8C)(P<`EQ%Y1&U9fM;)5HYz_>r(sD?rsPYuOrKs^M;;@uSVwCqP+n32r4Os=0T4}#=2cade z|M=AgGpZ2FMQsUb%9AfAJ~0vUS3bA=CT+P_VFDhLCTntLwYI5 zSB71jDbm0(8OWwH#jbyRZbh=i?6aSk-97B^h|Wk)b543_lQ&H}RwWw7mA_snkWezu z7@XNL{|kzWRSp~+r;Wh-<__Q_M8YhlR@(E~p;~>LPb%FnJe7-uZFP>J4Y1Gz#b!w(F^M_l@ ztlL$QfkzAaOkVeQlrQV_tk6Nie7KWa?AtJ|p7^YI{9YCT*^N4QXJ^%;dBnqOar$vKgHHp42`+MNn(0LQlMT`C*j3{;;OB@4bs%94RaG*jpIJa~eCc|i`^4wq@>uxNLQQ&QYH5uhfhBuP*FERd$|T^k^{bA9kNl~(12U~^l}||C zPH~mV!_>~f>n$G{+9eY~XCkG~0+h0wVBZgzH{-9bKHz=Y?G{*5ra(pJi5TtRMnzO@ zULS}zY$l(YoF>Exx0?Ei$^;!Tz*&FkF+eEzPRyl4jwU&wQT1Zi-UDJ()k*_-#Ca3O!K?e*DV!1XxAIX%%k$1_J4lu|j< zchghOFYA&Y8U}V>n*;DG_NPhH@7;cOleNqGlwYI8D2FeAtq?SXwGBDNHR`wMF zUdwfnw1xqa6JiGTtK<{SJTFp@?`ytaM(H)ZvMXl;Ll~YeBQ?){8IXTCfeggI zHXq_U-nno|IOwTp zJsdrWi46ImwZYcZX(9+rBxY$yW)e;12}nZ8Z!eTGrh`+-#H_uh@G)s5-bAG6T3a;n zl*CL++KA@zpN!DzE~pVpM$1<^r@OPJln`C*oG$Mb#d2|q-H>vpoM?Xc+VeM66Wmf9 z_kuO1C`6^<>h7B({>&a-S#XFj-!A09F=}P|W_&8ddgNl?8U0X8XD`C?N;lv!!F_?I zt~C**RB%-Hg$D75Y{HdJhJr`!aM6WLazXtcY2PuqmJiPoWwK*OjSw2s@o)#T4GW3% z(3;r2ya}h4?V7C1a%ZlxxkH2CDad&rz!SUU5u7N^hwN>=+nbf@?0(ZGAN$^YgS|+| z3f+&&XeaL0wWjeHlvN>oin*y*a|`QY^-SH_{lJ4`pV~zpo~31N`n1d4O$z(|t+};w z0m1iNv_*NQ{;YPb7DJ9IYLHDtwsp2+&YU6+PEVK4r__3+a##jyTN-Cs4c4d|*dI&x zo?LF#<1n`h%7sYnaOz66icQV3T$q7%Xr!lh5_pDE-vY<(XWgV3l|8gkyi9s@3I)v& zz$5!^+7s`$kdKglT;#A`Mz{0TbQGZy z&IVVhd?kU2bnh@L*#(2*s%l7_bos57W|IxiTO&ccAM zM5w(5Iw|_$=+t(slQbFsaQ;qbF!RN~l^fFbhsQ4{*z?bg^no$a{oVrj5(fqIJY4_Y zRR4Kd;Gfhe{**ZW>$j^7J;w6-0PJ&huW(-?UqL>q`0u{xU;}o%_}8Zu7g5<_6eG3^ z0OiQ=tLJN_TmSt}Jgc%bPh5lx6$pdYcQKJs7N*lba4dg1)<|lVn`JGmm)6~HPi`Qm zm}#tw9GP_*n$13285|7Ey*8=70$|~CN19e{3ZKpikl9%i%nQp7Xp3jmT(uJJCGw4z zi3DS3`9ApH>e4-i!+plAbo&WNEu)*1fAB?Cv8CeuG_TIuQ{uQ!ht>XHmbPSTesvdM zYgzNw_3;(F#%bKjetI$g=g3G@jURAoTm3pD_16))H0mNGV7HZwZ5`%tVty+kwzY#!>DJ*VC<8vkjFX*J+MFZ1 zuS>o!Oib?e>f$=K)31Ta78k_&(4G#m(NEslh?u3mFC%rjSIebr&NKt&o@!Ds5;^Ec z6Ka>`bgK;6z$4&q>sv${XI%XNQ*MVLgh&x40%x6;81j@|Qd2JH3ZW3nhC$~4w$PPON88+Y@GbN8?qcC?Pi%3nC&$0Rd?&F%C zUE^RAge-2nKfcV>H+9JBSg06OcH%THS%@2L5W76srtXs1v@u7v4|3V6 z`h4VhI$7khrdrK8wG!i=CH__^t)Dc9&pyhhs;IRQS#L#sBjse+eQ}cPAIf$^G2RYS zOhvLh49q&jzS9(%aOdm~?D1@C;Y+&+L2!kVdIXqMJq+(%R&a{9s(uCGuSB76 zd$R1Vi?n56 zwga@QQF>i}584sXxmD@7?!O7x_Gqg!oU(NRZ8xKTP@Ye-%c^~%z~0k1$y5XDw$Ox% zkV<6_Ge`9KOechuZUYy)7?$Nb@Jj`kNgU3gC4k8cVIo;h6(U3v7ie%gC;W`^Gg%u< z5uB1hE)Y=h{K#khC@G)BDA&O3*{G&0Ts|+HhJ`mQ=G>qiPg6Gz)v1!iDs{)S7D=bd zm@>FFId8>wmM4UO`Yt^dZi&9Upy<5E;QL98x!{$VpQDuOPUwnk-3@A; z6r)g`df}MDz4qPbUC+m&W8bL%XreBQV4|AF9HVv6N2~yv>af*6Nz_b|;qw?Nr-nWK z9pBGo>ndLu+pUuEtqPFhr@l@k=y7*aKIphr!DC7*T4{_XzbN#nC02eGK`fy8AsJ{8 z6?EL9O{7*?3PtIe!$R&E*`wB>MRcQYtnNaqi7<)}ZSk4Vp`65y6iEtxY_5(KFL z^bhIeuSso%o&1k$#~UjcdmBQW}&Qhgg&FwquH(oTP>+oUFsaMT|d(gRDeM~vF1#u!`!eIh)=oZ*tbp9MR=ljqvp4iPus;ef z3uY4WHdrWU{eq^ttR(Vdy)$WebuGTpJ(tWeNV*z+{!ryvxA^e|2L&aZVSzmv5^AJS z?wP~!=d!DB)1azhy{p!)xr+aH`Zr$SfAnu&@`(Sce=lnzx)7%k37fPdL=4ajSTC+R zh*otU0YvhG7BhLWFSY_AURfs5sS%qyE;x8Ex?MV#B}Hc^=fdmRc?i5_`@VdeK0ivf z3jV#=%fN4|Af9u4xe>D^f_-Hb%lutMd~kuXjP#5JnT zIQ2VT&n$c?K9J@6%fiou1*$CQ(;NI@LpN5#yOjts>ZfQ~T@0od($s^S4m8mqdbDql zHT@cQSB*>s>L;wgF)pbgD1Vy3V5_Kpc3g&YPcOGG2D74Vn(@7e`Nx;_7a`;t@o)sXO~8A?HsXmkFJrgk9JJt ze|RFHTxH7Vv+T2>B@1Xd^|v&?YEaUMa&C#q{L;zU;KGd66*3o>A&?MtXb-aV`6bIJ zku?_KveQ``vqcH$=dYpqIp^Jb!XUGhJE(qM^os!>*iu4LDpz4>m2}?m8FG!%Kq3iN zVh;lwZp96zUK~wzaQ6=5cwh))Tb(rXY8gu<e1CwmluW9Y< zc6Nm6+4@h_hNvguA}idmgEQpAX^p~AD)=PoIQt842A5Ps71tS4>4uDU5H$@HMNt12 z5ngS}>KkBLBB)p%F9UgS!$MqC4*B?_fz)01I zL=z-8I(A>;|9c_+z3=}n#M>9wx7np~XA^YzmY^C*Mf)8cH9Gbs8tJDDSy;@(h1l5K zR<)&?&ko|1FPB+(c15=DGj~9fy$TuOxI8Wnfb9Rw0SZI8Q3F~^ zp}Y89f#w3gnli?zL~#QsM>)eW^ua%B1)~{H@q5Cj89&ldIk+^}gg$Wc{kj~7abk^B|c zQ*A7c*uMipJbw~{YNA2m5bp=Tgq$cn3vJnB)mZtzb`OeBX>74N>+wfWJb#~1@%UBXfBAc0L08~ZL!D^?Ew zwO^-wBbvc}9>(f1K7re^?(acmQ@hQ(rM}T6J4BiOkusR3oRM=J#o2@Rt<^J?mW3Cc6bdm#3f|-tUe&D3j_UJFmv4GxH|-MU1(w1+6*TY|bIt0cceH6_l?<%&jrdSt@O?Yy}7xC_B) z_K;`Xl?(6MM!G0}+dQJD!m-|63lE7SIe*sYHdw+ajZZp`e%LxcTN0ZiOvyPuGgL15 zYf7XiF0ZQD+E+EOr+STy<$$b5&zmj+omY9z>ux&xcY%qW_^Zr%+c`fnY5r zub7;Z-lPg|_5uYJ>I}mG4LLiy3R+~FgX6GdT4fi7%XT$_LrwyLpx1rzVl%PI(lkpv zcL;oG7RMq^^+vOaZalXtHV^J$l*}_$GqvsOJ0mJ6-rGMn#^f(PCS2vql z%^mXY@Q28P()*uk?G6toSIYficY@gqUA+xen=uVXbxnn&X!JrlR<{5R$HcL)Nv|rM zq3sx}g8^lNl#_(?6;l-39?P~vB(cEYPf@oyk{)RzJA(IfM&ELhPQMjxnDSpnfpilr zC1Q(p=AIpoxiDhk+Ew6eTv|qYfD2vk^>0*ELla$Cco2%@;d&p-7SKmA7>!KgW<>XLMyKRIpZaGL|XFhlgoe`mmeib+2 z|4+aBMiv*-V_;y+Yv1;GB^<qa|5wCE<<5j5qhgPK-`UaF} zWyiqEyVIlQD{;7fNix{{C!ZQEKXtvQhCY{Ss`sT57$_^n^X|-xnEz^GK+?u=sXgqJ zNX?d?K;(BFZbVlaULj<@Z+5V7s*ye-`pR}b>Mro0Iff?Q)^<(WU1QS`uHe2z%XWXq z@|3kbMs5+#tM5+d7NIeTrbSwI&#lKEpE@yTw^?Y#tPjVMIWk@m8Y=VN@!)NnO4~!I8N!>E4sjv| zNaY3$hPd*#-yDKj9;1w19O>88c2RDRgH?2a=IT3Q=`J|Z$ zO^T5htfo`UXHTsU}qN*qELDy~w4@w=9LwTaX4ZH8ORO2AipnNx~-4X{ze_oRlw z`_BStuu=(%bYF0ryCS-6^*Tqv!NK_%$bYSiZlao!|NcEFjNf19?dOliR&uN9da7@mx19y%~Vdy{S5N-O`-!la?J}jF}8lazW~`B5Crq7Q=8Z(A$-m9MWjp= z0Je{l_1sjIvR*NobjS+qF29!3Z?AK9y=L*WwemW{;&uNg7rvrzLvY~E%FF-m6lL<$ zkKttaRAGix=C+J14%ZQOX`-`S@tivf^)LFJlzQrQkk(~ zI$EeP48G79|Fq=dTOE*4`#JHuBSWk?MUgWeIGBhJS2TP~2%v3PIMT3fFHUCNTfK5^ z;`Y;-#`6K|D(CbmR2WsEx;eB6v9AQz<>eI)`;Bt+I{(cax2IyZec~d)h|9~&)k-JX zy`S37k8RBc9xcdhJ!;vDuUE!%E@MRr4|Du|>DCoxMQ=t7*X*|u{br03)?Wt(_Hk_fj3L6_+d+CNl}cgCYFdC{cl9{In61EEwE5m* z8$mYhR1d^xwGtX)pH3vVhbYi_cQ3Z+oz3jj;3Ij0;(ImBdQ~Z`nZ-VLY+`3N;e#(g z{4?bGPlTpoq&bwxPxXlMFS?HJP_$g=v(i&P%|Cr_OxAwUNv_ABN}*Q5U?ydJ5>7?M zPbg?v0NCXMbk?(>LxWk&pvU4y$;%+uTeKD)V^%$4qE#kP{))dFS1Nno@V6IMr+>;V zI_Zie{msk(hx;JDhlbOoSw6FA}f$U{N(DwKfK7OX(9a#JzA8 zQUE{j!>@_#EBbyIpr2sQgCA(!UN~Kwla@cVV2u6|HN1`owm!qxO$EurN8ur-@2W`E^M7~*2)UH0bE0RYk*9O;;&H=flLN0KqoxIelK6`bOI+zx2x&w#O7gZ(5Mm zxT-bu%r_@v8s7FYfpnn@iqQAXiX<8A~ zGkqCQ`E}W6ElRix!d$fC!VTO!+n)IS2X;u7!E*OU6-Mm%WVh#og<$#KUe98`ycbup z#nFf2rn}BZwH7GG*(~l}AGhJDooga&FT-EB% z$0eRed9O}H2jkCwL3=-i3-R|TpvI^p7FCP#dS6&fSKXqd%?|hU_)=P5zy>Lw)Wb1q z>AZ-MGL_^~G+jqjXwfv@aW)3kEzRo8HhlCim5NY7jxYD8Zqq)gsKd@zE!AQ%7x_pP zFn$Xof^JgOTwGL4V4AosTLKG`#*`Zk{=VD;p`1)~({E`ITE!R4_fQ(?>V|D>Y%mrW zj}CD!y*rmAxepMQ3GppK6ZST;wct`D83%nci8A3ZF`xeSnecIUAEG=$5rTlTD#Fy~7du1UK zo+?@s78pAUJr*H?QcL_YpA%9^nGzXaUxyU*&vArO9sfBNho))x#~*aKm$YrD8iu0z zi=Ot~wJV?)5HH-RMv9E9fxo0(FaBSM)SU# zBl~(@eb3Bq|CrFrB(wbSZ&=m6#H3A>i;5b_fQ~oUbR~rktsM2X$|o~ktq`5A`0YGo zRgtkip^z7TGsJzWf4kl-z*|;!;Hf$Mn;I*ojR+JR?dGcy+eq=(o-$5bNpg+jX`c;Y zH(shiZk1l%H4zSOeEIT=fMX?j5mHe8h>{LdDqZG(IMj6U#y4BAT9%S>s!=V_So{y$ zz+1Ddn3cmVm#9O%JVl3_Sgt-7lgLzaDylbHyGnhvQdViB(K?MSYCqmVEg&U0l|y${ zlq#fmi{mZb_<~vy#_zZ$+xUoKp_$S15o)r(jiJi4nW`>eE;Ud0^5<;BsYl>~*eh4A z`+-@=>y4X=WkDUJI~vRT1a6H*I6h3~4bJA*fepg@`qG z%_IePZW~+Mj)S${6>Z|^qbJgp+Bg9PatK|_bbQ3Cqr3UO77)N`q^RF#;5J^+kdzBgugrEua`v?hyQRo z%KtKrm%rP=zs)rNUO3KonSS=qs8yl9SO8(?#{*BZou4yf7mk_ebA2ZXz@)>)(*9JQ z=fYEt*Km^OJi6CR%ZcV{KYHDPr;nJ=q0Aq*LhT&9HfhqXxv?CK3_%+x^c_XG(dQ2i z3$jMi3ZcnLOt!UvQFY(_m2*#piZ~mPVPTl5l#ETje@^XWvFus!?wS|L{-PmA{Icg*e zofPt&u8%Z3X6gzfL~PTs!LDT{-;(gZC+1#mg%(}k#H^aG4fh64H-G;=+shu8-E=ED zt9R-lYV3&e1ulx*W>RURF0FIrhxX`+|I6*B=jB-|X57)hj2>8y;Ya+oh1ba~+pson zEhfB0Jl@yhj2T-0R5QuK(Ybe)@)nO7s7OWnRKrWy=_UB#_QS09&u{}!D4x;(G$pYn zQG)(+o5Hxu@y)Xn@#BD^m=(jAwctZ427A#|@f+MUgkJXC%Mc>Bs^@Z9bL#%XZH-lD zcO{NTzeBiIFA-JWS8>)vUtYzBSr8Qg2r5QDtHoy?V4qL=29BPOo*j^#q4C9=HVZvlRyGw2-R+%R9~ zr)HqvnX8;m3d+*ig>~9npSoOB`d{qsKJqeba#jBLLmzXRJdqut!pSJ@@0cY$5flUf zaqhVt%Nvj}-Ep~iDj`mq({#)#;e%Id`wj^=a=^9`!q}@8wWJO%Jk7cu?tLpX6Qd{eHZ4b0ZmZ(G9{z|IKx;zWJbNBVjFYa&@?zBX2y}cu93B5{8 z(O3A<>t6L;6ZKu=;|{w}*!nYPmXMtN4DVlgQu5{GU5Ery6RSbTTsR;1ZP8<`wth}d zlXMwEn;!#&Yg{JMpeE1R#@0$67MzJSUCwJK_JSqZ4)Kb48{H3l7%x$__v!FQ5}?M2&M93kogq~r8AYgfLD`f!v^LE_P7k1CxNcl z(b8^K0xmqIq9j2WI_%e>P(o=AH>$qO%xpQ+6A$Mobhj|fmK|X(;M9P2?;S}MITr;*BRu`r z8JJWjlwV>FiWmZ;0PQtXDh-|c zwLCM&jDBnunnQjC+pf`=;5SUyu>11ZzO>cJVEfa%OznHUKh`zu3VjQ>CTF=vj^Wa= zZ*_ZJ3_w)2G0qm}VFxR2s{5mk2}sOBRKBMQl6MOm_?gr@Un&gg2dJ#5Aw>vMVa40` z>Tq#{aGde%6?^_!mIKEdg}|p;>lq`@ie$?faAFd>Mut!~qvOZ~}H+gIZuF78n3xcy>WC}`J1<=M%OAGn`nJtXf=5|{+nSrz=1?H26 zS+_^jSTi4t3HAFjJ|H&^PS!)7-!TQ+@o!Z*k*s0s*!jPvF}15H0S5ts;$b{ z{e`$gJgFZDZM1VfEEVz)dAnuw2-jiMa-7J3G*uOra6H)q>lv$<+GLRqpeGK<6Fj`i z9{>gdUmoA4-C|N{j;hfeN6QtbOHM6`ma)=g{Yfh49`FqklzVQ_KE)o-G(m}3O!q3a zUgIcdQrv5G@{P&xoU$g-jX9Pt8qq`67EWxQHT?)&YL2c5s8bl2_Gl_Fb`4Nznb@f* zT1$~Q+I!J!saR0DC9Tu)1-`*^kQ5*)e4u5mlF2{B?Qt$@)PjylIoIR48G1c+H&)6)Mc{aKJJmZ`wefSf>Li+4JX(aIt+ zu{*_*K57i30AI82bvK4`{0=LVhqQz>T$Ev^z2wD;9Yz+#ZqTrnwiR)Ru=6i-==S@Pbza@T7s<3@=&~#)~Gs z7QxL~3C$$3i0yb?;QMyb34m!mf`^AEDl97z@->m%Ri%t71#EAgSBtiauhy;>lbhoN zp3MT!dqI^5LI#+H>dp8QzZx6`)5TigpW3673JJ4@m9}UQe_xkA-ex+tHrf?u1F)r4 zUFw~X{JB+ab+GDIb{g)#pbCOZ-jVc_8StIV5XMIW+eC}5Y}H{Jl3#i4n>r+ovf}|4 zy$#N*$x{35<6EW%Anu0D4q=lq)PAfHb;X)7pmv*Q!t;LSL@#%WQ~+t#6k>@HQmV#) z3B`vhkNRty@XsxttXz-5-B}U|pyS4?Y#%o07!MsBwm<1#s_imj&ue7yzQ1tlydeRC zLl*kl)GJC_2Gi&|G&N1WwGUp!rlzz;^Lm?~kgCm5yH7sxOGhEC2Q97v{wtj5r5b4+ zO9|mC+yR)CSI!d0zlZI_D{cDr78@RMd4$Vxmz8EgO z&B=LSn=w(8-T7OUG>yR$!`LRNneWx$kg#TGaJ>92r(|DUuJHGpGOWZ6%sTS4g@WatL+%X$k)EdYG*8jR)2aW8EV zTnBTu(G=~CMtMi@(%kD8ntgiToJp7iUxTqFvh|PMy08uQeIT%}k%)4~Nkt(~2-b`YGIk zA115S51*O}2rId{P8L~u+wE*|Xo4dOIoLr%iWi5?qJ@x3hCudo)}i%x{lFJ+LH3Zv zki&MzWZl}59wU2B&e3ID2PN4XH>6(S%AUmM!q;JAGhP(jgTx`g^V+F`2fZqW*}qkm z<-CcP_#BZ)8d(pthSo@VsYX)|zqQz1_Lw{mx|+1Gb!XU0DgKrp_E+mM+%o=cLj$sw zw(8K6nUerCsAK!30)4Y$QIwH|lQ}1xqfWhuwo!ff!i%hWtfz2R%E@!nx#xSFNeVG5 zDf!Tkb);7_eXNVphszV)m|%`iIzpqbO1!fq-gEXoW^Hwm8Sp|n&ZkYLACTN{kq&0) zEj^LQJj@p!^5I&@u9~nh^@GcKtH(odW*)%#D*c=n(2cfoSev9lcIcvg;d1iHEQ3NB z$_+KpuvRX-;3={tRdl*$0$Fp?ulTm8hK%ScH1^%~m2*nhGGRbgQGs9r#QmBB|05o*m9{JhGzUrcl6c2;)E4H_J<|m^(mZl?I zqXpYq3xB~{5od{zsoV1H!R%sf^s{GvAh%y%cLH~5HrUcXs%$qtS9V$@tYvRu<}|8v z05H(~-3av2N&j#&UCX2x*hqmA6!}tKD|a2IVd54RV}rMq_EW%cPml(Cy+tJk>YmJ> zcs@}S0dOUgYAdWaH>qQePojT#VDl!j9&owaHZvutAr7UvFGR0Z;D*X0ro^p_jymXC z@wBdzX&HQ$({)>4GkVoq0nRqYXhEmFh;?i?&Z2RKyn78>X1{fc2TETcJWJg+GYn8c zReQ_72-(|{DA%EL!`Ycr!Sm(pe03x;C_Pl<1$=1=CReiLWV>Hr|8g#{Z@a6!CG+Bxif?W!{VoW=M{>-sm(NQ-PTDiCogrfY8>+#ki~%gEN!=OQZahkfK^?u}d?W7K`+`ba|18JA?_ zP{GyFg?V1z#~_U4A4_@l0r|Znx=ZAR@Jm%m$j8?V0vlz@6AlFD@OCC)bt@d@-%_Pj z!RRNLc&3JafOTnH`iH-t^v{SFv{7cz{ zie7HxyF&t>R-}b6K10fZ&==*IWHjk>{TD>(K)^)Z;k9O! z`@Xlv&ICg9p`w0`kMV5B6;6bp7C3k0bL@EoCf|61$NJ(}Dm#G4sX_Aml=!uLLWP`5GLxYZ%Ln~cu9fAG zYRAFIjFUG2m;o+bfY~;zwLyYok5fObTyLU{P8p6~*M~c76duLbL_Ty7>>V)YXSkz! zw!dEAdU}&xHI4N~b97p|6fy#!jJJ8fr#@l{U$%GUcRq<|Pk!N)&P+<@mifY7f!=$` zi_f)f>#WJPTo@sshgC6iS-f0`!mHOCsYKNl*{y^JybovLwoskNy-{zK807+r)2JCC z;ogn|f~)KT=xKXZL=MEDG%)ZPE}bKVQaQT-?igWIax6+hda}Anh7d$gKs~NZWQ@{F zG)+Gpj<;EVMfrJm^vADLDfUfzxVQWv?kBE!{9@)I1kkk6n(Be5a-}670Ot1^K;ow0 z#3fQ&uv}TJ`XhOa%xHQRDW~a3*yHrGvslP*X{*z{HrLYpnr(V-J7X2g{KZg@Hp<~& zh+Ac`5HU!_U{n3mtv<+<%t#LH6I;w2>Hc;iI>4M_U6Ow9K-IKMSvulozg9$9hwExL zGmT8n8xZ4^+>*Vp9jG6egR7t37G_t??UpbR_D*SUKm>N{<3sIA_K5o@B#$1rhH)>8 z;_bb}yX4f|ecm>XMa^>LtSwViAc*9B@wt$oom*8rA{`#o--qRDH|h;_(- zK^y_jIC_1%RQ5A#`k+t;EwQZ1dx_0IOybXSCoO;7BZ3VNSkMs%ARG{Vi3DpEfy&6K zth^e{%X{4Z>amc(k8!Qwi1G(>Y^^`Hvnpf05<2#%St@aq_;v=A+wxJR<~pL$&-u)H z^}mDlp(Xxf#^j~}6NfwQ+6xQg{^M)S)VW)kjw&W5ejwh{*R>pK{ zt%kw%I*pLSUUXO3r zCbu|g<)hTzN--k!yJP-AB;;9ZtW&x!pe?8($<@QsIF{PfK18wEbLc#e{+|6yq`;GHJwpMh5lh@jOH{SXI5$ulo&)EWw z5AS>yV;h&^qT&Z`o^zfb!_!m%_-s&ypNuIgEp-|z=i4PQ5zXXHEDDVi8Q9>eD>U44 zB{xeDw;|O_?G_=pX-z*L4)7X59D@coOE?sYTjK?vj5X#FFqtNeFUx9G78;0r% z*I5+@YbIqes@T-8;3}hv`3;iQoloED^s<4jZj~-J53Xxb!-C^P*(4?DUf;R#9wb%E zqO9o5y=iwVTxBpUnALiqcvIl9eYW5P{q6#rFf`G-C!5Frb%Q$b>Mz>l6cVEj!87|D zAN|RYEBG^+-)k}^?grC--UW3cdK9Uei44L}a8z5)WHmi()=?k=JYv7*xAHvDJv{mr zk^E<^iMlvO=gf)3R9h_aV)8Ulp*U$GR);pu||+8uyl?s(?pjc_bA0oFyhp*d~y?5|J2^ znwHET)vh&A&IY6DTiO+$(~x}w6n>aO-(8-`CF{pH6P|GCIebU zN+)0L*fZwE@sVuIzriK*McG-D`l*U1*q)`S4NP6BE}R4!l^dZ_on0v}-tapv8mh30 zxth=2R41IIKMr~i#*d_r_}`iJsUG%dA*M$ADYfe+z|x7-r?2iTj)igG-WiuSAZ?;+cLX`r zN|zUGlS=B8=V>%WAI9Qh58r_49I7=9X=&;O|DmzH`H0hYz3o^&yxPFwO!m zdX)%Sh$f9hWn`SijYds}0m8w*d)U2(>ClgSG#0U~F&5o#px@LMSh=l)-4NArc6vxz%CjEYvS)KWISOqez2q#$K`2A zY&SsHA$=Zv-jcTK|Lg^%?@!sOu|jN>Trguy^vd3=3F}!ON0ScE{3xrJgWA4qMTJp_ zHH|F`1g5Uf-fF7-Vpxis?nI9ve^qwwIeavYA~Bjsq#rhKa6;`}No zgHX!Rxx(OtBPTGb1O;mITe+&HA=TXxmZjEWSsYM&%+$r!5Mm~9Zi=Uu$?D4pti`qA*5t9ziXngsWPH1r_G}XWYe0SFJ%b}RQiD%&Fe#HoSHg1KPK;+$8fXD zBiba{Kb13pYa1(6lb2rt$6GZ7iK+(J(@nEH*$0dQ*zu^p=@-#;j|v_e!evpSg8Ory z9m^KmZgvoXKjQvIVPqMq5UJ4Jeu%)k#@lkE5QT8FD4D zlOnUfN6pDks=|QH(JycH7~qm(jBJ@k-p=C)xpJ%)_j1lJw#ST$)^m)I4uqy~Nu<5k zIX}2cj3dx+*lFFwn?!-saEU%$gH=;qH32ACZ;V|<+QaiD5NFxO0S^ERX+*j|Js0cU zUn9^=o>1`WW|NqJACbw{YEMQ<0iS=BJ&`<@KzgN<_IUehDFlZD&Kdy0w8<;#P;>tZ{poxvVE zb4O(vqpc;T(V3%wZoF)H#rCK9M|~I3S6e*>gO!jm5nzFD?l`hy6vB09ybo9ldf1~0 zaHEyfk9?b*G@7&0ppnucD(IbdXgGv58HMfzGY6y0!Is6WUDWZrKl3M>Tb=Q0j}f&G zuqp3awFOzA`}7yBvp&Rlm_49pPlsZyJyPDOTXws0rH6Y>Z=EIpdHXaK3(<%NP7i?K zw*q*@Yff7F2s%ITsI$bj0?>3t1r%i>;e>`tx9MUWU9QrXTtKTGViyuoo2p$ ztrzE7P(Ce69$lN!KrF>dV*>-p@aK6=Gas|jXhj?#=L{ZrBRpFuk7q)DPoW^jv>QceedS9G+K;V?K?|aQwKS8E zApWAT?iSM)MJX_)t<@2IY{$n9p2ZnaZkKxe8(XyFWQqILham2)h;DU9D^nE zot(?n(*1?_G#4IVv^Zt|`MDL;_Q(5DfDJ;Bs5Q+|{EvpXE4|pntD;>aE>n;H;_-_7|t+CjV ze-7xjXY%Mt_#2L12e&EE2iE|7wMPruKW&Iod%Q9o`GM|O-8CVM?^;>hDsVb}Z0i)FSLQs<4d#5N$G#H{w$ z8N;xr8xJw2m0U(!S{cu)DnwA)%HsnT&EYqZbiKc z;j!I|h!RO1{Tq7meE92wB7rl+yFxzNT208MA?9()Kc0@Titd}b@w`Fz`RjT~KF(P7 z6mE61&kzc*hwq2(OS_D@cj#o)BSgFlCC$U%-Xls>Am~-&ro&WCI*}iwNn~YT?#oFR z3R$JIKK6@x%hpj6Fh6tp!-)C#i*E*+aH28`D`kEz>MZQK7#y}L4*f8dT2Ky3mo&Aue| z?u81O5|=gsC^(_dd{~1$&GOcY`ns##JQ4%SV-<6R+e`1~HvhS>WTa2$@}b(4pveqB zr~`Pt#ieRWxKc*D4s^F(c=ZPlj3&<4;HpegP+(wpS~MdZ$!+SIcjyTd+xW>aFqW20 zFRPsFF!z|Oz~k_+#7d){K*gTL`~$^u-UInGM*J(Zzq7FU%93?U=PA`+c7i^a(d-k9 z>miBykCtCNV#7s+6%UQ?675_z_9Be&fwjkfrTk0G!tzpr{b&3?JCXmVMSO^)%3XBm?dJ{kw!;E=T zs!(_tjA8IY;@^8QkS4rgkG9W4<6WH$61`DDo^dIinEJLe@GW!45?Pp@Z~UiF()Jfn zK|R-IK^tkq`SK2F}a!}%XVNOC`J|K(X%c;GQ?jXG3>35*3r#4fT2>;|uO6AQ4k`qseyi+OW!6kTfpjhq;QAZm z0@icAZ$Y4W3DfWAeD6*%A7^^}JHx+IUxc`a0CB8m; zF2ljdQW1GmW_6)dhII% zz2xwxG>Yz&Wt_qOnFeIz$cDn}9OG!sId^mDwH?QjUOm-3@|WYGcK+y1&l^u(VL*T<^W=qr)6--p*X5 z8MU+J+88$XvL_eCVf8;%jooWUR}` zMOS%P_F7IJBfqI3Su u-XS~z&PSI7{y*dY3iJGbyPRkre_f|(oTbrOOYjO|D9WkHmcKIl{C@x$C!@^( literal 0 HcmV?d00001 diff --git a/Plugins/VisualStudioTools/LICENSE b/Plugins/VisualStudioTools/LICENSE new file mode 100644 index 0000000..41f977a --- /dev/null +++ b/Plugins/VisualStudioTools/LICENSE @@ -0,0 +1,22 @@ + Visual Studio Tools for Unreal Engine + Copyright (c) Microsoft Corporation. + + MIT License + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/Plugins/VisualStudioTools/README.md b/Plugins/VisualStudioTools/README.md new file mode 100644 index 0000000..4fa5176 --- /dev/null +++ b/Plugins/VisualStudioTools/README.md @@ -0,0 +1,116 @@ +# Unreal Engine plugin for Visual Studio + +This project contains an Unreal Editor plugin that works in conjunction with Visual Studio to help discover and run tests in C++ code. + +The plugin can be installed in either the Engine or Game project sources, and it is automatically activated when an Unreal Engine project is opened in Visual Studio. + +## Requirements + +Before you begin, please make sure you have the following software and tools set up: + +1. Visual Studio 2022 has the "Visual Studio Tools for Unreal Engine" component installed. + 1. The component can be found in the "Game development with C++" workload or as an individual component. +2. Unreal Engine, either installed or built from source. + 1. To learn how to install or build Unreal Engine, please refer to the following guide: [Installing Unreal Engine](https://docs.unrealengine.com/5.0/en-US/installing-unreal-engine). + 1. The source code and instructions have been tested on Unreal Engine versions 4.27 and 5.0+. + +## Building and Installing the Plugin + +> If you have Unreal Engine installed and set up through the Epic Games Launcher, and you only want to use the plugin, you can skip the steps below and install it directly from the [Unreal Engine Marketplace](https://aka.ms/vsueplugin). + +The most straightforward way to use the plugin is to clone the repo under the `Plugins` folder of your game project or engine source. If you have multiple projects in the same Visual Studio solution, it is recommended to install the plugin at the engine level and share the binaries across the projects. + +1. Clone the repo by using the following commands: + ```powershell + git clone https://github.com/microsoft/vc-ue-extensions.git + ``` + +2. Build the plugin from source: + ```powershell + msbuild -p:UnrealEngine= + ``` + Note#1: `` can be path to source code folder of the engine or the one installed by `Epic Games Launcher` (e.g `C:\Program Files\Epic Games\UE_5.4`) + Note#2: Alternatevly you can follow [Unreal Engine building plugins](https://dev.epicgames.com/community/learning/tutorials/qz93/unreal-engine-building-plugins) guide. + +3. Clone built plugin. + + 3.1. To Project folder: + ```powershell + move-item -path ./bin -destination \Plugins\VisualStudioTools + ``` + Note: You have to create `Plugins` folder in the root of the game project if it doens't exisist yet. + + 3.2. To Engine folder: + ```powershell + move-item -path ./bin -destination Note: To ensure proper activation of the plugin, make sure the correct plugin is selected or the desired changes are made in the `.uproject` file. + +## Manually invoking the plugin + +The plugin is designed to be used with Visual Studio, and as such, it does not provide any user interfaces, commands, or logs within the Unreal Editor. However, it is still possible to test the plugin's execution by running the **sample** command below: + +```powershell +& "\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" "$Env:UserProfile\Unreal Projects\EmptyProject\EmptyProject.uproject" -run=VisualStudioTools -output "$Env:Temp\vs-ue-tools.json" [-unattended -noshadercompile -nosound -nullrhi -nocpuprofilertrace -nocrashreports -nosplash] +``` + +This command will run the plugin for the specified project and save Unreal Engine Blueprint information in the output file. Optional parameters are included to run the command faster. + +For more information on the specific command line parameters, you can run the following command in the powershell prompt with `-help`: + +```powershell +& "" "" -run=VisualStudioTools -help [-unattended -noshadercompile -nosound -nullrhi -nocpuprofilertrace -nocrashreports -nosplash] +``` + +>Note: The executable name is `UE4Editor-cmd.exe` for UE4.x, located under a similar path. + +## Troubleshooting + +If you encounter any issues when setting up Visual Studio in conjunction with the Unreal Editor plugin, please refer to the [Troubleshooting](https://github.com/microsoft/vc-ue-extensions/blob/main/Docs/Troubleshooting.md) guide in the repository. This guide provides solutions for common issues and is periodically updated to ensure that the latest solutions are available. + +To report new issues, provide feedback, or request new features, please use the following options: [Report a Problem](https://aka.ms/feedback/cpp/unrealengine/report) and [Suggest a Feature](https://aka.ms/feedback/cpp/unrealengine/suggest). These options will allow you to submit your issue or feedback directly to our team and help us improve the plugin moving forward. + +## Contributing +This project welcomes contributions and suggestions. Check out our [contributing guide](CONTRIBUTING.md) for instructions on how to contribute to the project. + +## Trademarks + +This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). +Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. +Any use of third-party trademarks or logos are subject to those third-party's policies. \ No newline at end of file diff --git a/Plugins/VisualStudioTools/SECURITY.md b/Plugins/VisualStudioTools/SECURITY.md new file mode 100644 index 0000000..e138ec5 --- /dev/null +++ b/Plugins/VisualStudioTools/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/Plugins/VisualStudioTools/SUPPORT.md b/Plugins/VisualStudioTools/SUPPORT.md new file mode 100644 index 0000000..b7cafca --- /dev/null +++ b/Plugins/VisualStudioTools/SUPPORT.md @@ -0,0 +1,13 @@ +# Support + +## How to file issues and get help + +This project uses the Visual Studio Developer Community to track bugs and feature requests. Please search the existing feedback before filing new ones to avoid duplicates. + +For common issues, please refer to our [Troubleshooting](https://github.com/microsoft/vc-ue-extensions/blob/main/Docs/troubleshooting.md) guide in the repository. We will periodically update the guide to provide solutions for common issues. + +To report issues, provide feedback, and request features, please use one of the following options: [Report a Problem](https://aka.ms/feedback/cpp/unrealengine/report) and [Suggest a Feature](https://aka.ms/feedback/cpp/unrealengine/suggest). + +## Microsoft Support Policy + +Support for this **PROJECT or PRODUCT** is limited to the resources listed above. diff --git a/Plugins/VisualStudioTools/Scripts/Package-Plugin.ps1 b/Plugins/VisualStudioTools/Scripts/Package-Plugin.ps1 new file mode 100644 index 0000000..04650c0 --- /dev/null +++ b/Plugins/VisualStudioTools/Scripts/Package-Plugin.ps1 @@ -0,0 +1,43 @@ +param( + [Parameter(Mandatory=$true)] + [string] + $EnginePath, + [Parameter(Mandatory=$true)] + [string] + $EngineVersion +) + +function New-TemporaryDirectory { + $parent = [System.IO.Path]::GetTempPath() + $name = [System.IO.Path]::GetRandomFileName() + New-Item -ItemType Directory -Path (Join-Path $parent $name) +} + +$PackagePath = New-TemporaryDirectory +& msbuild "-p:UnrealEngine=$EnginePath;OutputPath=$PackagePath;Versioned=true" + +# Add EnabledByDefault property in the descriptor file +Write-Host "Patch plugin descriptor file" +$descriptor = "$PackagePath/VisualStudioTools.uplugin" +$a = Get-Content $descriptor | ConvertFrom-Json +$a | Add-Member -NotePropertyName EnabledByDefault -NotePropertyValue $true -ErrorAction Ignore +$a | ConvertTo-Json -depth 100 | Out-File $descriptor -Encoding utf8 + +Write-Host "Copy Config folder" +Copy-Item -Path Config -Destination $PackagePath/Config -Recurse + +$PublishPath = "publish" +If(!(test-path -PathType Container $PublishPath)) +{ + New-Item -ItemType Directory -Path $PublishPath | Out-Null +} + +Write-Host "Create ZIP package" +$tag = $EngineVersion.Replace(".", "") +$files = Get-ChildItem $PackagePath -Exclude @("Binaries", "Intermediate") +$zip = "$PublishPath/VisualStudioTools_v$($a.VersionName)_ue$tag.zip" +Compress-Archive -Path $files -DestinationPath "$PublishPath/VisualStudioTools_v$($a.VersionName)_ue$tag.zip" -CompressionLevel Fastest + +Remove-Item $PackagePath -Force -Recurse + +Write-Host "Done: $($zip | Resolve-Path)" \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Scripts/SignDetached.proj b/Plugins/VisualStudioTools/Scripts/SignDetached.proj new file mode 100644 index 0000000..0357524 --- /dev/null +++ b/Plugins/VisualStudioTools/Scripts/SignDetached.proj @@ -0,0 +1,19 @@ + + + + + + $(MSBuildThisFileDirectory)../../out/ + + $(BaseOutputDirectory) + $(BaseOutputDirectory) + + + + + Microsoft400 + + + + + diff --git a/Plugins/VisualStudioTools/Scripts/packages.config b/Plugins/VisualStudioTools/Scripts/packages.config new file mode 100644 index 0000000..3fa1e7e --- /dev/null +++ b/Plugins/VisualStudioTools/Scripts/packages.config @@ -0,0 +1,4 @@ + + + + diff --git a/Plugins/VisualStudioTools/Source/.editorconfig b/Plugins/VisualStudioTools/Source/.editorconfig new file mode 100644 index 0000000..613c0eb --- /dev/null +++ b/Plugins/VisualStudioTools/Source/.editorconfig @@ -0,0 +1,91 @@ +[*.{cpp,h}] + +# Naming convention rules (note: currently need to be ordered from more to less specific) + +cpp_naming_rule.aactor_prefixed.symbols = aactor_class +cpp_naming_rule.aactor_prefixed.style = aactor_style + +cpp_naming_rule.swidget_prefixed.symbols = swidget_class +cpp_naming_rule.swidget_prefixed.style = swidget_style + +cpp_naming_rule.uobject_prefixed.symbols = uobject_class +cpp_naming_rule.uobject_prefixed.style = uobject_style + +cpp_naming_rule.booleans_prefixed.symbols = boolean_vars +cpp_naming_rule.booleans_prefixed.style = boolean_style + +cpp_naming_rule.structs_prefixed.symbols = structs +cpp_naming_rule.structs_prefixed.style = unreal_engine_structs + +cpp_naming_rule.enums_prefixed.symbols = enums +cpp_naming_rule.enums_prefixed.style = unreal_engine_enums + +cpp_naming_rule.templates_prefixed.symbols = templates +cpp_naming_rule.templates_prefixed.style = unreal_engine_templates + +cpp_naming_rule.general_names.symbols = all_symbols +cpp_naming_rule.general_names.style = unreal_engine_default + +# Naming convention symbols + +cpp_naming_symbols.aactor_class.applicable_kinds = class +cpp_naming_symbols.aactor_class.applicable_type = AActor + +cpp_naming_symbols.swidget_class.applicable_kinds = class +cpp_naming_symbols.swidget_class.applicable_type = SWidget + +cpp_naming_symbols.uobject_class.applicable_kinds = class +cpp_naming_symbols.uobject_class.applicable_type = UObject + +cpp_naming_symbols.boolean_vars.applicable_kinds = local,parameter,field +cpp_naming_symbols.boolean_vars.applicable_type = bool + +cpp_naming_symbols.enums.applicable_kinds = enum + +cpp_naming_symbols.templates.applicable_kinds = template_class + +cpp_naming_symbols.structs.applicable_kinds = struct + +cpp_naming_symbols.all_symbols.applicable_kinds = * + +# Naming convention styles + +cpp_naming_style.unreal_engine_default.capitalization = pascal_case +cpp_naming_style.unreal_engine_default.required_prefix = +cpp_naming_style.unreal_engine_default.required_suffix = +cpp_naming_style.unreal_engine_default.word_separator = + +cpp_naming_style.unreal_engine_enums.capitalization = pascal_case +cpp_naming_style.unreal_engine_enums.required_prefix = E +cpp_naming_style.unreal_engine_enums.required_suffix = +cpp_naming_style.unreal_engine_enums.word_separator = + +cpp_naming_style.unreal_engine_templates.capitalization = pascal_case +cpp_naming_style.unreal_engine_templates.required_prefix = T +cpp_naming_style.unreal_engine_templates.required_suffix = +cpp_naming_style.unreal_engine_templates.word_separator = + +cpp_naming_style.unreal_engine_structs.capitalization = pascal_case +cpp_naming_style.unreal_engine_structs.required_prefix = F +cpp_naming_style.unreal_engine_structs.required_suffix = +cpp_naming_style.unreal_engine_structs.word_separator = + +cpp_naming_style.uobject_style.capitalization = pascal_case +cpp_naming_style.uobject_style.required_prefix = U +cpp_naming_style.uobject_style.required_suffix = +cpp_naming_style.uobject_style.word_separator = + +cpp_naming_style.aactor_style.capitalization = pascal_case +cpp_naming_style.aactor_style.required_prefix = A +cpp_naming_style.aactor_style.required_suffix = +cpp_naming_style.aactor_style.word_separator = + +cpp_naming_style.swidget_style.capitalization = pascal_case +cpp_naming_style.swidget_style.required_prefix = S +cpp_naming_style.swidget_style.required_suffix = +cpp_naming_style.swidget_style.word_separator = + +cpp_naming_style.boolean_style.capitalization = pascal_case +cpp_naming_style.boolean_style.required_prefix = b +cpp_naming_style.boolean_style.required_suffix = +cpp_naming_style.boolean_style.word_separator = diff --git a/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.cpp b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.cpp new file mode 100644 index 0000000..5afcac8 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.cpp @@ -0,0 +1,246 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#include "VisualStudioBlueprintDebuggerHelperModule.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +IMPLEMENT_MODULE(FVisualStudioBlueprintDebuggerHelper, VisualStudioBlueprintDebuggerHelper); + +DEFINE_LOG_CATEGORY(LogVisualStudioBlueprintDebuggerHelper); + +#if ENGINE_MAJOR_VERSION >= 5 +#define FCustomBlueprintPropertyInfo TSharedPtr +#else +#define FCustomBlueprintPropertyInfo FDebugInfo +#endif + +struct FVSNodePinRuntimeInformation +{ + UEdGraphPin* Pin; + FCustomBlueprintPropertyInfo Property; + + FVSNodePinRuntimeInformation(UEdGraphPin* InPin, FCustomBlueprintPropertyInfo InProperty) + : Pin(InPin) + , Property(InProperty) + { + } +}; + +struct FVSNodeData +{ + FText NodeName; + TArray> Properties; + int32 ScriptEntryTag; + const UEdGraphNode* Node; +}; + +struct FVSNodesRuntimeInformation +{ + TArray> Nodes; +}; + +struct FVSBlueprintRuntimeInformation +{ + TArray>> RunningBlueprints; +}; + +struct StackTraceHelper +{ + int32 ScriptEntryTag; + FString NodeName; +}; + +// Keep exported so we can read it. +VISUALSTUDIOBLUEPRINTDEBUGGERHELPER_API FVSBlueprintRuntimeInformation BlueprintsRuntimeInformation; + +VISUALSTUDIOBLUEPRINTDEBUGGERHELPER_API std::map StackFrameInformation; + +VISUALSTUDIOBLUEPRINTDEBUGGERHELPER_API const char* DebuggerHelperVersion = "1.0.0"; + +void FVisualStudioBlueprintDebuggerHelper::StartupModule() +{ + CurrentScriptEntryTag = 0; + + FBlueprintContextTracker::OnEnterScriptContext.AddRaw( + this, + &FVisualStudioBlueprintDebuggerHelper::OnEnterScriptContext); + + FBlueprintContextTracker::OnExitScriptContext.AddRaw( + this, + &FVisualStudioBlueprintDebuggerHelper::OnExitScriptContext); + + FBlueprintCoreDelegates::OnScriptException.AddRaw( + this, + &FVisualStudioBlueprintDebuggerHelper::OnScriptException); +} + +void FVisualStudioBlueprintDebuggerHelper::ShutdownModule() +{ + FBlueprintCoreDelegates::OnScriptException.RemoveAll(this); + FBlueprintContextTracker::OnExitScriptContext.RemoveAll(this); + FBlueprintContextTracker::OnEnterScriptContext.RemoveAll(this); +} + +void FVisualStudioBlueprintDebuggerHelper::OnEnterScriptContext( + const struct FBlueprintContextTracker& Context, + const UObject* SourceObject, + const UFunction* Function) +{ + if (!IsInGameThread()) + { + return; + } + + CurrentScriptEntryTag = Context.GetScriptEntryTag(); +} + +void FVisualStudioBlueprintDebuggerHelper::OnExitScriptContext(const struct FBlueprintContextTracker& Context) +{ + if (!IsInGameThread()) + { + return; + } + + for (auto ItRunningBlueprints = BlueprintsRuntimeInformation.RunningBlueprints.CreateIterator(); ItRunningBlueprints; ++ItRunningBlueprints) + { + auto& RunningBlueprint = ItRunningBlueprints->Value; + for (auto ItNodeData = RunningBlueprint->Nodes.CreateIterator(); ItNodeData; ++ItNodeData) + { + if ((*ItNodeData)->ScriptEntryTag == Context.GetScriptEntryTag()) + { + ItNodeData.RemoveCurrent(); + } + } + + if (!RunningBlueprint->Nodes.Num()) + { + ItRunningBlueprints.RemoveCurrent(); + } + } + + for (auto ItStackFrameInfo = StackFrameInformation.begin(); ItStackFrameInfo != StackFrameInformation.end();) + { + if (ItStackFrameInfo->second.ScriptEntryTag == Context.GetScriptEntryTag()) + { + ItStackFrameInfo = StackFrameInformation.erase(ItStackFrameInfo); + } + else + { + ++ItStackFrameInfo; + } + } + + CurrentScriptEntryTag--; +} + +void FVisualStudioBlueprintDebuggerHelper::OnScriptException( + const UObject* Owner, + const struct FFrame& Stack, + const FBlueprintExceptionInfo& ExceptionInfo) +{ + EBlueprintExceptionType::Type ExceptionType = ExceptionInfo.GetType(); + if (ExceptionType != EBlueprintExceptionType::Type::Tracepoint && + ExceptionType != EBlueprintExceptionType::Type::WireTracepoint && + ExceptionType != EBlueprintExceptionType::Type::Breakpoint) + { + return; + } + + UFunction* NodeFunction = Cast(Stack.Node); + if (!NodeFunction) + { + return; + } + + UBlueprintGeneratedClass* BlueprintGeneratedClass = Cast(NodeFunction->GetOuter()); + if (!BlueprintGeneratedClass) + { + return; + } + + UBlueprint* Blueprint = Cast(BlueprintGeneratedClass->ClassGeneratedBy); + if (!Blueprint) + { + return; + } + + const int32 BreakpointOffset = Stack.Code - Stack.Node->Script.GetData() - 1; + const UEdGraphNode* NodeStoppedAt = FKismetDebugUtilities::FindSourceNodeForCodeLocation(Owner, Stack.Node, BreakpointOffset, /*bAllowImpreciseHit=*/ true); + if (!NodeStoppedAt) + { + return; + } + + StackFrameInformation[NodeFunction] = { CurrentScriptEntryTag, FString::Printf(TEXT("%s::%s"), *Blueprint->GetFriendlyName(), *NodeStoppedAt->GetNodeTitle(ENodeTitleType::Type::ListView).ToString()) }; + TTuple>* ExistingNodesRuntimeInformationTuple = BlueprintsRuntimeInformation.RunningBlueprints.FindByPredicate([&Blueprint](const TTuple>& Tuple) { + return Tuple.Key == Blueprint; + }); + + TSharedPtr NodesRuntimeInformation; + if (!ExistingNodesRuntimeInformationTuple) + { + NodesRuntimeInformation = MakeShared(); + BlueprintsRuntimeInformation.RunningBlueprints.Add(MakeTuple(Blueprint, NodesRuntimeInformation)); + } + else + { + NodesRuntimeInformation = ExistingNodesRuntimeInformationTuple->Value; + } + + TSharedPtr CurrentNodeData; + if (NodesRuntimeInformation->Nodes.Num() == 0 || NodeStoppedAt != NodesRuntimeInformation->Nodes.Top()->Node) + { + CurrentNodeData = MakeShared(); + CurrentNodeData->Node = NodeStoppedAt; + CurrentNodeData->NodeName = NodeStoppedAt->GetNodeTitle(ENodeTitleType::Type::ListView); + CurrentNodeData->ScriptEntryTag = CurrentScriptEntryTag; + NodesRuntimeInformation->Nodes.Push(CurrentNodeData); + } + else + { + CurrentNodeData = NodesRuntimeInformation->Nodes.Top(); + } + + FCustomBlueprintPropertyInfo PinInstanceInfo; + for (auto GraphPin : NodeStoppedAt->Pins) + { + FKismetDebugUtilities::EWatchTextResult DebugResult = FKismetDebugUtilities::GetDebugInfo(PinInstanceInfo, Blueprint, (UObject*)Owner, GraphPin); + if (DebugResult != FKismetDebugUtilities::EWTR_Valid) + { + continue; + } + + TSharedPtr* Existing = CurrentNodeData->Properties.FindByPredicate([&GraphPin](TSharedPtr& PinInfo) { + return PinInfo->Pin == GraphPin; + }); + + if (!Existing) + { + CurrentNodeData->Properties.Add(MakeShared(GraphPin, PinInstanceInfo)); + } + else + { + (*Existing)->Property = PinInstanceInfo; + } + } +} diff --git a/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.h b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.h new file mode 100644 index 0000000..3e19a7d --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/Private/VisualStudioBlueprintDebuggerHelperModule.h @@ -0,0 +1,29 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_LOG_CATEGORY_EXTERN(LogVisualStudioBlueprintDebuggerHelper, Log, All); + +class FVisualStudioBlueprintDebuggerHelper : public FDefaultModuleImpl +{ +private: + void OnScriptException(const UObject* Owner, const struct FFrame& Stack, const FBlueprintExceptionInfo& ExceptionInfo); + void OnEnterScriptContext(const struct FBlueprintContextTracker& Context, const UObject* SourceObject, const UFunction* Function); + void OnExitScriptContext(const struct FBlueprintContextTracker& Context); + + int32 CurrentScriptEntryTag; + +public: + void StartupModule() override; + void ShutdownModule() override; +}; diff --git a/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/VisualStudioBlueprintDebuggerHelper.Build.cs b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/VisualStudioBlueprintDebuggerHelper.Build.cs new file mode 100644 index 0000000..260b324 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioBlueprintDebuggerHelper/VisualStudioBlueprintDebuggerHelper.Build.cs @@ -0,0 +1,31 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +using UnrealBuildTool; + +public class VisualStudioBlueprintDebuggerHelper: ModuleRules +{ + public VisualStudioBlueprintDebuggerHelper(ReadOnlyTargetRules Target) : base(Target) + { + OptimizeCode = CodeOptimization.Never; + PrivateDependencyModuleNames.AddRange(new string[] { + "Core", + "ApplicationCore", + "AssetRegistry", + "CoreUObject", + "Engine", + "Json", + "JsonUtilities", + "Kismet", + "UnrealEd", + "Slate", + "SlateCore", + "ToolMenus", + "EditorSubsystem", + "MainFrame", + "BlueprintGraph", + "VisualStudioDTE", + "EditorStyle", + "Projects" + }); + } +} diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelper.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelper.cpp new file mode 100644 index 0000000..5eab4fe --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelper.cpp @@ -0,0 +1,113 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#include "BlueprintAssetHelpers.h" + +#include "AssetRegistry/AssetRegistryModule.h" +#include "Blueprint/BlueprintSupport.h" +#include "Engine/BlueprintCore.h" +#include "Engine/BlueprintGeneratedClass.h" +#include "Engine/Engine.h" +#include "Engine/StreamableManager.h" +#include "Misc/ScopeExit.h" +#include "VisualStudioTools.h" + +namespace VisualStudioTools +{ +namespace AssetHelpers +{ +/* +* These helpers handle the usage of some APIs that were deprecated in 5.1 +* but the replacements are not available in older versions. +* Might be overridden by the `Build.cs` rules +*/ +#if FILTER_ASSETS_BY_CLASS_PATH + +void SetBlueprintClassFilter(FARFilter& InOutFilter) +{ + // UE5.1 deprecated the API to filter using class names + InOutFilter.ClassPaths.Add(UBlueprintCore::StaticClass()->GetClassPathName()); +} + +static FString GetObjectPathString(const FAssetData& InAssetData) +{ + // UE5.1 deprecated 'FAssetData::ObjectPath' in favor of 'FAssetData::GetObjectPathString()' + return InAssetData.GetObjectPathString(); +} + +#else // FILTER_ASSETS_BY_CLASS_PATH + +void SetBlueprintClassFilter(FARFilter& InOutFilter) +{ + InOutFilter.ClassNames.Add(UBlueprintCore::StaticClass()->GetFName()); +} + +static FString GetObjectPathString(const FAssetData& InAssetData) +{ + return InAssetData.ObjectPath.ToString(); +} + +#endif // FILTER_ASSETS_BY_CLASS_PATH + +void ForEachAsset( + const TArray& TargetAssets, + TFunctionRef Callback) +{ + // Show a simpler logging output. + // LogTimes are still useful to tell how long it takes to process each asset. + TGuardValue DisableLogVerbosity(GPrintLogVerbosity, false); + TGuardValue DisableLogCategory(GPrintLogCategory, false); + + // We're about to load the assets which might trigger a ton of log messages + // Temporarily suppress them during this stage. + GEngine->Exec(nullptr, TEXT("log LogVisualStudioTools only")); + ON_SCOPE_EXIT + { + GEngine->Exec(nullptr, TEXT("log reset")); + }; + + FStreamableManager AssetLoader; + + for (int32 Idx = 0; Idx < TargetAssets.Num(); Idx++) + { + const FAssetData AssetData = TargetAssets[Idx]; + FSoftClassPath GenClassPath = AssetData.GetTagValueRef(FBlueprintTags::GeneratedClassPath); + UE_LOG(LogVisualStudioTools, Display, TEXT("Processing blueprints [%d/%d]: %s"), Idx + 1, TargetAssets.Num(), *GenClassPath.ToString()); + + TSharedPtr Handle = AssetLoader.RequestSyncLoad(GenClassPath); + ON_SCOPE_EXIT + { + // We're done, notify an unload. + Handle->ReleaseHandle(); + }; + + if (!Handle.IsValid()) + { + UE_LOG(LogVisualStudioTools, Warning, TEXT("Failed to get a streamable handle for Blueprint. Skipping. GenClassPath: %s"), *GenClassPath.ToString()); + continue; + } + + if (auto BlueprintGeneratedClass = Cast(Handle->GetLoadedAsset())) + { + Callback(BlueprintGeneratedClass, AssetData); + } + else + { + // Log some extra information to help the user understand why the asset failed to load. + + FString ObjectPathString = AssetHelpers::GetObjectPathString(AssetData); + + FString Msg = !GenClassPath.ToString().Contains(ObjectPathString) + ? FString::Printf( + TEXT("ObjectPath is not compatible with GenClassPath, consider re-saving it to avoid future issues. { ObjectPath: %s, GenClassPath: %s }"), + *ObjectPathString, + *GenClassPath.ToString()) + : FString::Printf(TEXT("ClassPath: %s"), *GenClassPath.ToString()); + + UE_LOG(LogVisualStudioTools, Warning, TEXT("Failed to load Blueprint. Skipping. %s"), *Msg); + } + } +} + +} +} \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelpers.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelpers.h new file mode 100644 index 0000000..02b5edd --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintAssetHelpers.h @@ -0,0 +1,26 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once +#include "CoreMinimal.h" +#include "UObject/NoExportTypes.h" + +class UBlueprintGeneratedClass; + +namespace VisualStudioTools +{ +namespace AssetHelpers +{ +void SetBlueprintClassFilter(FARFilter& InOutFilter); + +/** +* Loads each blueprint asset and invokes the callback with the resulting blueprint generated class. +* Each iteration will load the asset using a FStreamableHandle and verify that is a valid blueprint +* before invoking the callback. +*/ +void ForEachAsset( + const TArray& TargetAssets, + TFunctionRef Callback); + +} // namespace AssetHelpers +} // namespace VisualStudioTools diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.cpp new file mode 100644 index 0000000..4aeb046 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.cpp @@ -0,0 +1,248 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#include "BlueprintReferencesCommandlet.h" + +#include "Algo/Find.h" +#include "Algo/Transform.h" +#include "AssetRegistry/AssetRegistryModule.h" +#include "BlueprintAssetHelpers.h" +#include "Engine/BlueprintGeneratedClass.h" +#include "FindInBlueprintManager.h" +#include "JsonObjectConverter.h" +#include "Misc/Paths.h" +#include "Misc/ScopeExit.h" +#include "Policies/CondensedJsonPrintPolicy.h" +#include "VisualStudioTools.h" + +namespace VisualStudioTools +{ +static FString StripClassPrefix(const FString& InClassName) +{ + if (InClassName.IsEmpty()) + { + return InClassName; + } + + size_t PrefixSize = 0; + + const TCHAR ClassPrefixChar = InClassName[0]; + switch (ClassPrefixChar) + { + case TEXT('I'): + case TEXT('A'): + case TEXT('U'): + // If it is a class prefix, check for deprecated class prefix also + if (InClassName.Len() > 12 && FCString::Strncmp(&(InClassName[1]), TEXT("DEPRECATED_"), 11) == 0) + { + PrefixSize = 12; + } + else + { + PrefixSize = 1; + } + break; + case TEXT('F'): + case TEXT('T'): + // Struct prefixes are also fine. + PrefixSize = 1; + break; + default: + PrefixSize = 0; + break; + } + + return InClassName.RightChop(PrefixSize); +} + +/** +* Retrieves the asset data matching the given FindInBlueprints query. +*/ +TArray SearchForCandidateAssets(const FString& SearchQuery) +{ + IAssetRegistry& AssetRegistry = FModuleManager::LoadModuleChecked(TEXT("AssetRegistry")).Get(); + AssetRegistry.SearchAllAssets(true); + + TArray OutItemsFound; + FStreamSearch StreamSearch(SearchQuery); + while (!StreamSearch.IsComplete()) + { + FFindInBlueprintSearchManager::Get().Tick(0.0); + } + + // Execute the search and get all the assets in the result. + StreamSearch.GetFilteredItems(OutItemsFound); + + + TArray OutTargetAssets; + Algo::Transform(OutItemsFound, OutTargetAssets, + [&](const FSearchResult& Item) + { + // The DisplayText property of the result contains the blueprint's object path + // Use that to find the respective asset in the registry +#if FILTER_ASSETS_BY_CLASS_PATH + return AssetRegistry.GetAssetByObjectPath(FSoftObjectPath(*Item->DisplayText.ToString())); +#else + return AssetRegistry.GetAssetByObjectPath(*Item->DisplayText.ToString()); +#endif // FILTER_ASSETS_BY_CLASS_PATH + }); + + return OutTargetAssets; +} + +/** +* Loads each blueprint asset and filters the collection to items which use the +* target UFunction in their call graph, matching the native class and function names. +*/ +TMap GetConfirmedAssets( + const FString& FunctionName, const FString& ClassNameWithoutPrefix, const TArray& InAssets) +{ + TMap OutResults; + + AssetHelpers::ForEachAsset(InAssets, + [&](UBlueprintGeneratedClass* BlueprintClassName, const FAssetData AssetData) + { + auto MatchingFunction = Algo::FindByPredicate(BlueprintClassName->CalledFunctions, + [&](const UFunction* Fn) + { + return Fn->HasAnyFunctionFlags(EFunctionFlags::FUNC_Native) + && Fn->GetName() == FunctionName + && Fn->GetOwnerClass()->GetName() == ClassNameWithoutPrefix; + }); + + if (MatchingFunction != nullptr) + { + OutResults.Add(BlueprintClassName->GetName(), AssetData); + } + }); + + return OutResults; +} +using JsonWriter = TJsonWriter>; + +static void SerializeBlueprintReference( + TSharedRef& Json, const FString& BlueprintClassName, const FAssetData& Asset) +{ + FString PackageFileName; + FString PackageFile; + FString PackageFilePath; + if (FPackageName::TryConvertLongPackageNameToFilename(Asset.GetPackage()->GetName(), PackageFileName) && + FPackageName::FindPackageFileWithoutExtension(PackageFileName, PackageFile)) + { + PackageFilePath = FPaths::ConvertRelativePathToFull(MoveTemp(PackageFile)); + } + + Json->WriteObjectStart(); + Json->WriteValue(TEXT("name"), BlueprintClassName); + Json->WriteValue(TEXT("path"), PackageFilePath); + Json->WriteObjectEnd(); +} + +static void SerializeBlueprints( + TSharedRef& Json, const TMap& InAssets) +{ + Json->WriteIdentifierPrefix(TEXT("blueprints")); + Json->WriteArrayStart(); + + for (auto& Item : InAssets) + { + const FString& BlueprintClassName = Item.Key; + const FAssetData& Asset = Item.Value; + SerializeBlueprintReference(Json, BlueprintClassName, Asset); + } + + Json->WriteArrayEnd(); +} + +static void SerializeMetadata( + TSharedRef& Json, int TotalAssetCount) +{ + Json->WriteIdentifierPrefix(TEXT("metadata")); + Json->WriteObjectStart(); + { + Json->WriteValue(TEXT("asset_count"), TotalAssetCount); + } + Json->WriteObjectEnd(); +} + +static void SerializeResults( + const TMap& InAssets, + FArchive& OutArchive, + int TotalAssetCount) +{ + TSharedRef Json = JsonWriter::Create(&OutArchive); + Json->WriteObjectStart(); + + SerializeBlueprints(Json, InAssets); + SerializeMetadata(Json, TotalAssetCount); + + Json->WriteObjectEnd(); + Json->Close(); +} +} // namespace VisualStudioTools + +static constexpr auto SymbolParamVal = TEXT("symbol"); + +UVsBlueprintReferencesCommandlet::UVsBlueprintReferencesCommandlet() + : Super() +{ + HelpDescription = TEXT("Commandlet for generating data used by Blueprint support in Visual Studio."); + + HelpParamNames.Add(SymbolParamVal); + HelpParamDescriptions.Add(TEXT("[Optional] Fully qualified symbol to search for in the blueprints.")); + + HelpUsage = TEXT(" -run=VsBlueprintReferences -output= -symbol= [-unattended -noshadercompile -nosound -nullrhi -nocpuprofilertrace -nocrashreports -nosplash]"); +} + +int32 UVsBlueprintReferencesCommandlet::Run( + TArray& Tokens, + TArray& Switches, + TMap& ParamVals, + FArchive& OutArchive) +{ + using namespace VisualStudioTools; + GIsRunning = true; // Required for the blueprint search to work. + + FString* ReferencesSymbol = ParamVals.Find(SymbolParamVal); + if (ReferencesSymbol->IsEmpty()) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Missing required symbol parameter.")); + PrintHelp(); + return -1; + } + + FString FunctionName; + FString ClassNameNative; + if (!ReferencesSymbol->Split(TEXT("::"), &ClassNameNative, &FunctionName)) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Reference parameter should be in the qualified 'NativeClassName::MethodName' format.")); + PrintHelp(); + return -1; + } + + // Execute the search in two stages: + // 1. Use FindInBlueprints to get all candidate blueprints with calls to functions that match the requested symbol + // 2. Confirm the blueprints reference the requested function, by matching the target UFunction in their call graph. + // The first step acts as a filter to avoid loading too many blueprints to inspect their call graph. + // The second step is required because the FiB data does not always allow for searching with the function + // qualified with the owned class name, if the function is static. + + FString ClassNameWithoutPrefix = StripClassPrefix(ClassNameNative); + + // Create a FiB search query for function nodes where the native name matches the requested symbol + FString SearchValue = FString::Printf(TEXT("Nodes(\"Native Name\"=+%s & ClassName=K2Node_CallFunction)"), *FunctionName); + + UE_LOG(LogVisualStudioTools, Display, TEXT("Blueprint search query: %s"), *SearchValue); + + // Step 1: Execute the Fib search + TArray TargetAssets = SearchForCandidateAssets(SearchValue); + + // Step 2: Load the assets to confirm they are a match + TMap MatchAssets = GetConfirmedAssets(FunctionName, ClassNameWithoutPrefix, TargetAssets); + + // Finally, write the results back to the output + SerializeResults(MatchAssets, OutArchive, TargetAssets.Num()); + + UE_LOG(LogVisualStudioTools, Display, TEXT("Found %d blueprints."), MatchAssets.Num()); + return 0; +} \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.h new file mode 100644 index 0000000..a0b8b1e --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/BlueprintReferencesCommandlet.h @@ -0,0 +1,25 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include "CoreMinimal.h" +#include "VisualStudioToolsCommandletBase.h" + +#include "BlueprintReferencesCommandlet.generated.h" + +UCLASS() +class UVsBlueprintReferencesCommandlet + : public UVisualStudioToolsCommandletBase +{ + GENERATED_BODY() + +public: + UVsBlueprintReferencesCommandlet(); + + int32 Run( + TArray& Tokens, + TArray& Switches, + TMap& ParamVals, + FArchive& OutArchive) override; +}; diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/FSmartBSTR.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/FSmartBSTR.h new file mode 100644 index 0000000..46772f3 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/FSmartBSTR.h @@ -0,0 +1,63 @@ +#pragma once + +#include "VisualStudioDTE.h" +#include + +class FSmartBSTR +{ +public: + FSmartBSTR() : data(nullptr) + { + } + + FSmartBSTR(const FSmartBSTR& Other) + { + if (Other.data) data = SysAllocString(Other.data); + else data = nullptr; + } + + FSmartBSTR(FSmartBSTR&& Other) + { + data = std::exchange(Other.data, nullptr); + } + + FSmartBSTR(const FString& Other) + { + data = SysAllocString(*Other); + } + + FSmartBSTR(const OLECHAR *Ptr) + { + if (Ptr) data = SysAllocString(Ptr); + else data = nullptr; + } + + ~FSmartBSTR() + { + if (data) SysFreeString(data); + } + + FSmartBSTR& operator=(const FSmartBSTR& Other) + { + if (this == &Other) return *this; + if (data) SysFreeString(data); + if (Other.data) data = SysAllocString(Other.data); + else data = nullptr; + return *this; + } + + FSmartBSTR& operator=(FSmartBSTR&& Other) + { + if (data) SysFreeString(data); + data = std::exchange(Other.data, nullptr); + return *this; + } + + BSTR operator*() const + { + return data; + } + +private: + BSTR data; +}; \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.cpp new file mode 100644 index 0000000..70a55f5 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.cpp @@ -0,0 +1,118 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#include "VSServerCommandlet.h" +#include "VSTestAdapterCommandlet.h" + +#include "Windows/AllowWindowsPlatformTypes.h" + +#include "HAL/PlatformNamedPipe.h" +#include "Runtime/Core/Public/Async/TaskGraphInterfaces.h" +#include "Runtime/Core/Public/Containers/Ticker.h" +#include "Runtime/Engine/Classes/Engine/World.h" +#include "Runtime/Engine/Public/TimerManager.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Runtime\CoreUObject\Public\UObject\UObjectGlobals.h" +#include +#include +#include +#include +#include +#include + +#include "Windows/HideWindowsPlatformTypes.h" + +#include "VisualStudioTools.h" + +static constexpr auto NamedPipeParam = TEXT("NamedPipe"); +static constexpr auto KillServerParam = TEXT("KillVSServer"); + +UVSServerCommandlet::UVSServerCommandlet() +{ + HelpDescription = TEXT("Commandlet for Unreal Engine server mode."); + HelpUsage = TEXT(" -run=VSServer [-stdout -multiprocess -silent -unattended -AllowStdOutLogVerbosity -NoShaderCompile]"); + + HelpParamNames.Add(NamedPipeParam); + HelpParamDescriptions.Add(TEXT("[Required] The name of the named pipe used to communicate with Visual Studio.")); + + HelpParamNames.Add(KillServerParam); + HelpParamDescriptions.Add(TEXT("[Optional] Quit the server mode commandlet immediately.")); +} + +void UVSServerCommandlet::ExecuteSubCommandlet(FString ueServerNamedPipe) +{ + char buffer[1024]; + DWORD dwRead; + std::string result = "0"; + + // Open the named pipe. + std::wstring pipeName = L"\\\\.\\pipe\\"; + pipeName.append(ueServerNamedPipe.GetCharArray().GetData()); + HANDLE HPipe = CreateFile(pipeName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (HPipe != INVALID_HANDLE_VALUE) + { + ConnectNamedPipe(HPipe, NULL); + DWORD dwState; + BOOL bSuccess = GetNamedPipeHandleState(HPipe, &dwState, NULL, NULL, NULL, NULL, 0); + if (bSuccess) + { + // Read data from the named pipe. + ReadFile(HPipe, buffer, sizeof(buffer) - 1, &dwRead, NULL); + buffer[dwRead] = '\0'; + std::string strSubCommandletParams(buffer, dwRead); + FString SubCommandletParams = FString(strSubCommandletParams.c_str()); + + // Determine which sub-commandlet to invoke, and write back result response. + if (SubCommandletParams.Contains("VSTestAdapter")) + { + UVSTestAdapterCommandlet *Commandlet = NewObject(); + try + { + int32 subCommandletResult = Commandlet->Main(SubCommandletParams); + } + catch (const std::exception &ex) + { + UE_LOG(LogVisualStudioTools, Display, TEXT("Exception invoking VSTestAdapter commandlet: %s"), UTF8_TO_TCHAR(ex.what())); + result = "0"; + } + } + else if (SubCommandletParams.Contains("KillVSServer")) + { + // When KillVSServer is passed in, then kill the Unreal Editor process to end server mode. + exit(0); + } + else + { + // If cannot find which sub-commandlet to run, then return error. + result = "1"; + } + + WriteFile(HPipe, result.c_str(), result.size(), &dwRead, NULL); + } + } +} + +int32 UVSServerCommandlet::Main(const FString &ServerParams) +{ + TArray Tokens; + TArray Switches; + TMap ParamVals; + + ParseCommandLine(*ServerParams, Tokens, Switches, ParamVals); + if (ParamVals.Contains(NamedPipeParam)) + { + FString ueServerNamedPipe = ParamVals[NamedPipeParam]; + + // Infinite loop that listens to requests every second. + while (true) + { + std::this_thread::sleep_for(std::chrono::seconds(1)); + ExecuteSubCommandlet(ueServerNamedPipe); + } + } + else + { + UE_LOG(LogVisualStudioTools, Display, TEXT("Missing named pipe parameter.")); + } + + return 1; +} \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.h new file mode 100644 index 0000000..a8c7ef5 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSServerCommandlet.h @@ -0,0 +1,29 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include "Commandlets/Commandlet.h" +#include + +#include +#include +#include + +#include "VSServerCommandlet.generated.h" + +UCLASS() +class UVSServerCommandlet + : public UCommandlet +{ + GENERATED_BODY() + +public: + UVSServerCommandlet(); + +public: + virtual int32 Main(const FString& Params) override; + +private: + void ExecuteSubCommandlet(FString ueServerNamedPipe); +}; \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.cpp new file mode 100644 index 0000000..493bfee --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.cpp @@ -0,0 +1,288 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#include "VSTestAdapterCommandlet.h" + +#include "Runtime/Core/Public/Async/TaskGraphInterfaces.h" +#include "Runtime/Core/Public/Containers/Ticker.h" +#include "Runtime/Launch/Resources/Version.h" +#include +#include + +#include "VisualStudioTools.h" + +static constexpr auto FiltersParam = TEXT("filters"); +static constexpr auto ListTestsParam = TEXT("listtests"); +static constexpr auto RunTestsParam = TEXT("runtests"); +static constexpr auto TestResultsFileParam = TEXT("testresultfile"); +static constexpr auto HelpParam = TEXT("help"); + +static void GetAllTests(TArray& OutTestList) +{ + FAutomationTestFramework& Framework = FAutomationTestFramework::GetInstance(); + Framework.GetValidTestNames(OutTestList); +} + +static void ReadTestsFromFile(const FString& InFile, TArray& OutTestList) +{ + TSet TestCommands; + + // Wrapping in an inner scope to ensure automatic destruction of InStream object without explicitly calling .close(). + { + std::wifstream InStream(*InFile); + if (!InStream.good()) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Failed to open file at path: %s"), *InFile); + return; + } + + std::wstring Line; + while (std::getline(InStream, Line)) + { + if (Line.length() > 0) + { + TestCommands.Add(FString(Line.c_str())); + } + } + } + + GetAllTests(OutTestList); + for (int32 Idx = OutTestList.Num() - 1; Idx >= 0; Idx--) + { + if (!TestCommands.Contains(OutTestList[Idx].GetTestName())) + { + OutTestList.RemoveAt(Idx); + } + } +} + +static int32 ListTests(const FString& TargetFile) +{ + std::wofstream OutFile(*TargetFile); + if (!OutFile.good()) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Failed to open file at path: %s"), *TargetFile); + return 1; + } + + FAutomationTestFramework& Framework = FAutomationTestFramework::GetInstance(); + + TArray TestInfos; + GetAllTests(TestInfos); + + for (const auto& TestInfo : TestInfos) + { + const FString TestCommand = TestInfo.GetTestName(); + const FString DisplayName = TestInfo.GetDisplayName(); + const FString SourceFile = TestInfo.GetSourceFile(); + const int32 Line = TestInfo.GetSourceFileLine(); + + OutFile << *TestCommand << TEXT("|") << *DisplayName << TEXT("|") << Line << TEXT("|") << *SourceFile << std::endl; + } + + UE_LOG(LogVisualStudioTools, Display, TEXT("Found %d tests"), TestInfos.Num()); + OutFile.close(); + + return 0; +} + +static int32 RunTests(const FString& TestListFile, const FString& ResultsFile) +{ + std::wofstream OutFile(*ResultsFile); + if (!OutFile.good()) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Failed to open file at path: %s"), *ResultsFile); + return 1; + } + + TArray TestInfos; + if (TestListFile.Equals(TEXT("All"), ESearchCase::IgnoreCase)) + { + GetAllTests(TestInfos); + } + else + { + ReadTestsFromFile(TestListFile, TestInfos); + } + + bool AllSuccessful = true; + + FAutomationTestFramework& Framework = FAutomationTestFramework::GetInstance(); + + for (const FAutomationTestInfo& TestInfo : TestInfos) + { + const FString TestCommand = TestInfo.GetTestName(); + const FString DisplayName = TestInfo.GetDisplayName(); + + UE_LOG(LogVisualStudioTools, Log, TEXT("Running %s"), *DisplayName); + + const int32 RoleIndex = 0; // always default to "local" role index. Only used for multi-participant tests + Framework.StartTestByName(TestCommand, RoleIndex); + + FDateTime Last = FDateTime::UtcNow(); + + while (!Framework.ExecuteLatentCommands()) + { + // Because we are not 'ticked' by the Engine we need to pump the TaskGraph + FTaskGraphInterface::Get().ProcessThreadUntilIdle(ENamedThreads::GameThread); + + const FDateTime Now = FDateTime::UtcNow(); + const float Delta = static_cast((Now - Last).GetTotalSeconds()); + + // .. and the core FTicker +#if ENGINE_MAJOR_VERSION >= 5 + FTSTicker::GetCoreTicker().Tick(Delta); +#else + FTicker::GetCoreTicker().Tick(Delta); +#endif + + Last = Now; + } + + FAutomationTestExecutionInfo ExecutionInfo; + const bool CurrentTestSuccessful = Framework.StopTest(ExecutionInfo) && ExecutionInfo.GetErrorTotal() == 0; + AllSuccessful = AllSuccessful && CurrentTestSuccessful; + + const FString Result = CurrentTestSuccessful ? TEXT("OK") : TEXT("FAIL"); + + // [RUNTEST] is part of the protocol, so do not remove. + OutFile << TEXT("[RUNTEST]") << *TestCommand << TEXT("|") << *DisplayName << TEXT("|") << *Result << TEXT("|") << ExecutionInfo.Duration << std::endl; + + if (!CurrentTestSuccessful) + { + for (const auto& Entry : ExecutionInfo.GetEntries()) + { + if (Entry.Event.Type == EAutomationEventType::Error) + { + OutFile << *Entry.Event.Message << std::endl; + UE_LOG(LogVisualStudioTools, Error, TEXT("%s"), *Entry.Event.Message); + } + } + + UE_LOG(LogVisualStudioTools, Log, TEXT("Failed %s"), *DisplayName); + } + + OutFile.flush(); + } + + return AllSuccessful ? 0 : 1; +} + +UVSTestAdapterCommandlet::UVSTestAdapterCommandlet() +{ + HelpDescription = TEXT("Commandlet for generating data used by Blueprint support in Visual Studio."); + HelpUsage = TEXT(" -run=VSTestAdapter [-stdout -multiprocess -silent -unattended -AllowStdOutLogVerbosity -NoShaderCompile]"); + + HelpParamNames.Add(ListTestsParam); + HelpParamDescriptions.Add(TEXT("[Required] The file path to write the test cases retrieved from FAutomationTestFramework")); + + HelpParamNames.Add(RunTestsParam); + HelpParamDescriptions.Add(TEXT("[Required] The test cases that will be sent to FAutomationTestFramework to run.")); + + HelpParamNames.Add(TestResultsFileParam); + HelpParamDescriptions.Add(TEXT("[Required] The output file from running test cases that we parse to retrieve test case results.")); + + HelpParamNames.Add(FiltersParam); + HelpParamDescriptions.Add(TEXT("[Optional] List of test filters to enable separated by '+'. Default is 'application+smoke+product+perf+stress+negative'")); + + HelpParamNames.Add(HelpParam); + HelpParamDescriptions.Add(TEXT("[Optional] Print this help message and quit the commandlet immediately.")); +} + +void UVSTestAdapterCommandlet::PrintHelp() const +{ + UE_LOG(LogVisualStudioTools, Display, TEXT("%s"), *HelpDescription); + UE_LOG(LogVisualStudioTools, Display, TEXT("Usage: %s"), *HelpUsage); + UE_LOG(LogVisualStudioTools, Display, TEXT("Parameters:")); + for (int32 Idx = 0; Idx < HelpParamNames.Num(); ++Idx) + { + UE_LOG(LogVisualStudioTools, Display, TEXT("\t-%s: %s"), *HelpParamNames[Idx], *HelpParamDescriptions[Idx]); + } +} + +int32 UVSTestAdapterCommandlet::Main(const FString& Params) +{ + TArray Tokens; + TArray Switches; + TMap ParamVals; + + // Functionality for Unreal Engine Test Adapter. + ParseCommandLine(*Params, Tokens, Switches, ParamVals); + if (ParamVals.Contains(HelpParam)) + { + PrintHelp(); + return 0; + } + + // Default to all the test filters. + auto filter = EAutomationTestFlags::ProductFilter | EAutomationTestFlags::SmokeFilter | EAutomationTestFlags::PerfFilter | EAutomationTestFlags::EngineFilter; + if (ParamVals.Contains(FiltersParam)) + { + FString filters = ParamVals[FiltersParam]; + if (filters.Contains("smoke")) + { + filter |= EAutomationTestFlags::SmokeFilter; + } + else + { + filter &= ~EAutomationTestFlags::SmokeFilter; + } + + if (filters.Contains("engine")) + { + filter |= EAutomationTestFlags::EngineFilter; + } + else + { + filter &= ~EAutomationTestFlags::EngineFilter; + } + + if (filters.Contains("product")) + { + filter |= EAutomationTestFlags::ProductFilter; + } + else + { + filter &= ~EAutomationTestFlags::ProductFilter; + } + + if (filters.Contains("perf")) + { + filter |= EAutomationTestFlags::PerfFilter; + } + else + { + filter &= ~EAutomationTestFlags::PerfFilter; + } + + if (filters.Contains("stress")) + { + filter |= EAutomationTestFlags::StressFilter; + } + else + { + filter &= ~EAutomationTestFlags::StressFilter; + } + + if (filters.Contains("negative")) + { + filter |= EAutomationTestFlags::NegativeFilter; + } + else + { + filter &= ~EAutomationTestFlags::NegativeFilter; + } + } + + FAutomationTestFramework::GetInstance().SetRequestedTestFilter(filter); + if (ParamVals.Contains(ListTestsParam)) + { + return ListTests(ParamVals[ListTestsParam]); + } + else if (ParamVals.Contains(RunTestsParam) && ParamVals.Contains(TestResultsFileParam)) + { + return RunTests(ParamVals[RunTestsParam], ParamVals[TestResultsFileParam]); + } + + PrintHelp(); + return 1; +} \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.h new file mode 100644 index 0000000..299b763 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VSTestAdapterCommandlet.h @@ -0,0 +1,28 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include "Commandlets/Commandlet.h" + +#include +#include +#include + +#include "VSTestAdapterCommandlet.generated.h" + +UCLASS() +class UVSTestAdapterCommandlet + : public UCommandlet +{ + GENERATED_BODY() + +public: + UVSTestAdapterCommandlet(); + +public: + virtual int32 Main(const FString &Params) override; + +private: + void PrintHelp() const; +}; diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioTools.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioTools.cpp new file mode 100644 index 0000000..0c59e55 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioTools.cpp @@ -0,0 +1,19 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#include "VisualStudioTools.h" + +#include "Modules/ModuleInterface.h" +#include "Modules/ModuleManager.h" + +DEFINE_LOG_CATEGORY(LogVisualStudioTools); + +class FVisualStudioToolsModule : public IModuleInterface +{ +public: + /** IModuleInterface implementation */ + virtual void StartupModule() override {} + virtual void ShutdownModule() override {} +}; + +IMPLEMENT_MODULE(FVisualStudioToolsModule, VisualStudioTools) diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.cpp new file mode 100644 index 0000000..9062eac --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.cpp @@ -0,0 +1,576 @@ +#include "VisualStudioToolsBlueprintBreakpointExtension.h" +#include "FSmartBSTR.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if ENGINE_MAJOR_VERSION < 5 +#include +#include +#endif + +DEFINE_LOG_CATEGORY(LogUVisualStudioToolsBlueprintBreakpointExtension); + +static const FName GraphEditorModuleName(TEXT("GraphEditor")); + +void UVisualStudioToolsBlueprintBreakpointExtension::Initialize(FSubsystemCollectionBase& Collection) +{ + FGraphEditorModule& GraphEditorModule = FModuleManager::LoadModuleChecked(GraphEditorModuleName); + GraphEditorModule.GetAllGraphEditorContextMenuExtender().Add( + FGraphEditorModule::FGraphEditorMenuExtender_SelectedNode::CreateUObject(this, &ThisClass::HandleOnExtendGraphEditorContextMenu)); +} + +void UVisualStudioToolsBlueprintBreakpointExtension::Deinitialize() +{ + FGraphEditorModule* GraphEditorModule = FModuleManager::GetModulePtr(GraphEditorModuleName); + if (!GraphEditorModule) + { + return; + } + + GraphEditorModule->GetAllGraphEditorContextMenuExtender().RemoveAll( + [](const FGraphEditorModule::FGraphEditorMenuExtender_SelectedNode& Delegate) { + FName LocalFunction = GET_FUNCTION_NAME_CHECKED(ThisClass, HandleOnExtendGraphEditorContextMenu); + return Delegate.TryGetBoundFunctionName() == LocalFunction; + }); +} + +TSharedRef UVisualStudioToolsBlueprintBreakpointExtension::HandleOnExtendGraphEditorContextMenu( + const TSharedRef CommandList, + const UEdGraph* Graph, + const UEdGraphNode* Node, + const UEdGraphPin* Pin, + bool /* bIsConst */) +{ + TSharedRef Extender = MakeShared(); + if (!CanAddVisualStudioBreakpoint(Node, nullptr, nullptr)) + { + return Extender; + } + + const FName ExtensionHook(TEXT("EdGraphSchemaNodeActions")); + Extender->AddMenuExtension( + ExtensionHook, + EExtensionHook::After, + CommandList, + FMenuExtensionDelegate::CreateUObject(this, &ThisClass::AddVisualStudioBlueprintBreakpointMenuOption, Node)); + + return Extender; +} + +void UVisualStudioToolsBlueprintBreakpointExtension::AddVisualStudioBlueprintBreakpointMenuOption(FMenuBuilder& MenuBuilder, const UEdGraphNode *Node) +{ + MenuBuilder.BeginSection(TEXT("VisualStudioTools"), FText::FromString("Visual Studio Tools")); + MenuBuilder.AddMenuEntry( + FText::FromString("Set breakpoint in Visual Studio"), + FText::FromString("This will set a breakpoint in Visual Studio so the native debugger can break the execution"), + FSlateIcon(), + FUIAction(FExecuteAction::CreateUObject(this, &ThisClass::AddVisualStudioBreakpoint, Node))); + MenuBuilder.EndSection(); +} + +FString UVisualStudioToolsBlueprintBreakpointExtension::GetProjectPath(const FString &ProjectDir) +{ + FString ProjectPath; + if (!FFileHelper::LoadFileToString(ProjectPath, *(FPaths::EngineIntermediateDir() / TEXT("ProjectFiles") / TEXT("PrimaryProjectPath.txt")))) + { + const FProjectDescriptor* CurrentProject = IProjectManager::Get().GetCurrentProject(); + + if ((CurrentProject == nullptr || CurrentProject->Modules.Num() == 0) || !FUProjectDictionary::GetDefault().IsForeignProject(ProjectDir)) + { + ProjectPath = FPaths::RootDir() / TEXT("UE5"); + } + else + { + const FString BaseName = FApp::HasProjectName() ? FApp::GetProjectName() : FPaths::GetBaseFilename(ProjectDir); + ProjectPath = ProjectDir / BaseName; + } + } + + ProjectPath = ProjectPath + TEXT(".sln"); + + FPaths::NormalizeFilename(ProjectPath); + + return ProjectPath; +} + +bool UVisualStudioToolsBlueprintBreakpointExtension::GetRunningVisualStudioDTE(TComPtr& OutDTE) +{ + IRunningObjectTable* RunningObjectTable; + bool bResult = false; + FString ProjectDir = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir()); + FPaths::NormalizeDirectoryName(ProjectDir); + FString SolutionPath = GetProjectPath(ProjectDir); + + if (SUCCEEDED(GetRunningObjectTable(0, &RunningObjectTable)) && RunningObjectTable) + { + IEnumMoniker* MonikersTable; + if (SUCCEEDED(RunningObjectTable->EnumRunning(&MonikersTable))) + { + MonikersTable->Reset(); + + // Look for all visual studio instances in the ROT + IMoniker* CurrentMoniker; + while (MonikersTable->Next(1, &CurrentMoniker, NULL) == S_OK) + { + IBindCtx* BindContext; + LPOLESTR OutName; + if (SUCCEEDED(CreateBindCtx(0, &BindContext)) && SUCCEEDED(CurrentMoniker->GetDisplayName(BindContext, NULL, &OutName))) + { + TComPtr ComObject; + if (SUCCEEDED(RunningObjectTable->GetObject(CurrentMoniker, &ComObject))) + { + TComPtr TempDTE; + if (SUCCEEDED(TempDTE.FromQueryInterface(__uuidof(EnvDTE::_DTE), ComObject))) + { + TComPtr Solution; + BSTR OutPath = nullptr; + if (SUCCEEDED(TempDTE->get_Solution(&Solution)) && + SUCCEEDED(Solution->get_FullName(&OutPath))) + { + FString Filename(OutPath); + FPaths::NormalizeFilename(Filename); + if (Filename == SolutionPath || Filename == ProjectDir) + { + OutDTE = TempDTE; + bResult = true; + } + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Could not get solution from DTE")); + } + + SysFreeString(OutPath); + } + } + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Could not get display name for moniker")); + } + BindContext->Release(); + CurrentMoniker->Release(); + if (bResult) break; + } + MonikersTable->Release(); + RunningObjectTable->Release(); + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Could not enumerate Running Object Table")); + } + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Could not get Running Object Table")); + } + + return bResult; +} + +bool UVisualStudioToolsBlueprintBreakpointExtension::CanAddVisualStudioBreakpoint(const UEdGraphNode* Node, UClass **OutOwnerClass, UFunction **OutFunction) +{ + const UK2Node_CallFunction* K2Node = Cast(Node); + if (!K2Node) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Node is not a UK2Node_CallFunction")); + return false; + } + + UFunction* Function = K2Node->GetTargetFunction(); + if (!Function || !Function->IsNative()) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Function is not native")); + return false; + } + + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Trying to get function definition for %s"), *Function->GetName()); + + UClass* OwnerClass = Function->GetOwnerClass(); + if (!OwnerClass->HasAllClassFlags(CLASS_Native)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Owning class is not native")); + return false; + } + + if (OutOwnerClass) *OutOwnerClass = OwnerClass; + if (OutFunction) *OutFunction = Function; + return true; +} + +#if ENGINE_MAJOR_VERSION < 5 + +#define PRINT_PLATFORM_ERROR_MSG(_TXT) \ + do { \ + TCHAR _ErrorBuffer[MAX_SPRINTF] = { 0 }; \ + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("" #_TXT ": [%s]"), \ + FPlatformMisc::GetSystemErrorMessage(_ErrorBuffer, MAX_SPRINTF, 0)); \ + } while (0) + +bool UVisualStudioToolsBlueprintBreakpointExtension::PreloadModule(HANDLE ProcessHandle, HMODULE ModuleHandle, const FString& RemoteStorage) +{ + int32 ErrorCode = 0; + MODULEINFO ModuleInfo = { 0 }; + WCHAR ModuleName[FProgramCounterSymbolInfo::MAX_NAME_LENGTH] = { 0 }; + WCHAR ImageName[FProgramCounterSymbolInfo::MAX_NAME_LENGTH] = { 0 }; +#if PLATFORM_64BITS + static_assert(sizeof(MODULEINFO) == 24, "Broken alignment for 64bit Windows include."); +#else + static_assert(sizeof(MODULEINFO) == 12, "Broken alignment for 32bit Windows include."); +#endif + + if (!GetModuleInformation(ProcessHandle, ModuleHandle, &ModuleInfo, sizeof(ModuleInfo))) + { + PRINT_PLATFORM_ERROR_MSG("Could not read GetModuleInformation"); + return false; + } + + IMAGEHLP_MODULE64 ImageHelpModule = { 0 }; + ImageHelpModule.SizeOfStruct = sizeof(ImageHelpModule); + if (!SymGetModuleInfo64(ProcessHandle, (DWORD64)ModuleInfo.EntryPoint, &ImageHelpModule)) + { + PRINT_PLATFORM_ERROR_MSG("Could not SymGetModuleInfo64 from module"); + return false; + } + + if (ImageHelpModule.SymType != SymDeferred && ImageHelpModule.SymType != SymNone) + { + return true; + } + + if (!GetModuleFileNameExW(ProcessHandle, ModuleHandle, ImageName, 1024)) + { + PRINT_PLATFORM_ERROR_MSG("Could not GetModuleFileNameExW"); + return false; + } + + if (!GetModuleBaseNameW(ProcessHandle, ModuleHandle, ModuleName, 1024)) + { + PRINT_PLATFORM_ERROR_MSG("Could not GetModuleBaseNameW"); + return false; + } + + WCHAR SearchPath[MAX_PATH] = { 0 }; + WCHAR* FileName = NULL; + const auto Result = GetFullPathNameW(ImageName, MAX_PATH, SearchPath, &FileName); + + FString SearchPathList; + if (Result != 0 && Result < MAX_PATH) + { + *FileName = 0; + SearchPathList = SearchPath; + } + + if (!RemoteStorage.IsEmpty()) + { + if (!SearchPathList.IsEmpty()) + { + SearchPathList.AppendChar(TEXT(';')); + } + SearchPathList.Append(RemoteStorage); + } + + if (!SymSetSearchPathW(ProcessHandle, *SearchPathList)) + { + PRINT_PLATFORM_ERROR_MSG("Could not SymSetSearchPathW"); + return false; + } + + const DWORD64 BaseAddress = SymLoadModuleExW( + ProcessHandle, + ModuleHandle, + ImageName, + ModuleName, + (DWORD64)ModuleInfo.lpBaseOfDll, + ModuleInfo.SizeOfImage, + NULL, + 0); + if (!BaseAddress) + { + PRINT_PLATFORM_ERROR_MSG("Could not load the module"); + return false; + } + + return true; +} + +bool UVisualStudioToolsBlueprintBreakpointExtension::GetFunctionDefinitionLocation(const FString& FunctionSymbolName, const FString& FunctionModuleName, FString& SourceFilePath, uint32& SourceLineNumber) +{ + const HANDLE ProcessHandle = GetCurrentProcess(); + HMODULE ModuleHandle = GetModuleHandle(*FunctionModuleName); + if (!ModuleHandle || !PreloadModule(ProcessHandle, ModuleHandle, FPlatformStackWalk::GetDownstreamStorage())) + { + return false; + } + + ANSICHAR SymbolInfoBuffer[sizeof(IMAGEHLP_SYMBOL64) + MAX_SYM_NAME]; + PIMAGEHLP_SYMBOL64 SymbolInfoPtr = reinterpret_cast(SymbolInfoBuffer); + SymbolInfoPtr->SizeOfStruct = sizeof(SymbolInfoBuffer); + SymbolInfoPtr->MaxNameLength = MAX_SYM_NAME; + + FString FullyQualifiedSymbolName = FunctionSymbolName; + if (!FunctionModuleName.IsEmpty()) + { + FullyQualifiedSymbolName = FString::Printf(TEXT("%s!%s"), *FunctionModuleName, *FunctionSymbolName); + } + + if (!SymGetSymFromName64(ProcessHandle, TCHAR_TO_ANSI(*FullyQualifiedSymbolName), SymbolInfoPtr)) + { + PRINT_PLATFORM_ERROR_MSG("Could not load module symbol information"); + return false; + } + + IMAGEHLP_LINE64 FileAndLineInfo; + FileAndLineInfo.SizeOfStruct = sizeof(FileAndLineInfo); + + uint32 SourceColumnNumber = 0; + if (!SymGetLineFromAddr64(ProcessHandle, SymbolInfoPtr->Address, (::DWORD*)&SourceColumnNumber, &FileAndLineInfo)) + { + PRINT_PLATFORM_ERROR_MSG("Could not query module file and line number"); + return false; + } + + SourceLineNumber = FileAndLineInfo.LineNumber; + SourceFilePath = FString((const ANSICHAR*)(FileAndLineInfo.FileName)); + return true; +} + +#endif + +bool UVisualStudioToolsBlueprintBreakpointExtension::GetFunctionDefinitionLocation(const UEdGraphNode* Node, FString& SourceFilePath, FString& SymbolName, uint32& SourceLineNumber) +{ + UClass* OwningClass; + UFunction* Function; + if (!CanAddVisualStudioBreakpoint(Node, &OwningClass, &Function)) + { + return false; + } + + FString ModuleName; + + // Find module name for class + if (!FSourceCodeNavigation::FindClassModuleName(OwningClass, ModuleName)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to find module name for class")); + return false; + } + + SymbolName = FString::Printf( + TEXT("%s%s::%s"), + OwningClass->GetPrefixCPP(), + *OwningClass->GetName(), + *Function->GetName()); + + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Symbol %s is defined in module %s"), *SymbolName, *ModuleName); + +#if ENGINE_MAJOR_VERSION >= 5 + uint32 SourceColumnNumber = 0; + return FPlatformStackWalk::GetFunctionDefinitionLocation( + SymbolName, + ModuleName, + SourceFilePath, + SourceLineNumber, + SourceColumnNumber); +#else + return GetFunctionDefinitionLocation(SymbolName, ModuleName, SourceFilePath, SourceLineNumber); +#endif +} + +bool UVisualStudioToolsBlueprintBreakpointExtension::GetProcessById(const TComPtr& Processes, DWORD CurrentProcessId, TComPtr& OutProcess) +{ + long Count = 0; + if (FAILED(Processes->get_Count(&Count))) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Could not get the process count")); + return false; + } + + TComPtr Process; + for (long i = 1; i <= Count; i++) + { + VARIANT Index; + Index.vt = VT_I4; + Index.lVal = i; + if (SUCCEEDED(Processes->Item(Index, &Process))) + { + long PID = 0; + if (SUCCEEDED(Process->get_ProcessID(&PID)) && CurrentProcessId == PID) + { + OutProcess = Process; + return true; + } + + Process.Reset(); + } + } + + return true; +} + +void UVisualStudioToolsBlueprintBreakpointExtension::AttachDebuggerIfNecessary(const TComPtr& Debugger) +{ + TComPtr Processes; + if (FAILED(Debugger->get_DebuggedProcesses(&Processes))) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to get debugging proccess")); + return; + } + + TComPtr Process; + DWORD CurrentProcessId = GetCurrentProcessId(); + if (!GetProcessById(Processes, CurrentProcessId, Process)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to check if UE is already in debug mode")); + return; + } + + // currently debugging this process + if (Process.Get() != nullptr) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Already debugging UE.")); + return; + } + + Processes.Reset(); + if (FAILED(Debugger->get_LocalProcesses(&Processes))) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to attach to process")); + return; + } + + Process.Reset(); + if (!GetProcessById(Processes, CurrentProcessId, Process)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to get all process")); + return; + } + + if (Process.Get() == nullptr) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("No UE proccess running.")); + return; + } + + if (FAILED(Process->Attach())) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to attach to process")); + } +} + +bool UVisualStudioToolsBlueprintBreakpointExtension::SetVisualStudioBreakpoint(const UEdGraphNode* Node, const FString& SourceFilePath, const FString& SymbolName, uint32 SourceLineNumber) +{ + TComPtr DTE; + bool bBreakpointAdded = false; + if (!GetRunningVisualStudioDTE(DTE)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to access Visual Studio via DTE")); + return bBreakpointAdded; + } + + TComPtr Debugger; + TComPtr Breakpoints; + if (SUCCEEDED(DTE->get_Debugger(&Debugger)) && SUCCEEDED(Debugger->get_Breakpoints(&Breakpoints))) + { + FSmartBSTR BSTREmptyStr; + FSmartBSTR BSTRFilePath(SourceFilePath); + HRESULT Result = Breakpoints->Add( + *BSTREmptyStr, + *BSTRFilePath, + SourceLineNumber, + 1, + *BSTREmptyStr, + EnvDTE::dbgBreakpointConditionType::dbgBreakpointConditionTypeWhenTrue, + *BSTREmptyStr, + *BSTREmptyStr, + 0, + *BSTREmptyStr, + 0, + EnvDTE::dbgHitCountType::dbgHitCountTypeNone, + &Breakpoints); + + if (FAILED(Result)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to add breakpoint")); + } + else + { + bBreakpointAdded = true; + AttachDebuggerIfNecessary(Debugger); + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Breakpoint set for %s"), *SymbolName); + } + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to get debugger or breakpoints")); + } + + return bBreakpointAdded; +} + +void UVisualStudioToolsBlueprintBreakpointExtension::AddVisualStudioBreakpoint(const UEdGraphNode* Node) +{ + FWindowsPlatformMisc::CoInitialize(); + FPlatformStackWalk::InitStackWalking(); + FString SourceFilePath; + FString SymbolName; + uint32 SourceLineNumber; + bool bBreakpointAdded = false; + + if (GetFunctionDefinitionLocation(Node, SourceFilePath, SymbolName, SourceLineNumber)) + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, TEXT("Method defined in %s at line %d"), *SourceFilePath, SourceLineNumber); + bBreakpointAdded = SetVisualStudioBreakpoint(Node, SourceFilePath, SymbolName, SourceLineNumber); + } + else + { + UE_LOG(LogUVisualStudioToolsBlueprintBreakpointExtension, Error, TEXT("Failed to get function definition location")); + } + + ShowOperationResultNotification(bBreakpointAdded, SymbolName); + FWindowsPlatformMisc::CoUninitialize(); +} + +void UVisualStudioToolsBlueprintBreakpointExtension::ShowOperationResultNotification(bool bBreakpointAdded, const FString &SymbolName) +{ + FNotificationInfo Info(bBreakpointAdded ? FText::FromString(FString::Printf(TEXT("Breakpoint added at %s"), *SymbolName)) : FText::FromString("Could not add Breakpoint in Visual Studio")); +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1 + Info.Image = FAppStyle::GetBrush(TEXT("LevelEditor.RecompileGameCode")); +#else + Info.Image = FEditorStyle::GetBrush(TEXT("LevelEditor.RecompileGameCode")); +#endif + Info.FadeInDuration = 0.1f; + Info.FadeOutDuration = 0.5f; + Info.ExpireDuration = 3.0f; + Info.bUseThrobber = false; + Info.bUseSuccessFailIcons = true; + Info.bUseLargeFont = true; + Info.bFireAndForget = false; + Info.bAllowThrottleWhenFrameRateIsLow = false; + Info.WidthOverride = 400.0f; + TSharedPtr NotificationItem = FSlateNotificationManager::Get().AddNotification(Info); + NotificationItem->SetCompletionState(bBreakpointAdded ? SNotificationItem::CS_Success : SNotificationItem::CS_Fail); + NotificationItem->ExpireAndFadeout(); +} diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.h new file mode 100644 index 0000000..4e60234 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsBlueprintBreakpointExtension.h @@ -0,0 +1,64 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "VisualStudioToolsBlueprintBreakpointExtension.generated.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogUVisualStudioToolsBlueprintBreakpointExtension, Log, All); + +UCLASS() +class UVisualStudioToolsBlueprintBreakpointExtension : public UEditorSubsystem +{ + GENERATED_BODY() + +public: + DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnNodeMenuExtensionHookRequestDelegate, const UEdGraphNode*, const UEdGraph*, TSet&); + + void Initialize(FSubsystemCollectionBase& Collection) override; + void Deinitialize() override; + + FOnNodeMenuExtensionHookRequestDelegate& OnNodeMenuExtensionHookRequest() { return OnNodeMenuExtensionHookRequestDelegate; } + +private: + FOnNodeMenuExtensionHookRequestDelegate OnNodeMenuExtensionHookRequestDelegate; + + TSharedRef HandleOnExtendGraphEditorContextMenu( + const TSharedRef CommandList, + const UEdGraph* Graph, + const UEdGraphNode* Node, + const UEdGraphPin* Pin, + bool bIsConst); + + void AddVisualStudioBlueprintBreakpointMenuOption(FMenuBuilder& MenuBuilder, const UEdGraphNode* node); + + void AddVisualStudioBreakpoint(const UEdGraphNode* Node); + + bool GetFunctionDefinitionLocation(const UEdGraphNode* Node, FString& SourceFilePath, FString& SymbolName, uint32& SourceLineNumber); + + bool SetVisualStudioBreakpoint(const UEdGraphNode* Node, const FString& SourceFilePath, const FString& SymbolName, uint32 SourceLineNumber); + + bool CanAddVisualStudioBreakpoint(const UEdGraphNode* Node, UClass** OutOwnerClass, UFunction** OutFunction); + + void ShowOperationResultNotification(bool bBreakpointAdded, const FString& SymbolName); + + FString GetProjectPath(const FString& ProjectDir); + + bool GetRunningVisualStudioDTE(TComPtr& OutDTE); + + void AttachDebuggerIfNecessary(const TComPtr& Debugger); + + bool GetProcessById(const TComPtr& Processes, DWORD CurrentProcessId, TComPtr& OutProcess); + +#if ENGINE_MAJOR_VERSION < 5 + bool PreloadModule(HANDLE ProcessHandle, HMODULE ModuleHandle, const FString& RemoteStorage); + + bool GetFunctionDefinitionLocation(const FString& FunctionSymbolName, const FString& FunctionModuleName, FString& SourceFilePath, uint32& SourceLineNumber); +#endif +}; diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.cpp new file mode 100644 index 0000000..b3d367e --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.cpp @@ -0,0 +1,492 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#include "VisualStudioToolsCommandlet.h" + +#include "Algo/Transform.h" +#include "AssetRegistry/AssetRegistryModule.h" +#include "Blueprint/BlueprintSupport.h" +#include "BlueprintAssetHelpers.h" +#include "Engine/BlueprintGeneratedClass.h" +#include "JsonObjectConverter.h" +#include "Misc/Paths.h" +#include "Misc/ScopeExit.h" +#include "Policies/CondensedJsonPrintPolicy.h" +#include "SourceCodeNavigation.h" +#include "UObject/CoreRedirects.h" +#include "UObject/UObjectIterator.h" +#include "VisualStudioTools.h" + +namespace VisualStudioTools +{ +static const FName CategoryFName = TEXT("Category"); +static const FName ModuleNameFName = TEXT("ModuleName"); + +static TArray GetChangedPropertiesList( + UStruct* InStruct, const uint8* DataPtr, const uint8* DefaultDataPtr) +{ + TArray Result; + + const UClass* OwnerClass = Cast(InStruct); + + // Walk only in the properties defined in the current class, the super classes are processed individually + for (TFieldIterator It(OwnerClass, EFieldIteratorFlags::ExcludeSuper); It; ++It) + { + FProperty* Property = *It; + for (int32 Idx = 0; Idx < Property->ArrayDim; Idx++) + { + const uint8* PropertyValue = Property->ContainerPtrToValuePtr(DataPtr, Idx); + const uint8* DefaultPropertyValue = Property->ContainerPtrToValuePtrForDefaults(InStruct, DefaultDataPtr, Idx); + + if (!Property->Identical(PropertyValue, DefaultPropertyValue)) + { + Result.Add(Property); + break; + } + } + } + + return Result; +} + +static bool FindBlueprintNativeParents( + const UClass* BlueprintGeneratedClass, TFunctionRef Callback) +{ + bool bAnyNativeParent = false; + for (UClass* Super = BlueprintGeneratedClass->GetSuperClass(); Super; Super = Super->GetSuperClass()) + { + // Ignore the root `UObject` class and non-native parents. + if (Super->HasAnyClassFlags(CLASS_Native) && Super->GetFName() != NAME_Object) + { + bAnyNativeParent = true; + Callback(Super); + } + } + + return bAnyNativeParent; +} + +struct FPropertyEntry +{ + FProperty* Property; + TArray Blueprints; +}; + +struct FFunctionEntry +{ + UFunction* Function; + TArray Blueprints; +}; + +struct FClassEntry +{ + const UClass* Class; + TArray Blueprints; + TMap Properties; + TMap Functions; +}; + +using ClassMap = TMap; + +struct FAssetIndex +{ + TSet AssetPathCache; + ClassMap Classes; + TArray Blueprints; + + void ProcessBlueprint(const UBlueprintGeneratedClass* BlueprintGeneratedClass) + { + if (BlueprintGeneratedClass == nullptr) + { + return; + } + + int32 BlueprintIndex = Blueprints.Num(); + + bool bHasAnyParent = FindBlueprintNativeParents(BlueprintGeneratedClass, [&](UClass* Parent) + { + FString ParentName = Parent->GetFName().ToString(); + if (!Classes.Contains(ParentName)) + { + Classes.Add(ParentName).Class = Parent; + } + + FClassEntry& ClassEntry = Classes[ParentName]; + + ClassEntry.Blueprints.Add(BlueprintIndex); + + // Retrieve the properties from the parent class that changed in the Blueprint class, by comparing their CDOs. + UObject* GeneratedClassDefault = BlueprintGeneratedClass->ClassDefaultObject; + UObject* SuperClassDefault = Parent->GetDefaultObject(false); + TArray ChangedProperties = GetChangedPropertiesList(Parent, (uint8*)GeneratedClassDefault, (uint8*)SuperClassDefault); + + for (FProperty* Property : ChangedProperties) + { + FString PropertyName = Property->GetFName().ToString(); + if (!ClassEntry.Properties.Contains(PropertyName)) + { + ClassEntry.Properties.Add(PropertyName).Property = Property; + } + + FPropertyEntry& PropEntry = ClassEntry.Properties[PropertyName]; + PropEntry.Blueprints.Add(BlueprintIndex); + } + + // Iterate over the functions originally from the parent class + // and check if they are implemented in the BP class as well. + for (TFieldIterator It(Parent, EFieldIteratorFlags::ExcludeSuper); It; ++It) + { + UFunction* Fn = BlueprintGeneratedClass->FindFunctionByName((*It)->GetFName(), EIncludeSuperFlag::ExcludeSuper); + // If the function not present in the BP class directly, it means it was implemented. Otherwise, ignore. + if (!Fn) + { + continue; + } + + FString FnName = Fn->GetFName().ToString(); + if (!ClassEntry.Functions.Contains(FnName)) + { + ClassEntry.Functions.Add(FnName).Function = Fn; + } + + FFunctionEntry& FuncEntry = ClassEntry.Functions[FnName]; + FuncEntry.Blueprints.Add(BlueprintIndex); + } + }); + + if (bHasAnyParent) + { + check(Blueprints.Add(BlueprintGeneratedClass) == BlueprintIndex); + } + + return; + } +}; + +using JsonWriter = TJsonWriter>; + +static bool ShouldSerializePropertyValue(FProperty* Property) +{ + if (Property->ArrayDim > 1) // Skip properties that are not scalars + { + return false; + } + + if (FEnumProperty* EnumProperty = CastField(Property)) + { + return true; + } + + if (FNumericProperty* NumericProperty = CastField(Property)) + { + UEnum* EnumDef = NumericProperty->GetIntPropertyEnum(); + if (EnumDef != NULL) + { + return true; + } + + if (NumericProperty->IsFloatingPoint()) + { + return true; + } + + if (NumericProperty->IsInteger()) + { + return true; + } + } + + if (FBoolProperty* BoolProperty = CastField(Property)) + { + return true; + } + + if (FStrProperty* StringProperty = CastField(Property)) + { + return true; + } + + return false; +} + +static void SerializeBlueprints(TSharedRef& Json, TArray Items) +{ + Json->WriteArrayStart(); + for (const UClass* Blueprint : Items) + { + Json->WriteObjectStart(); + + Json->WriteValue(TEXT("name"), Blueprint->GetName()); + Json->WriteValue(TEXT("path"), Blueprint->GetPathName()); + Json->WriteObjectEnd(); + } + Json->WriteArrayEnd(); +} + +static void SerializeProperties(TSharedRef& Json, FClassEntry& Entry, TArray& Blueprints) +{ + Json->WriteArrayStart(); + for (auto& Item : Entry.Properties) + { + auto& PropName = Item.Key; + auto& PropEntry = Item.Value; + FProperty* Property = PropEntry.Property; + + Json->WriteObjectStart(); + + Json->WriteValue(TEXT("name"), PropName); + + Json->WriteIdentifierPrefix(TEXT("metadata")); + { + Json->WriteObjectStart(); + if (Property->HasMetaData(CategoryFName)) + { + Json->WriteValue(TEXT("categories"), Property->GetMetaData(CategoryFName)); + } + Json->WriteObjectEnd(); + } + + Json->WriteIdentifierPrefix(TEXT("values")); + { + Json->WriteArrayStart(); + for (auto& BlueprintEntry : PropEntry.Blueprints) + { + Json->WriteObjectStart(); + + Json->WriteValue(TEXT("blueprint"), BlueprintEntry); + + UObject* GeneratedClassDefault = Blueprints[BlueprintEntry]->ClassDefaultObject; + const uint8* PropData = PropEntry.Property->ContainerPtrToValuePtr(GeneratedClassDefault); + + if (ShouldSerializePropertyValue(PropEntry.Property)) + { + TSharedPtr JsonValue = FJsonObjectConverter::UPropertyToJsonValue(Property, PropData); + FJsonSerializer::Serialize(JsonValue.ToSharedRef(), TEXT("value"), Json); + } + + Json->WriteObjectEnd(); + } + Json->WriteArrayEnd(); + } + + Json->WriteObjectEnd(); + } + Json->WriteArrayEnd(); +} + +static void SerializeFunctions(TSharedRef& Json, FClassEntry& Entry) +{ + Json->WriteArrayStart(); + for (auto& Item : Entry.Functions) + { + auto& Name = Item.Key; + auto& FnEntry = Item.Value; + Json->WriteObjectStart(); + Json->WriteValue(TEXT("name"), Name); + Json->WriteValue(TEXT("blueprints"), FnEntry.Blueprints); + Json->WriteObjectEnd(); + } + Json->WriteArrayEnd(); +} + +static void SerializeClasses(TSharedRef& Json, ClassMap& Items, TArray Blueprints) +{ + Json->WriteArrayStart(); + for (auto& Item : Items) + { + auto& ClassName = Item.Key; + auto& Entry = Item.Value; + Json->WriteObjectStart(); + Json->WriteValue(TEXT("name"), FString::Printf(TEXT("%s%s"), Entry.Class->GetPrefixCPP(), *Entry.Class->GetName())); + + Json->WriteValue(TEXT("blueprints"), Entry.Blueprints); + + Json->WriteIdentifierPrefix(TEXT("properties")); + SerializeProperties(Json, Entry, Blueprints); + + Json->WriteIdentifierPrefix(TEXT("functions")); + SerializeFunctions(Json, Entry); + + Json->WriteObjectEnd(); + } + Json->WriteArrayEnd(); +} + +static void SerializeToIndex(FAssetIndex Index, FArchive& IndexFile) +{ + TSharedRef Json = JsonWriter::Create(&IndexFile); + + Json->WriteObjectStart(); + + Json->WriteIdentifierPrefix(TEXT("blueprints")); + SerializeBlueprints(Json, Index.Blueprints); + + Json->WriteIdentifierPrefix(TEXT("classes")); + SerializeClasses(Json, Index.Classes, Index.Blueprints); + + Json->WriteObjectEnd(); + Json->Close(); +} + +static TArray GetModulesByPath(const FString& InDir) +{ + TArray OutResult; + Algo::TransformIf( + FSourceCodeNavigation::GetSourceFileDatabase().GetModuleNames(), + OutResult, + [&](const FString& Module) { + return FPaths::IsUnderDirectory(Module, InDir); + }, + [](const FString& Module) { +#if 0 + // Old version assumes that each module is in a folder with the same name as the module + return FPaths::GetBaseFilename(FPaths::GetPath(*Module)); +#else + // New version assumes that each module is in a file with the name Module.Build.cs + FString TempString = FPaths::GetBaseFilename(*Module); + TempString.RemoveFromEnd(TEXT(".Build")); + return TempString; +#endif + }); + + return OutResult; +} + +static void GetNativeClassesByPath(const FString& InDir, TArray>& OutClasses) +{ + TArray Modules = GetModulesByPath(InDir); + + for (TObjectIterator ClassIt; ClassIt; ++ClassIt) + { + UClass* TestClass = *ClassIt; + if (!TestClass->HasAnyClassFlags(CLASS_Native)) + { + continue; + } + + FAssetData ClassAssetData(TestClass); + FString ModuleName = ClassAssetData.GetTagValueRef(ModuleNameFName); + + if (!ModuleName.IsEmpty() && Modules.Contains(ModuleName)) + { + OutClasses.Add(TestClass); + } + } +} + +static void RunAssetScan( + FAssetIndex& Index, + const TArray>& FilterBaseClasses) +{ + FARFilter Filter; + Filter.bRecursivePaths = true; + Filter.bRecursiveClasses = true; + AssetHelpers::SetBlueprintClassFilter(Filter); + + // Add all base classes to the tag filter for native parent + Algo::Transform(FilterBaseClasses, Filter.TagsAndValues, [](const TWeakObjectPtr& Class) { + return MakeTuple( + FBlueprintTags::NativeParentClassPath, + FObjectPropertyBase::GetExportPath(Class.Get(), nullptr /*Parent*/, nullptr /*ExportRootScope*/, 0 /*PortFlags*/)); + }); + + // Take account of any core redirects for the blueprint classes we want to scan. + for (const auto& BaseClass : FilterBaseClasses) + { + if (BaseClass.IsValid()) + { + TArray PreviousNames; + if (FCoreRedirects::FindPreviousNames(ECoreRedirectFlags::Type_Class, BaseClass->GetPathName(), PreviousNames)) + { + for (const auto& PreviousName : PreviousNames) + { + // FString PreviousString = FObjectPropertyBase::GetExportPath(BaseClass->GetClass()->GetClassPathName(), PreviousName.ToString()); // Alternative way to add /Script/CoreUObject.Class'' wrapper - but not sure it makes sense to use the new class when referencing a previous name + FString PreviousString = "/Script/CoreUObject.Class'" + PreviousName.ToString() + "'"; + Filter.TagsAndValues.Add(FBlueprintTags::NativeParentClassPath, PreviousString); + } + } + } + } + + IAssetRegistry& AssetRegistry = FModuleManager::LoadModuleChecked(TEXT("AssetRegistry")).Get(); + + TArray TargetAssets; + AssetRegistry.GetAssets(Filter, TargetAssets); + + AssetHelpers::ForEachAsset(TargetAssets, + [&](UBlueprintGeneratedClass* BlueprintGeneratedClass, const FAssetData& /*AssetData*/) + { + Index.ProcessBlueprint(BlueprintGeneratedClass); + }); +} + +} // namespace VS + +static constexpr auto FilterSwitch = TEXT("filter"); +static constexpr auto FullSwitch = TEXT("full"); + +UVisualStudioToolsCommandlet::UVisualStudioToolsCommandlet() + : Super() +{ + HelpDescription = TEXT("Commandlet for generating data used by Blueprint support in Visual Studio."); + + HelpParamNames.Add(FilterSwitch); + HelpParamDescriptions.Add(TEXT("[Optional] Scan only blueprints derived from native classes under the provided path. Defaults to `FPaths::ProjectDir`. Incompatible with `-full`.")); + + HelpParamNames.Add(FullSwitch); + HelpParamDescriptions.Add(TEXT("[Optional] Scan blueprints derived from native classes from ALL modules, include the Engine. This can be _very slow_ for large projects. Incompatible with `-filter`.")); + + HelpUsage = TEXT(" -run=VisualStudioTools -output= [-filter=|-full] [-unattended -noshadercompile -nosound -nullrhi -nocpuprofilertrace -nocrashreports -nosplash]"); +} + +int32 UVisualStudioToolsCommandlet::Run( + TArray& Tokens, + TArray& Switches, + TMap& ParamVals, + FArchive& OutArchive) +{ + using namespace VisualStudioTools; + + FString* Filter = ParamVals.Find(FilterSwitch); + const bool bFullScan = Switches.Contains(FullSwitch); + + if (Filter != nullptr && bFullScan) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Incompatible scan options.")); + PrintHelp(); + return -1; + } + + TArray> FilterBaseClasses; + if (!bFullScan) + { + if (Filter) + { + FPaths::NormalizeDirectoryName(*Filter); + GetNativeClassesByPath(*Filter, FilterBaseClasses); + } + else + { + GetNativeClassesByPath(FPaths::ProjectDir(), FilterBaseClasses); + } + } + else + { + for (TObjectIterator ClassIt; ClassIt; ++ClassIt) + { + UClass* TestClass = *ClassIt; + if (!TestClass->HasAnyClassFlags(CLASS_Native)) + { + continue; + } + + FilterBaseClasses.Add(TestClass); + } + } + + FAssetIndex Index; + RunAssetScan(Index, FilterBaseClasses); + SerializeToIndex(Index, OutArchive); + UE_LOG(LogVisualStudioTools, Display, TEXT("Found %d blueprints."), Index.Blueprints.Num()); + + return 0; +} diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.h new file mode 100644 index 0000000..05ad18d --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandlet.h @@ -0,0 +1,24 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include "CoreMinimal.h" +#include "VisualStudioToolsCommandletBase.h" + +#include "VisualStudioToolsCommandlet.generated.h" + +UCLASS() +class UVisualStudioToolsCommandlet + : public UVisualStudioToolsCommandletBase +{ + GENERATED_BODY() + +public: + UVisualStudioToolsCommandlet(); + int32 Run( + TArray& Tokens, + TArray& Switches, + TMap& ParamVals, + FArchive& OutArchive) override; +}; diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.cpp b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.cpp new file mode 100644 index 0000000..716101a --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.cpp @@ -0,0 +1,88 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#include "VisualStudioToolsCommandletBase.h" + +#include "Windows/AllowWindowsPlatformTypes.h" + +#include "HAL/FileManager.h" +#include "Misc/Paths.h" +#include "VisualStudioTools.h" + +#include "Windows/HideWindowsPlatformTypes.h" + +static constexpr auto HelpSwitch = TEXT("help"); +static constexpr auto OutputSwitch = TEXT("output"); + +UVisualStudioToolsCommandletBase::UVisualStudioToolsCommandletBase() +{ + IsClient = false; + IsEditor = true; + IsServer = false; + LogToConsole = false; + ShowErrorCount = false; + + HelpParamNames.Add(OutputSwitch); + HelpParamDescriptions.Add(TEXT("[Required] The file path to write the command output.")); + + HelpParamNames.Add(HelpSwitch); + HelpParamDescriptions.Add(TEXT("[Optional] Print this help message and quit the commandlet immediately.")); +} + +void UVisualStudioToolsCommandletBase::PrintHelp() const +{ + UE_LOG(LogVisualStudioTools, Display, TEXT("%s"), *HelpDescription); + UE_LOG(LogVisualStudioTools, Display, TEXT("Usage: %s"), *HelpUsage); + UE_LOG(LogVisualStudioTools, Display, TEXT("Parameters:")); + for (int32 i = 0; i < HelpParamNames.Num(); ++i) + { + UE_LOG(LogVisualStudioTools, Display, TEXT("\t-%s: %s"), *HelpParamNames[i], *HelpParamDescriptions[i]); + } +} + +int32 UVisualStudioToolsCommandletBase::Main(const FString& Params) +{ + TArray Tokens; + TArray Switches; + TMap ParamVals; + + ParseCommandLine(*Params, Tokens, Switches, ParamVals); + + if (Switches.Contains(HelpSwitch)) + { + PrintHelp(); + return 0; + } + + UE_LOG(LogVisualStudioTools, Display, TEXT("Init VS Tools cmdlet.")); + + if (!FPaths::IsProjectFilePathSet()) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("You must invoke this commandlet with a project file.")); + return -1; + } + + FString FullPath = ParamVals.FindRef(OutputSwitch); + + if (FullPath.IsEmpty() && !FParse::Value(*Params, TEXT("output "), FullPath)) + { + // VS:1678426 - Initial version was using `-output "path-to-file"` (POSIX style). + // However, that does not support paths with spaces, even when surrounded with + // quotes because `FParse::Value` only handles that case when there's no space + // between the parameter name and quoted value. + // For back-compatibility reasons, parse that style by including the space in + // the parameter token like it's usually done for the `=` sign. + UE_LOG(LogVisualStudioTools, Error, TEXT("Missing file output parameter.")); + PrintHelp(); + return -1; + } + + TUniquePtr OutArchive{ IFileManager::Get().CreateFileWriter(*FullPath) }; + if (!OutArchive) + { + UE_LOG(LogVisualStudioTools, Error, TEXT("Failed to create index with path: %s."), *FullPath); + return -1; + } + + return this->Run(Tokens, Switches, ParamVals, *OutArchive); +} diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.h new file mode 100644 index 0000000..7c370ef --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Private/VisualStudioToolsCommandletBase.h @@ -0,0 +1,29 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include "Commandlets/Commandlet.h" + +#include "VisualStudioToolsCommandletBase.generated.h" + +UCLASS(Abstract) +class UVisualStudioToolsCommandletBase + : public UCommandlet +{ + GENERATED_BODY() + +public: + int32 Main(const FString& Params) override; + +protected: + UVisualStudioToolsCommandletBase(); + + void PrintHelp() const; + + virtual int32 Run( + TArray& Tokens, + TArray& Switches, + TMap& ParamVals, + FArchive& OutArchive) PURE_VIRTUAL(UVisualStudioToolsCommandletBase::Run, return 0;); +}; \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/Public/VisualStudioTools.h b/Plugins/VisualStudioTools/Source/VisualStudioTools/Public/VisualStudioTools.h new file mode 100644 index 0000000..0ffe4e9 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/Public/VisualStudioTools.h @@ -0,0 +1,7 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +#pragma once + +#include "CoreMinimal.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogVisualStudioTools, Log, All); \ No newline at end of file diff --git a/Plugins/VisualStudioTools/Source/VisualStudioTools/VisualStudioTools.Build.cs b/Plugins/VisualStudioTools/Source/VisualStudioTools/VisualStudioTools.Build.cs new file mode 100644 index 0000000..da2b217 --- /dev/null +++ b/Plugins/VisualStudioTools/Source/VisualStudioTools/VisualStudioTools.Build.cs @@ -0,0 +1,77 @@ +// Copyright 2022 (c) Microsoft. All rights reserved. + +using UnrealBuildTool; + +public class VisualStudioTools : ModuleRules +{ + public VisualStudioTools(ReadOnlyTargetRules Target) : base(Target) + { + bool bIsCustomDevBuild = System.Environment.GetEnvironmentVariable("VSTUE_IsCustomDevBuild") == "1"; + if (bIsCustomDevBuild) + { + // Get correct header suggestions in the IDE and validate + // the plugin build without having to affect for the whole target, + // which is expensive in source-builds of the engine. + PCHUsage = ModuleRules.PCHUsageMode.NoPCHs; + bUseUnity = false; + + // When debugging the commandlet code, disable optimizations to get + // proper local variable inspection and less inlined stack frames + OptimizeCode = CodeOptimization.Never; + + // Enable more restrict warnings during compilation in UE5. + // Required by tasks in the compliance pipeline. + if (Target.Version.MajorVersion >= 5) + { + UnsafeTypeCastWarningLevel = WarningLevel.Error; + } + } + else + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + } + + // To support UE5.1+, the code is using the new FTopLevelAssetPath API + // with a detection of support via version numbers. + // If the check is producing a false positive/negative in your version of the engine + // you can change the block below and force the check as enabled/disabled. + if ((Target.Version.MajorVersion == 5 && Target.Version.MinorVersion >= 1) || Target.Version.MajorVersion > 5) + { + PrivateDefinitions.Add("FILTER_ASSETS_BY_CLASS_PATH=1"); + } + else + { + PrivateDefinitions.Add("FILTER_ASSETS_BY_CLASS_PATH=0"); + } + + PublicDependencyModuleNames.AddRange( + new[] + { + "Core", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "ApplicationCore", + "AssetRegistry", + "CoreUObject", + "Engine", + "Json", + "JsonUtilities", + "Kismet", + "UnrealEd", + "Slate", + "SlateCore", + "ToolMenus", + "EditorSubsystem", + "MainFrame", + "BlueprintGraph", + "VisualStudioDTE", + "EditorStyle", + "Projects" + } + ); + } +} diff --git a/Plugins/VisualStudioTools/VisualStudioTools.uplugin b/Plugins/VisualStudioTools/VisualStudioTools.uplugin new file mode 100644 index 0000000..b9bb932 --- /dev/null +++ b/Plugins/VisualStudioTools/VisualStudioTools.uplugin @@ -0,0 +1,38 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "2.7", + "FriendlyName": "Visual Studio Integration Tools", + "Description": "Enables integration with Visual Studio IDE.", + "Category": "Programming", + "CreatedBy": "Microsoft", + "CreatedByURL": "http://www.microsoft.com", + "DocsURL": "", + "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/362651520df94e4fa65492dbcba44ae2", + "SupportURL": "https://developercommunity.visualstudio.com/", + "EnabledByDefault": true, + "Installed": false, + "bExplicitlyLoaded": true, + "CanContainContent": false, + "SupportedTargetPlatforms": [ + "Win64" + ], + "Modules": [ + { + "Name": "VisualStudioTools", + "Type": "Editor", + "LoadingPhase": "Default", + "PlatformAllowList": [ + "Win64" + ] + }, + { + "Name": "VisualStudioBlueprintDebuggerHelper", + "Type": "Editor", + "LoadingPhase": "None", + "PlatformAllowList": [ + "Win64" + ] + } + ] +} diff --git a/Plugins/VisualStudioTools/azure-pipelines/Support-extra-UBT-args-in-UAT.BuildPlugin.patch b/Plugins/VisualStudioTools/azure-pipelines/Support-extra-UBT-args-in-UAT.BuildPlugin.patch new file mode 100644 index 0000000..9d1a396 --- /dev/null +++ b/Plugins/VisualStudioTools/azure-pipelines/Support-extra-UBT-args-in-UAT.BuildPlugin.patch @@ -0,0 +1,46 @@ +From f7238064c8680f6392793eb664ee2c773daff594 Mon Sep 17 00:00:00 2001 +From: Oleksandr Kozlov +Date: Tue, 1 Apr 2025 15:22:14 +0200 +Subject: [PATCH] Support extra UBT args in UAT.BuildPlugin + +Forwarding extra parameters to UBT to allow customizing the build of a plugin. +Example: runuat.bat buildpluing -plugin=... -ubtargs="-LinkerArguments=\"/profile\"" + +--- + .../Scripts/BuildPluginCommand.Automation.cs | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/Engine/Source/Programs/AutomationTool/Scripts/BuildPluginCommand.Automation.cs b/Engine/Source/Programs/AutomationTool/Scripts/BuildPluginCommand.Automation.cs +index 5a43dc0c4..aaf3f192f 100644 +--- a/Engine/Source/Programs/AutomationTool/Scripts/BuildPluginCommand.Automation.cs ++++ b/Engine/Source/Programs/AutomationTool/Scripts/BuildPluginCommand.Automation.cs +@@ -64,6 +64,9 @@ public sealed class BuildPlugin : BuildCommand + // Option for verifying that all include directive s + bool bStrictIncludes = ParseParam("StrictIncludes"); + ++ // Extra arguments forwarded to UBT ++ string UBTArgs = ParseParamValue("ubtargs"); ++ + // Make sure the packaging directory is valid + DirectoryReference PackageDir = new DirectoryReference(PackageParam); + +@@ -126,6 +129,16 @@ public sealed class BuildPlugin : BuildCommand + AdditionalArgs.Append(" -NoPCH -NoSharedPCH -DisableUnity"); + } + ++ // Pass extra parameters to UBT ++ if (string.IsNullOrEmpty(UBTArgs) == false) ++ { ++ Logger.LogInformation("Building with extra UBT parameters: {UBTArgs}", UBTArgs); ++ string Arg = UBTArgs; ++ Arg = Arg.TrimStart(new char[] { '\"' }); ++ Arg = Arg.TrimEnd(new char[] { '\"' }); ++ AdditionalArgs.Append(' ').Append(Arg); ++ } ++ + // check if any architectures were specified + foreach (UnrealTargetPlatform Platform in UnrealTargetPlatform.GetValidPlatforms()) + { +-- +2.49.0.windows.1 + diff --git a/Plugins/VisualStudioTools/azure-pipelines/TSAOptions.json b/Plugins/VisualStudioTools/azure-pipelines/TSAOptions.json new file mode 100644 index 0000000..54198e1 --- /dev/null +++ b/Plugins/VisualStudioTools/azure-pipelines/TSAOptions.json @@ -0,0 +1,21 @@ +{ + "tsaVersion": "TsaV2", + "codebase": "NewOrUpdate", + "codebaseName": "vc-ue-extensions", + "tsaStamp": "DevDiv", + "tsaEnvironment": "PROD", + "notificationAliases": [ + "hebaggio@microsoft.com", + "cpp-apogee@microsoft.com" + ], + "codebaseAdmins": [ + "REDMOND\\hebaggio", + "REDMOND\\cpp-apogee" + ], + "instanceUrl": "https://devdiv.visualstudio.com", + "projectName": "DevDiv", + "areaPath": "DevDiv\\Cpp Developer Experience\\GameDev Experience\\Unreal Engine integrations", + "iterationPath": "DevDiv", + "alltools": true, + "repositoryName": "vc-ue-extensions" + } \ No newline at end of file diff --git a/Plugins/VisualStudioTools/azure-pipelines/compliance.yml b/Plugins/VisualStudioTools/azure-pipelines/compliance.yml new file mode 100644 index 0000000..82aee67 --- /dev/null +++ b/Plugins/VisualStudioTools/azure-pipelines/compliance.yml @@ -0,0 +1,123 @@ +# IMPORTANT: +# Do not run BinSkim because we do not control producing the binaries. That process is owned by +# Epic. We just provide source code. Since we do not control the build, BinSkim is not needed. + +variables: + Codeql.Enabled: true + Codeql.SourceRoot: '$(Build.SourcesDirectory)' + +trigger: +- main + +pr: + autoCancel: true + branches: + include: + - main + - dev/* + +schedules: + - cron: "0 12 * * Sun" + displayName: Weekly run + branches: + include: + - main + always: true + +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + pool: + name: VSEngSS-MicroBuild2022-1ES + os: windows + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: stage + jobs: + - job: 'UnrealEngine_VisualStudioTools_Compliance' + timeoutInMinutes: 1440 + steps: + - task: CmdLine@2 + displayName: 'Clone Unreal Engine Repository' + inputs: + script: 'git clone "https://$(token)@github.com/EpicGames/UnrealEngine" --single-branch --branch $(ue_branch) --depth 1 ue' + workingDirectory: '$(Agent.BuildDirectory)' + - task: CmdLine@2 + displayName: 'Apply patch to allow us to pass linker flags to the build' + inputs: + script: 'git apply --ignore-whitespace $(Build.SourcesDirectory)/azure-pipelines/Support-extra-UBT-args-in-UAT.BuildPlugin.patch' + workingDirectory: '$(Agent.BuildDirectory)\ue' + - task: PowerShell@2 + displayName: '[UE] Append /unattended option' + inputs: + targetType: 'inline' + script: + $filePath = "$(Agent.BuildDirectory)/ue/Setup.bat"; + (Get-Content $filePath).Replace("/register", "/register /unattended") | Set-Content $filePath + - task: CmdLine@2 + displayName: '[UE] Run Setup.bat' + inputs: + script: 'ue\Setup.bat --force' + workingDirectory: '$(Agent.BuildDirectory)' + - task: MSBuild@1 + displayName: 'Build Plugin' + timeoutInMinutes: 300 + inputs: + solution: '$(Build.SourcesDirectory)/build.proj' + msbuildArguments: '/p:UnrealEngine=$(Agent.BuildDirectory)\ue /p:OutputPath=$(Build.ArtifactStagingDirectory)\drop /p:VulkanReadyBinaries=true' + createLogFile: true + - task: CopyFiles@2 + displayName: 'Collect binaries to analyze' + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)\drop' + Contents: '**\unrealeditor-visualstudiotools.*' + TargetFolder: '$(Build.ArtifactStagingDirectory)\binariesToAnalyze' + CleanTargetFolder: true + OverWrite: true + - task: PoliCheck@2 + inputs: + targetType: 'F' + targetArgument: '$(Build.SourcesDirectory)' + - task: ComponentGovernanceComponentDetection@0 + inputs: + ignoreDirectories: '$(Agent.BuildDirectory)\ue' + displayName: 'Component Detection' + - task: APIScan@2 + displayName: 'Run APIScan' + inputs: + softwareFolder: '$(Build.ArtifactStagingDirectory)/binariesToAnalyze' + softwareName: 'Visual Studio Tools for Unreal Engine' + softwareVersionNum: '2.4' + softwareBuildNum: '$(Build.BuildId)' + toolVersion: 'Latest' + env: + AzureServicesAuthConnectionString: runAs=App;AppId=$(ApiScanClientId) + - task: SDLNativeRules@3 + displayName: 'Run the PREfast SDL Native Rules for MSBuild' + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + publishXML: true + userProvideBuildInfo: auto + rulesetName: Recommended + setupCommandlinePicker: 'vs2022' + - task: PublishSecurityAnalysisLogs@3 + displayName: 'Publish security analysis logs' + inputs: + ArtifactName: 'CodeAnalysisLogs' + ArtifactType: 'Container' + AllTools: true + ToolLogsNotFoundAction: 'Standard' + - task: TSAUpload@2 + displayName: 'TSA upload' + inputs: + GdnPublishTsaOnboard: True + GdnPublishTsaConfigFile: '$(Build.SourcesDirectory)/azure-pipelines/TSAOptions.json' diff --git a/Plugins/VisualStudioTools/azure-pipelines/release.yml b/Plugins/VisualStudioTools/azure-pipelines/release.yml new file mode 100644 index 0000000..bf04be1 --- /dev/null +++ b/Plugins/VisualStudioTools/azure-pipelines/release.yml @@ -0,0 +1,117 @@ +# IMPORTANT: +# Do not run BinSkim because we do not control producing the binaries. That process is owned by +# Epic. We just provide source code. Since we do not control the build, BinSkim is not needed. + +# Manual trigger for now +trigger: none +pr: none + +parameters: +- name: SignTypeOverride + displayName: Signing Type (default is real for the main branch and test otherwise) + type: string + default: default + values: + - default + - test + - real + +variables: + # MicroBuild requires TeamName to be set. + - name: TeamName + value: C++ Unreal Engine + - name: TagName + value: $[replace(variables['Build.SourceBranch'], 'refs/tags/', '')] + # If the user didn't override the signing type, then only real-sign on main. + - ${{ if ne(parameters.SignTypeOverride, 'default') }}: + - name: SignType + value: ${{ parameters.SignTypeOverride }} + - ${{ if and(eq(parameters.SignTypeOverride, 'default'), or(eq(variables['Build.SourceBranchName'], 'main'), startsWith(variables['Build.SourceBranch'], 'refs/tags'))) }}: + - name: SignType + value: real + - ${{ if and(eq(parameters.SignTypeOverride, 'default'), not(or(eq(variables['Build.SourceBranchName'], 'main'), startsWith(variables['Build.SourceBranch'], 'refs/tags')))) }}: + - name: SignType + value: test + +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + pool: + name: VSEngSS-MicroBuild2022-1ES + os: windows + customBuildTags: + - ES365AIMigrationTooling + stages: + - stage: stage + jobs: + - job: 'UnrealEngine_VisualStudioTools_Release' + timeoutInMinutes: 1440 + templateContext: + outputParentDirectory: $(Agent.BuildDirectory)/out/ + outputs: + - output: pipelineArtifact + displayName: 'Publish signed plugin files' + targetPath: $(Agent.BuildDirectory)/out + artifactName: SignedPlugin + artifactType: container + sbomEnabled: false + steps: + - powershell: | + Write-Host "##vso[task.setVariable variable=SHA1]$(git rev-parse HEAD)" + displayName: Save tag commit hash + workingDirectory: '$(Build.SourcesDirectory)' + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild Signing + inputs: + signType: $(SignType) + zipSources: true + - task: PowerShell@2 + displayName: "Create zip excluding .git folder" + inputs: + targetType: 'inline' + script: | + $destinationDirectory = "$(Agent.BuildDirectory)/out" + New-Item -Path $destinationDirectory -ItemType Directory + git archive -o "$destinationDirectory/VisualStudioTools.zip" $(SHA1) + - powershell: New-FileCatalog -Path .\VisualStudioTools.zip -CatalogFilePath .\VisualStudioTools.zip.cat -CatalogVersion 2.0 + displayName: Create standalone catalog + workingDirectory: '$(Agent.BuildDirectory)\out' + - task: NuGetToolInstaller@1 + inputs: + versionSpec: 5.7 + - task: NuGetCommand@2 + displayName: 'NuGet Restore MicroBuild Signing Extension' + inputs: + command: 'restore' + restoreSolution: 'Scripts/SignDetached.proj' + feedsToUse: 'config' + restoreDirectory: '$(Build.SourcesDirectory)\Scripts\packages' + - task: MSBuild@1 + displayName: Sign catalogs + inputs: + solution: Scripts/SignDetached.proj + msbuildArguments: /p:SignType=$(SignType) /p:BaseOutputDirectory=$(Agent.BuildDirectory)\out + # === Disabled for now in favor of uploading the artifacts to the pipeline === + # - task: GitHubRelease@1 + # displayName: Pre-release to public repo + # condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags')) + # inputs: + # gitHubConnection: GitHub-VSCodeExtensions + # repositoryName: microsoft/vc-ue-extensions + # action: create + # target: $(SHA1) + # tagSource: gitTag + # tag: $(TagName) + # title: $(TagName) + # isDraft: true + # isPreRelease: true + # assets: | + # $(Agent.BuildDirectory)\out\VisualStudioTools.zip + # $(Agent.BuildDirectory)\out\VisualStudioTools.zip.cat diff --git a/Plugins/VisualStudioTools/build.proj b/Plugins/VisualStudioTools/build.proj new file mode 100644 index 0000000..14e1f70 --- /dev/null +++ b/Plugins/VisualStudioTools/build.proj @@ -0,0 +1,24 @@ + + + $(MSBuildProjectDirectory) + $([System.IO.Path]::Combine($(PluginFolder), `VisualStudioTools.uplugin`)) + $([System.IO.Path]::Combine($(PluginFolder), "bin")) + $(UnrealEngine) + + $([MSBuild]::GetRegistryValue('HKEY_LOCAL_MACHINE\SOFTWARE\EpicGames\Unreal Engine\$(UnrealEngine)', 'InstalledDirectory')) + + $(EnginePath.Trim())\Engine\Build\BatchFiles\RunUAT.bat + -Unversioned + -ubtargs="-LinkerArguments=\"/profile\" " + + + + + + + + + + diff --git a/Source/lonese/MyCharacter.cpp b/Source/lonese/MyCharacter.cpp index 874093a..aa3a3a6 100644 --- a/Source/lonese/MyCharacter.cpp +++ b/Source/lonese/MyCharacter.cpp @@ -1,15 +1,27 @@ // Fill out your copyright notice in the Description page of Project Settings. +#include "MyCharacter.h" + #include "EnhancedInputSubsystems.h" #include "EnhancedInputComponent.h" -#include "MyCharacter.h" - void AMyCharacter::Move(const FInputActionValue& Value) { auto f2d = Value.Get(); - AddMovementInput(GetActorRotation().Vector()); + auto f = GetActorForwardVector(); + auto r = GetActorRightVector(); + AddMovementInput(f * f2d.X); + AddMovementInput(r * f2d.Y); +} + +void AMyCharacter::BeginRun(const FInputActionValue& Value) +{ + bIsRunning = true; +} +void AMyCharacter::StopRun(const FInputActionValue& Value) +{ + bIsRunning = false; } // Sets default values @@ -40,7 +52,7 @@ void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCompone Super::SetupPlayerInputComponent(PlayerInputComponent); auto PlayerController = Cast(GetController()); - UEnhancedInputLocalPlayerSubsystem* Subsystem; + UEnhancedInputLocalPlayerSubsystem* Subsystem = NULL; if (PlayerController) { Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer()); diff --git a/Source/lonese/MyCharacter.h b/Source/lonese/MyCharacter.h index e1c74c0..f0bb59c 100644 --- a/Source/lonese/MyCharacter.h +++ b/Source/lonese/MyCharacter.h @@ -16,9 +16,15 @@ public: class UInputMappingContext* DefaultMapping; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Input") class UInputAction* MoveAction; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Input") + class UInputAction* RunAction; UFUNCTION(BlueprintCallable, Category = "Move") void Move(const FInputActionValue& Value); + UFUNCTION(BlueprintCallable, Category = "Move") + void BeginRun(const FInputActionValue& Value); + UFUNCTION(BlueprintCallable, Category = "Move") + void StopRun(const FInputActionValue& Value); // Sets default values for this character's properties AMyCharacter(); @@ -32,6 +38,6 @@ protected: // Called when the game starts or when spawned virtual void BeginPlay() override; -private: - +private: + bool bIsRunning = false; };

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 WJiUKD?_w|{KsQdw%d4QFNcmqcd{t%u literal 0 HcmV?d00001 diff --git a/Plugins/VisualStudioTools/Docs/images/configuration_page.png b/Plugins/VisualStudioTools/Docs/images/configuration_page.png new file mode 100644 index 0000000000000000000000000000000000000000..d08556b295cb3b54a9185c57cb3980f6e3ce0509 GIT binary patch literal 87093 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