diff --git a/src/mod_sa_VS2022.sln b/src/mod_sa_VS2022.sln
new file mode 100644
index 0000000..d99854b
--- /dev/null
+++ b/src/mod_sa_VS2022.sln
@@ -0,0 +1,17 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sa", "mod_sa_VS2022.vcxproj", "{02EB97D5-B1C5-411E-8274-83A95985DE6F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {02EB97D5-B1C5-411E-8274-83A95985DE6F}.Release|Win32.ActiveCfg = Release|Win32
+ {02EB97D5-B1C5-411E-8274-83A95985DE6F}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/mod_sa_VS2022.vcxproj b/src/mod_sa_VS2022.vcxproj
new file mode 100644
index 0000000..84a7a6f
--- /dev/null
+++ b/src/mod_sa_VS2022.vcxproj
@@ -0,0 +1,531 @@
+
+
+
+
+ Release
+ Win32
+
+
+
+ mod_sa
+ {02EB97D5-B1C5-411E-8274-83A95985DE6F}
+ mod_sa
+ Win32Proj
+
+
+
+ DynamicLibrary
+ MultiByte
+ false
+ false
+ v143
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ $(SolutionDir)\..\bin\
+ $(SolutionDir)\obj\$(Configuration)\
+ d3d9
+ false
+ false
+ AllRules.ruleset
+
+
+ $(IncludePath);$(DXSDK_DIR)\Include
+ $(LibraryPath);$(DXSDK_DIR)\Lib\x86
+
+
+
+
+
+
+
+ /EHsc %(AdditionalOptions)
+ MaxSpeed
+ AnySuitable
+ true
+ Size
+ true
+ sparsehash\windows;sparsehash;game_sa;wdl/;%(AdditionalIncludeDirectories)
+ _WIN32_WINNT=0x501;WIN32;NDEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;mod_sa_PROXY_EXPORTS;TW_EXPORTS;%(PreprocessorDefinitions)
+ true
+
+
+ MultiThreaded
+ Default
+ false
+ Fast
+ Use
+ main.h
+ Level3
+ 4995;4244;4996;4482;4409;4250;%(DisableSpecificWarnings)
+
+
+ d3dx9.lib;gdiplus.lib;%(AdditionalDependencies)
+ ../bin/d3d9.dll
+ %(AdditionalLibraryDirectories)
+ mod_sa.def
+ Windows
+ true
+ true
+ false
+
+
+ $(OutDir)mod_sa_proxy.lib
+ MachineX86
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mod_sa_VS2022.vcxproj.filters b/src/mod_sa_VS2022.vcxproj.filters
new file mode 100644
index 0000000..e60fb00
--- /dev/null
+++ b/src/mod_sa_VS2022.vcxproj.filters
@@ -0,0 +1,1310 @@
+
+
+
+
+ {3acbb6a1-2dad-4652-a0f4-50998bd6bf34}
+
+
+ {7e564f64-d0bf-4a5c-89d2-83c66e1b6aad}
+
+
+ {ad2fa68d-2906-4414-9dee-9f83e44cc897}
+
+
+ {9ae3016e-5310-4986-8c0f-04920b5da7e6}
+
+
+ {1b956e19-8747-4fa8-976e-aa5c14c5e5c7}
+
+
+ {cec61312-62d4-4342-9cb9-d6433b8beebc}
+
+
+ {96ffe87c-8439-4110-87cc-638cb4d4dac4}
+
+
+ {5ad2f905-f911-4555-8f40-52cf47962098}
+
+
+ {31cb1d64-d4ce-4c90-a17d-ec556e417472}
+
+
+ {d3f13339-400e-4391-bb01-447f6644f256}
+
+
+ {4fca762a-c0e6-4c1a-b4e7-ea6d3aa07b72}
+
+
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ D3D9
+
+
+ D3D9
+
+
+ D3D9
+
+
+ D3D9
+
+
+ sparshash\google
+
+
+ sparshash\google
+
+
+ sparshash\google
+
+
+ sparshash\google
+
+
+ sparshash\google
+
+
+ sparshash\google
+
+
+ sparshash\google\sparsehash
+
+
+ sparshash\google\sparsehash
+
+
+ sparshash\windows
+
+
+ sparshash\windows
+
+
+ sparshash\windows\google\sparsehash
+
+
+
+
+
+ Cheat\RakNet
+
+
+ Cheat\RakNet
+
+
+ Cheat\RakNet
+
+
+ Cheat
+
+
+
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ game_sa
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ Cheat
+
+
+ D3D9
+
+
+ D3D9
+
+
+ D3D9
+
+
+ D3D9
+
+
+
+ Cheat\RakNet
+
+
+ Cheat\RakNet
+
+
+ Cheat\RakNet
+
+
+ Cheat
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sparsehash/windows/google/sparsehash/sparseconfig.h b/src/sparsehash/windows/google/sparsehash/sparseconfig.h
index 07334a3..035dc3e 100644
--- a/src/sparsehash/windows/google/sparsehash/sparseconfig.h
+++ b/src/sparsehash/windows/google/sparsehash/sparseconfig.h
@@ -13,9 +13,9 @@
* #defines in your own programs!
*/
#define GOOGLE_NAMESPACE ::google
-#define HASH_NAMESPACE stdext
+#define HASH_NAMESPACE std
#define HASH_FUN_H
-#define SPARSEHASH_HASH HASH_NAMESPACE::hash_compare
+#define SPARSEHASH_HASH HASH_NAMESPACE::hash
#undef HAVE_UINT16_T
#undef HAVE_U_INT16_T
#define HAVE___UINT16 1