aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobTheBob9 <for.oliver.kirkham@gmail.com>2023-01-04 18:08:13 +0000
committerBobTheBob9 <for.oliver.kirkham@gmail.com>2023-01-04 18:08:13 +0000
commite9f8a34dc3ca736f307cf195390aee7c8f5cb456 (patch)
treee65d1c2b1888895baf65bbde73e0a1a02cbb091a
parent6c45c7e94634c340019d12615b7eae8f3c0f49b3 (diff)
parent4fb1ae07d8f078e7abde99900c6a8286148a380a (diff)
downloadNorthstarLauncher-e9f8a34dc3ca736f307cf195390aee7c8f5cb456.tar.gz
NorthstarLauncher-e9f8a34dc3ca736f307cf195390aee7c8f5cb456.zip
Merge remote-tracking branch 'origin/main' into experimental-bots-pr
-rw-r--r--NorthstarDLL/NorthstarDLL.vcxproj973
-rw-r--r--NorthstarDLL/NorthstarDLL.vcxproj.filters2251
-rw-r--r--NorthstarDLL/client/audio.cpp (renamed from NorthstarDLL/audio.cpp)4
-rw-r--r--NorthstarDLL/client/audio.h (renamed from NorthstarDLL/audio.h)0
-rw-r--r--NorthstarDLL/client/chatcommand.cpp (renamed from NorthstarDLL/chatcommand.cpp)4
-rw-r--r--NorthstarDLL/client/clientauthhooks.cpp (renamed from NorthstarDLL/clientauthhooks.cpp)6
-rw-r--r--NorthstarDLL/client/clientruihooks.cpp (renamed from NorthstarDLL/clientruihooks.cpp)2
-rw-r--r--NorthstarDLL/client/clientvideooverrides.cpp (renamed from NorthstarDLL/clientvideooverrides.cpp)2
-rw-r--r--NorthstarDLL/client/debugoverlay.cpp (renamed from NorthstarDLL/debugoverlay.cpp)6
-rw-r--r--NorthstarDLL/client/demofixes.cpp (renamed from NorthstarDLL/demofixes.cpp)2
-rw-r--r--NorthstarDLL/client/diskvmtfixes.cpp (renamed from NorthstarDLL/diskvmtfixes.cpp)32
-rw-r--r--NorthstarDLL/client/languagehooks.cpp (renamed from NorthstarDLL/languagehooks.cpp)2
-rw-r--r--NorthstarDLL/client/latencyflex.cpp (renamed from NorthstarDLL/latencyflex.cpp)2
-rw-r--r--NorthstarDLL/client/localchatwriter.cpp (renamed from NorthstarDLL/localchatwriter.cpp)0
-rw-r--r--NorthstarDLL/client/localchatwriter.h (renamed from NorthstarDLL/localchatwriter.h)2
-rw-r--r--NorthstarDLL/client/modlocalisation.cpp (renamed from NorthstarDLL/modlocalisation.cpp)2
-rw-r--r--NorthstarDLL/client/r2client.cpp (renamed from NorthstarDLL/r2client.cpp)0
-rw-r--r--NorthstarDLL/client/r2client.h (renamed from NorthstarDLL/r2client.h)0
-rw-r--r--NorthstarDLL/client/rejectconnectionfixes.cpp (renamed from NorthstarDLL/rejectconnectionfixes.cpp)7
-rw-r--r--NorthstarDLL/config/profile.cpp (renamed from NorthstarDLL/nsprefix.cpp)4
-rw-r--r--NorthstarDLL/config/profile.h (renamed from NorthstarDLL/nsprefix.h)0
-rw-r--r--NorthstarDLL/core/convar/concommand.cpp (renamed from NorthstarDLL/concommand.cpp)2
-rw-r--r--NorthstarDLL/core/convar/concommand.h (renamed from NorthstarDLL/concommand.h)0
-rw-r--r--NorthstarDLL/core/convar/convar.cpp (renamed from NorthstarDLL/convar.cpp)44
-rw-r--r--NorthstarDLL/core/convar/convar.h (renamed from NorthstarDLL/convar.h)6
-rw-r--r--NorthstarDLL/core/convar/cvar.cpp (renamed from NorthstarDLL/cvar.cpp)0
-rw-r--r--NorthstarDLL/core/convar/cvar.h (renamed from NorthstarDLL/cvar.h)1
-rw-r--r--NorthstarDLL/core/filesystem/filesystem.cpp (renamed from NorthstarDLL/filesystem.cpp)4
-rw-r--r--NorthstarDLL/core/filesystem/filesystem.h (renamed from NorthstarDLL/filesystem.h)2
-rw-r--r--NorthstarDLL/core/filesystem/rpakfilesystem.cpp (renamed from NorthstarDLL/rpakfilesystem.cpp)6
-rw-r--r--NorthstarDLL/core/filesystem/rpakfilesystem.h (renamed from NorthstarDLL/rpakfilesystem.h)0
-rw-r--r--NorthstarDLL/core/hooks.cpp (renamed from NorthstarDLL/hooks.cpp)2
-rw-r--r--NorthstarDLL/core/hooks.h (renamed from NorthstarDLL/hooks.h)0
-rw-r--r--NorthstarDLL/core/macros.h19
-rw-r--r--NorthstarDLL/core/math/bitbuf.h (renamed from NorthstarDLL/bitbuf.h)0
-rw-r--r--NorthstarDLL/core/math/bits.cpp (renamed from NorthstarDLL/bits.cpp)0
-rw-r--r--NorthstarDLL/core/math/bits.h (renamed from NorthstarDLL/bits.h)0
-rw-r--r--NorthstarDLL/core/math/color.cpp (renamed from NorthstarDLL/color.cpp)0
-rw-r--r--NorthstarDLL/core/math/color.h (renamed from NorthstarDLL/color.h)0
-rw-r--r--NorthstarDLL/core/math/vector.h (renamed from NorthstarDLL/vector.h)104
-rw-r--r--NorthstarDLL/core/memalloc.cpp (renamed from NorthstarDLL/memalloc.cpp)4
-rw-r--r--NorthstarDLL/core/memalloc.h (renamed from NorthstarDLL/memalloc.h)2
-rw-r--r--NorthstarDLL/core/memory.cpp (renamed from NorthstarDLL/memory.cpp)4
-rw-r--r--NorthstarDLL/core/memory.h (renamed from NorthstarDLL/memory.h)0
-rw-r--r--NorthstarDLL/core/sourceinterface.cpp (renamed from NorthstarDLL/sourceinterface.cpp)2
-rw-r--r--NorthstarDLL/core/sourceinterface.h (renamed from NorthstarDLL/sourceinterface.h)0
-rw-r--r--NorthstarDLL/core/structs.h (renamed from NorthstarDLL/structs.h)5
-rw-r--r--NorthstarDLL/core/tier0.cpp (renamed from NorthstarDLL/tier0.cpp)0
-rw-r--r--NorthstarDLL/core/tier0.h (renamed from NorthstarDLL/tier0.h)0
-rw-r--r--NorthstarDLL/dedicated/dedicated.cpp (renamed from NorthstarDLL/dedicated.cpp)12
-rw-r--r--NorthstarDLL/dedicated/dedicated.h (renamed from NorthstarDLL/dedicated.h)0
-rw-r--r--NorthstarDLL/dedicated/dedicatedmaterialsystem.cpp (renamed from NorthstarDLL/dedicatedmaterialsystem.cpp)2
-rw-r--r--NorthstarDLL/dllmain.cpp18
-rw-r--r--NorthstarDLL/dllmain.h (renamed from NorthstarDLL/main.h)0
-rw-r--r--NorthstarDLL/engine/host.cpp (renamed from NorthstarDLL/host.cpp)18
-rw-r--r--NorthstarDLL/engine/hoststate.cpp (renamed from NorthstarDLL/hoststate.cpp)46
-rw-r--r--NorthstarDLL/engine/hoststate.h (renamed from NorthstarDLL/hoststate.h)0
-rw-r--r--NorthstarDLL/engine/r2engine.cpp (renamed from NorthstarDLL/r2engine.cpp)0
-rw-r--r--NorthstarDLL/engine/r2engine.h (renamed from NorthstarDLL/r2engine.h)2
-rw-r--r--NorthstarDLL/engine/runframe.cpp (renamed from NorthstarDLL/runframe.cpp)8
-rw-r--r--NorthstarDLL/logging/crashhandler.cpp (renamed from NorthstarDLL/crashhandler.cpp)8
-rw-r--r--NorthstarDLL/logging/crashhandler.h (renamed from NorthstarDLL/crashhandler.h)0
-rw-r--r--NorthstarDLL/logging/logging.cpp (renamed from NorthstarDLL/logging.cpp)8
-rw-r--r--NorthstarDLL/logging/logging.h (renamed from NorthstarDLL/logging.h)4
-rw-r--r--NorthstarDLL/logging/loghooks.cpp (renamed from NorthstarDLL/loghooks.cpp)12
-rw-r--r--NorthstarDLL/logging/loghooks.h (renamed from NorthstarDLL/loghooks.h)0
-rw-r--r--NorthstarDLL/logging/sourceconsole.cpp (renamed from NorthstarDLL/sourceconsole.cpp)8
-rw-r--r--NorthstarDLL/logging/sourceconsole.h (renamed from NorthstarDLL/sourceconsole.h)2
-rw-r--r--NorthstarDLL/masterserver/masterserver.cpp (renamed from NorthstarDLL/masterserver.cpp)16
-rw-r--r--NorthstarDLL/masterserver/masterserver.h (renamed from NorthstarDLL/masterserver.h)4
-rw-r--r--NorthstarDLL/mods/compiled/kb_act.cpp (renamed from NorthstarDLL/kb_act.cpp)90
-rw-r--r--NorthstarDLL/mods/compiled/modkeyvalues.cpp (renamed from NorthstarDLL/modkeyvalues.cpp)4
-rw-r--r--NorthstarDLL/mods/compiled/modpdef.cpp (renamed from NorthstarDLL/modpdef.cpp)4
-rw-r--r--NorthstarDLL/mods/compiled/modscriptsrson.cpp (renamed from NorthstarDLL/modscriptsrson.cpp)6
-rw-r--r--NorthstarDLL/mods/modmanager.cpp (renamed from NorthstarDLL/modmanager.cpp)183
-rw-r--r--NorthstarDLL/mods/modmanager.h (renamed from NorthstarDLL/modmanager.h)18
-rw-r--r--NorthstarDLL/pch.h37
-rw-r--r--NorthstarDLL/plugins/plugin_abi.h (renamed from NorthstarDLL/plugin_abi.h)0
-rw-r--r--NorthstarDLL/plugins/plugins.cpp (renamed from NorthstarDLL/plugins.cpp)8
-rw-r--r--NorthstarDLL/plugins/plugins.h (renamed from NorthstarDLL/plugins.h)0
-rw-r--r--NorthstarDLL/scripts/client/clientchathooks.cpp (renamed from NorthstarDLL/clientchathooks.cpp)6
-rw-r--r--NorthstarDLL/scripts/client/scriptbrowserhooks.cpp (renamed from NorthstarDLL/scriptbrowserhooks.cpp)0
-rw-r--r--NorthstarDLL/scripts/client/scriptmainmenupromos.cpp (renamed from NorthstarDLL/scriptmainmenupromos.cpp)6
-rw-r--r--NorthstarDLL/scripts/client/scriptmodmenu.cpp (renamed from NorthstarDLL/scriptmodmenu.cpp)23
-rw-r--r--NorthstarDLL/scripts/client/scriptserverbrowser.cpp (renamed from NorthstarDLL/scriptserverbrowser.cpp)10
-rw-r--r--NorthstarDLL/scripts/client/scriptservertoclientstringcommand.cpp (renamed from NorthstarDLL/scriptservertoclientstringcommand.cpp)6
-rw-r--r--NorthstarDLL/scripts/scriptdatatables.cpp (renamed from NorthstarDLL/scriptdatatables.cpp)16
-rw-r--r--NorthstarDLL/scripts/scripthttprequesthandler.cpp586
-rw-r--r--NorthstarDLL/scripts/scripthttprequesthandler.h132
-rw-r--r--NorthstarDLL/scripts/scriptjson.cpp (renamed from NorthstarDLL/scriptjson.cpp)31
-rw-r--r--NorthstarDLL/scripts/scriptutility.cpp29
-rw-r--r--NorthstarDLL/scripts/server/miscserverfixes.cpp (renamed from NorthstarDLL/miscserverfixes.cpp)0
-rw-r--r--NorthstarDLL/scripts/server/miscserverscript.cpp (renamed from NorthstarDLL/miscserverscript.cpp)53
-rw-r--r--NorthstarDLL/scripts/server/scriptuserinfo.cpp (renamed from NorthstarDLL/scriptuserinfo.cpp)210
-rw-r--r--NorthstarDLL/scriptutility.cpp14
-rw-r--r--NorthstarDLL/server/auth/bansystem.cpp (renamed from NorthstarDLL/bansystem.cpp)10
-rw-r--r--NorthstarDLL/server/auth/bansystem.h (renamed from NorthstarDLL/bansystem.h)0
-rw-r--r--NorthstarDLL/server/auth/serverauthentication.cpp (renamed from NorthstarDLL/serverauthentication.cpp)33
-rw-r--r--NorthstarDLL/server/auth/serverauthentication.h (renamed from NorthstarDLL/serverauthentication.h)4
-rw-r--r--NorthstarDLL/server/bots.cpp (renamed from NorthstarDLL/bots.cpp)12
-rw-r--r--NorthstarDLL/server/bots.h (renamed from NorthstarDLL/bots.h)4
-rw-r--r--NorthstarDLL/server/buildainfile.cpp (renamed from NorthstarDLL/buildainfile.cpp)6
-rw-r--r--NorthstarDLL/server/r2server.cpp (renamed from NorthstarDLL/r2server.cpp)0
-rw-r--r--NorthstarDLL/server/r2server.h (renamed from NorthstarDLL/r2server.h)2
-rw-r--r--NorthstarDLL/server/serverchathooks.cpp (renamed from NorthstarDLL/serverchathooks.cpp)6
-rw-r--r--NorthstarDLL/server/serverchathooks.h (renamed from NorthstarDLL/serverchathooks.h)0
-rw-r--r--NorthstarDLL/server/serverpresence.cpp (renamed from NorthstarDLL/serverpresence.cpp)6
-rw-r--r--NorthstarDLL/server/serverpresence.h (renamed from NorthstarDLL/serverpresence.h)2
-rw-r--r--NorthstarDLL/shared/exploit_fixes/exploitfixes.cpp (renamed from NorthstarDLL/exploitfixes.cpp)14
-rw-r--r--NorthstarDLL/shared/exploit_fixes/exploitfixes_lzss.cpp (renamed from NorthstarDLL/exploitfixes_lzss.cpp)0
-rw-r--r--NorthstarDLL/shared/exploit_fixes/exploitfixes_utf8parser.cpp (renamed from NorthstarDLL/exploitfixes_utf8parser.cpp)0
-rw-r--r--NorthstarDLL/shared/exploit_fixes/ns_limits.cpp (renamed from NorthstarDLL/limits.cpp)18
-rw-r--r--NorthstarDLL/shared/exploit_fixes/ns_limits.h (renamed from NorthstarDLL/limits.h)4
-rw-r--r--NorthstarDLL/shared/keyvalues.cpp (renamed from NorthstarDLL/keyvalues.cpp)2632
-rw-r--r--NorthstarDLL/shared/keyvalues.h (renamed from NorthstarDLL/keyvalues.h)268
-rw-r--r--NorthstarDLL/shared/maxplayers.cpp (renamed from NorthstarDLL/maxplayers.cpp)2
-rw-r--r--NorthstarDLL/shared/maxplayers.h (renamed from NorthstarDLL/maxplayers.h)0
-rw-r--r--NorthstarDLL/shared/misccommands.cpp (renamed from NorthstarDLL/misccommands.cpp)20
-rw-r--r--NorthstarDLL/shared/misccommands.h (renamed from NorthstarDLL/misccommands.h)0
-rw-r--r--NorthstarDLL/shared/playlist.cpp (renamed from NorthstarDLL/playlist.cpp)10
-rw-r--r--NorthstarDLL/shared/playlist.h (renamed from NorthstarDLL/playlist.h)0
-rw-r--r--NorthstarDLL/squirrel/squirrel.cpp (renamed from NorthstarDLL/squirrel.cpp)121
-rw-r--r--NorthstarDLL/squirrel/squirrel.h (renamed from NorthstarDLL/squirrel.h)38
-rw-r--r--NorthstarDLL/squirrel/squirrelautobind.cpp (renamed from NorthstarDLL/squirrelautobind.cpp)0
-rw-r--r--NorthstarDLL/squirrel/squirrelautobind.h (renamed from NorthstarDLL/squirrelautobind.h)0
-rw-r--r--NorthstarDLL/squirrel/squirrelclasstypes.h (renamed from NorthstarDLL/squirrelclasstypes.h)3
-rw-r--r--NorthstarDLL/squirrel/squirreldatatypes.h (renamed from NorthstarDLL/squirreldatatypes.h)4
-rw-r--r--NorthstarDLL/util/printcommands.cpp (renamed from NorthstarDLL/printcommands.cpp)6
-rw-r--r--NorthstarDLL/util/printcommands.h (renamed from NorthstarDLL/printcommand.h)2
-rw-r--r--NorthstarDLL/util/printmaps.cpp (renamed from NorthstarDLL/printmaps.cpp)10
-rw-r--r--NorthstarDLL/util/printmaps.h (renamed from NorthstarDLL/printmaps.h)0
-rw-r--r--NorthstarDLL/util/version.cpp96
-rw-r--r--NorthstarDLL/util/version.h (renamed from NorthstarDLL/version.h)0
-rw-r--r--NorthstarDLL/version.cpp26
-rw-r--r--NorthstarLauncher/NorthstarLauncher.vcxproj37
-rw-r--r--NorthstarLauncher/NorthstarLauncher.vcxproj.filters120
-rw-r--r--R2Northstar.sln9
-rw-r--r--include/MinHook.h (renamed from NorthstarDLL/include/MinHook.h)0
-rw-r--r--include/MinHook.x64.lib (renamed from NorthstarDLL/include/MinHook.x64.lib)bin32401 -> 32401 bytes
-rw-r--r--include/crypto/__DECC_INCLUDE_EPILOGUE.H (renamed from NorthstarDLL/include/crypto/__DECC_INCLUDE_EPILOGUE.H)0
-rw-r--r--include/crypto/__DECC_INCLUDE_PROLOGUE.H (renamed from NorthstarDLL/include/crypto/__DECC_INCLUDE_PROLOGUE.H)0
-rw-r--r--include/crypto/aes_platform.h (renamed from NorthstarDLL/include/crypto/aes_platform.h)0
-rw-r--r--include/crypto/aria.h (renamed from NorthstarDLL/include/crypto/aria.h)0
-rw-r--r--include/crypto/asn1.h (renamed from NorthstarDLL/include/crypto/asn1.h)0
-rw-r--r--include/crypto/asn1_dsa.h (renamed from NorthstarDLL/include/crypto/asn1_dsa.h)0
-rw-r--r--include/crypto/asn1err.h (renamed from NorthstarDLL/include/crypto/asn1err.h)0
-rw-r--r--include/crypto/async.h (renamed from NorthstarDLL/include/crypto/async.h)0
-rw-r--r--include/crypto/asyncerr.h (renamed from NorthstarDLL/include/crypto/asyncerr.h)0
-rw-r--r--include/crypto/bioerr.h (renamed from NorthstarDLL/include/crypto/bioerr.h)0
-rw-r--r--include/crypto/bn.h (renamed from NorthstarDLL/include/crypto/bn.h)0
-rw-r--r--include/crypto/bn_conf.h (renamed from NorthstarDLL/include/crypto/bn_conf.h)0
-rw-r--r--include/crypto/bn_conf.h.in (renamed from NorthstarDLL/include/crypto/bn_conf.h.in)0
-rw-r--r--include/crypto/bn_dh.h (renamed from NorthstarDLL/include/crypto/bn_dh.h)0
-rw-r--r--include/crypto/bn_srp.h (renamed from NorthstarDLL/include/crypto/bn_srp.h)0
-rw-r--r--include/crypto/bnerr.h (renamed from NorthstarDLL/include/crypto/bnerr.h)0
-rw-r--r--include/crypto/buffererr.h (renamed from NorthstarDLL/include/crypto/buffererr.h)0
-rw-r--r--include/crypto/chacha.h (renamed from NorthstarDLL/include/crypto/chacha.h)0
-rw-r--r--include/crypto/cmll_platform.h (renamed from NorthstarDLL/include/crypto/cmll_platform.h)0
-rw-r--r--include/crypto/cmperr.h (renamed from NorthstarDLL/include/crypto/cmperr.h)0
-rw-r--r--include/crypto/cmserr.h (renamed from NorthstarDLL/include/crypto/cmserr.h)0
-rw-r--r--include/crypto/comperr.h (renamed from NorthstarDLL/include/crypto/comperr.h)0
-rw-r--r--include/crypto/conferr.h (renamed from NorthstarDLL/include/crypto/conferr.h)0
-rw-r--r--include/crypto/crmferr.h (renamed from NorthstarDLL/include/crypto/crmferr.h)0
-rw-r--r--include/crypto/cryptlib.h (renamed from NorthstarDLL/include/crypto/cryptlib.h)0
-rw-r--r--include/crypto/cryptoerr.h (renamed from NorthstarDLL/include/crypto/cryptoerr.h)0
-rw-r--r--include/crypto/cterr.h (renamed from NorthstarDLL/include/crypto/cterr.h)0
-rw-r--r--include/crypto/ctype.h (renamed from NorthstarDLL/include/crypto/ctype.h)0
-rw-r--r--include/crypto/decoder.h (renamed from NorthstarDLL/include/crypto/decoder.h)0
-rw-r--r--include/crypto/decodererr.h (renamed from NorthstarDLL/include/crypto/decodererr.h)0
-rw-r--r--include/crypto/des_platform.h (renamed from NorthstarDLL/include/crypto/des_platform.h)0
-rw-r--r--include/crypto/dh.h (renamed from NorthstarDLL/include/crypto/dh.h)0
-rw-r--r--include/crypto/dherr.h (renamed from NorthstarDLL/include/crypto/dherr.h)0
-rw-r--r--include/crypto/dsa.h (renamed from NorthstarDLL/include/crypto/dsa.h)0
-rw-r--r--include/crypto/dsaerr.h (renamed from NorthstarDLL/include/crypto/dsaerr.h)0
-rw-r--r--include/crypto/dso_conf.h (renamed from NorthstarDLL/include/crypto/dso_conf.h)0
-rw-r--r--include/crypto/dso_conf.h.in (renamed from NorthstarDLL/include/crypto/dso_conf.h.in)0
-rw-r--r--include/crypto/ec.h (renamed from NorthstarDLL/include/crypto/ec.h)0
-rw-r--r--include/crypto/ecerr.h (renamed from NorthstarDLL/include/crypto/ecerr.h)0
-rw-r--r--include/crypto/ecx.h (renamed from NorthstarDLL/include/crypto/ecx.h)0
-rw-r--r--include/crypto/encoder.h (renamed from NorthstarDLL/include/crypto/encoder.h)0
-rw-r--r--include/crypto/encodererr.h (renamed from NorthstarDLL/include/crypto/encodererr.h)0
-rw-r--r--include/crypto/engine.h (renamed from NorthstarDLL/include/crypto/engine.h)0
-rw-r--r--include/crypto/engineerr.h (renamed from NorthstarDLL/include/crypto/engineerr.h)0
-rw-r--r--include/crypto/err.h (renamed from NorthstarDLL/include/crypto/err.h)0
-rw-r--r--include/crypto/ess.h (renamed from NorthstarDLL/include/crypto/ess.h)0
-rw-r--r--include/crypto/esserr.h (renamed from NorthstarDLL/include/crypto/esserr.h)0
-rw-r--r--include/crypto/evp.h (renamed from NorthstarDLL/include/crypto/evp.h)0
-rw-r--r--include/crypto/evperr.h (renamed from NorthstarDLL/include/crypto/evperr.h)0
-rw-r--r--include/crypto/httperr.h (renamed from NorthstarDLL/include/crypto/httperr.h)0
-rw-r--r--include/crypto/lhash.h (renamed from NorthstarDLL/include/crypto/lhash.h)0
-rw-r--r--include/crypto/md32_common.h (renamed from NorthstarDLL/include/crypto/md32_common.h)0
-rw-r--r--include/crypto/modes.h (renamed from NorthstarDLL/include/crypto/modes.h)0
-rw-r--r--include/crypto/objects.h (renamed from NorthstarDLL/include/crypto/objects.h)0
-rw-r--r--include/crypto/objectserr.h (renamed from NorthstarDLL/include/crypto/objectserr.h)0
-rw-r--r--include/crypto/ocsperr.h (renamed from NorthstarDLL/include/crypto/ocsperr.h)0
-rw-r--r--include/crypto/pem.h (renamed from NorthstarDLL/include/crypto/pem.h)0
-rw-r--r--include/crypto/pemerr.h (renamed from NorthstarDLL/include/crypto/pemerr.h)0
-rw-r--r--include/crypto/pkcs12err.h (renamed from NorthstarDLL/include/crypto/pkcs12err.h)0
-rw-r--r--include/crypto/pkcs7.h (renamed from NorthstarDLL/include/crypto/pkcs7.h)0
-rw-r--r--include/crypto/pkcs7err.h (renamed from NorthstarDLL/include/crypto/pkcs7err.h)0
-rw-r--r--include/crypto/poly1305.h (renamed from NorthstarDLL/include/crypto/poly1305.h)0
-rw-r--r--include/crypto/ppc_arch.h (renamed from NorthstarDLL/include/crypto/ppc_arch.h)0
-rw-r--r--include/crypto/punycode.h (renamed from NorthstarDLL/include/crypto/punycode.h)0
-rw-r--r--include/crypto/rand.h (renamed from NorthstarDLL/include/crypto/rand.h)0
-rw-r--r--include/crypto/rand_pool.h (renamed from NorthstarDLL/include/crypto/rand_pool.h)0
-rw-r--r--include/crypto/randerr.h (renamed from NorthstarDLL/include/crypto/randerr.h)0
-rw-r--r--include/crypto/rsa.h (renamed from NorthstarDLL/include/crypto/rsa.h)0
-rw-r--r--include/crypto/rsaerr.h (renamed from NorthstarDLL/include/crypto/rsaerr.h)0
-rw-r--r--include/crypto/security_bits.h (renamed from NorthstarDLL/include/crypto/security_bits.h)0
-rw-r--r--include/crypto/sha.h (renamed from NorthstarDLL/include/crypto/sha.h)0
-rw-r--r--include/crypto/siphash.h (renamed from NorthstarDLL/include/crypto/siphash.h)0
-rw-r--r--include/crypto/siv.h (renamed from NorthstarDLL/include/crypto/siv.h)0
-rw-r--r--include/crypto/sm2.h (renamed from NorthstarDLL/include/crypto/sm2.h)0
-rw-r--r--include/crypto/sm2err.h (renamed from NorthstarDLL/include/crypto/sm2err.h)0
-rw-r--r--include/crypto/sm4.h (renamed from NorthstarDLL/include/crypto/sm4.h)0
-rw-r--r--include/crypto/sparc_arch.h (renamed from NorthstarDLL/include/crypto/sparc_arch.h)0
-rw-r--r--include/crypto/sparse_array.h (renamed from NorthstarDLL/include/crypto/sparse_array.h)0
-rw-r--r--include/crypto/store.h (renamed from NorthstarDLL/include/crypto/store.h)0
-rw-r--r--include/crypto/storeerr.h (renamed from NorthstarDLL/include/crypto/storeerr.h)0
-rw-r--r--include/crypto/tserr.h (renamed from NorthstarDLL/include/crypto/tserr.h)0
-rw-r--r--include/crypto/types.h (renamed from NorthstarDLL/include/crypto/types.h)0
-rw-r--r--include/crypto/uierr.h (renamed from NorthstarDLL/include/crypto/uierr.h)0
-rw-r--r--include/crypto/x509.h (renamed from NorthstarDLL/include/crypto/x509.h)0
-rw-r--r--include/crypto/x509err.h (renamed from NorthstarDLL/include/crypto/x509err.h)0
-rw-r--r--include/crypto/x509v3err.h (renamed from NorthstarDLL/include/crypto/x509v3err.h)0
-rw-r--r--include/httplib.h (renamed from NorthstarDLL/include/httplib.h)0
-rw-r--r--include/internal/__DECC_INCLUDE_EPILOGUE.H (renamed from NorthstarDLL/include/internal/__DECC_INCLUDE_EPILOGUE.H)0
-rw-r--r--include/internal/__DECC_INCLUDE_PROLOGUE.H (renamed from NorthstarDLL/include/internal/__DECC_INCLUDE_PROLOGUE.H)0
-rw-r--r--include/internal/asn1.h (renamed from NorthstarDLL/include/internal/asn1.h)0
-rw-r--r--include/internal/bio.h (renamed from NorthstarDLL/include/internal/bio.h)0
-rw-r--r--include/internal/comp.h (renamed from NorthstarDLL/include/internal/comp.h)0
-rw-r--r--include/internal/conf.h (renamed from NorthstarDLL/include/internal/conf.h)0
-rw-r--r--include/internal/constant_time.h (renamed from NorthstarDLL/include/internal/constant_time.h)0
-rw-r--r--include/internal/core.h (renamed from NorthstarDLL/include/internal/core.h)0
-rw-r--r--include/internal/cryptlib.h (renamed from NorthstarDLL/include/internal/cryptlib.h)0
-rw-r--r--include/internal/dane.h (renamed from NorthstarDLL/include/internal/dane.h)0
-rw-r--r--include/internal/deprecated.h (renamed from NorthstarDLL/include/internal/deprecated.h)0
-rw-r--r--include/internal/der.h (renamed from NorthstarDLL/include/internal/der.h)0
-rw-r--r--include/internal/dso.h (renamed from NorthstarDLL/include/internal/dso.h)0
-rw-r--r--include/internal/dsoerr.h (renamed from NorthstarDLL/include/internal/dsoerr.h)0
-rw-r--r--include/internal/endian.h (renamed from NorthstarDLL/include/internal/endian.h)0
-rw-r--r--include/internal/err.h (renamed from NorthstarDLL/include/internal/err.h)0
-rw-r--r--include/internal/ffc.h (renamed from NorthstarDLL/include/internal/ffc.h)0
-rw-r--r--include/internal/ktls.h (renamed from NorthstarDLL/include/internal/ktls.h)0
-rw-r--r--include/internal/namemap.h (renamed from NorthstarDLL/include/internal/namemap.h)0
-rw-r--r--include/internal/nelem.h (renamed from NorthstarDLL/include/internal/nelem.h)0
-rw-r--r--include/internal/numbers.h (renamed from NorthstarDLL/include/internal/numbers.h)0
-rw-r--r--include/internal/o_dir.h (renamed from NorthstarDLL/include/internal/o_dir.h)0
-rw-r--r--include/internal/packet.h (renamed from NorthstarDLL/include/internal/packet.h)0
-rw-r--r--include/internal/param_build_set.h (renamed from NorthstarDLL/include/internal/param_build_set.h)0
-rw-r--r--include/internal/passphrase.h (renamed from NorthstarDLL/include/internal/passphrase.h)0
-rw-r--r--include/internal/property.h (renamed from NorthstarDLL/include/internal/property.h)0
-rw-r--r--include/internal/propertyerr.h (renamed from NorthstarDLL/include/internal/propertyerr.h)0
-rw-r--r--include/internal/provider.h (renamed from NorthstarDLL/include/internal/provider.h)0
-rw-r--r--include/internal/refcount.h (renamed from NorthstarDLL/include/internal/refcount.h)0
-rw-r--r--include/internal/sha3.h (renamed from NorthstarDLL/include/internal/sha3.h)0
-rw-r--r--include/internal/sizes.h (renamed from NorthstarDLL/include/internal/sizes.h)0
-rw-r--r--include/internal/sm3.h (renamed from NorthstarDLL/include/internal/sm3.h)0
-rw-r--r--include/internal/sockets.h (renamed from NorthstarDLL/include/internal/sockets.h)0
-rw-r--r--include/internal/sslconf.h (renamed from NorthstarDLL/include/internal/sslconf.h)0
-rw-r--r--include/internal/symhacks.h (renamed from NorthstarDLL/include/internal/symhacks.h)0
-rw-r--r--include/internal/thread_once.h (renamed from NorthstarDLL/include/internal/thread_once.h)0
-rw-r--r--include/internal/tlsgroups.h (renamed from NorthstarDLL/include/internal/tlsgroups.h)0
-rw-r--r--include/internal/tsan_assist.h (renamed from NorthstarDLL/include/internal/tsan_assist.h)0
-rw-r--r--include/internal/unicode.h (renamed from NorthstarDLL/include/internal/unicode.h)0
-rw-r--r--include/libcrypto_static.lib (renamed from NorthstarDLL/include/libcrypto_static.lib)bin35832383 -> 35832383 bytes
-rw-r--r--include/libcurl/include/curl/curl.h (renamed from NorthstarDLL/include/libcurl/include/curl/curl.h)0
-rw-r--r--include/libcurl/include/curl/curlver.h (renamed from NorthstarDLL/include/libcurl/include/curl/curlver.h)0
-rw-r--r--include/libcurl/include/curl/easy.h (renamed from NorthstarDLL/include/libcurl/include/curl/easy.h)0
-rw-r--r--include/libcurl/include/curl/mprintf.h (renamed from NorthstarDLL/include/libcurl/include/curl/mprintf.h)0
-rw-r--r--include/libcurl/include/curl/multi.h (renamed from NorthstarDLL/include/libcurl/include/curl/multi.h)0
-rw-r--r--include/libcurl/include/curl/options.h (renamed from NorthstarDLL/include/libcurl/include/curl/options.h)0
-rw-r--r--include/libcurl/include/curl/stdcheaders.h (renamed from NorthstarDLL/include/libcurl/include/curl/stdcheaders.h)0
-rw-r--r--include/libcurl/include/curl/system.h (renamed from NorthstarDLL/include/libcurl/include/curl/system.h)0
-rw-r--r--include/libcurl/include/curl/typecheck-gcc.h (renamed from NorthstarDLL/include/libcurl/include/curl/typecheck-gcc.h)0
-rw-r--r--include/libcurl/include/curl/urlapi.h (renamed from NorthstarDLL/include/libcurl/include/curl/urlapi.h)0
-rw-r--r--include/libcurl/lib/libcurl_a.lib (renamed from NorthstarDLL/include/libcurl/lib/libcurl_a.lib)bin2140641 -> 2140641 bytes
-rw-r--r--include/libssl_static.lib (renamed from NorthstarDLL/include/libssl_static.lib)bin4851209 -> 4851209 bytes
-rw-r--r--include/openssl/__DECC_INCLUDE_EPILOGUE.H (renamed from NorthstarDLL/include/openssl/__DECC_INCLUDE_EPILOGUE.H)0
-rw-r--r--include/openssl/__DECC_INCLUDE_PROLOGUE.H (renamed from NorthstarDLL/include/openssl/__DECC_INCLUDE_PROLOGUE.H)0
-rw-r--r--include/openssl/aes.h (renamed from NorthstarDLL/include/openssl/aes.h)0
-rw-r--r--include/openssl/asn1.h (renamed from NorthstarDLL/include/openssl/asn1.h)0
-rw-r--r--include/openssl/asn1.h.in (renamed from NorthstarDLL/include/openssl/asn1.h.in)0
-rw-r--r--include/openssl/asn1_mac.h (renamed from NorthstarDLL/include/openssl/asn1_mac.h)0
-rw-r--r--include/openssl/asn1err.h (renamed from NorthstarDLL/include/openssl/asn1err.h)0
-rw-r--r--include/openssl/asn1t.h (renamed from NorthstarDLL/include/openssl/asn1t.h)0
-rw-r--r--include/openssl/asn1t.h.in (renamed from NorthstarDLL/include/openssl/asn1t.h.in)0
-rw-r--r--include/openssl/async.h (renamed from NorthstarDLL/include/openssl/async.h)0
-rw-r--r--include/openssl/asyncerr.h (renamed from NorthstarDLL/include/openssl/asyncerr.h)0
-rw-r--r--include/openssl/bio.h (renamed from NorthstarDLL/include/openssl/bio.h)0
-rw-r--r--include/openssl/bio.h.in (renamed from NorthstarDLL/include/openssl/bio.h.in)0
-rw-r--r--include/openssl/bioerr.h (renamed from NorthstarDLL/include/openssl/bioerr.h)0
-rw-r--r--include/openssl/blowfish.h (renamed from NorthstarDLL/include/openssl/blowfish.h)0
-rw-r--r--include/openssl/bn.h (renamed from NorthstarDLL/include/openssl/bn.h)0
-rw-r--r--include/openssl/bnerr.h (renamed from NorthstarDLL/include/openssl/bnerr.h)0
-rw-r--r--include/openssl/buffer.h (renamed from NorthstarDLL/include/openssl/buffer.h)0
-rw-r--r--include/openssl/buffererr.h (renamed from NorthstarDLL/include/openssl/buffererr.h)0
-rw-r--r--include/openssl/camellia.h (renamed from NorthstarDLL/include/openssl/camellia.h)0
-rw-r--r--include/openssl/cast.h (renamed from NorthstarDLL/include/openssl/cast.h)0
-rw-r--r--include/openssl/cmac.h (renamed from NorthstarDLL/include/openssl/cmac.h)0
-rw-r--r--include/openssl/cmp.h (renamed from NorthstarDLL/include/openssl/cmp.h)0
-rw-r--r--include/openssl/cmp.h.in (renamed from NorthstarDLL/include/openssl/cmp.h.in)0
-rw-r--r--include/openssl/cmp_util.h (renamed from NorthstarDLL/include/openssl/cmp_util.h)0
-rw-r--r--include/openssl/cmperr.h (renamed from NorthstarDLL/include/openssl/cmperr.h)0
-rw-r--r--include/openssl/cms.h (renamed from NorthstarDLL/include/openssl/cms.h)0
-rw-r--r--include/openssl/cms.h.in (renamed from NorthstarDLL/include/openssl/cms.h.in)0
-rw-r--r--include/openssl/cmserr.h (renamed from NorthstarDLL/include/openssl/cmserr.h)0
-rw-r--r--include/openssl/comp.h (renamed from NorthstarDLL/include/openssl/comp.h)0
-rw-r--r--include/openssl/comperr.h (renamed from NorthstarDLL/include/openssl/comperr.h)0
-rw-r--r--include/openssl/conf.h (renamed from NorthstarDLL/include/openssl/conf.h)0
-rw-r--r--include/openssl/conf.h.in (renamed from NorthstarDLL/include/openssl/conf.h.in)0
-rw-r--r--include/openssl/conf_api.h (renamed from NorthstarDLL/include/openssl/conf_api.h)0
-rw-r--r--include/openssl/conferr.h (renamed from NorthstarDLL/include/openssl/conferr.h)0
-rw-r--r--include/openssl/configuration.h (renamed from NorthstarDLL/include/openssl/configuration.h)0
-rw-r--r--include/openssl/configuration.h.in (renamed from NorthstarDLL/include/openssl/configuration.h.in)0
-rw-r--r--include/openssl/conftypes.h (renamed from NorthstarDLL/include/openssl/conftypes.h)0
-rw-r--r--include/openssl/core.h (renamed from NorthstarDLL/include/openssl/core.h)0
-rw-r--r--include/openssl/core_dispatch.h (renamed from NorthstarDLL/include/openssl/core_dispatch.h)0
-rw-r--r--include/openssl/core_names.h (renamed from NorthstarDLL/include/openssl/core_names.h)0
-rw-r--r--include/openssl/core_object.h (renamed from NorthstarDLL/include/openssl/core_object.h)0
-rw-r--r--include/openssl/crmf.h (renamed from NorthstarDLL/include/openssl/crmf.h)0
-rw-r--r--include/openssl/crmf.h.in (renamed from NorthstarDLL/include/openssl/crmf.h.in)0
-rw-r--r--include/openssl/crmferr.h (renamed from NorthstarDLL/include/openssl/crmferr.h)0
-rw-r--r--include/openssl/crypto.h (renamed from NorthstarDLL/include/openssl/crypto.h)0
-rw-r--r--include/openssl/crypto.h.in (renamed from NorthstarDLL/include/openssl/crypto.h.in)0
-rw-r--r--include/openssl/cryptoerr.h (renamed from NorthstarDLL/include/openssl/cryptoerr.h)0
-rw-r--r--include/openssl/cryptoerr_legacy.h (renamed from NorthstarDLL/include/openssl/cryptoerr_legacy.h)0
-rw-r--r--include/openssl/ct.h (renamed from NorthstarDLL/include/openssl/ct.h)0
-rw-r--r--include/openssl/ct.h.in (renamed from NorthstarDLL/include/openssl/ct.h.in)0
-rw-r--r--include/openssl/cterr.h (renamed from NorthstarDLL/include/openssl/cterr.h)0
-rw-r--r--include/openssl/decoder.h (renamed from NorthstarDLL/include/openssl/decoder.h)0
-rw-r--r--include/openssl/decodererr.h (renamed from NorthstarDLL/include/openssl/decodererr.h)0
-rw-r--r--include/openssl/des.h (renamed from NorthstarDLL/include/openssl/des.h)0
-rw-r--r--include/openssl/dh.h (renamed from NorthstarDLL/include/openssl/dh.h)0
-rw-r--r--include/openssl/dherr.h (renamed from NorthstarDLL/include/openssl/dherr.h)0
-rw-r--r--include/openssl/dsa.h (renamed from NorthstarDLL/include/openssl/dsa.h)0
-rw-r--r--include/openssl/dsaerr.h (renamed from NorthstarDLL/include/openssl/dsaerr.h)0
-rw-r--r--include/openssl/dtls1.h (renamed from NorthstarDLL/include/openssl/dtls1.h)0
-rw-r--r--include/openssl/e_os2.h (renamed from NorthstarDLL/include/openssl/e_os2.h)0
-rw-r--r--include/openssl/ebcdic.h (renamed from NorthstarDLL/include/openssl/ebcdic.h)0
-rw-r--r--include/openssl/ec.h (renamed from NorthstarDLL/include/openssl/ec.h)0
-rw-r--r--include/openssl/ecdh.h (renamed from NorthstarDLL/include/openssl/ecdh.h)0
-rw-r--r--include/openssl/ecdsa.h (renamed from NorthstarDLL/include/openssl/ecdsa.h)0
-rw-r--r--include/openssl/ecerr.h (renamed from NorthstarDLL/include/openssl/ecerr.h)0
-rw-r--r--include/openssl/encoder.h (renamed from NorthstarDLL/include/openssl/encoder.h)0
-rw-r--r--include/openssl/encodererr.h (renamed from NorthstarDLL/include/openssl/encodererr.h)0
-rw-r--r--include/openssl/engine.h (renamed from NorthstarDLL/include/openssl/engine.h)0
-rw-r--r--include/openssl/engineerr.h (renamed from NorthstarDLL/include/openssl/engineerr.h)0
-rw-r--r--include/openssl/err.h (renamed from NorthstarDLL/include/openssl/err.h)0
-rw-r--r--include/openssl/err.h.in (renamed from NorthstarDLL/include/openssl/err.h.in)0
-rw-r--r--include/openssl/ess.h (renamed from NorthstarDLL/include/openssl/ess.h)0
-rw-r--r--include/openssl/ess.h.in (renamed from NorthstarDLL/include/openssl/ess.h.in)0
-rw-r--r--include/openssl/esserr.h (renamed from NorthstarDLL/include/openssl/esserr.h)0
-rw-r--r--include/openssl/evp.h (renamed from NorthstarDLL/include/openssl/evp.h)0
-rw-r--r--include/openssl/evperr.h (renamed from NorthstarDLL/include/openssl/evperr.h)0
-rw-r--r--include/openssl/fips_names.h (renamed from NorthstarDLL/include/openssl/fips_names.h)0
-rw-r--r--include/openssl/fipskey.h (renamed from NorthstarDLL/include/openssl/fipskey.h)0
-rw-r--r--include/openssl/fipskey.h.in (renamed from NorthstarDLL/include/openssl/fipskey.h.in)0
-rw-r--r--include/openssl/hmac.h (renamed from NorthstarDLL/include/openssl/hmac.h)0
-rw-r--r--include/openssl/http.h (renamed from NorthstarDLL/include/openssl/http.h)0
-rw-r--r--include/openssl/httperr.h (renamed from NorthstarDLL/include/openssl/httperr.h)0
-rw-r--r--include/openssl/idea.h (renamed from NorthstarDLL/include/openssl/idea.h)0
-rw-r--r--include/openssl/kdf.h (renamed from NorthstarDLL/include/openssl/kdf.h)0
-rw-r--r--include/openssl/kdferr.h (renamed from NorthstarDLL/include/openssl/kdferr.h)0
-rw-r--r--include/openssl/lhash.h (renamed from NorthstarDLL/include/openssl/lhash.h)0
-rw-r--r--include/openssl/lhash.h.in (renamed from NorthstarDLL/include/openssl/lhash.h.in)0
-rw-r--r--include/openssl/macros.h (renamed from NorthstarDLL/include/openssl/macros.h)0
-rw-r--r--include/openssl/md2.h (renamed from NorthstarDLL/include/openssl/md2.h)0
-rw-r--r--include/openssl/md4.h (renamed from NorthstarDLL/include/openssl/md4.h)0
-rw-r--r--include/openssl/md5.h (renamed from NorthstarDLL/include/openssl/md5.h)0
-rw-r--r--include/openssl/mdc2.h (renamed from NorthstarDLL/include/openssl/mdc2.h)0
-rw-r--r--include/openssl/modes.h (renamed from NorthstarDLL/include/openssl/modes.h)0
-rw-r--r--include/openssl/obj_mac.h (renamed from NorthstarDLL/include/openssl/obj_mac.h)0
-rw-r--r--include/openssl/objects.h (renamed from NorthstarDLL/include/openssl/objects.h)0
-rw-r--r--include/openssl/objectserr.h (renamed from NorthstarDLL/include/openssl/objectserr.h)0
-rw-r--r--include/openssl/ocsp.h (renamed from NorthstarDLL/include/openssl/ocsp.h)0
-rw-r--r--include/openssl/ocsp.h.in (renamed from NorthstarDLL/include/openssl/ocsp.h.in)0
-rw-r--r--include/openssl/ocsperr.h (renamed from NorthstarDLL/include/openssl/ocsperr.h)0
-rw-r--r--include/openssl/opensslconf.h (renamed from NorthstarDLL/include/openssl/opensslconf.h)0
-rw-r--r--include/openssl/opensslv.h (renamed from NorthstarDLL/include/openssl/opensslv.h)0
-rw-r--r--include/openssl/opensslv.h.in (renamed from NorthstarDLL/include/openssl/opensslv.h.in)0
-rw-r--r--include/openssl/ossl_typ.h (renamed from NorthstarDLL/include/openssl/ossl_typ.h)0
-rw-r--r--include/openssl/param_build.h (renamed from NorthstarDLL/include/openssl/param_build.h)0
-rw-r--r--include/openssl/params.h (renamed from NorthstarDLL/include/openssl/params.h)0
-rw-r--r--include/openssl/pem.h (renamed from NorthstarDLL/include/openssl/pem.h)0
-rw-r--r--include/openssl/pem2.h (renamed from NorthstarDLL/include/openssl/pem2.h)0
-rw-r--r--include/openssl/pemerr.h (renamed from NorthstarDLL/include/openssl/pemerr.h)0
-rw-r--r--include/openssl/pkcs12.h (renamed from NorthstarDLL/include/openssl/pkcs12.h)0
-rw-r--r--include/openssl/pkcs12.h.in (renamed from NorthstarDLL/include/openssl/pkcs12.h.in)0
-rw-r--r--include/openssl/pkcs12err.h (renamed from NorthstarDLL/include/openssl/pkcs12err.h)0
-rw-r--r--include/openssl/pkcs7.h (renamed from NorthstarDLL/include/openssl/pkcs7.h)0
-rw-r--r--include/openssl/pkcs7.h.in (renamed from NorthstarDLL/include/openssl/pkcs7.h.in)0
-rw-r--r--include/openssl/pkcs7err.h (renamed from NorthstarDLL/include/openssl/pkcs7err.h)0
-rw-r--r--include/openssl/prov_ssl.h (renamed from NorthstarDLL/include/openssl/prov_ssl.h)0
-rw-r--r--include/openssl/proverr.h (renamed from NorthstarDLL/include/openssl/proverr.h)0
-rw-r--r--include/openssl/provider.h (renamed from NorthstarDLL/include/openssl/provider.h)0
-rw-r--r--include/openssl/rand.h (renamed from NorthstarDLL/include/openssl/rand.h)0
-rw-r--r--include/openssl/randerr.h (renamed from NorthstarDLL/include/openssl/randerr.h)0
-rw-r--r--include/openssl/rc2.h (renamed from NorthstarDLL/include/openssl/rc2.h)0
-rw-r--r--include/openssl/rc4.h (renamed from NorthstarDLL/include/openssl/rc4.h)0
-rw-r--r--include/openssl/rc5.h (renamed from NorthstarDLL/include/openssl/rc5.h)0
-rw-r--r--include/openssl/ripemd.h (renamed from NorthstarDLL/include/openssl/ripemd.h)0
-rw-r--r--include/openssl/rsa.h (renamed from NorthstarDLL/include/openssl/rsa.h)0
-rw-r--r--include/openssl/rsaerr.h (renamed from NorthstarDLL/include/openssl/rsaerr.h)0
-rw-r--r--include/openssl/safestack.h (renamed from NorthstarDLL/include/openssl/safestack.h)0
-rw-r--r--include/openssl/safestack.h.in (renamed from NorthstarDLL/include/openssl/safestack.h.in)0
-rw-r--r--include/openssl/seed.h (renamed from NorthstarDLL/include/openssl/seed.h)0
-rw-r--r--include/openssl/self_test.h (renamed from NorthstarDLL/include/openssl/self_test.h)0
-rw-r--r--include/openssl/sha.h (renamed from NorthstarDLL/include/openssl/sha.h)0
-rw-r--r--include/openssl/srp.h (renamed from NorthstarDLL/include/openssl/srp.h)0
-rw-r--r--include/openssl/srp.h.in (renamed from NorthstarDLL/include/openssl/srp.h.in)0
-rw-r--r--include/openssl/srtp.h (renamed from NorthstarDLL/include/openssl/srtp.h)0
-rw-r--r--include/openssl/ssl.h (renamed from NorthstarDLL/include/openssl/ssl.h)0
-rw-r--r--include/openssl/ssl.h.in (renamed from NorthstarDLL/include/openssl/ssl.h.in)0
-rw-r--r--include/openssl/ssl2.h (renamed from NorthstarDLL/include/openssl/ssl2.h)0
-rw-r--r--include/openssl/ssl3.h (renamed from NorthstarDLL/include/openssl/ssl3.h)0
-rw-r--r--include/openssl/sslerr.h (renamed from NorthstarDLL/include/openssl/sslerr.h)0
-rw-r--r--include/openssl/sslerr_legacy.h (renamed from NorthstarDLL/include/openssl/sslerr_legacy.h)0
-rw-r--r--include/openssl/stack.h (renamed from NorthstarDLL/include/openssl/stack.h)0
-rw-r--r--include/openssl/store.h (renamed from NorthstarDLL/include/openssl/store.h)0
-rw-r--r--include/openssl/storeerr.h (renamed from NorthstarDLL/include/openssl/storeerr.h)0
-rw-r--r--include/openssl/symhacks.h (renamed from NorthstarDLL/include/openssl/symhacks.h)0
-rw-r--r--include/openssl/tls1.h (renamed from NorthstarDLL/include/openssl/tls1.h)0
-rw-r--r--include/openssl/trace.h (renamed from NorthstarDLL/include/openssl/trace.h)0
-rw-r--r--include/openssl/ts.h (renamed from NorthstarDLL/include/openssl/ts.h)0
-rw-r--r--include/openssl/tserr.h (renamed from NorthstarDLL/include/openssl/tserr.h)0
-rw-r--r--include/openssl/txt_db.h (renamed from NorthstarDLL/include/openssl/txt_db.h)0
-rw-r--r--include/openssl/types.h (renamed from NorthstarDLL/include/openssl/types.h)0
-rw-r--r--include/openssl/ui.h (renamed from NorthstarDLL/include/openssl/ui.h)0
-rw-r--r--include/openssl/ui.h.in (renamed from NorthstarDLL/include/openssl/ui.h.in)0
-rw-r--r--include/openssl/uierr.h (renamed from NorthstarDLL/include/openssl/uierr.h)0
-rw-r--r--include/openssl/whrlpool.h (renamed from NorthstarDLL/include/openssl/whrlpool.h)0
-rw-r--r--include/openssl/x509.h (renamed from NorthstarDLL/include/openssl/x509.h)0
-rw-r--r--include/openssl/x509.h.in (renamed from NorthstarDLL/include/openssl/x509.h.in)0
-rw-r--r--include/openssl/x509_vfy.h (renamed from NorthstarDLL/include/openssl/x509_vfy.h)0
-rw-r--r--include/openssl/x509_vfy.h.in (renamed from NorthstarDLL/include/openssl/x509_vfy.h.in)0
-rw-r--r--include/openssl/x509err.h (renamed from NorthstarDLL/include/openssl/x509err.h)0
-rw-r--r--include/openssl/x509v3.h (renamed from NorthstarDLL/include/openssl/x509v3.h)0
-rw-r--r--include/openssl/x509v3.h.in (renamed from NorthstarDLL/include/openssl/x509v3.h.in)0
-rw-r--r--include/openssl/x509v3err.h (renamed from NorthstarDLL/include/openssl/x509v3err.h)0
-rw-r--r--include/rapidjson/allocators.h (renamed from NorthstarDLL/include/rapidjson/allocators.h)0
-rw-r--r--include/rapidjson/document.h (renamed from NorthstarDLL/include/rapidjson/document.h)0
-rw-r--r--include/rapidjson/encodedstream.h (renamed from NorthstarDLL/include/rapidjson/encodedstream.h)0
-rw-r--r--include/rapidjson/encodings.h (renamed from NorthstarDLL/include/rapidjson/encodings.h)0
-rw-r--r--include/rapidjson/error/en.h (renamed from NorthstarDLL/include/rapidjson/error/en.h)0
-rw-r--r--include/rapidjson/error/error.h (renamed from NorthstarDLL/include/rapidjson/error/error.h)0
-rw-r--r--include/rapidjson/filereadstream.h (renamed from NorthstarDLL/include/rapidjson/filereadstream.h)0
-rw-r--r--include/rapidjson/filewritestream.h (renamed from NorthstarDLL/include/rapidjson/filewritestream.h)0
-rw-r--r--include/rapidjson/fwd.h (renamed from NorthstarDLL/include/rapidjson/fwd.h)0
-rw-r--r--include/rapidjson/internal/biginteger.h (renamed from NorthstarDLL/include/rapidjson/internal/biginteger.h)0
-rw-r--r--include/rapidjson/internal/diyfp.h (renamed from NorthstarDLL/include/rapidjson/internal/diyfp.h)0
-rw-r--r--include/rapidjson/internal/dtoa.h (renamed from NorthstarDLL/include/rapidjson/internal/dtoa.h)0
-rw-r--r--include/rapidjson/internal/ieee754.h (renamed from NorthstarDLL/include/rapidjson/internal/ieee754.h)0
-rw-r--r--include/rapidjson/internal/itoa.h (renamed from NorthstarDLL/include/rapidjson/internal/itoa.h)0
-rw-r--r--include/rapidjson/internal/meta.h (renamed from NorthstarDLL/include/rapidjson/internal/meta.h)0
-rw-r--r--include/rapidjson/internal/pow10.h (renamed from NorthstarDLL/include/rapidjson/internal/pow10.h)0
-rw-r--r--include/rapidjson/internal/regex.h (renamed from NorthstarDLL/include/rapidjson/internal/regex.h)0
-rw-r--r--include/rapidjson/internal/stack.h (renamed from NorthstarDLL/include/rapidjson/internal/stack.h)0
-rw-r--r--include/rapidjson/internal/strfunc.h (renamed from NorthstarDLL/include/rapidjson/internal/strfunc.h)0
-rw-r--r--include/rapidjson/internal/strtod.h (renamed from NorthstarDLL/include/rapidjson/internal/strtod.h)0
-rw-r--r--include/rapidjson/internal/swap.h (renamed from NorthstarDLL/include/rapidjson/internal/swap.h)0
-rw-r--r--include/rapidjson/istreamwrapper.h (renamed from NorthstarDLL/include/rapidjson/istreamwrapper.h)0
-rw-r--r--include/rapidjson/memorybuffer.h (renamed from NorthstarDLL/include/rapidjson/memorybuffer.h)0
-rw-r--r--include/rapidjson/memorystream.h (renamed from NorthstarDLL/include/rapidjson/memorystream.h)0
-rw-r--r--include/rapidjson/msinttypes/inttypes.h (renamed from NorthstarDLL/include/rapidjson/msinttypes/inttypes.h)0
-rw-r--r--include/rapidjson/msinttypes/stdint.h (renamed from NorthstarDLL/include/rapidjson/msinttypes/stdint.h)0
-rw-r--r--include/rapidjson/ostreamwrapper.h (renamed from NorthstarDLL/include/rapidjson/ostreamwrapper.h)0
-rw-r--r--include/rapidjson/pointer.h (renamed from NorthstarDLL/include/rapidjson/pointer.h)0
-rw-r--r--include/rapidjson/prettywriter.h (renamed from NorthstarDLL/include/rapidjson/prettywriter.h)0
-rw-r--r--include/rapidjson/rapidjson.h (renamed from NorthstarDLL/include/rapidjson/rapidjson.h)0
-rw-r--r--include/rapidjson/reader.h (renamed from NorthstarDLL/include/rapidjson/reader.h)0
-rw-r--r--include/rapidjson/schema.h (renamed from NorthstarDLL/include/rapidjson/schema.h)0
-rw-r--r--include/rapidjson/stream.h (renamed from NorthstarDLL/include/rapidjson/stream.h)0
-rw-r--r--include/rapidjson/stringbuffer.h (renamed from NorthstarDLL/include/rapidjson/stringbuffer.h)0
-rw-r--r--include/rapidjson/writer.h (renamed from NorthstarDLL/include/rapidjson/writer.h)0
-rw-r--r--include/spdlog/async.h (renamed from NorthstarDLL/include/spdlog/async.h)0
-rw-r--r--include/spdlog/async_logger-inl.h (renamed from NorthstarDLL/include/spdlog/async_logger-inl.h)0
-rw-r--r--include/spdlog/async_logger.h (renamed from NorthstarDLL/include/spdlog/async_logger.h)0
-rw-r--r--include/spdlog/cfg/argv.h (renamed from NorthstarDLL/include/spdlog/cfg/argv.h)0
-rw-r--r--include/spdlog/cfg/env.h (renamed from NorthstarDLL/include/spdlog/cfg/env.h)0
-rw-r--r--include/spdlog/cfg/helpers-inl.h (renamed from NorthstarDLL/include/spdlog/cfg/helpers-inl.h)0
-rw-r--r--include/spdlog/cfg/helpers.h (renamed from NorthstarDLL/include/spdlog/cfg/helpers.h)0
-rw-r--r--include/spdlog/common-inl.h (renamed from NorthstarDLL/include/spdlog/common-inl.h)0
-rw-r--r--include/spdlog/common.h (renamed from NorthstarDLL/include/spdlog/common.h)0
-rw-r--r--include/spdlog/details/backtracer-inl.h (renamed from NorthstarDLL/include/spdlog/details/backtracer-inl.h)0
-rw-r--r--include/spdlog/details/backtracer.h (renamed from NorthstarDLL/include/spdlog/details/backtracer.h)0
-rw-r--r--include/spdlog/details/circular_q.h (renamed from NorthstarDLL/include/spdlog/details/circular_q.h)0
-rw-r--r--include/spdlog/details/console_globals.h (renamed from NorthstarDLL/include/spdlog/details/console_globals.h)0
-rw-r--r--include/spdlog/details/file_helper-inl.h (renamed from NorthstarDLL/include/spdlog/details/file_helper-inl.h)0
-rw-r--r--include/spdlog/details/file_helper.h (renamed from NorthstarDLL/include/spdlog/details/file_helper.h)0
-rw-r--r--include/spdlog/details/fmt_helper.h (renamed from NorthstarDLL/include/spdlog/details/fmt_helper.h)0
-rw-r--r--include/spdlog/details/log_msg-inl.h (renamed from NorthstarDLL/include/spdlog/details/log_msg-inl.h)0
-rw-r--r--include/spdlog/details/log_msg.h (renamed from NorthstarDLL/include/spdlog/details/log_msg.h)0
-rw-r--r--include/spdlog/details/log_msg_buffer-inl.h (renamed from NorthstarDLL/include/spdlog/details/log_msg_buffer-inl.h)0
-rw-r--r--include/spdlog/details/log_msg_buffer.h (renamed from NorthstarDLL/include/spdlog/details/log_msg_buffer.h)0
-rw-r--r--include/spdlog/details/mpmc_blocking_q.h (renamed from NorthstarDLL/include/spdlog/details/mpmc_blocking_q.h)0
-rw-r--r--include/spdlog/details/null_mutex.h (renamed from NorthstarDLL/include/spdlog/details/null_mutex.h)0
-rw-r--r--include/spdlog/details/os-inl.h (renamed from NorthstarDLL/include/spdlog/details/os-inl.h)0
-rw-r--r--include/spdlog/details/os.h (renamed from NorthstarDLL/include/spdlog/details/os.h)0
-rw-r--r--include/spdlog/details/periodic_worker-inl.h (renamed from NorthstarDLL/include/spdlog/details/periodic_worker-inl.h)0
-rw-r--r--include/spdlog/details/periodic_worker.h (renamed from NorthstarDLL/include/spdlog/details/periodic_worker.h)0
-rw-r--r--include/spdlog/details/registry-inl.h (renamed from NorthstarDLL/include/spdlog/details/registry-inl.h)0
-rw-r--r--include/spdlog/details/registry.h (renamed from NorthstarDLL/include/spdlog/details/registry.h)0
-rw-r--r--include/spdlog/details/synchronous_factory.h (renamed from NorthstarDLL/include/spdlog/details/synchronous_factory.h)0
-rw-r--r--include/spdlog/details/tcp_client-windows.h (renamed from NorthstarDLL/include/spdlog/details/tcp_client-windows.h)0
-rw-r--r--include/spdlog/details/tcp_client.h (renamed from NorthstarDLL/include/spdlog/details/tcp_client.h)0
-rw-r--r--include/spdlog/details/thread_pool-inl.h (renamed from NorthstarDLL/include/spdlog/details/thread_pool-inl.h)0
-rw-r--r--include/spdlog/details/thread_pool.h (renamed from NorthstarDLL/include/spdlog/details/thread_pool.h)0
-rw-r--r--include/spdlog/details/windows_include.h (renamed from NorthstarDLL/include/spdlog/details/windows_include.h)0
-rw-r--r--include/spdlog/fmt/bin_to_hex.h (renamed from NorthstarDLL/include/spdlog/fmt/bin_to_hex.h)0
-rw-r--r--include/spdlog/fmt/bundled/LICENSE.rst (renamed from NorthstarDLL/include/spdlog/fmt/bundled/LICENSE.rst)0
-rw-r--r--include/spdlog/fmt/bundled/chrono.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/chrono.h)0
-rw-r--r--include/spdlog/fmt/bundled/color.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/color.h)0
-rw-r--r--include/spdlog/fmt/bundled/compile.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/compile.h)0
-rw-r--r--include/spdlog/fmt/bundled/core.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/core.h)0
-rw-r--r--include/spdlog/fmt/bundled/format-inl.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/format-inl.h)0
-rw-r--r--include/spdlog/fmt/bundled/format.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/format.h)0
-rw-r--r--include/spdlog/fmt/bundled/locale.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/locale.h)0
-rw-r--r--include/spdlog/fmt/bundled/os.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/os.h)0
-rw-r--r--include/spdlog/fmt/bundled/ostream.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/ostream.h)0
-rw-r--r--include/spdlog/fmt/bundled/posix.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/posix.h)0
-rw-r--r--include/spdlog/fmt/bundled/printf.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/printf.h)0
-rw-r--r--include/spdlog/fmt/bundled/ranges.h (renamed from NorthstarDLL/include/spdlog/fmt/bundled/ranges.h)0
-rw-r--r--include/spdlog/fmt/chrono.h (renamed from NorthstarDLL/include/spdlog/fmt/chrono.h)0
-rw-r--r--include/spdlog/fmt/fmt.h (renamed from NorthstarDLL/include/spdlog/fmt/fmt.h)0
-rw-r--r--include/spdlog/fmt/ostr.h (renamed from NorthstarDLL/include/spdlog/fmt/ostr.h)0
-rw-r--r--include/spdlog/formatter.h (renamed from NorthstarDLL/include/spdlog/formatter.h)0
-rw-r--r--include/spdlog/fwd.h (renamed from NorthstarDLL/include/spdlog/fwd.h)0
-rw-r--r--include/spdlog/logger-inl.h (renamed from NorthstarDLL/include/spdlog/logger-inl.h)0
-rw-r--r--include/spdlog/logger.h (renamed from NorthstarDLL/include/spdlog/logger.h)0
-rw-r--r--include/spdlog/pattern_formatter-inl.h (renamed from NorthstarDLL/include/spdlog/pattern_formatter-inl.h)0
-rw-r--r--include/spdlog/pattern_formatter.h (renamed from NorthstarDLL/include/spdlog/pattern_formatter.h)0
-rw-r--r--include/spdlog/sinks/android_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/android_sink.h)0
-rw-r--r--include/spdlog/sinks/ansicolor_sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/ansicolor_sink-inl.h)0
-rw-r--r--include/spdlog/sinks/ansicolor_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/ansicolor_sink.h)0
-rw-r--r--include/spdlog/sinks/base_sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/base_sink-inl.h)0
-rw-r--r--include/spdlog/sinks/base_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/base_sink.h)0
-rw-r--r--include/spdlog/sinks/basic_file_sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/basic_file_sink-inl.h)0
-rw-r--r--include/spdlog/sinks/basic_file_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/basic_file_sink.h)0
-rw-r--r--include/spdlog/sinks/daily_file_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/daily_file_sink.h)0
-rw-r--r--include/spdlog/sinks/dist_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/dist_sink.h)0
-rw-r--r--include/spdlog/sinks/dup_filter_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/dup_filter_sink.h)0
-rw-r--r--include/spdlog/sinks/hourly_file_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/hourly_file_sink.h)0
-rw-r--r--include/spdlog/sinks/msvc_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/msvc_sink.h)0
-rw-r--r--include/spdlog/sinks/null_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/null_sink.h)0
-rw-r--r--include/spdlog/sinks/ostream_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/ostream_sink.h)0
-rw-r--r--include/spdlog/sinks/ringbuffer_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/ringbuffer_sink.h)0
-rw-r--r--include/spdlog/sinks/rotating_file_sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/rotating_file_sink-inl.h)0
-rw-r--r--include/spdlog/sinks/rotating_file_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/rotating_file_sink.h)0
-rw-r--r--include/spdlog/sinks/sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/sink-inl.h)0
-rw-r--r--include/spdlog/sinks/sink.h (renamed from NorthstarDLL/include/spdlog/sinks/sink.h)0
-rw-r--r--include/spdlog/sinks/stdout_color_sinks-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/stdout_color_sinks-inl.h)0
-rw-r--r--include/spdlog/sinks/stdout_color_sinks.h (renamed from NorthstarDLL/include/spdlog/sinks/stdout_color_sinks.h)0
-rw-r--r--include/spdlog/sinks/stdout_sinks-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/stdout_sinks-inl.h)0
-rw-r--r--include/spdlog/sinks/stdout_sinks.h (renamed from NorthstarDLL/include/spdlog/sinks/stdout_sinks.h)0
-rw-r--r--include/spdlog/sinks/syslog_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/syslog_sink.h)0
-rw-r--r--include/spdlog/sinks/systemd_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/systemd_sink.h)0
-rw-r--r--include/spdlog/sinks/tcp_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/tcp_sink.h)0
-rw-r--r--include/spdlog/sinks/win_eventlog_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/win_eventlog_sink.h)0
-rw-r--r--include/spdlog/sinks/wincolor_sink-inl.h (renamed from NorthstarDLL/include/spdlog/sinks/wincolor_sink-inl.h)0
-rw-r--r--include/spdlog/sinks/wincolor_sink.h (renamed from NorthstarDLL/include/spdlog/sinks/wincolor_sink.h)0
-rw-r--r--include/spdlog/spdlog-inl.h (renamed from NorthstarDLL/include/spdlog/spdlog-inl.h)0
-rw-r--r--include/spdlog/spdlog.h (renamed from NorthstarDLL/include/spdlog/spdlog.h)0
-rw-r--r--include/spdlog/stopwatch.h (renamed from NorthstarDLL/include/spdlog/stopwatch.h)0
-rw-r--r--include/spdlog/tweakme.h (renamed from NorthstarDLL/include/spdlog/tweakme.h)0
-rw-r--r--include/spdlog/version.h (renamed from NorthstarDLL/include/spdlog/version.h)0
-rw-r--r--loader_launcher_proxy/dllmain.cpp176
-rw-r--r--loader_launcher_proxy/framework.h7
-rw-r--r--loader_launcher_proxy/loader_launcher_proxy.vcxproj107
-rw-r--r--loader_launcher_proxy/loader_launcher_proxy.vcxproj.filters33
-rw-r--r--loader_launcher_proxy/pch.cpp5
-rw-r--r--loader_launcher_proxy/pch.h13
572 files changed, 4685 insertions, 4329 deletions
diff --git a/NorthstarDLL/NorthstarDLL.vcxproj b/NorthstarDLL/NorthstarDLL.vcxproj
index 7961ddf4..dc5a3878 100644
--- a/NorthstarDLL/NorthstarDLL.vcxproj
+++ b/NorthstarDLL/NorthstarDLL.vcxproj
@@ -62,13 +62,13 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
- <AdditionalDependencies>$(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>$(SolutionDir)include\MinHook.x64.lib;$(SolutionDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ForceSymbolReferences>
</ForceSymbolReferences>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -92,7 +92,7 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<LanguageStandard>stdcpp20</LanguageStandard>
- <AdditionalIncludeDirectories>$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<Optimization>Disabled</Optimization>
</ClCompile>
@@ -102,7 +102,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
- <AdditionalDependencies>$(ProjectDir)include\MinHook.x64.lib;$(ProjectDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>$(SolutionDir)include\MinHook.x64.lib;$(SolutionDir)include\libcurl\lib\libcurl_a.lib;dbghelp.lib;Wldap32.lib;Normaliz.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ForceSymbolReferences>
</ForceSymbolReferences>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
@@ -116,567 +116,426 @@
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="audio.h" />
- <ClInclude Include="bansystem.h" />
- <ClInclude Include="bitbuf.h" />
- <ClInclude Include="bits.h" />
- <ClInclude Include="bots.h" />
- <ClInclude Include="crashhandler.h" />
- <ClInclude Include="keyvalues.h" />
- <ClInclude Include="loghooks.h" />
- <ClInclude Include="squirrelclasstypes.h" />
- <ClInclude Include="squirreldatatypes.h" />
- <ClInclude Include="limits.h" />
- <ClInclude Include="maxplayers.h" />
- <ClInclude Include="memory.h" />
- <ClInclude Include="printcommand.h" />
- <ClInclude Include="hoststate.h" />
- <ClInclude Include="localchatwriter.h" />
- <ClInclude Include="printmaps.h" />
+ <ClInclude Include="..\include\httplib.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\curl.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\curlver.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\easy.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\mprintf.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\multi.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\options.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\stdcheaders.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\system.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\typecheck-gcc.h" />
+ <ClInclude Include="..\include\libcurl\include\curl\urlapi.h" />
+ <ClInclude Include="..\include\MinHook.h" />
+ <ClInclude Include="..\include\openssl\aes.h" />
+ <ClInclude Include="..\include\openssl\asn1.h" />
+ <ClInclude Include="..\include\openssl\asn1err.h" />
+ <ClInclude Include="..\include\openssl\asn1t.h" />
+ <ClInclude Include="..\include\openssl\asn1_mac.h" />
+ <ClInclude Include="..\include\openssl\async.h" />
+ <ClInclude Include="..\include\openssl\asyncerr.h" />
+ <ClInclude Include="..\include\openssl\bio.h" />
+ <ClInclude Include="..\include\openssl\bioerr.h" />
+ <ClInclude Include="..\include\openssl\blowfish.h" />
+ <ClInclude Include="..\include\openssl\bn.h" />
+ <ClInclude Include="..\include\openssl\bnerr.h" />
+ <ClInclude Include="..\include\openssl\buffer.h" />
+ <ClInclude Include="..\include\openssl\buffererr.h" />
+ <ClInclude Include="..\include\openssl\camellia.h" />
+ <ClInclude Include="..\include\openssl\cast.h" />
+ <ClInclude Include="..\include\openssl\cmac.h" />
+ <ClInclude Include="..\include\openssl\cmp.h" />
+ <ClInclude Include="..\include\openssl\cmperr.h" />
+ <ClInclude Include="..\include\openssl\cmp_util.h" />
+ <ClInclude Include="..\include\openssl\cms.h" />
+ <ClInclude Include="..\include\openssl\cmserr.h" />
+ <ClInclude Include="..\include\openssl\comp.h" />
+ <ClInclude Include="..\include\openssl\comperr.h" />
+ <ClInclude Include="..\include\openssl\conf.h" />
+ <ClInclude Include="..\include\openssl\conferr.h" />
+ <ClInclude Include="..\include\openssl\configuration.h" />
+ <ClInclude Include="..\include\openssl\conftypes.h" />
+ <ClInclude Include="..\include\openssl\conf_api.h" />
+ <ClInclude Include="..\include\openssl\core.h" />
+ <ClInclude Include="..\include\openssl\core_dispatch.h" />
+ <ClInclude Include="..\include\openssl\core_names.h" />
+ <ClInclude Include="..\include\openssl\core_object.h" />
+ <ClInclude Include="..\include\openssl\crmf.h" />
+ <ClInclude Include="..\include\openssl\crmferr.h" />
+ <ClInclude Include="..\include\openssl\crypto.h" />
+ <ClInclude Include="..\include\openssl\cryptoerr.h" />
+ <ClInclude Include="..\include\openssl\cryptoerr_legacy.h" />
+ <ClInclude Include="..\include\openssl\ct.h" />
+ <ClInclude Include="..\include\openssl\cterr.h" />
+ <ClInclude Include="..\include\openssl\decoder.h" />
+ <ClInclude Include="..\include\openssl\decodererr.h" />
+ <ClInclude Include="..\include\openssl\des.h" />
+ <ClInclude Include="..\include\openssl\dh.h" />
+ <ClInclude Include="..\include\openssl\dherr.h" />
+ <ClInclude Include="..\include\openssl\dsa.h" />
+ <ClInclude Include="..\include\openssl\dsaerr.h" />
+ <ClInclude Include="..\include\openssl\dtls1.h" />
+ <ClInclude Include="..\include\openssl\ebcdic.h" />
+ <ClInclude Include="..\include\openssl\ec.h" />
+ <ClInclude Include="..\include\openssl\ecdh.h" />
+ <ClInclude Include="..\include\openssl\ecdsa.h" />
+ <ClInclude Include="..\include\openssl\ecerr.h" />
+ <ClInclude Include="..\include\openssl\encoder.h" />
+ <ClInclude Include="..\include\openssl\encodererr.h" />
+ <ClInclude Include="..\include\openssl\engine.h" />
+ <ClInclude Include="..\include\openssl\engineerr.h" />
+ <ClInclude Include="..\include\openssl\err.h" />
+ <ClInclude Include="..\include\openssl\ess.h" />
+ <ClInclude Include="..\include\openssl\esserr.h" />
+ <ClInclude Include="..\include\openssl\evp.h" />
+ <ClInclude Include="..\include\openssl\evperr.h" />
+ <ClInclude Include="..\include\openssl\e_os2.h" />
+ <ClInclude Include="..\include\openssl\fipskey.h" />
+ <ClInclude Include="..\include\openssl\fips_names.h" />
+ <ClInclude Include="..\include\openssl\hmac.h" />
+ <ClInclude Include="..\include\openssl\http.h" />
+ <ClInclude Include="..\include\openssl\httperr.h" />
+ <ClInclude Include="..\include\openssl\idea.h" />
+ <ClInclude Include="..\include\openssl\kdf.h" />
+ <ClInclude Include="..\include\openssl\kdferr.h" />
+ <ClInclude Include="..\include\openssl\lhash.h" />
+ <ClInclude Include="..\include\openssl\macros.h" />
+ <ClInclude Include="..\include\openssl\md2.h" />
+ <ClInclude Include="..\include\openssl\md4.h" />
+ <ClInclude Include="..\include\openssl\md5.h" />
+ <ClInclude Include="..\include\openssl\mdc2.h" />
+ <ClInclude Include="..\include\openssl\modes.h" />
+ <ClInclude Include="..\include\openssl\objects.h" />
+ <ClInclude Include="..\include\openssl\objectserr.h" />
+ <ClInclude Include="..\include\openssl\obj_mac.h" />
+ <ClInclude Include="..\include\openssl\ocsp.h" />
+ <ClInclude Include="..\include\openssl\ocsperr.h" />
+ <ClInclude Include="..\include\openssl\opensslconf.h" />
+ <ClInclude Include="..\include\openssl\opensslv.h" />
+ <ClInclude Include="..\include\openssl\ossl_typ.h" />
+ <ClInclude Include="..\include\openssl\params.h" />
+ <ClInclude Include="..\include\openssl\param_build.h" />
+ <ClInclude Include="..\include\openssl\pem.h" />
+ <ClInclude Include="..\include\openssl\pem2.h" />
+ <ClInclude Include="..\include\openssl\pemerr.h" />
+ <ClInclude Include="..\include\openssl\pkcs12.h" />
+ <ClInclude Include="..\include\openssl\pkcs12err.h" />
+ <ClInclude Include="..\include\openssl\pkcs7.h" />
+ <ClInclude Include="..\include\openssl\pkcs7err.h" />
+ <ClInclude Include="..\include\openssl\proverr.h" />
+ <ClInclude Include="..\include\openssl\provider.h" />
+ <ClInclude Include="..\include\openssl\prov_ssl.h" />
+ <ClInclude Include="..\include\openssl\rand.h" />
+ <ClInclude Include="..\include\openssl\randerr.h" />
+ <ClInclude Include="..\include\openssl\rc2.h" />
+ <ClInclude Include="..\include\openssl\rc4.h" />
+ <ClInclude Include="..\include\openssl\rc5.h" />
+ <ClInclude Include="..\include\openssl\ripemd.h" />
+ <ClInclude Include="..\include\openssl\rsa.h" />
+ <ClInclude Include="..\include\openssl\rsaerr.h" />
+ <ClInclude Include="..\include\openssl\safestack.h" />
+ <ClInclude Include="..\include\openssl\seed.h" />
+ <ClInclude Include="..\include\openssl\self_test.h" />
+ <ClInclude Include="..\include\openssl\sha.h" />
+ <ClInclude Include="..\include\openssl\srp.h" />
+ <ClInclude Include="..\include\openssl\srtp.h" />
+ <ClInclude Include="..\include\openssl\ssl.h" />
+ <ClInclude Include="..\include\openssl\ssl2.h" />
+ <ClInclude Include="..\include\openssl\ssl3.h" />
+ <ClInclude Include="..\include\openssl\sslerr.h" />
+ <ClInclude Include="..\include\openssl\sslerr_legacy.h" />
+ <ClInclude Include="..\include\openssl\stack.h" />
+ <ClInclude Include="..\include\openssl\store.h" />
+ <ClInclude Include="..\include\openssl\storeerr.h" />
+ <ClInclude Include="..\include\openssl\symhacks.h" />
+ <ClInclude Include="..\include\openssl\tls1.h" />
+ <ClInclude Include="..\include\openssl\trace.h" />
+ <ClInclude Include="..\include\openssl\ts.h" />
+ <ClInclude Include="..\include\openssl\tserr.h" />
+ <ClInclude Include="..\include\openssl\txt_db.h" />
+ <ClInclude Include="..\include\openssl\types.h" />
+ <ClInclude Include="..\include\openssl\ui.h" />
+ <ClInclude Include="..\include\openssl\uierr.h" />
+ <ClInclude Include="..\include\openssl\whrlpool.h" />
+ <ClInclude Include="..\include\openssl\x509.h" />
+ <ClInclude Include="..\include\openssl\x509err.h" />
+ <ClInclude Include="..\include\openssl\x509v3.h" />
+ <ClInclude Include="..\include\openssl\x509v3err.h" />
+ <ClInclude Include="..\include\openssl\x509_vfy.h" />
+ <ClInclude Include="..\include\openssl\__DECC_INCLUDE_EPILOGUE.H" />
+ <ClInclude Include="..\include\openssl\__DECC_INCLUDE_PROLOGUE.H" />
+ <ClInclude Include="..\include\rapidjson\allocators.h" />
+ <ClInclude Include="..\include\rapidjson\document.h" />
+ <ClInclude Include="..\include\rapidjson\encodedstream.h" />
+ <ClInclude Include="..\include\rapidjson\encodings.h" />
+ <ClInclude Include="..\include\rapidjson\error\en.h" />
+ <ClInclude Include="..\include\rapidjson\error\error.h" />
+ <ClInclude Include="..\include\rapidjson\filereadstream.h" />
+ <ClInclude Include="..\include\rapidjson\filewritestream.h" />
+ <ClInclude Include="..\include\rapidjson\fwd.h" />
+ <ClInclude Include="..\include\rapidjson\internal\biginteger.h" />
+ <ClInclude Include="..\include\rapidjson\internal\diyfp.h" />
+ <ClInclude Include="..\include\rapidjson\internal\dtoa.h" />
+ <ClInclude Include="..\include\rapidjson\internal\ieee754.h" />
+ <ClInclude Include="..\include\rapidjson\internal\itoa.h" />
+ <ClInclude Include="..\include\rapidjson\internal\meta.h" />
+ <ClInclude Include="..\include\rapidjson\internal\pow10.h" />
+ <ClInclude Include="..\include\rapidjson\internal\regex.h" />
+ <ClInclude Include="..\include\rapidjson\internal\stack.h" />
+ <ClInclude Include="..\include\rapidjson\internal\strfunc.h" />
+ <ClInclude Include="..\include\rapidjson\internal\strtod.h" />
+ <ClInclude Include="..\include\rapidjson\internal\swap.h" />
+ <ClInclude Include="..\include\rapidjson\istreamwrapper.h" />
+ <ClInclude Include="..\include\rapidjson\memorybuffer.h" />
+ <ClInclude Include="..\include\rapidjson\memorystream.h" />
+ <ClInclude Include="..\include\rapidjson\msinttypes\inttypes.h" />
+ <ClInclude Include="..\include\rapidjson\msinttypes\stdint.h" />
+ <ClInclude Include="..\include\rapidjson\ostreamwrapper.h" />
+ <ClInclude Include="..\include\rapidjson\pointer.h" />
+ <ClInclude Include="..\include\rapidjson\prettywriter.h" />
+ <ClInclude Include="..\include\rapidjson\rapidjson.h" />
+ <ClInclude Include="..\include\rapidjson\reader.h" />
+ <ClInclude Include="..\include\rapidjson\schema.h" />
+ <ClInclude Include="..\include\rapidjson\stream.h" />
+ <ClInclude Include="..\include\rapidjson\stringbuffer.h" />
+ <ClInclude Include="..\include\rapidjson\writer.h" />
+ <ClInclude Include="..\include\spdlog\async.h" />
+ <ClInclude Include="..\include\spdlog\async_logger-inl.h" />
+ <ClInclude Include="..\include\spdlog\async_logger.h" />
+ <ClInclude Include="..\include\spdlog\cfg\argv.h" />
+ <ClInclude Include="..\include\spdlog\cfg\env.h" />
+ <ClInclude Include="..\include\spdlog\cfg\helpers-inl.h" />
+ <ClInclude Include="..\include\spdlog\cfg\helpers.h" />
+ <ClInclude Include="..\include\spdlog\common-inl.h" />
+ <ClInclude Include="..\include\spdlog\common.h" />
+ <ClInclude Include="..\include\spdlog\details\backtracer-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\backtracer.h" />
+ <ClInclude Include="..\include\spdlog\details\circular_q.h" />
+ <ClInclude Include="..\include\spdlog\details\console_globals.h" />
+ <ClInclude Include="..\include\spdlog\details\file_helper-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\file_helper.h" />
+ <ClInclude Include="..\include\spdlog\details\fmt_helper.h" />
+ <ClInclude Include="..\include\spdlog\details\log_msg-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\log_msg.h" />
+ <ClInclude Include="..\include\spdlog\details\log_msg_buffer-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\log_msg_buffer.h" />
+ <ClInclude Include="..\include\spdlog\details\mpmc_blocking_q.h" />
+ <ClInclude Include="..\include\spdlog\details\null_mutex.h" />
+ <ClInclude Include="..\include\spdlog\details\os-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\os.h" />
+ <ClInclude Include="..\include\spdlog\details\periodic_worker-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\periodic_worker.h" />
+ <ClInclude Include="..\include\spdlog\details\registry-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\registry.h" />
+ <ClInclude Include="..\include\spdlog\details\synchronous_factory.h" />
+ <ClInclude Include="..\include\spdlog\details\tcp_client-windows.h" />
+ <ClInclude Include="..\include\spdlog\details\tcp_client.h" />
+ <ClInclude Include="..\include\spdlog\details\thread_pool-inl.h" />
+ <ClInclude Include="..\include\spdlog\details\thread_pool.h" />
+ <ClInclude Include="..\include\spdlog\details\windows_include.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bin_to_hex.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\chrono.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\color.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\compile.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\core.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\format-inl.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\format.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\locale.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\os.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\ostream.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\posix.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\printf.h" />
+ <ClInclude Include="..\include\spdlog\fmt\bundled\ranges.h" />
+ <ClInclude Include="..\include\spdlog\fmt\chrono.h" />
+ <ClInclude Include="..\include\spdlog\fmt\fmt.h" />
+ <ClInclude Include="..\include\spdlog\fmt\ostr.h" />
+ <ClInclude Include="..\include\spdlog\formatter.h" />
+ <ClInclude Include="..\include\spdlog\fwd.h" />
+ <ClInclude Include="..\include\spdlog\logger-inl.h" />
+ <ClInclude Include="..\include\spdlog\logger.h" />
+ <ClInclude Include="..\include\spdlog\pattern_formatter-inl.h" />
+ <ClInclude Include="..\include\spdlog\pattern_formatter.h" />
+ <ClInclude Include="..\include\spdlog\sinks\android_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\ansicolor_sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\ansicolor_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\base_sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\base_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\basic_file_sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\basic_file_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\daily_file_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\dist_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\dup_filter_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\hourly_file_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\msvc_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\null_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\ostream_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\ringbuffer_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\rotating_file_sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\rotating_file_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\stdout_color_sinks-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\stdout_color_sinks.h" />
+ <ClInclude Include="..\include\spdlog\sinks\stdout_sinks-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\stdout_sinks.h" />
+ <ClInclude Include="..\include\spdlog\sinks\syslog_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\systemd_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\tcp_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\wincolor_sink-inl.h" />
+ <ClInclude Include="..\include\spdlog\sinks\wincolor_sink.h" />
+ <ClInclude Include="..\include\spdlog\sinks\win_eventlog_sink.h" />
+ <ClInclude Include="..\include\spdlog\spdlog-inl.h" />
+ <ClInclude Include="..\include\spdlog\spdlog.h" />
+ <ClInclude Include="..\include\spdlog\stopwatch.h" />
+ <ClInclude Include="..\include\spdlog\tweakme.h" />
+ <ClInclude Include="..\include\spdlog\version.h" />
+ <ClInclude Include="client\audio.h" />
+ <ClInclude Include="client\localchatwriter.h" />
+ <ClInclude Include="client\r2client.h" />
+ <ClInclude Include="config\profile.h" />
+ <ClInclude Include="core\convar\concommand.h" />
+ <ClInclude Include="core\convar\convar.h" />
+ <ClInclude Include="core\convar\cvar.h" />
+ <ClInclude Include="core\filesystem\filesystem.h" />
+ <ClInclude Include="core\filesystem\rpakfilesystem.h" />
+ <ClInclude Include="core\hooks.h" />
+ <ClInclude Include="core\macros.h" />
+ <ClInclude Include="core\math\bitbuf.h" />
+ <ClInclude Include="core\math\bits.h" />
+ <ClInclude Include="core\math\color.h" />
+ <ClInclude Include="core\math\vector.h" />
+ <ClInclude Include="core\memalloc.h" />
+ <ClInclude Include="core\memory.h" />
+ <ClInclude Include="core\sourceinterface.h" />
+ <ClInclude Include="core\structs.h" />
+ <ClInclude Include="core\tier0.h" />
+ <ClInclude Include="dedicated\dedicated.h" />
+ <ClInclude Include="dllmain.h" />
+ <ClInclude Include="engine\hoststate.h" />
+ <ClInclude Include="engine\r2engine.h" />
+ <ClInclude Include="exploit_fixes\ns_limits.h" />
+ <ClInclude Include="hooks\hooks.h" />
+ <ClInclude Include="hooks\maxplayers.h" />
+ <ClInclude Include="hooks\memalloc.h" />
+ <ClInclude Include="hooks\memory.h" />
+ <ClInclude Include="hooks\sourceinterface.h" />
+ <ClInclude Include="hooks\tier0.h" />
+ <ClInclude Include="logging\crashhandler.h" />
+ <ClInclude Include="logging\logging.h" />
+ <ClInclude Include="logging\loghooks.h" />
+ <ClInclude Include="logging\sourceconsole.h" />
+ <ClInclude Include="masterserver\masterserver.h" />
+ <ClInclude Include="mods\modmanager.h" />
<ClInclude Include="ns_version.h" />
- <ClInclude Include="plugins.h" />
- <ClInclude Include="plugin_abi.h" />
- <ClInclude Include="r2client.h" />
- <ClInclude Include="r2engine.h" />
- <ClInclude Include="r2server.h" />
- <ClInclude Include="serverchathooks.h" />
- <ClInclude Include="color.h" />
- <ClInclude Include="concommand.h" />
- <ClInclude Include="nsprefix.h" />
- <ClInclude Include="convar.h" />
- <ClInclude Include="cvar.h" />
- <ClInclude Include="dedicated.h" />
- <ClInclude Include="filesystem.h" />
- <ClInclude Include="hooks.h" />
- <ClInclude Include="include\crypto\aes_platform.h" />
- <ClInclude Include="include\crypto\aria.h" />
- <ClInclude Include="include\crypto\asn1.h" />
- <ClInclude Include="include\crypto\asn1err.h" />
- <ClInclude Include="include\crypto\asn1_dsa.h" />
- <ClInclude Include="include\crypto\async.h" />
- <ClInclude Include="include\crypto\asyncerr.h" />
- <ClInclude Include="include\crypto\bioerr.h" />
- <ClInclude Include="include\crypto\bn.h" />
- <ClInclude Include="include\crypto\bnerr.h" />
- <ClInclude Include="include\crypto\bn_conf.h" />
- <ClInclude Include="include\crypto\bn_dh.h" />
- <ClInclude Include="include\crypto\bn_srp.h" />
- <ClInclude Include="include\crypto\buffererr.h" />
- <ClInclude Include="include\crypto\chacha.h" />
- <ClInclude Include="include\crypto\cmll_platform.h" />
- <ClInclude Include="include\crypto\cmperr.h" />
- <ClInclude Include="include\crypto\cmserr.h" />
- <ClInclude Include="include\crypto\comperr.h" />
- <ClInclude Include="include\crypto\conferr.h" />
- <ClInclude Include="include\crypto\crmferr.h" />
- <ClInclude Include="include\crypto\cryptlib.h" />
- <ClInclude Include="include\crypto\cryptoerr.h" />
- <ClInclude Include="include\crypto\cterr.h" />
- <ClInclude Include="include\crypto\ctype.h" />
- <ClInclude Include="include\crypto\decoder.h" />
- <ClInclude Include="include\crypto\decodererr.h" />
- <ClInclude Include="include\crypto\des_platform.h" />
- <ClInclude Include="include\crypto\dh.h" />
- <ClInclude Include="include\crypto\dherr.h" />
- <ClInclude Include="include\crypto\dsa.h" />
- <ClInclude Include="include\crypto\dsaerr.h" />
- <ClInclude Include="include\crypto\dso_conf.h" />
- <ClInclude Include="include\crypto\ec.h" />
- <ClInclude Include="include\crypto\ecerr.h" />
- <ClInclude Include="include\crypto\ecx.h" />
- <ClInclude Include="include\crypto\encoder.h" />
- <ClInclude Include="include\crypto\encodererr.h" />
- <ClInclude Include="include\crypto\engine.h" />
- <ClInclude Include="include\crypto\engineerr.h" />
- <ClInclude Include="include\crypto\err.h" />
- <ClInclude Include="include\crypto\ess.h" />
- <ClInclude Include="include\crypto\esserr.h" />
- <ClInclude Include="include\crypto\evp.h" />
- <ClInclude Include="include\crypto\evperr.h" />
- <ClInclude Include="include\crypto\httperr.h" />
- <ClInclude Include="include\crypto\lhash.h" />
- <ClInclude Include="include\crypto\md32_common.h" />
- <ClInclude Include="include\crypto\modes.h" />
- <ClInclude Include="include\crypto\objects.h" />
- <ClInclude Include="include\crypto\objectserr.h" />
- <ClInclude Include="include\crypto\ocsperr.h" />
- <ClInclude Include="include\crypto\pem.h" />
- <ClInclude Include="include\crypto\pemerr.h" />
- <ClInclude Include="include\crypto\pkcs12err.h" />
- <ClInclude Include="include\crypto\pkcs7.h" />
- <ClInclude Include="include\crypto\pkcs7err.h" />
- <ClInclude Include="include\crypto\poly1305.h" />
- <ClInclude Include="include\crypto\ppc_arch.h" />
- <ClInclude Include="include\crypto\punycode.h" />
- <ClInclude Include="include\crypto\rand.h" />
- <ClInclude Include="include\crypto\randerr.h" />
- <ClInclude Include="include\crypto\rand_pool.h" />
- <ClInclude Include="include\crypto\rsa.h" />
- <ClInclude Include="include\crypto\rsaerr.h" />
- <ClInclude Include="include\crypto\security_bits.h" />
- <ClInclude Include="include\crypto\sha.h" />
- <ClInclude Include="include\crypto\siphash.h" />
- <ClInclude Include="include\crypto\siv.h" />
- <ClInclude Include="include\crypto\sm2.h" />
- <ClInclude Include="include\crypto\sm2err.h" />
- <ClInclude Include="include\crypto\sm4.h" />
- <ClInclude Include="include\crypto\sparc_arch.h" />
- <ClInclude Include="include\crypto\sparse_array.h" />
- <ClInclude Include="include\crypto\store.h" />
- <ClInclude Include="include\crypto\storeerr.h" />
- <ClInclude Include="include\crypto\tserr.h" />
- <ClInclude Include="include\crypto\types.h" />
- <ClInclude Include="include\crypto\uierr.h" />
- <ClInclude Include="include\crypto\x509.h" />
- <ClInclude Include="include\crypto\x509err.h" />
- <ClInclude Include="include\crypto\x509v3err.h" />
- <ClInclude Include="include\crypto\__DECC_INCLUDE_EPILOGUE.H" />
- <ClInclude Include="include\crypto\__DECC_INCLUDE_PROLOGUE.H" />
- <ClInclude Include="include\httplib.h" />
- <ClInclude Include="include\internal\asn1.h" />
- <ClInclude Include="include\internal\bio.h" />
- <ClInclude Include="include\internal\comp.h" />
- <ClInclude Include="include\internal\conf.h" />
- <ClInclude Include="include\internal\constant_time.h" />
- <ClInclude Include="include\internal\core.h" />
- <ClInclude Include="include\internal\cryptlib.h" />
- <ClInclude Include="include\internal\dane.h" />
- <ClInclude Include="include\internal\deprecated.h" />
- <ClInclude Include="include\internal\der.h" />
- <ClInclude Include="include\internal\dso.h" />
- <ClInclude Include="include\internal\dsoerr.h" />
- <ClInclude Include="include\internal\endian.h" />
- <ClInclude Include="include\internal\err.h" />
- <ClInclude Include="include\internal\ffc.h" />
- <ClInclude Include="include\internal\ktls.h" />
- <ClInclude Include="include\internal\namemap.h" />
- <ClInclude Include="include\internal\nelem.h" />
- <ClInclude Include="include\internal\numbers.h" />
- <ClInclude Include="include\internal\o_dir.h" />
- <ClInclude Include="include\internal\packet.h" />
- <ClInclude Include="include\internal\param_build_set.h" />
- <ClInclude Include="include\internal\passphrase.h" />
- <ClInclude Include="include\internal\property.h" />
- <ClInclude Include="include\internal\propertyerr.h" />
- <ClInclude Include="include\internal\provider.h" />
- <ClInclude Include="include\internal\refcount.h" />
- <ClInclude Include="include\internal\sha3.h" />
- <ClInclude Include="include\internal\sizes.h" />
- <ClInclude Include="include\internal\sm3.h" />
- <ClInclude Include="include\internal\sockets.h" />
- <ClInclude Include="include\internal\sslconf.h" />
- <ClInclude Include="include\internal\symhacks.h" />
- <ClInclude Include="include\internal\thread_once.h" />
- <ClInclude Include="include\internal\tlsgroups.h" />
- <ClInclude Include="include\internal\tsan_assist.h" />
- <ClInclude Include="include\internal\unicode.h" />
- <ClInclude Include="include\internal\__DECC_INCLUDE_EPILOGUE.H" />
- <ClInclude Include="include\internal\__DECC_INCLUDE_PROLOGUE.H" />
- <ClInclude Include="include\libcurl\include\curl\curl.h" />
- <ClInclude Include="include\libcurl\include\curl\curlver.h" />
- <ClInclude Include="include\libcurl\include\curl\easy.h" />
- <ClInclude Include="include\libcurl\include\curl\mprintf.h" />
- <ClInclude Include="include\libcurl\include\curl\multi.h" />
- <ClInclude Include="include\libcurl\include\curl\options.h" />
- <ClInclude Include="include\libcurl\include\curl\stdcheaders.h" />
- <ClInclude Include="include\libcurl\include\curl\system.h" />
- <ClInclude Include="include\libcurl\include\curl\typecheck-gcc.h" />
- <ClInclude Include="include\libcurl\include\curl\urlapi.h" />
- <ClInclude Include="include\MinHook.h" />
- <ClInclude Include="include\openssl\aes.h" />
- <ClInclude Include="include\openssl\asn1.h" />
- <ClInclude Include="include\openssl\asn1err.h" />
- <ClInclude Include="include\openssl\asn1t.h" />
- <ClInclude Include="include\openssl\asn1_mac.h" />
- <ClInclude Include="include\openssl\async.h" />
- <ClInclude Include="include\openssl\asyncerr.h" />
- <ClInclude Include="include\openssl\bio.h" />
- <ClInclude Include="include\openssl\bioerr.h" />
- <ClInclude Include="include\openssl\blowfish.h" />
- <ClInclude Include="include\openssl\bn.h" />
- <ClInclude Include="include\openssl\bnerr.h" />
- <ClInclude Include="include\openssl\buffer.h" />
- <ClInclude Include="include\openssl\buffererr.h" />
- <ClInclude Include="include\openssl\camellia.h" />
- <ClInclude Include="include\openssl\cast.h" />
- <ClInclude Include="include\openssl\cmac.h" />
- <ClInclude Include="include\openssl\cmp.h" />
- <ClInclude Include="include\openssl\cmperr.h" />
- <ClInclude Include="include\openssl\cmp_util.h" />
- <ClInclude Include="include\openssl\cms.h" />
- <ClInclude Include="include\openssl\cmserr.h" />
- <ClInclude Include="include\openssl\comp.h" />
- <ClInclude Include="include\openssl\comperr.h" />
- <ClInclude Include="include\openssl\conf.h" />
- <ClInclude Include="include\openssl\conferr.h" />
- <ClInclude Include="include\openssl\configuration.h" />
- <ClInclude Include="include\openssl\conftypes.h" />
- <ClInclude Include="include\openssl\conf_api.h" />
- <ClInclude Include="include\openssl\core.h" />
- <ClInclude Include="include\openssl\core_dispatch.h" />
- <ClInclude Include="include\openssl\core_names.h" />
- <ClInclude Include="include\openssl\core_object.h" />
- <ClInclude Include="include\openssl\crmf.h" />
- <ClInclude Include="include\openssl\crmferr.h" />
- <ClInclude Include="include\openssl\crypto.h" />
- <ClInclude Include="include\openssl\cryptoerr.h" />
- <ClInclude Include="include\openssl\cryptoerr_legacy.h" />
- <ClInclude Include="include\openssl\ct.h" />
- <ClInclude Include="include\openssl\cterr.h" />
- <ClInclude Include="include\openssl\decoder.h" />
- <ClInclude Include="include\openssl\decodererr.h" />
- <ClInclude Include="include\openssl\des.h" />
- <ClInclude Include="include\openssl\dh.h" />
- <ClInclude Include="include\openssl\dherr.h" />
- <ClInclude Include="include\openssl\dsa.h" />
- <ClInclude Include="include\openssl\dsaerr.h" />
- <ClInclude Include="include\openssl\dtls1.h" />
- <ClInclude Include="include\openssl\ebcdic.h" />
- <ClInclude Include="include\openssl\ec.h" />
- <ClInclude Include="include\openssl\ecdh.h" />
- <ClInclude Include="include\openssl\ecdsa.h" />
- <ClInclude Include="include\openssl\ecerr.h" />
- <ClInclude Include="include\openssl\encoder.h" />
- <ClInclude Include="include\openssl\encodererr.h" />
- <ClInclude Include="include\openssl\engine.h" />
- <ClInclude Include="include\openssl\engineerr.h" />
- <ClInclude Include="include\openssl\err.h" />
- <ClInclude Include="include\openssl\ess.h" />
- <ClInclude Include="include\openssl\esserr.h" />
- <ClInclude Include="include\openssl\evp.h" />
- <ClInclude Include="include\openssl\evperr.h" />
- <ClInclude Include="include\openssl\e_os2.h" />
- <ClInclude Include="include\openssl\fipskey.h" />
- <ClInclude Include="include\openssl\fips_names.h" />
- <ClInclude Include="include\openssl\hmac.h" />
- <ClInclude Include="include\openssl\http.h" />
- <ClInclude Include="include\openssl\httperr.h" />
- <ClInclude Include="include\openssl\idea.h" />
- <ClInclude Include="include\openssl\kdf.h" />
- <ClInclude Include="include\openssl\kdferr.h" />
- <ClInclude Include="include\openssl\lhash.h" />
- <ClInclude Include="include\openssl\macros.h" />
- <ClInclude Include="include\openssl\md2.h" />
- <ClInclude Include="include\openssl\md4.h" />
- <ClInclude Include="include\openssl\md5.h" />
- <ClInclude Include="include\openssl\mdc2.h" />
- <ClInclude Include="include\openssl\modes.h" />
- <ClInclude Include="include\openssl\objects.h" />
- <ClInclude Include="include\openssl\objectserr.h" />
- <ClInclude Include="include\openssl\obj_mac.h" />
- <ClInclude Include="include\openssl\ocsp.h" />
- <ClInclude Include="include\openssl\ocsperr.h" />
- <ClInclude Include="include\openssl\opensslconf.h" />
- <ClInclude Include="include\openssl\opensslv.h" />
- <ClInclude Include="include\openssl\ossl_typ.h" />
- <ClInclude Include="include\openssl\params.h" />
- <ClInclude Include="include\openssl\param_build.h" />
- <ClInclude Include="include\openssl\pem.h" />
- <ClInclude Include="include\openssl\pem2.h" />
- <ClInclude Include="include\openssl\pemerr.h" />
- <ClInclude Include="include\openssl\pkcs12.h" />
- <ClInclude Include="include\openssl\pkcs12err.h" />
- <ClInclude Include="include\openssl\pkcs7.h" />
- <ClInclude Include="include\openssl\pkcs7err.h" />
- <ClInclude Include="include\openssl\proverr.h" />
- <ClInclude Include="include\openssl\provider.h" />
- <ClInclude Include="include\openssl\prov_ssl.h" />
- <ClInclude Include="include\openssl\rand.h" />
- <ClInclude Include="include\openssl\randerr.h" />
- <ClInclude Include="include\openssl\rc2.h" />
- <ClInclude Include="include\openssl\rc4.h" />
- <ClInclude Include="include\openssl\rc5.h" />
- <ClInclude Include="include\openssl\ripemd.h" />
- <ClInclude Include="include\openssl\rsa.h" />
- <ClInclude Include="include\openssl\rsaerr.h" />
- <ClInclude Include="include\openssl\safestack.h" />
- <ClInclude Include="include\openssl\seed.h" />
- <ClInclude Include="include\openssl\self_test.h" />
- <ClInclude Include="include\openssl\sha.h" />
- <ClInclude Include="include\openssl\srp.h" />
- <ClInclude Include="include\openssl\srtp.h" />
- <ClInclude Include="include\openssl\ssl.h" />
- <ClInclude Include="include\openssl\ssl2.h" />
- <ClInclude Include="include\openssl\ssl3.h" />
- <ClInclude Include="include\openssl\sslerr.h" />
- <ClInclude Include="include\openssl\sslerr_legacy.h" />
- <ClInclude Include="include\openssl\stack.h" />
- <ClInclude Include="include\openssl\store.h" />
- <ClInclude Include="include\openssl\storeerr.h" />
- <ClInclude Include="include\openssl\symhacks.h" />
- <ClInclude Include="include\openssl\tls1.h" />
- <ClInclude Include="include\openssl\trace.h" />
- <ClInclude Include="include\openssl\ts.h" />
- <ClInclude Include="include\openssl\tserr.h" />
- <ClInclude Include="include\openssl\txt_db.h" />
- <ClInclude Include="include\openssl\types.h" />
- <ClInclude Include="include\openssl\ui.h" />
- <ClInclude Include="include\openssl\uierr.h" />
- <ClInclude Include="include\openssl\whrlpool.h" />
- <ClInclude Include="include\openssl\x509.h" />
- <ClInclude Include="include\openssl\x509err.h" />
- <ClInclude Include="include\openssl\x509v3.h" />
- <ClInclude Include="include\openssl\x509v3err.h" />
- <ClInclude Include="include\openssl\x509_vfy.h" />
- <ClInclude Include="include\openssl\__DECC_INCLUDE_EPILOGUE.H" />
- <ClInclude Include="include\openssl\__DECC_INCLUDE_PROLOGUE.H" />
- <ClInclude Include="include\rapidjson\allocators.h" />
- <ClInclude Include="include\rapidjson\document.h" />
- <ClInclude Include="include\rapidjson\encodedstream.h" />
- <ClInclude Include="include\rapidjson\encodings.h" />
- <ClInclude Include="include\rapidjson\error\en.h" />
- <ClInclude Include="include\rapidjson\error\error.h" />
- <ClInclude Include="include\rapidjson\filereadstream.h" />
- <ClInclude Include="include\rapidjson\filewritestream.h" />
- <ClInclude Include="include\rapidjson\fwd.h" />
- <ClInclude Include="include\rapidjson\internal\biginteger.h" />
- <ClInclude Include="include\rapidjson\internal\diyfp.h" />
- <ClInclude Include="include\rapidjson\internal\dtoa.h" />
- <ClInclude Include="include\rapidjson\internal\ieee754.h" />
- <ClInclude Include="include\rapidjson\internal\itoa.h" />
- <ClInclude Include="include\rapidjson\internal\meta.h" />
- <ClInclude Include="include\rapidjson\internal\pow10.h" />
- <ClInclude Include="include\rapidjson\internal\regex.h" />
- <ClInclude Include="include\rapidjson\internal\stack.h" />
- <ClInclude Include="include\rapidjson\internal\strfunc.h" />
- <ClInclude Include="include\rapidjson\internal\strtod.h" />
- <ClInclude Include="include\rapidjson\internal\swap.h" />
- <ClInclude Include="include\rapidjson\istreamwrapper.h" />
- <ClInclude Include="include\rapidjson\memorybuffer.h" />
- <ClInclude Include="include\rapidjson\memorystream.h" />
- <ClInclude Include="include\rapidjson\msinttypes\inttypes.h" />
- <ClInclude Include="include\rapidjson\msinttypes\stdint.h" />
- <ClInclude Include="include\rapidjson\ostreamwrapper.h" />
- <ClInclude Include="include\rapidjson\pointer.h" />
- <ClInclude Include="include\rapidjson\prettywriter.h" />
- <ClInclude Include="include\rapidjson\rapidjson.h" />
- <ClInclude Include="include\rapidjson\reader.h" />
- <ClInclude Include="include\rapidjson\schema.h" />
- <ClInclude Include="include\rapidjson\stream.h" />
- <ClInclude Include="include\rapidjson\stringbuffer.h" />
- <ClInclude Include="include\rapidjson\writer.h" />
- <ClInclude Include="include\spdlog\async.h" />
- <ClInclude Include="include\spdlog\async_logger-inl.h" />
- <ClInclude Include="include\spdlog\async_logger.h" />
- <ClInclude Include="include\spdlog\cfg\argv.h" />
- <ClInclude Include="include\spdlog\cfg\env.h" />
- <ClInclude Include="include\spdlog\cfg\helpers-inl.h" />
- <ClInclude Include="include\spdlog\cfg\helpers.h" />
- <ClInclude Include="include\spdlog\common-inl.h" />
- <ClInclude Include="include\spdlog\common.h" />
- <ClInclude Include="include\spdlog\details\backtracer-inl.h" />
- <ClInclude Include="include\spdlog\details\backtracer.h" />
- <ClInclude Include="include\spdlog\details\circular_q.h" />
- <ClInclude Include="include\spdlog\details\console_globals.h" />
- <ClInclude Include="include\spdlog\details\file_helper-inl.h" />
- <ClInclude Include="include\spdlog\details\file_helper.h" />
- <ClInclude Include="include\spdlog\details\fmt_helper.h" />
- <ClInclude Include="include\spdlog\details\log_msg-inl.h" />
- <ClInclude Include="include\spdlog\details\log_msg.h" />
- <ClInclude Include="include\spdlog\details\log_msg_buffer-inl.h" />
- <ClInclude Include="include\spdlog\details\log_msg_buffer.h" />
- <ClInclude Include="include\spdlog\details\mpmc_blocking_q.h" />
- <ClInclude Include="include\spdlog\details\null_mutex.h" />
- <ClInclude Include="include\spdlog\details\os-inl.h" />
- <ClInclude Include="include\spdlog\details\os.h" />
- <ClInclude Include="include\spdlog\details\periodic_worker-inl.h" />
- <ClInclude Include="include\spdlog\details\periodic_worker.h" />
- <ClInclude Include="include\spdlog\details\registry-inl.h" />
- <ClInclude Include="include\spdlog\details\registry.h" />
- <ClInclude Include="include\spdlog\details\synchronous_factory.h" />
- <ClInclude Include="include\spdlog\details\tcp_client-windows.h" />
- <ClInclude Include="include\spdlog\details\tcp_client.h" />
- <ClInclude Include="include\spdlog\details\thread_pool-inl.h" />
- <ClInclude Include="include\spdlog\details\thread_pool.h" />
- <ClInclude Include="include\spdlog\details\windows_include.h" />
- <ClInclude Include="include\spdlog\fmt\bin_to_hex.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\chrono.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\color.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\compile.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\core.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\format-inl.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\format.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\locale.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\os.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\ostream.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\posix.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\printf.h" />
- <ClInclude Include="include\spdlog\fmt\bundled\ranges.h" />
- <ClInclude Include="include\spdlog\fmt\chrono.h" />
- <ClInclude Include="include\spdlog\fmt\fmt.h" />
- <ClInclude Include="include\spdlog\fmt\ostr.h" />
- <ClInclude Include="include\spdlog\formatter.h" />
- <ClInclude Include="include\spdlog\fwd.h" />
- <ClInclude Include="include\spdlog\logger-inl.h" />
- <ClInclude Include="include\spdlog\logger.h" />
- <ClInclude Include="include\spdlog\pattern_formatter-inl.h" />
- <ClInclude Include="include\spdlog\pattern_formatter.h" />
- <ClInclude Include="include\spdlog\sinks\android_sink.h" />
- <ClInclude Include="include\spdlog\sinks\ansicolor_sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\ansicolor_sink.h" />
- <ClInclude Include="include\spdlog\sinks\base_sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\base_sink.h" />
- <ClInclude Include="include\spdlog\sinks\basic_file_sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\basic_file_sink.h" />
- <ClInclude Include="include\spdlog\sinks\daily_file_sink.h" />
- <ClInclude Include="include\spdlog\sinks\dist_sink.h" />
- <ClInclude Include="include\spdlog\sinks\dup_filter_sink.h" />
- <ClInclude Include="include\spdlog\sinks\hourly_file_sink.h" />
- <ClInclude Include="include\spdlog\sinks\msvc_sink.h" />
- <ClInclude Include="include\spdlog\sinks\null_sink.h" />
- <ClInclude Include="include\spdlog\sinks\ostream_sink.h" />
- <ClInclude Include="include\spdlog\sinks\ringbuffer_sink.h" />
- <ClInclude Include="include\spdlog\sinks\rotating_file_sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\rotating_file_sink.h" />
- <ClInclude Include="include\spdlog\sinks\sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\sink.h" />
- <ClInclude Include="include\spdlog\sinks\stdout_color_sinks-inl.h" />
- <ClInclude Include="include\spdlog\sinks\stdout_color_sinks.h" />
- <ClInclude Include="include\spdlog\sinks\stdout_sinks-inl.h" />
- <ClInclude Include="include\spdlog\sinks\stdout_sinks.h" />
- <ClInclude Include="include\spdlog\sinks\syslog_sink.h" />
- <ClInclude Include="include\spdlog\sinks\systemd_sink.h" />
- <ClInclude Include="include\spdlog\sinks\tcp_sink.h" />
- <ClInclude Include="include\spdlog\sinks\wincolor_sink-inl.h" />
- <ClInclude Include="include\spdlog\sinks\wincolor_sink.h" />
- <ClInclude Include="include\spdlog\sinks\win_eventlog_sink.h" />
- <ClInclude Include="include\spdlog\spdlog-inl.h" />
- <ClInclude Include="include\spdlog\spdlog.h" />
- <ClInclude Include="include\spdlog\stopwatch.h" />
- <ClInclude Include="include\spdlog\tweakme.h" />
- <ClInclude Include="include\spdlog\version.h" />
- <ClInclude Include="logging.h" />
- <ClInclude Include="main.h" />
- <ClInclude Include="masterserver.h" />
- <ClInclude Include="memalloc.h" />
- <ClInclude Include="misccommands.h" />
- <ClInclude Include="modmanager.h" />
<ClInclude Include="pch.h" />
- <ClInclude Include="playlist.h" />
- <ClInclude Include="rpakfilesystem.h" />
- <ClInclude Include="serverauthentication.h" />
- <ClInclude Include="serverpresence.h" />
- <ClInclude Include="sourceconsole.h" />
- <ClInclude Include="sourceinterface.h" />
- <ClInclude Include="squirrel.h" />
- <ClInclude Include="exploitfixes_utf8parser.cpp" />
- <ClInclude Include="structs.h" />
- <ClInclude Include="squirrelautobind.h" />
- <ClInclude Include="tier0.h" />
- <ClInclude Include="vector.h" />
- <ClInclude Include="version.h" />
+ <ClInclude Include="plugins\plugins.h" />
+ <ClInclude Include="plugins\plugin_abi.h" />
+ <ClInclude Include="scripts\scripthttprequesthandler.h" />
+ <ClInclude Include="server\auth\bansystem.h" />
+ <ClInclude Include="server\auth\serverauthentication.h" />
+ <ClInclude Include="server\bots.h" />
+ <ClInclude Include="server\r2server.h" />
+ <ClInclude Include="server\serverchathooks.h" />
+ <ClInclude Include="server\serverpresence.h" />
+ <ClInclude Include="shared\keyvalues.h" />
+ <ClInclude Include="shared\maxplayers.h" />
+ <ClInclude Include="shared\misccommands.h" />
+ <ClInclude Include="shared\playlist.h" />
+ <ClInclude Include="squirrel\squirrel.h" />
+ <ClInclude Include="squirrel\squirrelautobind.h" />
+ <ClInclude Include="squirrel\squirrelclasstypes.h" />
+ <ClInclude Include="squirrel\squirreldatatypes.h" />
+ <ClInclude Include="util\version.h" />
</ItemGroup>
<ItemGroup>
- <ClCompile Include="audio.cpp" />
- <ClCompile Include="bansystem.cpp" />
- <ClCompile Include="bits.cpp" />
- <ClCompile Include="bots.cpp" />
- <ClCompile Include="buildainfile.cpp" />
- <ClCompile Include="chatcommand.cpp" />
- <ClCompile Include="clientauthhooks.cpp" />
- <ClCompile Include="clientchathooks.cpp" />
- <ClCompile Include="clientruihooks.cpp" />
- <ClCompile Include="clientvideooverrides.cpp" />
- <ClCompile Include="concommand.cpp" />
- <ClCompile Include="diskvmtfixes.cpp" />
- <ClCompile Include="exploitfixes_lzss.cpp" />
- <ClCompile Include="kb_act.cpp" />
- <ClCompile Include="keyvalues.cpp" />
- <ClCompile Include="limits.cpp" />
- <ClCompile Include="color.cpp" />
- <ClCompile Include="loghooks.cpp" />
- <ClCompile Include="memory.cpp" />
- <ClCompile Include="nsprefix.cpp" />
- <ClCompile Include="convar.cpp" />
- <ClCompile Include="crashhandler.cpp" />
- <ClCompile Include="cvar.cpp" />
- <ClCompile Include="debugoverlay.cpp" />
- <ClCompile Include="dedicated.cpp" />
- <ClCompile Include="dedicatedmaterialsystem.cpp" />
- <ClCompile Include="demofixes.cpp" />
- <ClCompile Include="dllmain.cpp" />
- <ClCompile Include="filesystem.cpp" />
- <ClCompile Include="hooks.cpp" />
- <ClCompile Include="host.cpp" />
- <ClCompile Include="hoststate.cpp" />
- <ClCompile Include="modkeyvalues.cpp" />
- <ClCompile Include="latencyflex.cpp" />
- <ClCompile Include="localchatwriter.cpp" />
- <ClCompile Include="printmaps.cpp" />
- <ClCompile Include="maxplayers.cpp" />
- <ClCompile Include="languagehooks.cpp" />
- <ClCompile Include="memalloc.cpp" />
- <ClCompile Include="misccommands.cpp" />
- <ClCompile Include="miscserverfixes.cpp" />
- <ClCompile Include="modlocalisation.cpp" />
- <ClCompile Include="logging.cpp" />
- <ClCompile Include="masterserver.cpp" />
- <ClCompile Include="modmanager.cpp" />
+ <None Include="..\include\spdlog\fmt\bundled\LICENSE.rst" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="client\audio.cpp" />
+ <ClCompile Include="client\chatcommand.cpp" />
+ <ClCompile Include="client\clientauthhooks.cpp" />
+ <ClCompile Include="client\clientruihooks.cpp" />
+ <ClCompile Include="client\clientvideooverrides.cpp" />
+ <ClCompile Include="client\rejectconnectionfixes.cpp" />
+ <ClCompile Include="client\debugoverlay.cpp" />
+ <ClCompile Include="client\demofixes.cpp" />
+ <ClCompile Include="client\diskvmtfixes.cpp" />
+ <ClCompile Include="client\languagehooks.cpp" />
+ <ClCompile Include="client\latencyflex.cpp" />
+ <ClCompile Include="client\localchatwriter.cpp" />
+ <ClCompile Include="client\modlocalisation.cpp" />
+ <ClCompile Include="client\r2client.cpp" />
+ <ClCompile Include="config\profile.cpp" />
+ <ClCompile Include="core\convar\concommand.cpp" />
+ <ClCompile Include="core\convar\convar.cpp" />
+ <ClCompile Include="core\convar\cvar.cpp" />
+ <ClCompile Include="core\filesystem\filesystem.cpp" />
+ <ClCompile Include="core\filesystem\rpakfilesystem.cpp" />
+ <ClCompile Include="core\hooks.cpp" />
+ <ClCompile Include="core\math\bits.cpp" />
+ <ClCompile Include="core\math\color.cpp" />
+ <ClCompile Include="core\memalloc.cpp" />
+ <ClCompile Include="core\memory.cpp" />
+ <ClCompile Include="core\sourceinterface.cpp" />
+ <ClCompile Include="core\tier0.cpp" />
+ <ClCompile Include="dedicated\dedicated.cpp" />
+ <ClCompile Include="dedicated\dedicatedmaterialsystem.cpp" />
+ <ClCompile Include="dllmain.cpp">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
+ </ClCompile>
+ <ClCompile Include="engine\host.cpp" />
+ <ClCompile Include="engine\hoststate.cpp" />
+ <ClCompile Include="engine\r2engine.cpp" />
+ <ClCompile Include="engine\runframe.cpp" />
+ <ClCompile Include="logging\crashhandler.cpp" />
+ <ClCompile Include="logging\logging.cpp" />
+ <ClCompile Include="logging\loghooks.cpp" />
+ <ClCompile Include="logging\sourceconsole.cpp" />
+ <ClCompile Include="masterserver\masterserver.cpp" />
+ <ClCompile Include="mods\compiled\kb_act.cpp" />
+ <ClCompile Include="mods\compiled\modkeyvalues.cpp" />
+ <ClCompile Include="mods\compiled\modpdef.cpp" />
+ <ClCompile Include="mods\compiled\modscriptsrson.cpp" />
+ <ClCompile Include="mods\modmanager.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
- <ClCompile Include="modpdef.cpp" />
- <ClCompile Include="playlist.cpp" />
- <ClCompile Include="plugins.cpp" />
- <ClCompile Include="printcommands.cpp" />
- <ClCompile Include="r2client.cpp" />
- <ClCompile Include="r2engine.cpp" />
- <ClCompile Include="r2server.cpp" />
- <ClCompile Include="rejectconnectionfixes.cpp" />
- <ClCompile Include="rpakfilesystem.cpp" />
- <ClCompile Include="runframe.cpp" />
- <ClCompile Include="scriptbrowserhooks.cpp" />
- <ClCompile Include="scriptjson.cpp" />
- <ClCompile Include="scriptdatatables.cpp" />
- <ClCompile Include="scriptmainmenupromos.cpp" />
- <ClCompile Include="scriptmodmenu.cpp" />
- <ClCompile Include="scriptserverbrowser.cpp" />
- <ClCompile Include="modscriptsrson.cpp" />
- <ClCompile Include="scriptuserinfo.cpp" />
- <ClCompile Include="scriptutility.cpp" />
- <ClCompile Include="serverauthentication.cpp" />
- <ClCompile Include="miscserverscript.cpp" />
- <ClCompile Include="serverchathooks.cpp" />
- <ClCompile Include="scriptservertoclientstringcommand.cpp" />
- <ClCompile Include="serverpresence.cpp" />
- <ClCompile Include="sourceconsole.cpp" />
- <ClCompile Include="sourceinterface.cpp" />
- <ClCompile Include="squirrel.cpp" />
- <ClCompile Include="exploitfixes.cpp" />
- <ClCompile Include="squirrelautobind.cpp" />
- <ClCompile Include="tier0.cpp" />
- <ClCompile Include="version.cpp" />
- </ItemGroup>
- <ItemGroup>
- <None Include="include\crypto\bn_conf.h.in" />
- <None Include="include\crypto\dso_conf.h.in" />
- <None Include="include\openssl\asn1.h.in" />
- <None Include="include\openssl\asn1t.h.in" />
- <None Include="include\openssl\bio.h.in" />
- <None Include="include\openssl\cmp.h.in" />
- <None Include="include\openssl\cms.h.in" />
- <None Include="include\openssl\conf.h.in" />
- <None Include="include\openssl\configuration.h.in" />
- <None Include="include\openssl\crmf.h.in" />
- <None Include="include\openssl\crypto.h.in" />
- <None Include="include\openssl\ct.h.in" />
- <None Include="include\openssl\err.h.in" />
- <None Include="include\openssl\ess.h.in" />
- <None Include="include\openssl\fipskey.h.in" />
- <None Include="include\openssl\lhash.h.in" />
- <None Include="include\openssl\ocsp.h.in" />
- <None Include="include\openssl\opensslv.h.in" />
- <None Include="include\openssl\pkcs12.h.in" />
- <None Include="include\openssl\pkcs7.h.in" />
- <None Include="include\openssl\safestack.h.in" />
- <None Include="include\openssl\srp.h.in" />
- <None Include="include\openssl\ssl.h.in" />
- <None Include="include\openssl\ui.h.in" />
- <None Include="include\openssl\x509.h.in" />
- <None Include="include\openssl\x509v3.h.in" />
- <None Include="include\openssl\x509_vfy.h.in" />
- <None Include="include\spdlog\fmt\bundled\LICENSE.rst" />
+ <ClCompile Include="plugins\plugins.cpp" />
+ <ClCompile Include="scripts\client\clientchathooks.cpp" />
+ <ClCompile Include="scripts\client\scriptbrowserhooks.cpp" />
+ <ClCompile Include="scripts\client\scriptmainmenupromos.cpp" />
+ <ClCompile Include="scripts\client\scriptmodmenu.cpp" />
+ <ClCompile Include="scripts\client\scriptserverbrowser.cpp" />
+ <ClCompile Include="scripts\client\scriptservertoclientstringcommand.cpp" />
+ <ClCompile Include="scripts\scriptdatatables.cpp" />
+ <ClCompile Include="scripts\scripthttprequesthandler.cpp" />
+ <ClCompile Include="scripts\scriptjson.cpp" />
+ <ClCompile Include="scripts\scriptutility.cpp" />
+ <ClCompile Include="scripts\server\miscserverfixes.cpp" />
+ <ClCompile Include="scripts\server\miscserverscript.cpp" />
+ <ClCompile Include="scripts\server\scriptuserinfo.cpp" />
+ <ClCompile Include="server\auth\bansystem.cpp" />
+ <ClCompile Include="server\auth\serverauthentication.cpp" />
+ <ClCompile Include="server\bots.cpp" />
+ <ClCompile Include="server\buildainfile.cpp" />
+ <ClCompile Include="server\r2server.cpp" />
+ <ClCompile Include="server\serverchathooks.cpp" />
+ <ClCompile Include="server\serverpresence.cpp" />
+ <ClCompile Include="shared\exploit_fixes\exploitfixes.cpp" />
+ <ClCompile Include="shared\exploit_fixes\exploitfixes_lzss.cpp" />
+ <ClCompile Include="shared\exploit_fixes\exploitfixes_utf8parser.cpp" />
+ <ClCompile Include="shared\exploit_fixes\ns_limits.cpp" />
+ <ClCompile Include="shared\keyvalues.cpp" />
+ <ClCompile Include="shared\maxplayers.cpp" />
+ <ClCompile Include="shared\misccommands.cpp" />
+ <ClCompile Include="shared\playlist.cpp" />
+ <ClCompile Include="squirrel\squirrel.cpp" />
+ <ClCompile Include="squirrel\squirrelautobind.cpp" />
+ <ClCompile Include="util\printcommands.cpp" />
+ <ClCompile Include="util\printmaps.cpp" />
+ <ClCompile Include="util\version.cpp" />
</ItemGroup>
<ItemGroup>
<MASM Include="audio_asm.asm" />
diff --git a/NorthstarDLL/NorthstarDLL.vcxproj.filters b/NorthstarDLL/NorthstarDLL.vcxproj.filters
index 4f5ccbc5..5d964951 100644
--- a/NorthstarDLL/NorthstarDLL.vcxproj.filters
+++ b/NorthstarDLL/NorthstarDLL.vcxproj.filters
@@ -16,12 +16,6 @@
<Filter Include="Header Files\include">
<UniqueIdentifier>{d4199e4b-10d2-43ce-af9c-e1fa79e1e64e}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Client">
- <UniqueIdentifier>{b6f79919-9735-476d-8798-067a75cbeca0}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\Client">
- <UniqueIdentifier>{ca657be5-c2d8-4322-a689-1154aaafe57b}</UniqueIdentifier>
- </Filter>
<Filter Include="Header Files\include\spdlog">
<UniqueIdentifier>{8596cc1c-0492-4467-91e3-1f03b7e19f77}</UniqueIdentifier>
</Filter>
@@ -52,1783 +46,1384 @@
<Filter Include="Header Files\include\rapidjson\msinttypes">
<UniqueIdentifier>{85aacdee-0f92-4ec4-b20c-0739c1175055}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Server">
- <UniqueIdentifier>{3d41d3fc-8a3b-4358-b3e8-4f06dc96abfe}</UniqueIdentifier>
+ <Filter Include="Header Files\include\openssl">
+ <UniqueIdentifier>{4cb0dd89-5f16-4549-a864-34ca3075352a}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Server\Authentication">
- <UniqueIdentifier>{d69760a9-d5ec-4f3e-8f43-f74041654d44}</UniqueIdentifier>
+ <Filter Include="Header Files\include\libcurl">
+ <UniqueIdentifier>{ea1e17a6-40b7-4e1b-8edb-e9ae704ce604}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Server">
- <UniqueIdentifier>{365e5c1f-4b2f-4d8b-a1d8-cdef401ca689}</UniqueIdentifier>
+ <Filter Include="Source Files\client">
+ <UniqueIdentifier>{757f33f0-f17b-4ecd-8b95-2157b2d2f03c}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Server\Authentication">
- <UniqueIdentifier>{24fd0855-9288-4129-93ba-c6cafdc98d1b}</UniqueIdentifier>
+ <Filter Include="Source Files\config">
+ <UniqueIdentifier>{7f9657c5-d4c7-464f-b2f6-d9afbbe0bb42}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\include\openssl">
- <UniqueIdentifier>{4cb0dd89-5f16-4549-a864-34ca3075352a}</UniqueIdentifier>
+ <Filter Include="Source Files\dedicated">
+ <UniqueIdentifier>{e45d18f7-8992-47ac-837c-4cb99f5a0487}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\include\openssl\openssl">
- <UniqueIdentifier>{914d8b8f-6b19-4f23-b746-f40062d72906}</UniqueIdentifier>
+ <Filter Include="Source Files\masterserver">
+ <UniqueIdentifier>{62167757-13c1-4f57-a8f5-15a3c800997b}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\include\openssl\internal">
- <UniqueIdentifier>{09516029-fac7-4235-ad61-402977534a0b}</UniqueIdentifier>
+ <Filter Include="Source Files\mods">
+ <UniqueIdentifier>{25e33568-4125-406d-8661-01ae2abf61a5}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\include\openssl\crypto">
- <UniqueIdentifier>{8cc1ae44-9dbf-4719-91a2-82e00b8d78e2}</UniqueIdentifier>
+ <Filter Include="Source Files\mods\compiled">
+ <UniqueIdentifier>{008e67ce-bf6a-4792-9ded-69a434edea00}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\include\libcurl">
- <UniqueIdentifier>{ea1e17a6-40b7-4e1b-8edb-e9ae704ce604}</UniqueIdentifier>
+ <Filter Include="Source Files\plugins">
+ <UniqueIdentifier>{dbf03bda-dd0a-44ce-a6b1-361f7f21a10e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\server">
+ <UniqueIdentifier>{d83e1c5c-c9c7-47a2-b406-9b5a93e3cc29}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\scripts">
+ <UniqueIdentifier>{57fb0fa6-7665-4d37-bb2b-6f5570023d83}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\server\auth">
+ <UniqueIdentifier>{08436037-e86f-4410-8db6-37c8b10ca5a1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\squirrel">
+ <UniqueIdentifier>{e8fb33f4-47b5-4fd9-b6c0-2ca1bd8cac81}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\util">
+ <UniqueIdentifier>{d60e54d0-b4e4-4210-af6b-59bdd84bed0f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\client">
+ <UniqueIdentifier>{06c7928e-bf66-446e-9cde-c8135c79d14b}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Client\Scripted">
- <UniqueIdentifier>{51910ba0-2ff8-461d-9f67-8d7907b57d22}</UniqueIdentifier>
+ <Filter Include="Header Files\config">
+ <UniqueIdentifier>{0b8b4a41-6131-4388-85d2-f5754a304610}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Server\Scripted">
- <UniqueIdentifier>{325e0d7d-6832-496d-8d8e-968fdfa5dd40}</UniqueIdentifier>
+ <Filter Include="Header Files\dedicated">
+ <UniqueIdentifier>{9ccd8616-d961-4c37-96e0-3219bd293afb}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Server\Scripted">
- <UniqueIdentifier>{802d0771-62f1-4733-89f9-57a4d8864b8d}</UniqueIdentifier>
+ <Filter Include="Header Files\exploit_fixes">
+ <UniqueIdentifier>{a9390f6a-5031-4c65-a636-82cf90899435}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Console">
- <UniqueIdentifier>{04fd662a-6e70-494c-b720-c694a5cc2fb1}</UniqueIdentifier>
+ <Filter Include="Header Files\hooks">
+ <UniqueIdentifier>{acf049ba-358a-4520-8813-2f802ce7167e}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Convar">
- <UniqueIdentifier>{a18afb37-5fdd-4340-a6b4-a6541593e398}</UniqueIdentifier>
+ <Filter Include="Header Files\masterserver">
+ <UniqueIdentifier>{0075910c-80c9-490f-a0d4-f9e410e4a918}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Exploit Fixes">
- <UniqueIdentifier>{4a8a695a-a103-4b1f-b314-0ec19a253119}</UniqueIdentifier>
+ <Filter Include="Header Files\mods">
+ <UniqueIdentifier>{31143dec-abe6-477a-9cae-045c5b57380b}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Filesystem">
- <UniqueIdentifier>{d8a83b5e-9a23-4124-824f-eab37880cb08}</UniqueIdentifier>
+ <Filter Include="Header Files\plugins">
+ <UniqueIdentifier>{c6c4746d-d6e1-4dba-a3fc-e645b28ac83f}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Game Functions">
- <UniqueIdentifier>{2cbddb28-0b17-4881-847d-8773da52b268}</UniqueIdentifier>
+ <Filter Include="Header Files\scripts">
+ <UniqueIdentifier>{3fba68ef-d715-4e18-b4a2-05d3fee00e2d}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Hooks">
- <UniqueIdentifier>{4db0d1e9-9035-457f-87f1-5dc3f13b6b9e}</UniqueIdentifier>
+ <Filter Include="Header Files\server">
+ <UniqueIdentifier>{ae9c5353-a3ab-44a9-a328-91df6aa8c80e}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Math">
- <UniqueIdentifier>{59b0f68f-daa7-4641-b6fa-8464b56da2bb}</UniqueIdentifier>
+ <Filter Include="Header Files\server\auth">
+ <UniqueIdentifier>{87869634-fa0f-48f8-a306-94d5a8157e1e}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Mods">
- <UniqueIdentifier>{3e892d07-2239-44da-9cf3-c288a34cf9a2}</UniqueIdentifier>
+ <Filter Include="Header Files\squirrel">
+ <UniqueIdentifier>{0ad64562-eb98-4015-a4fc-6fdc63ac9322}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Mods\Compiled Assets">
- <UniqueIdentifier>{14fc0931-acad-46ec-a55e-94f4469d4235}</UniqueIdentifier>
+ <Filter Include="Header Files\util">
+ <UniqueIdentifier>{13d0affc-1b4d-4090-8ad6-e9ae8fc56599}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Dedicated Server">
- <UniqueIdentifier>{947835db-67d6-42c0-870d-62743f85231f}</UniqueIdentifier>
+ <Filter Include="Source Files\engine">
+ <UniqueIdentifier>{b264a27d-619b-49b3-acbb-4e138ba29daf}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Console">
- <UniqueIdentifier>{bf0769d8-40fd-4701-85e9-7ed94aab2283}</UniqueIdentifier>
+ <Filter Include="Header Files\engine">
+ <UniqueIdentifier>{35658430-465d-433c-aa2d-b8266edb205a}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Convar">
- <UniqueIdentifier>{9751b551-5886-45d4-a039-cbd10445263d}</UniqueIdentifier>
+ <Filter Include="Source Files\shared">
+ <UniqueIdentifier>{0517ea0b-2eca-4b1c-a0d1-766d4d1d19d2}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Exploit Fixes">
- <UniqueIdentifier>{96101d42-72af-4fd1-8559-8d1d1ff66240}</UniqueIdentifier>
+ <Filter Include="Header Files\shared">
+ <UniqueIdentifier>{6d3f7657-6e58-4007-acd3-0b787f35406a}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Filesystem">
- <UniqueIdentifier>{ee3ba13a-3061-41d7-981d-328ac2596fd2}</UniqueIdentifier>
+ <Filter Include="Source Files\logging">
+ <UniqueIdentifier>{b9c0cfad-46d4-41ea-806e-daef3d66c381}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Game Functions">
- <UniqueIdentifier>{0c93d909-e0d6-4c35-a8a4-a13f681a1012}</UniqueIdentifier>
+ <Filter Include="Header Files\logging">
+ <UniqueIdentifier>{a4f7d529-0b21-48af-82ef-9fb971b802f7}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Hooks">
- <UniqueIdentifier>{94259c8c-5411-48bf-af4f-46ca32b7d0bb}</UniqueIdentifier>
+ <Filter Include="Header Files\core">
+ <UniqueIdentifier>{7ee4b436-a5d3-4680-bf99-bc6d7640ded3}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Math">
- <UniqueIdentifier>{44a83740-9d70-480d-9a7a-43b81f8eab9e}</UniqueIdentifier>
+ <Filter Include="Header Files\core\convar">
+ <UniqueIdentifier>{53a84980-9a1c-46b0-9b6d-06ec35781297}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Mods">
- <UniqueIdentifier>{6bbce8a5-38b4-4763-a7cb-4e98012ec245}</UniqueIdentifier>
+ <Filter Include="Header Files\core\filesystem">
+ <UniqueIdentifier>{01e215c3-9fa2-4de1-a3e0-b6a27396c68c}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Mods\Compiled Assets">
- <UniqueIdentifier>{826d5193-3ad0-434b-ba7c-dd24ed4bbd0c}</UniqueIdentifier>
+ <Filter Include="Header Files\core\math">
+ <UniqueIdentifier>{0fa069c9-302b-4be5-ba47-37e13e181d78}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Dedicated Server">
- <UniqueIdentifier>{0f1ba4c4-78ee-4b05-afa5-6f598063f5c1}</UniqueIdentifier>
+ <Filter Include="Source Files\scripts\client">
+ <UniqueIdentifier>{08a9ca37-8a6e-458c-9da8-6f3dc917ddf7}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Squirrel">
- <UniqueIdentifier>{ca669b16-b8bb-4654-993f-fffa44c914f1}</UniqueIdentifier>
+ <Filter Include="Source Files\scripts\server">
+ <UniqueIdentifier>{2c0b196e-3a11-4655-a158-8a1c84be4471}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Squirrel">
- <UniqueIdentifier>{26365f16-ff52-4e80-a01b-2ca020376c93}</UniqueIdentifier>
+ <Filter Include="Source Files\core">
+ <UniqueIdentifier>{122e2230-0605-40ef-8963-6e339d2c725e}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Scripted">
- <UniqueIdentifier>{7263403a-7550-4aa2-a724-f622ab200eed}</UniqueIdentifier>
+ <Filter Include="Source Files\core\convar">
+ <UniqueIdentifier>{4e0d0f0e-c8f2-4fe1-a787-57060c610553}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\core\math">
+ <UniqueIdentifier>{9e67fc99-0e20-4155-a167-5d251ea36581}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\core\filesystem">
+ <UniqueIdentifier>{62b3cff9-b2d8-4c1c-a2a6-1e2138c0ff88}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Source Files\shared\exploit_fixes">
+ <UniqueIdentifier>{9a819cdd-ebca-4cba-b231-76b6f98ed6ac}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\shared\exploit_fixes">
+ <UniqueIdentifier>{1a377c09-bd3d-4757-b3bc-9cd0a1e6ac0d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
- <ClInclude Include="pch.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="include\MinHook.h">
+ <ClInclude Include="..\include\httplib.h">
<Filter>Header Files\include</Filter>
</ClInclude>
- <ClInclude Include="main.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="sourceconsole.h">
- <Filter>Header Files\Client</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\async.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\async_logger.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\async_logger-inl.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\common.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\common-inl.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\formatter.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fwd.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\logger.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\logger-inl.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\pattern_formatter.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\pattern_formatter-inl.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\spdlog.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\spdlog-inl.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\stopwatch.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\tweakme.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\version.h">
- <Filter>Header Files\include\spdlog</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\cfg\argv.h">
- <Filter>Header Files\include\spdlog\cfg</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\cfg\env.h">
- <Filter>Header Files\include\spdlog\cfg</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\cfg\helpers.h">
- <Filter>Header Files\include\spdlog\cfg</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\cfg\helpers-inl.h">
- <Filter>Header Files\include\spdlog\cfg</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bin_to_hex.h">
- <Filter>Header Files\include\spdlog\fmt</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\chrono.h">
- <Filter>Header Files\include\spdlog\fmt</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\fmt.h">
- <Filter>Header Files\include\spdlog\fmt</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\ostr.h">
- <Filter>Header Files\include\spdlog\fmt</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\chrono.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\color.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\compile.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\core.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\format.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\format-inl.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\locale.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\os.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\ostream.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\posix.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\printf.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\fmt\bundled\ranges.h">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\android_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\ansicolor_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\ansicolor_sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\base_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\base_sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\basic_file_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\basic_file_sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\daily_file_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\dist_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\dup_filter_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\hourly_file_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\msvc_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\null_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\ostream_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\ringbuffer_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\rotating_file_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\rotating_file_sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\stdout_color_sinks.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\stdout_color_sinks-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\stdout_sinks.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\stdout_sinks-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\syslog_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\systemd_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\tcp_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\win_eventlog_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\wincolor_sink.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\sinks\wincolor_sink-inl.h">
- <Filter>Header Files\include\spdlog\sinks</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\backtracer.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\backtracer-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\circular_q.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\console_globals.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\file_helper.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\file_helper-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\fmt_helper.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\log_msg.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\log_msg_buffer.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\log_msg_buffer-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\log_msg-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\mpmc_blocking_q.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\null_mutex.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\os.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\os-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\periodic_worker.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\periodic_worker-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\registry.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\registry-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\synchronous_factory.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\tcp_client.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\tcp_client-windows.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\thread_pool.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\thread_pool-inl.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\spdlog\details\windows_include.h">
- <Filter>Header Files\include\spdlog\details</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\allocators.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\document.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\encodedstream.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\encodings.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\filereadstream.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\filewritestream.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\fwd.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\istreamwrapper.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\memorybuffer.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\memorystream.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\ostreamwrapper.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\pointer.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\prettywriter.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\rapidjson.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\reader.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\schema.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\stream.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\stringbuffer.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\writer.h">
- <Filter>Header Files\include\rapidjson</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\error\en.h">
- <Filter>Header Files\include\rapidjson\error</Filter>
- </ClInclude>
- <ClInclude Include="include\rapidjson\error\error.h">
- <Filter>Header Files\include\rapidjson\error</Filter>
+ <ClInclude Include="..\include\MinHook.h">
+ <Filter>Header Files\include</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\biginteger.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\curl.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\diyfp.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\curlver.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\dtoa.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\easy.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\ieee754.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\mprintf.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\itoa.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\multi.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\meta.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\options.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\pow10.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\stdcheaders.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\regex.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\system.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\stack.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\typecheck-gcc.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\strfunc.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\libcurl\include\curl\urlapi.h">
+ <Filter>Header Files\include\libcurl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\strtod.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\openssl\__DECC_INCLUDE_EPILOGUE.H">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\internal\swap.h">
- <Filter>Header Files\include\rapidjson\internal</Filter>
+ <ClInclude Include="..\include\openssl\__DECC_INCLUDE_PROLOGUE.H">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\msinttypes\inttypes.h">
- <Filter>Header Files\include\rapidjson\msinttypes</Filter>
+ <ClInclude Include="..\include\openssl\aes.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\rapidjson\msinttypes\stdint.h">
- <Filter>Header Files\include\rapidjson\msinttypes</Filter>
+ <ClInclude Include="..\include\openssl\asn1.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="serverauthentication.h">
- <Filter>Header Files\Server\Authentication</Filter>
+ <ClInclude Include="..\include\openssl\asn1_mac.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\httplib.h">
- <Filter>Header Files\include</Filter>
+ <ClInclude Include="..\include\openssl\asn1err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\__DECC_INCLUDE_EPILOGUE.H">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\asn1t.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\__DECC_INCLUDE_PROLOGUE.H">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\async.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\aes.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\asyncerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\asn1.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\bio.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\asn1_mac.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\bioerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\asn1err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\blowfish.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\asn1t.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\bn.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\async.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\bnerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\asyncerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\buffer.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\bio.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\buffererr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\bioerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\camellia.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\blowfish.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cast.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\bn.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cmac.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\bnerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cmp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\buffer.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cmp_util.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\buffererr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cmperr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\camellia.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cms.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cast.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cmserr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cmac.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\comp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cmp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\comperr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cmp_util.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\conf.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cmperr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\conf_api.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cms.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\conferr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cmserr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\configuration.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\comp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\conftypes.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\comperr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\core.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\conf.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\core_dispatch.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\conf_api.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\core_names.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\conferr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\core_object.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\configuration.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\crmf.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\conftypes.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\crmferr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\core.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\crypto.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\core_dispatch.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cryptoerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\core_names.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cryptoerr_legacy.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\core_object.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ct.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\crmf.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\cterr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\crmferr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\decoder.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\crypto.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\decodererr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cryptoerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\des.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cryptoerr_legacy.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\dh.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ct.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\dherr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\cterr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\dsa.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\decoder.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\dsaerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\decodererr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\dtls1.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\des.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\e_os2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\dh.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ebcdic.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\dherr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ec.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\dsa.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ecdh.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\dsaerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ecdsa.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\dtls1.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ecerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\e_os2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\encoder.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ebcdic.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\encodererr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ec.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\engine.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ecdh.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\engineerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ecdsa.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ecerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ess.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\encoder.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\esserr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\encodererr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\evp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\engine.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\evperr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\engineerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\fips_names.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\fipskey.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ess.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\hmac.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\esserr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\http.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\evp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\httperr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\evperr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\idea.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\fips_names.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\kdf.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\fipskey.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\kdferr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\hmac.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\lhash.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\http.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\macros.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\httperr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\md2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\idea.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\md4.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\kdf.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\md5.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\kdferr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\mdc2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\lhash.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\modes.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\macros.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\obj_mac.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\md2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\objects.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\md4.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\objectserr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\md5.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ocsp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\mdc2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ocsperr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\modes.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\opensslconf.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\obj_mac.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\opensslv.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\objects.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ossl_typ.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\objectserr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\param_build.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ocsp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\params.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ocsperr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pem.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\opensslconf.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pem2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\opensslv.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pemerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ossl_typ.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pkcs7.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\param_build.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pkcs7err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\params.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pkcs12.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pem.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\pkcs12err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pem2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\prov_ssl.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pemerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\proverr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pkcs7.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\provider.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pkcs7err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rand.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pkcs12.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\randerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\pkcs12err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rc2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\prov_ssl.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rc4.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\proverr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rc5.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\provider.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ripemd.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rand.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rsa.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\randerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\rsaerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rc2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\safestack.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rc4.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\seed.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rc5.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\self_test.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ripemd.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\sha.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rsa.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\srp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\rsaerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\srtp.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\safestack.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ssl.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\seed.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ssl2.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\self_test.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ssl3.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\sha.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\sslerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\srp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\sslerr_legacy.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\srtp.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\stack.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ssl.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\store.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ssl2.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\storeerr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ssl3.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\symhacks.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\sslerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\tls1.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\sslerr_legacy.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\trace.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\stack.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ts.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\store.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\tserr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\storeerr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\txt_db.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\symhacks.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\types.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\tls1.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\ui.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\trace.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\uierr.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ts.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\whrlpool.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\tserr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\x509.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\txt_db.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\x509_vfy.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\types.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\x509err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\ui.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\x509v3.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\uierr.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\openssl\x509v3err.h">
+ <Filter>Header Files\include\openssl</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\whrlpool.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\allocators.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\x509.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\document.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\x509_vfy.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\encodedstream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\x509err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\encodings.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\x509v3.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\filereadstream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\openssl\x509v3err.h">
- <Filter>Header Files\include\openssl\openssl</Filter>
+ <ClInclude Include="..\include\rapidjson\filewritestream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\__DECC_INCLUDE_EPILOGUE.H">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\fwd.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\__DECC_INCLUDE_PROLOGUE.H">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\istreamwrapper.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\aes_platform.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\memorybuffer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\aria.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\memorystream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\asn1.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\ostreamwrapper.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\asn1_dsa.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\pointer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\asn1err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\prettywriter.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\async.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\rapidjson.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\asyncerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\reader.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bioerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\schema.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bn.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\stream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bn_conf.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\stringbuffer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bn_dh.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\writer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bn_srp.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\error\en.h">
+ <Filter>Header Files\include\rapidjson\error</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\bnerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\error\error.h">
+ <Filter>Header Files\include\rapidjson\error</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\buffererr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\biginteger.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\chacha.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\diyfp.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cmll_platform.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\dtoa.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cmperr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\ieee754.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cmserr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\itoa.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\comperr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\meta.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\conferr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\pow10.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\crmferr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\regex.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cryptlib.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\stack.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cryptoerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\strfunc.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\cterr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\strtod.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ctype.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\internal\swap.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\decoder.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\msinttypes\inttypes.h">
+ <Filter>Header Files\include\rapidjson\msinttypes</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\decodererr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\rapidjson\msinttypes\stdint.h">
+ <Filter>Header Files\include\rapidjson\msinttypes</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\des_platform.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\async.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\dh.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\async_logger.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\dherr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\async_logger-inl.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\dsa.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\common.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\dsaerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\common-inl.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\dso_conf.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\formatter.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ec.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fwd.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ecerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\logger.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ecx.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\logger-inl.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\encoder.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\pattern_formatter.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\encodererr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\pattern_formatter-inl.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\engine.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\spdlog.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\engineerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\spdlog-inl.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\stopwatch.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ess.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\tweakme.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\esserr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\version.h">
+ <Filter>Header Files\include\spdlog</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\evp.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\cfg\argv.h">
+ <Filter>Header Files\include\spdlog\cfg</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\evperr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\cfg\env.h">
+ <Filter>Header Files\include\spdlog\cfg</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\httperr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\cfg\helpers.h">
+ <Filter>Header Files\include\spdlog\cfg</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\lhash.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\cfg\helpers-inl.h">
+ <Filter>Header Files\include\spdlog\cfg</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\md32_common.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\backtracer.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\modes.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\backtracer-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\objects.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\circular_q.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\objectserr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\console_globals.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ocsperr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\file_helper.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\pem.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\file_helper-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\pemerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\fmt_helper.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\pkcs7.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\log_msg.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\pkcs7err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\log_msg_buffer.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\pkcs12err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\log_msg_buffer-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\poly1305.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\log_msg-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\ppc_arch.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\mpmc_blocking_q.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\punycode.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\null_mutex.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\rand.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\os.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\rand_pool.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\os-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\randerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\periodic_worker.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\rsa.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\periodic_worker-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\rsaerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\registry.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\security_bits.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\registry-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sha.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\synchronous_factory.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\siphash.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\tcp_client.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\siv.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\tcp_client-windows.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sm2.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\thread_pool.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sm2err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\thread_pool-inl.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sm4.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\details\windows_include.h">
+ <Filter>Header Files\include\spdlog\details</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sparc_arch.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bin_to_hex.h">
+ <Filter>Header Files\include\spdlog\fmt</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\sparse_array.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\chrono.h">
+ <Filter>Header Files\include\spdlog\fmt</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\store.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\fmt.h">
+ <Filter>Header Files\include\spdlog\fmt</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\storeerr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\ostr.h">
+ <Filter>Header Files\include\spdlog\fmt</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\tserr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\chrono.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\types.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\color.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\uierr.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\compile.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\x509.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\core.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\x509err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\format.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\crypto\x509v3err.h">
- <Filter>Header Files\include\openssl\crypto</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\format-inl.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\__DECC_INCLUDE_EPILOGUE.H">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\locale.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\__DECC_INCLUDE_PROLOGUE.H">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\os.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\asn1.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\ostream.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\bio.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\posix.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\comp.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\printf.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\conf.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\fmt\bundled\ranges.h">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
</ClInclude>
- <ClInclude Include="include\internal\constant_time.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\android_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\core.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\ansicolor_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\cryptlib.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\ansicolor_sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\dane.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\base_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\deprecated.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\base_sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\der.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\basic_file_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\dso.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\basic_file_sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\dsoerr.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\daily_file_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\endian.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\dist_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\err.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\dup_filter_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\ffc.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\hourly_file_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\ktls.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\msvc_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\namemap.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\null_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\nelem.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\ostream_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\numbers.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\ringbuffer_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\o_dir.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\rotating_file_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\packet.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\rotating_file_sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\param_build_set.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\passphrase.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\property.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\stdout_color_sinks.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\propertyerr.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\stdout_color_sinks-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\provider.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\stdout_sinks.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\refcount.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\stdout_sinks-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\sha3.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\syslog_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\sizes.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\systemd_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\sm3.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\tcp_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\sockets.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\win_eventlog_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\sslconf.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\wincolor_sink.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\symhacks.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="..\include\spdlog\sinks\wincolor_sink-inl.h">
+ <Filter>Header Files\include\spdlog\sinks</Filter>
</ClInclude>
- <ClInclude Include="include\internal\thread_once.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="client\audio.h">
+ <Filter>Header Files\client</Filter>
</ClInclude>
- <ClInclude Include="include\internal\tlsgroups.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="client\localchatwriter.h">
+ <Filter>Header Files\client</Filter>
</ClInclude>
- <ClInclude Include="include\internal\tsan_assist.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="dedicated\dedicated.h">
+ <Filter>Header Files\dedicated</Filter>
</ClInclude>
- <ClInclude Include="include\internal\unicode.h">
- <Filter>Header Files\include\openssl\internal</Filter>
+ <ClInclude Include="exploit_fixes\ns_limits.h">
+ <Filter>Header Files\exploit_fixes</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\curl.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="hooks\hooks.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\curlver.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="hooks\memory.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\easy.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="hooks\sourceinterface.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\mprintf.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="masterserver\masterserver.h">
+ <Filter>Header Files\masterserver</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\multi.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="mods\modmanager.h">
+ <Filter>Header Files\mods</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\options.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="plugins\plugin_abi.h">
+ <Filter>Header Files\plugins</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\stdcheaders.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="plugins\plugins.h">
+ <Filter>Header Files\plugins</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\system.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="server\serverpresence.h">
+ <Filter>Header Files\server</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\typecheck-gcc.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="server\auth\bansystem.h">
+ <Filter>Header Files\server\auth</Filter>
</ClInclude>
- <ClInclude Include="include\libcurl\include\curl\urlapi.h">
- <Filter>Header Files\include\libcurl</Filter>
+ <ClInclude Include="server\auth\serverauthentication.h">
+ <Filter>Header Files\server\auth</Filter>
</ClInclude>
- <ClInclude Include="bansystem.h">
- <Filter>Header Files\Server\Authentication</Filter>
+ <ClInclude Include="squirrel\squirrel.h">
+ <Filter>Header Files\squirrel</Filter>
</ClInclude>
- <ClInclude Include="audio.h">
- <Filter>Header Files\Client</Filter>
+ <ClInclude Include="squirrel\squirrelautobind.h">
+ <Filter>Header Files\squirrel</Filter>
</ClInclude>
- <ClInclude Include="localchatwriter.h">
- <Filter>Header Files\Client</Filter>
+ <ClInclude Include="squirrel\squirrelclasstypes.h">
+ <Filter>Header Files\squirrel</Filter>
</ClInclude>
- <ClInclude Include="plugins.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="squirrel\squirreldatatypes.h">
+ <Filter>Header Files\squirrel</Filter>
</ClInclude>
- <ClInclude Include="plugin_abi.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="util\version.h">
+ <Filter>Header Files\util</Filter>
</ClInclude>
- <ClInclude Include="version.h">
+ <ClInclude Include="dllmain.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ns_version.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="serverchathooks.h">
- <Filter>Header Files\Server\Scripted</Filter>
- </ClInclude>
- <ClInclude Include="dedicated.h">
- <Filter>Header Files\Dedicated Server</Filter>
- </ClInclude>
- <ClInclude Include="nsprefix.h">
+ <ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="exploitfixes_utf8parser.cpp">
- <Filter>Source Files\Exploit Fixes</Filter>
+ <ClInclude Include="config\profile.h">
+ <Filter>Header Files\config</Filter>
</ClInclude>
- <ClInclude Include="crashhandler.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="engine\hoststate.h">
+ <Filter>Header Files\engine</Filter>
</ClInclude>
- <ClInclude Include="hoststate.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="hooks\maxplayers.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="masterserver.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="shared\keyvalues.h">
+ <Filter>Header Files\shared</Filter>
</ClInclude>
- <ClInclude Include="memalloc.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="shared\playlist.h">
+ <Filter>Header Files\shared</Filter>
</ClInclude>
- <ClInclude Include="playlist.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="sourceinterface.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="client\r2client.h">
+ <Filter>Header Files\client</Filter>
</ClInclude>
- <ClInclude Include="bits.h">
- <Filter>Header Files\Math</Filter>
+ <ClInclude Include="engine\r2engine.h">
+ <Filter>Header Files\engine</Filter>
</ClInclude>
- <ClInclude Include="bitbuf.h">
- <Filter>Header Files\Math</Filter>
+ <ClInclude Include="server\r2server.h">
+ <Filter>Header Files\server</Filter>
</ClInclude>
- <ClInclude Include="convar.h">
- <Filter>Header Files\Convar</Filter>
+ <ClInclude Include="hooks\tier0.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="concommand.h">
- <Filter>Header Files\Convar</Filter>
+ <ClInclude Include="hooks\memalloc.h">
+ <Filter>Header Files\hooks</Filter>
</ClInclude>
- <ClInclude Include="cvar.h">
- <Filter>Header Files\Convar</Filter>
+ <ClInclude Include="core\convar\concommand.h">
+ <Filter>Header Files\core\convar</Filter>
</ClInclude>
- <ClInclude Include="filesystem.h">
- <Filter>Header Files\Filesystem</Filter>
+ <ClInclude Include="core\convar\convar.h">
+ <Filter>Header Files\core\convar</Filter>
</ClInclude>
- <ClInclude Include="hooks.h">
- <Filter>Header Files\Hooks</Filter>
+ <ClInclude Include="core\convar\cvar.h">
+ <Filter>Header Files\core\convar</Filter>
</ClInclude>
- <ClInclude Include="limits.h">
- <Filter>Header Files\Exploit Fixes</Filter>
+ <ClInclude Include="core\filesystem\filesystem.h">
+ <Filter>Header Files\core\filesystem</Filter>
</ClInclude>
- <ClInclude Include="logging.h">
- <Filter>Header Files\Console</Filter>
+ <ClInclude Include="core\filesystem\rpakfilesystem.h">
+ <Filter>Header Files\core\filesystem</Filter>
</ClInclude>
- <ClInclude Include="misccommands.h">
- <Filter>Header Files\Convar</Filter>
+ <ClInclude Include="core\math\bitbuf.h">
+ <Filter>Header Files\core\math</Filter>
</ClInclude>
- <ClInclude Include="modmanager.h">
- <Filter>Header Files\Mods</Filter>
+ <ClInclude Include="core\math\bits.h">
+ <Filter>Header Files\core\math</Filter>
</ClInclude>
- <ClInclude Include="printcommand.h">
- <Filter>Header Files\Console</Filter>
+ <ClInclude Include="core\math\color.h">
+ <Filter>Header Files\core\math</Filter>
</ClInclude>
- <ClInclude Include="printmaps.h">
- <Filter>Header Files\Console</Filter>
+ <ClInclude Include="core\math\vector.h">
+ <Filter>Header Files\core\math</Filter>
</ClInclude>
- <ClInclude Include="r2client.h">
- <Filter>Header Files\Game Functions</Filter>
+ <ClInclude Include="core\hooks.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="r2engine.h">
- <Filter>Header Files\Game Functions</Filter>
+ <ClInclude Include="core\memalloc.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="r2server.h">
- <Filter>Header Files\Game Functions</Filter>
+ <ClInclude Include="core\memory.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="tier0.h">
- <Filter>Header Files\Game Functions</Filter>
+ <ClInclude Include="core\structs.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="rpakfilesystem.h">
- <Filter>Header Files\Filesystem</Filter>
+ <ClInclude Include="core\tier0.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="color.h">
- <Filter>Header Files\Math</Filter>
+ <ClInclude Include="logging\crashhandler.h">
+ <Filter>Header Files\logging</Filter>
</ClInclude>
- <ClInclude Include="serverpresence.h">
- <Filter>Header Files\Server</Filter>
+ <ClInclude Include="logging\logging.h">
+ <Filter>Header Files\logging</Filter>
</ClInclude>
- <ClInclude Include="memory.h">
- <Filter>Header Files\Hooks</Filter>
+ <ClInclude Include="logging\loghooks.h">
+ <Filter>Header Files\logging</Filter>
</ClInclude>
- <ClInclude Include="maxplayers.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="logging\sourceconsole.h">
+ <Filter>Header Files\logging</Filter>
</ClInclude>
- <ClInclude Include="squirrel.h">
- <Filter>Header Files\Squirrel</Filter>
+ <ClInclude Include="server\serverchathooks.h">
+ <Filter>Header Files\server</Filter>
</ClInclude>
- <ClInclude Include="squirreldatatypes.h">
- <Filter>Header Files\Squirrel</Filter>
+ <ClInclude Include="scripts\scripthttprequesthandler.h">
+ <Filter>Header Files\scripts</Filter>
</ClInclude>
- <ClInclude Include="vector.h">
- <Filter>Header Files\Math</Filter>
+ <ClInclude Include="shared\maxplayers.h">
+ <Filter>Header Files\shared</Filter>
</ClInclude>
- <ClInclude Include="squirrelautobind.h">
- <Filter>Header Files\Squirrel</Filter>
+ <ClInclude Include="shared\misccommands.h">
+ <Filter>Header Files\shared</Filter>
</ClInclude>
- <ClInclude Include="keyvalues.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="structs.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="core\sourceinterface.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="loghooks.h">
- <Filter>Header Files\Console</Filter>
+ <ClInclude Include="core\macros.h">
+ <Filter>Header Files\core</Filter>
</ClInclude>
- <ClInclude Include="squirrelclasstypes.h">
- <Filter>Header Files\Squirrel</Filter>
- </ClInclude>
- <ClInclude Include="bots.h">
- <Filter>Header Files\Server</Filter>
+ <ClInclude Include="server\bots.h">
+ <Filter>Header Files\server</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="pch.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="dedicated.cpp">
- <Filter>Source Files\Dedicated Server</Filter>
- </ClCompile>
- <ClCompile Include="sourceconsole.cpp">
- <Filter>Source Files\Client</Filter>
- </ClCompile>
- <ClCompile Include="modmanager.cpp">
- <Filter>Source Files\Mods</Filter>
+ <None Include="..\include\spdlog\fmt\bundled\LICENSE.rst">
+ <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="client\audio.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="modscriptsrson.cpp">
- <Filter>Source Files\Mods\Compiled Assets</Filter>
+ <ClCompile Include="client\chatcommand.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="serverauthentication.cpp">
- <Filter>Source Files\Server\Authentication</Filter>
+ <ClCompile Include="client\clientauthhooks.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="modkeyvalues.cpp">
- <Filter>Source Files\Mods\Compiled Assets</Filter>
+ <ClCompile Include="client\clientruihooks.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="chatcommand.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="client\clientvideooverrides.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="modlocalisation.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="client\debugoverlay.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="dedicatedmaterialsystem.cpp">
- <Filter>Source Files\Dedicated Server</Filter>
+ <ClCompile Include="client\demofixes.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="modpdef.cpp">
- <Filter>Source Files\Mods\Compiled Assets</Filter>
+ <ClCompile Include="client\diskvmtfixes.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="clientauthhooks.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="client\languagehooks.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="miscserverfixes.cpp">
- <Filter>Source Files\Server</Filter>
+ <ClCompile Include="client\latencyflex.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="bansystem.cpp">
- <Filter>Source Files\Server\Authentication</Filter>
+ <ClCompile Include="client\localchatwriter.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="languagehooks.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="client\modlocalisation.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="latencyflex.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="dedicated\dedicated.cpp">
+ <Filter>Source Files\dedicated</Filter>
</ClCompile>
- <ClCompile Include="audio.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="dedicated\dedicatedmaterialsystem.cpp">
+ <Filter>Source Files\dedicated</Filter>
</ClCompile>
- <ClCompile Include="buildainfile.cpp">
- <Filter>Source Files\Server</Filter>
+ <ClCompile Include="masterserver\masterserver.cpp">
+ <Filter>Source Files\masterserver</Filter>
</ClCompile>
- <ClCompile Include="localchatwriter.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="mods\modmanager.cpp">
+ <Filter>Source Files\mods</Filter>
</ClCompile>
- <ClCompile Include="plugins.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="mods\compiled\kb_act.cpp">
+ <Filter>Source Files\mods\compiled</Filter>
</ClCompile>
- <ClCompile Include="debugoverlay.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="mods\compiled\modkeyvalues.cpp">
+ <Filter>Source Files\mods\compiled</Filter>
</ClCompile>
- <ClCompile Include="clientvideooverrides.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="mods\compiled\modpdef.cpp">
+ <Filter>Source Files\mods\compiled</Filter>
</ClCompile>
- <ClCompile Include="version.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="mods\compiled\modscriptsrson.cpp">
+ <Filter>Source Files\mods\compiled</Filter>
</ClCompile>
- <ClCompile Include="clientruihooks.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="plugins\plugins.cpp">
+ <Filter>Source Files\plugins</Filter>
</ClCompile>
- <ClCompile Include="scriptmainmenupromos.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="scripts\scriptdatatables.cpp">
+ <Filter>Source Files\scripts</Filter>
</ClCompile>
- <ClCompile Include="clientchathooks.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="scripts\scriptjson.cpp">
+ <Filter>Source Files\scripts</Filter>
</ClCompile>
- <ClCompile Include="scriptmodmenu.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="scripts\scriptutility.cpp">
+ <Filter>Source Files\scripts</Filter>
</ClCompile>
- <ClCompile Include="scriptservertoclientstringcommand.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="server\buildainfile.cpp">
+ <Filter>Source Files\server</Filter>
</ClCompile>
- <ClCompile Include="scriptserverbrowser.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="server\serverpresence.cpp">
+ <Filter>Source Files\server</Filter>
</ClCompile>
- <ClCompile Include="scriptbrowserhooks.cpp">
- <Filter>Source Files\Client\Scripted</Filter>
+ <ClCompile Include="server\auth\bansystem.cpp">
+ <Filter>Source Files\server\auth</Filter>
</ClCompile>
- <ClCompile Include="serverchathooks.cpp">
- <Filter>Source Files\Server\Scripted</Filter>
+ <ClCompile Include="server\auth\serverauthentication.cpp">
+ <Filter>Source Files\server\auth</Filter>
</ClCompile>
- <ClCompile Include="miscserverscript.cpp">
- <Filter>Source Files\Server\Scripted</Filter>
+ <ClCompile Include="squirrel\squirrel.cpp">
+ <Filter>Source Files\squirrel</Filter>
</ClCompile>
- <ClCompile Include="demofixes.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="squirrel\squirrelautobind.cpp">
+ <Filter>Source Files\squirrel</Filter>
</ClCompile>
- <ClCompile Include="nsprefix.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="util\version.cpp">
+ <Filter>Source Files\util</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="crashhandler.cpp">
+ <ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="host.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="config\profile.cpp">
+ <Filter>Source Files\config</Filter>
</ClCompile>
- <ClCompile Include="hoststate.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="engine\host.cpp">
+ <Filter>Source Files\engine</Filter>
</ClCompile>
- <ClCompile Include="masterserver.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="engine\hoststate.cpp">
+ <Filter>Source Files\engine</Filter>
</ClCompile>
- <ClCompile Include="maxplayers.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="engine\runframe.cpp">
+ <Filter>Source Files\engine</Filter>
</ClCompile>
- <ClCompile Include="memalloc.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="shared\keyvalues.cpp">
+ <Filter>Source Files\shared</Filter>
</ClCompile>
- <ClCompile Include="playlist.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="shared\playlist.cpp">
+ <Filter>Source Files\shared</Filter>
</ClCompile>
- <ClCompile Include="sourceinterface.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="client\r2client.cpp">
+ <Filter>Source Files\client</Filter>
</ClCompile>
- <ClCompile Include="r2server.cpp">
- <Filter>Source Files\Game Functions</Filter>
+ <ClCompile Include="server\r2server.cpp">
+ <Filter>Source Files\server</Filter>
</ClCompile>
- <ClCompile Include="r2client.cpp">
- <Filter>Source Files\Game Functions</Filter>
+ <ClCompile Include="engine\r2engine.cpp">
+ <Filter>Source Files\engine</Filter>
</ClCompile>
- <ClCompile Include="r2engine.cpp">
- <Filter>Source Files\Game Functions</Filter>
+ <ClCompile Include="logging\crashhandler.cpp">
+ <Filter>Source Files\logging</Filter>
</ClCompile>
- <ClCompile Include="rpakfilesystem.cpp">
- <Filter>Source Files\Filesystem</Filter>
+ <ClCompile Include="logging\logging.cpp">
+ <Filter>Source Files\logging</Filter>
</ClCompile>
- <ClCompile Include="filesystem.cpp">
- <Filter>Source Files\Filesystem</Filter>
+ <ClCompile Include="logging\loghooks.cpp">
+ <Filter>Source Files\logging</Filter>
</ClCompile>
- <ClCompile Include="exploitfixes.cpp">
- <Filter>Source Files\Exploit Fixes</Filter>
+ <ClCompile Include="logging\sourceconsole.cpp">
+ <Filter>Source Files\logging</Filter>
</ClCompile>
- <ClCompile Include="limits.cpp">
- <Filter>Source Files\Exploit Fixes</Filter>
+ <ClCompile Include="scripts\client\clientchathooks.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="hooks.cpp">
- <Filter>Source Files\Hooks</Filter>
+ <ClCompile Include="scripts\client\scriptbrowserhooks.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="bits.cpp">
- <Filter>Source Files\Math</Filter>
+ <ClCompile Include="scripts\client\scriptmainmenupromos.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="convar.cpp">
- <Filter>Source Files\Convar</Filter>
+ <ClCompile Include="scripts\client\scriptmodmenu.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="concommand.cpp">
- <Filter>Source Files\Convar</Filter>
+ <ClCompile Include="scripts\client\scriptserverbrowser.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="printcommands.cpp">
- <Filter>Source Files\Console</Filter>
+ <ClCompile Include="scripts\client\scriptservertoclientstringcommand.cpp">
+ <Filter>Source Files\scripts\client</Filter>
</ClCompile>
- <ClCompile Include="printmaps.cpp">
- <Filter>Source Files\Console</Filter>
+ <ClCompile Include="scripts\server\miscserverfixes.cpp">
+ <Filter>Source Files\scripts\server</Filter>
</ClCompile>
- <ClCompile Include="cvar.cpp">
- <Filter>Source Files\Convar</Filter>
+ <ClCompile Include="scripts\server\miscserverscript.cpp">
+ <Filter>Source Files\scripts\server</Filter>
</ClCompile>
- <ClCompile Include="misccommands.cpp">
- <Filter>Source Files\Convar</Filter>
+ <ClCompile Include="scripts\server\scriptuserinfo.cpp">
+ <Filter>Source Files\scripts\server</Filter>
</ClCompile>
- <ClCompile Include="tier0.cpp">
- <Filter>Source Files\Game Functions</Filter>
+ <ClCompile Include="server\serverchathooks.cpp">
+ <Filter>Source Files\server</Filter>
</ClCompile>
- <ClCompile Include="logging.cpp">
- <Filter>Source Files\Console</Filter>
+ <ClCompile Include="core\convar\concommand.cpp">
+ <Filter>Source Files\core\convar</Filter>
</ClCompile>
- <ClCompile Include="serverpresence.cpp">
- <Filter>Source Files\Server</Filter>
+ <ClCompile Include="core\convar\convar.cpp">
+ <Filter>Source Files\core\convar</Filter>
</ClCompile>
- <ClCompile Include="runframe.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="core\convar\cvar.cpp">
+ <Filter>Source Files\core\convar</Filter>
</ClCompile>
- <ClCompile Include="memory.cpp">
- <Filter>Source Files\Hooks</Filter>
+ <ClCompile Include="core\filesystem\filesystem.cpp">
+ <Filter>Source Files\core\filesystem</Filter>
</ClCompile>
- <ClCompile Include="exploitfixes_lzss.cpp">
- <Filter>Source Files\Exploit Fixes</Filter>
+ <ClCompile Include="core\filesystem\rpakfilesystem.cpp">
+ <Filter>Source Files\core\filesystem</Filter>
</ClCompile>
- <ClCompile Include="scriptutility.cpp">
- <Filter>Source Files\Scripted</Filter>
+ <ClCompile Include="core\math\bits.cpp">
+ <Filter>Source Files\core\math</Filter>
</ClCompile>
- <ClCompile Include="scriptjson.cpp">
- <Filter>Source Files\Scripted</Filter>
+ <ClCompile Include="core\math\color.cpp">
+ <Filter>Source Files\core\math</Filter>
</ClCompile>
- <ClCompile Include="squirrel.cpp">
- <Filter>Source Files\Squirrel</Filter>
+ <ClCompile Include="core\hooks.cpp">
+ <Filter>Source Files\core</Filter>
</ClCompile>
- <ClCompile Include="scriptdatatables.cpp">
- <Filter>Source Files\Scripted</Filter>
+ <ClCompile Include="core\memalloc.cpp">
+ <Filter>Source Files\core</Filter>
</ClCompile>
- <ClCompile Include="squirrelautobind.cpp">
- <Filter>Source Files\Squirrel</Filter>
+ <ClCompile Include="core\memory.cpp">
+ <Filter>Source Files\core</Filter>
</ClCompile>
- <ClCompile Include="kb_act.cpp">
- <Filter>Source Files\Mods\Compiled Assets</Filter>
+ <ClCompile Include="core\tier0.cpp">
+ <Filter>Source Files\core</Filter>
</ClCompile>
- <ClCompile Include="diskvmtfixes.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="shared\exploit_fixes\exploitfixes.cpp">
+ <Filter>Source Files\shared\exploit_fixes</Filter>
</ClCompile>
- <ClCompile Include="keyvalues.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="shared\exploit_fixes\exploitfixes_lzss.cpp">
+ <Filter>Source Files\shared\exploit_fixes</Filter>
</ClCompile>
- <ClCompile Include="scriptuserinfo.cpp">
- <Filter>Source Files\Server\Scripted</Filter>
+ <ClCompile Include="shared\exploit_fixes\exploitfixes_utf8parser.cpp">
+ <Filter>Source Files\shared\exploit_fixes</Filter>
</ClCompile>
- <ClCompile Include="color.cpp">
- <Filter>Source Files\Math</Filter>
+ <ClCompile Include="shared\exploit_fixes\ns_limits.cpp">
+ <Filter>Source Files\shared\exploit_fixes</Filter>
</ClCompile>
- <ClCompile Include="loghooks.cpp">
- <Filter>Source Files\Console</Filter>
+ <ClCompile Include="shared\maxplayers.cpp">
+ <Filter>Source Files\shared</Filter>
</ClCompile>
- <ClCompile Include="rejectconnectionfixes.cpp">
- <Filter>Source Files\Client</Filter>
+ <ClCompile Include="shared\misccommands.cpp">
+ <Filter>Source Files\shared</Filter>
</ClCompile>
- <ClCompile Include="bots.cpp">
- <Filter>Source Files\Server</Filter>
+ <ClCompile Include="util\printcommands.cpp">
+ <Filter>Source Files\util</Filter>
+ </ClCompile>
+ <ClCompile Include="util\printmaps.cpp">
+ <Filter>Source Files\util</Filter>
+ </ClCompile>
+ <ClCompile Include="scripts\scripthttprequesthandler.cpp">
+ <Filter>Source Files\scripts</Filter>
+ </ClCompile>
+ <ClCompile Include="core\sourceinterface.cpp">
+ <Filter>Source Files\core</Filter>
+ </ClCompile>
+ <ClCompile Include="client\rejectconnectionfixes.cpp">
+ <Filter>Source Files\client</Filter>
+ </ClCompile>
+ <ClCompile Include="server\bots.cpp">
+ <Filter>Source Files\server</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<MASM Include="audio_asm.asm">
- <Filter>Source Files\Client</Filter>
+ <Filter>Source Files</Filter>
</MASM>
</ItemGroup>
- <ItemGroup>
- <None Include="include\spdlog\fmt\bundled\LICENSE.rst">
- <Filter>Header Files\include\spdlog\fmt\bundled</Filter>
- </None>
- <None Include="include\openssl\asn1.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\asn1t.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\bio.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\cmp.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\cms.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\conf.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\configuration.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\crmf.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\crypto.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\ct.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\err.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\ess.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\fipskey.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\lhash.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\ocsp.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\opensslv.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\pkcs7.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\pkcs12.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\safestack.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\srp.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\ssl.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\ui.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\x509.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\x509_vfy.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\openssl\x509v3.h.in">
- <Filter>Header Files\include\openssl\openssl</Filter>
- </None>
- <None Include="include\crypto\bn_conf.h.in">
- <Filter>Header Files\include\openssl\crypto</Filter>
- </None>
- <None Include="include\crypto\dso_conf.h.in">
- <Filter>Header Files\include\openssl\crypto</Filter>
- </None>
- </ItemGroup>
</Project> \ No newline at end of file
diff --git a/NorthstarDLL/audio.cpp b/NorthstarDLL/client/audio.cpp
index b1592b6f..f0bc385b 100644
--- a/NorthstarDLL/audio.cpp
+++ b/NorthstarDLL/client/audio.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
#include "audio.h"
-#include "dedicated.h"
-#include "convar.h"
+#include "dedicated/dedicated.h"
+#include "core/convar/convar.h"
#include "rapidjson/error/en.h"
#include <fstream>
diff --git a/NorthstarDLL/audio.h b/NorthstarDLL/client/audio.h
index 26cda205..26cda205 100644
--- a/NorthstarDLL/audio.h
+++ b/NorthstarDLL/client/audio.h
diff --git a/NorthstarDLL/chatcommand.cpp b/NorthstarDLL/client/chatcommand.cpp
index 37c438f3..76ed9784 100644
--- a/NorthstarDLL/chatcommand.cpp
+++ b/NorthstarDLL/client/chatcommand.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "convar.h"
-#include "concommand.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
#include "localchatwriter.h"
// note: isIngameChat is an int64 because the whole register the arg is stored in needs to be 0'd out to work
diff --git a/NorthstarDLL/clientauthhooks.cpp b/NorthstarDLL/client/clientauthhooks.cpp
index cd01ad91..904ecb2f 100644
--- a/NorthstarDLL/clientauthhooks.cpp
+++ b/NorthstarDLL/client/clientauthhooks.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "masterserver.h"
-#include "convar.h"
-#include "r2client.h"
+#include "masterserver/masterserver.h"
+#include "core/convar/convar.h"
+#include "client/r2client.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/clientruihooks.cpp b/NorthstarDLL/client/clientruihooks.cpp
index 3cb08368..7896daa8 100644
--- a/NorthstarDLL/clientruihooks.cpp
+++ b/NorthstarDLL/client/clientruihooks.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "convar.h"
+#include "core/convar/convar.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/clientvideooverrides.cpp b/NorthstarDLL/client/clientvideooverrides.cpp
index e4d96ff5..1a5924c7 100644
--- a/NorthstarDLL/clientvideooverrides.cpp
+++ b/NorthstarDLL/client/clientvideooverrides.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "modmanager.h"
+#include "mods/modmanager.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/debugoverlay.cpp b/NorthstarDLL/client/debugoverlay.cpp
index ef456867..dd273227 100644
--- a/NorthstarDLL/debugoverlay.cpp
+++ b/NorthstarDLL/client/debugoverlay.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "dedicated.h"
-#include "cvar.h"
-#include "vector.h"
+#include "dedicated/dedicated.h"
+#include "core/convar/cvar.h"
+#include "core/math/vector.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/demofixes.cpp b/NorthstarDLL/client/demofixes.cpp
index ab092484..5fb49918 100644
--- a/NorthstarDLL/demofixes.cpp
+++ b/NorthstarDLL/client/demofixes.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "convar.h"
+#include "core/convar/convar.h"
ON_DLL_LOAD_CLIENT("engine.dll", EngineDemoFixes, (CModule module))
{
diff --git a/NorthstarDLL/diskvmtfixes.cpp b/NorthstarDLL/client/diskvmtfixes.cpp
index f5f3e2cd..cd762c8a 100644
--- a/NorthstarDLL/diskvmtfixes.cpp
+++ b/NorthstarDLL/client/diskvmtfixes.cpp
@@ -1,16 +1,16 @@
-#include "pch.h"
-
-ON_DLL_LOAD_CLIENT("materialsystem_dx11.dll", DiskVMTFixes, (CModule module))
-{
- // in retail VMTs will never load if cache read is invalid due to a special case for them in KeyValues::LoadFromFile
- // this effectively makes it impossible to load them from mods because we invalidate cache for doing this
- // so uhh, stop that from happening
-
- // tbh idk why they even changed any of this what's the point it looks like it works fine who cares my god
-
- // matsystem KeyValues::LoadFromFile: patch special case on cache read failure for vmts
- module.Offset(0x1281B9).Patch("EB");
-
- // CMaterialSystem::FindMaterial: don't call function that crashes if previous patch is applied
- module.Offset(0x5F55A).NOP(5);
-}
+#include "pch.h"
+
+ON_DLL_LOAD_CLIENT("materialsystem_dx11.dll", DiskVMTFixes, (CModule module))
+{
+ // in retail VMTs will never load if cache read is invalid due to a special case for them in KeyValues::LoadFromFile
+ // this effectively makes it impossible to load them from mods because we invalidate cache for doing this
+ // so uhh, stop that from happening
+
+ // tbh idk why they even changed any of this what's the point it looks like it works fine who cares my god
+
+ // matsystem KeyValues::LoadFromFile: patch special case on cache read failure for vmts
+ module.Offset(0x1281B9).Patch("EB");
+
+ // CMaterialSystem::FindMaterial: don't call function that crashes if previous patch is applied
+ module.Offset(0x5F55A).NOP(5);
+}
diff --git a/NorthstarDLL/languagehooks.cpp b/NorthstarDLL/client/languagehooks.cpp
index d00beb68..1a46633c 100644
--- a/NorthstarDLL/languagehooks.cpp
+++ b/NorthstarDLL/client/languagehooks.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "tier0.h"
+#include "core/tier0.h"
#include <filesystem>
#include <regex>
diff --git a/NorthstarDLL/latencyflex.cpp b/NorthstarDLL/client/latencyflex.cpp
index 620e031a..a1ef72ca 100644
--- a/NorthstarDLL/latencyflex.cpp
+++ b/NorthstarDLL/client/latencyflex.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "convar.h"
+#include "core/convar/convar.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/localchatwriter.cpp b/NorthstarDLL/client/localchatwriter.cpp
index efa7eeee..efa7eeee 100644
--- a/NorthstarDLL/localchatwriter.cpp
+++ b/NorthstarDLL/client/localchatwriter.cpp
diff --git a/NorthstarDLL/localchatwriter.h b/NorthstarDLL/client/localchatwriter.h
index 0df0cac8..8bb1fb2f 100644
--- a/NorthstarDLL/localchatwriter.h
+++ b/NorthstarDLL/client/localchatwriter.h
@@ -1,6 +1,6 @@
#pragma once
#include "pch.h"
-#include "color.h"
+#include "core/math/color.h"
class vgui_BaseRichText;
diff --git a/NorthstarDLL/modlocalisation.cpp b/NorthstarDLL/client/modlocalisation.cpp
index b12f0a40..430e3a5f 100644
--- a/NorthstarDLL/modlocalisation.cpp
+++ b/NorthstarDLL/client/modlocalisation.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "modmanager.h"
+#include "mods/modmanager.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/r2client.cpp b/NorthstarDLL/client/r2client.cpp
index 2e7bd564..2e7bd564 100644
--- a/NorthstarDLL/r2client.cpp
+++ b/NorthstarDLL/client/r2client.cpp
diff --git a/NorthstarDLL/r2client.h b/NorthstarDLL/client/r2client.h
index 64ed6c61..64ed6c61 100644
--- a/NorthstarDLL/r2client.h
+++ b/NorthstarDLL/client/r2client.h
diff --git a/NorthstarDLL/rejectconnectionfixes.cpp b/NorthstarDLL/client/rejectconnectionfixes.cpp
index bfce2043..994e9747 100644
--- a/NorthstarDLL/rejectconnectionfixes.cpp
+++ b/NorthstarDLL/client/rejectconnectionfixes.cpp
@@ -1,6 +1,5 @@
#include "pch.h"
-#include "hoststate.h"
-#include "r2engine.h"
+#include "engine/r2engine.h"
AUTOHOOK_INIT()
@@ -22,7 +21,9 @@ void,, (bool a1, const char* fmt, ...))
// when COM_ExplainDisconnection is called from engine.dll + 19ff1c for connection rejected, it doesn't
// call Host_Disconnect, which properly shuts down listen server
// not doing this gets our client in a pretty weird state so we need to shut it down manually here
- R2::g_pHostState->m_iNextState = R2::HostState_t::HS_GAME_SHUTDOWN;
+
+ // don't call Cbuf_Execute because we don't need this called immediately
+ R2::Cbuf_AddText(R2::Cbuf_GetCurrentPlayer(), "disconnect", R2::cmd_source_t::kCommandSrcCode);
}
return COM_ExplainDisconnection(a1, buf);
diff --git a/NorthstarDLL/nsprefix.cpp b/NorthstarDLL/config/profile.cpp
index 8057865e..7518a2b3 100644
--- a/NorthstarDLL/nsprefix.cpp
+++ b/NorthstarDLL/config/profile.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "nsprefix.h"
-#include "dedicated.h"
+#include "config/profile.h"
+#include "dedicated/dedicated.h"
#include <string>
std::string GetNorthstarPrefix()
diff --git a/NorthstarDLL/nsprefix.h b/NorthstarDLL/config/profile.h
index 9f3087fb..9f3087fb 100644
--- a/NorthstarDLL/nsprefix.h
+++ b/NorthstarDLL/config/profile.h
diff --git a/NorthstarDLL/concommand.cpp b/NorthstarDLL/core/convar/concommand.cpp
index 6d77e137..02c9e50f 100644
--- a/NorthstarDLL/concommand.cpp
+++ b/NorthstarDLL/core/convar/concommand.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
#include "concommand.h"
-#include "misccommands.h"
+#include "shared/misccommands.h"
#include <iostream>
diff --git a/NorthstarDLL/concommand.h b/NorthstarDLL/core/convar/concommand.h
index 89363bc7..89363bc7 100644
--- a/NorthstarDLL/concommand.h
+++ b/NorthstarDLL/core/convar/concommand.h
diff --git a/NorthstarDLL/convar.cpp b/NorthstarDLL/core/convar/convar.cpp
index 80f93c64..11411c0a 100644
--- a/NorthstarDLL/convar.cpp
+++ b/NorthstarDLL/core/convar/convar.cpp
@@ -2,7 +2,7 @@
#include "bits.h"
#include "cvar.h"
#include "convar.h"
-#include "sourceinterface.h"
+#include "core/sourceinterface.h"
#include <float.h>
@@ -315,7 +315,7 @@ void ConVar::SetValue(const char* pszValue)
{
// Not a color, do the standard thing
float flNewValue = (float)atof(pszValue);
- if (!IsFinite(flNewValue))
+ if (!isfinite(flNewValue))
{
spdlog::warn("Warning: ConVar '{}' = '{}' is infinite, clamping value.\n", GetBaseName(), pszValue);
flNewValue = FLT_MAX;
@@ -488,3 +488,43 @@ bool ConVar::ClampValue(float& flValue)
return false;
}
+
+int ParseConVarFlagsString(std::string modName, std::string sFlags)
+{
+ sFlags += '|'; // add additional | so we register the last flag
+ std::string sCurrentFlag;
+
+ for (int i = 0; i < sFlags.length(); i++)
+ {
+ if (isspace(sFlags[i]))
+ continue;
+
+ // if we encounter a |, add current string as a flag
+ if (sFlags[i] == '|')
+ {
+ bool bHasFlags = false;
+ int iCurrentFlags;
+
+ for (auto& flagPair : g_PrintCommandFlags)
+ {
+ if (!sCurrentFlag.compare(flagPair.second))
+ {
+ iCurrentFlags = flagPair.first;
+ bHasFlags = true;
+ break;
+ }
+ }
+
+ if (bHasFlags)
+ return iCurrentFlags;
+ else
+ spdlog::warn("Mod ConCommand {} has unknown flag {}", modName, sCurrentFlag);
+
+ sCurrentFlag = "";
+ }
+ else
+ {
+ sCurrentFlag += sFlags[i];
+ }
+ }
+}
diff --git a/NorthstarDLL/convar.h b/NorthstarDLL/core/convar/convar.h
index 176d0d72..4b00e25f 100644
--- a/NorthstarDLL/convar.h
+++ b/NorthstarDLL/core/convar/convar.h
@@ -1,6 +1,6 @@
#pragma once
-#include "sourceinterface.h"
-#include "color.h"
+#include "core/sourceinterface.h"
+#include "core/math/color.h"
#include "cvar.h"
#include "concommand.h"
@@ -190,3 +190,5 @@ class ConVar
void* m_pMalloc {}; // 0x0070
char m_pPad80[10] {}; // 0x0080
}; // Size: 0x0080
+
+int ParseConVarFlagsString(std::string modName, std::string flags);
diff --git a/NorthstarDLL/cvar.cpp b/NorthstarDLL/core/convar/cvar.cpp
index 787790be..787790be 100644
--- a/NorthstarDLL/cvar.cpp
+++ b/NorthstarDLL/core/convar/cvar.cpp
diff --git a/NorthstarDLL/cvar.h b/NorthstarDLL/core/convar/cvar.h
index e65e5145..3a3e1815 100644
--- a/NorthstarDLL/cvar.h
+++ b/NorthstarDLL/core/convar/cvar.h
@@ -1,6 +1,5 @@
#pragma once
#include "convar.h"
-#include "pch.h"
//-----------------------------------------------------------------------------
// Forward declarations
diff --git a/NorthstarDLL/filesystem.cpp b/NorthstarDLL/core/filesystem/filesystem.cpp
index 6ac6cc43..ac42d00f 100644
--- a/NorthstarDLL/filesystem.cpp
+++ b/NorthstarDLL/core/filesystem/filesystem.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
#include "filesystem.h"
-#include "sourceinterface.h"
-#include "modmanager.h"
+#include "core/sourceinterface.h"
+#include "mods/modmanager.h"
#include <iostream>
#include <sstream>
diff --git a/NorthstarDLL/filesystem.h b/NorthstarDLL/core/filesystem/filesystem.h
index 9a22893a..560b8c2c 100644
--- a/NorthstarDLL/filesystem.h
+++ b/NorthstarDLL/core/filesystem/filesystem.h
@@ -1,5 +1,5 @@
#pragma once
-#include "sourceinterface.h"
+#include "core/sourceinterface.h"
// taken from ttf2sdk
typedef void* FileHandle_t;
diff --git a/NorthstarDLL/rpakfilesystem.cpp b/NorthstarDLL/core/filesystem/rpakfilesystem.cpp
index f6de514b..b46218e0 100644
--- a/NorthstarDLL/rpakfilesystem.cpp
+++ b/NorthstarDLL/core/filesystem/rpakfilesystem.cpp
@@ -1,8 +1,8 @@
#include "pch.h"
#include "rpakfilesystem.h"
-#include "modmanager.h"
-#include "dedicated.h"
-#include "tier0.h"
+#include "mods/modmanager.h"
+#include "dedicated/dedicated.h"
+#include "core/tier0.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/rpakfilesystem.h b/NorthstarDLL/core/filesystem/rpakfilesystem.h
index 3f608dba..3f608dba 100644
--- a/NorthstarDLL/rpakfilesystem.h
+++ b/NorthstarDLL/core/filesystem/rpakfilesystem.h
diff --git a/NorthstarDLL/hooks.cpp b/NorthstarDLL/core/hooks.cpp
index cc1c284d..79bcbb92 100644
--- a/NorthstarDLL/hooks.cpp
+++ b/NorthstarDLL/core/hooks.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "dedicated.h"
+#include "dedicated/dedicated.h"
#include <iostream>
#include <wchar.h>
diff --git a/NorthstarDLL/hooks.h b/NorthstarDLL/core/hooks.h
index f47791fb..f47791fb 100644
--- a/NorthstarDLL/hooks.h
+++ b/NorthstarDLL/core/hooks.h
diff --git a/NorthstarDLL/core/macros.h b/NorthstarDLL/core/macros.h
new file mode 100644
index 00000000..ae944cca
--- /dev/null
+++ b/NorthstarDLL/core/macros.h
@@ -0,0 +1,19 @@
+#pragma once
+template <typename ReturnType, typename... Args> ReturnType CallVFunc(int index, void* thisPtr, Args... args)
+{
+ return (*reinterpret_cast<ReturnType(__fastcall***)(void*, Args...)>(thisPtr))[index](thisPtr, args...);
+}
+
+template <typename T, size_t index, typename... Args> constexpr T CallVFunc_Alt(void* classBase, Args... args) noexcept
+{
+ return ((*(T(__thiscall***)(void*, Args...))(classBase))[index])(classBase, args...);
+}
+
+#define STR_HASH(s) (std::hash<std::string>()(s))
+
+// Example usage: M_VMETHOD(int, GetEntityIndex, 8, (CBaseEntity* ent), (this, ent))
+#define M_VMETHOD(returnType, name, index, args, argsRaw) \
+ FORCEINLINE returnType name args noexcept \
+ { \
+ return CallVFunc_Alt<returnType, index> argsRaw; \
+ }
diff --git a/NorthstarDLL/bitbuf.h b/NorthstarDLL/core/math/bitbuf.h
index 8e8e216f..8e8e216f 100644
--- a/NorthstarDLL/bitbuf.h
+++ b/NorthstarDLL/core/math/bitbuf.h
diff --git a/NorthstarDLL/bits.cpp b/NorthstarDLL/core/math/bits.cpp
index 014899f2..014899f2 100644
--- a/NorthstarDLL/bits.cpp
+++ b/NorthstarDLL/core/math/bits.cpp
diff --git a/NorthstarDLL/bits.h b/NorthstarDLL/core/math/bits.h
index 0532a9bd..0532a9bd 100644
--- a/NorthstarDLL/bits.h
+++ b/NorthstarDLL/core/math/bits.h
diff --git a/NorthstarDLL/color.cpp b/NorthstarDLL/core/math/color.cpp
index 05cf645f..05cf645f 100644
--- a/NorthstarDLL/color.cpp
+++ b/NorthstarDLL/core/math/color.cpp
diff --git a/NorthstarDLL/color.h b/NorthstarDLL/core/math/color.h
index 4dc9b36e..4dc9b36e 100644
--- a/NorthstarDLL/color.h
+++ b/NorthstarDLL/core/math/color.h
diff --git a/NorthstarDLL/vector.h b/NorthstarDLL/core/math/vector.h
index c06e0bba..95eae7ca 100644
--- a/NorthstarDLL/vector.h
+++ b/NorthstarDLL/core/math/vector.h
@@ -1,52 +1,52 @@
-#pragma once
-
-union Vector3
-{
- struct
- {
- float x;
- float y;
- float z;
- };
-
- float raw[3];
-
- Vector3() : x(0), y(0), z(0) {}
- Vector3(float x, float y, float z) : x(x), y(y), z(z) {}
- Vector3(float* pRawFloats) // assumes float[3] => vector
- {
- memcpy(raw, pRawFloats, sizeof(this));
- }
-
- void MakeValid()
- {
- for (auto& fl : raw)
- if (isnan(fl))
- fl = 0;
- }
-
- // todo: more operators maybe
- bool operator==(const Vector3& other)
- {
- return x == other.x && y == other.y && z == other.z;
- }
-};
-
-union QAngle
-{
- struct
- {
- float x;
- float y;
- float z;
- float w;
- };
-
- float raw[4];
-
- // todo: more operators maybe
- bool operator==(const QAngle& other)
- {
- return x == other.x && y == other.y && z == other.z && w == other.w;
- }
-};
+#pragma once
+
+union Vector3
+{
+ struct
+ {
+ float x;
+ float y;
+ float z;
+ };
+
+ float raw[3];
+
+ Vector3() : x(0), y(0), z(0) {}
+ Vector3(float x, float y, float z) : x(x), y(y), z(z) {}
+ Vector3(float* pRawFloats) // assumes float[3] => vector
+ {
+ memcpy(raw, pRawFloats, sizeof(this));
+ }
+
+ void MakeValid()
+ {
+ for (auto& fl : raw)
+ if (isnan(fl))
+ fl = 0;
+ }
+
+ // todo: more operators maybe
+ bool operator==(const Vector3& other)
+ {
+ return x == other.x && y == other.y && z == other.z;
+ }
+};
+
+union QAngle
+{
+ struct
+ {
+ float x;
+ float y;
+ float z;
+ float w;
+ };
+
+ float raw[4];
+
+ // todo: more operators maybe
+ bool operator==(const QAngle& other)
+ {
+ return x == other.x && y == other.y && z == other.z && w == other.w;
+ }
+};
diff --git a/NorthstarDLL/memalloc.cpp b/NorthstarDLL/core/memalloc.cpp
index 8c0fafc8..122ab444 100644
--- a/NorthstarDLL/memalloc.cpp
+++ b/NorthstarDLL/core/memalloc.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "memalloc.h"
-#include "tier0.h"
+#include "core/memalloc.h"
+#include "core/tier0.h"
using namespace Tier0;
diff --git a/NorthstarDLL/memalloc.h b/NorthstarDLL/core/memalloc.h
index fdd6474b..7df68429 100644
--- a/NorthstarDLL/memalloc.h
+++ b/NorthstarDLL/core/memalloc.h
@@ -1,6 +1,6 @@
#pragma once
-#include "include/rapidjson/document.h"
+#include "rapidjson/document.h"
//#include "include/rapidjson/allocators.h"
extern "C" void* _malloc_base(size_t size);
diff --git a/NorthstarDLL/memory.cpp b/NorthstarDLL/core/memory.cpp
index 2e994fb2..5e7c3e78 100644
--- a/NorthstarDLL/memory.cpp
+++ b/NorthstarDLL/core/memory.cpp
@@ -132,7 +132,7 @@ inline std::vector<uint8_t> HexBytesToString(const char* pHexString)
}
else
{
- assert(false, "Failed to parse invalid hex string.");
+ assert_msg(false, "Failed to parse invalid hex string.");
val = -1;
}
@@ -324,7 +324,7 @@ inline std::pair<std::vector<uint8_t>, std::string> MaskedBytesFromPattern(const
}
else
{
- assert(false, "Failed to parse invalid pattern string.");
+ assert_msg(false, "Failed to parse invalid pattern string.");
val = -1;
}
diff --git a/NorthstarDLL/memory.h b/NorthstarDLL/core/memory.h
index 38c76cb3..38c76cb3 100644
--- a/NorthstarDLL/memory.h
+++ b/NorthstarDLL/core/memory.h
diff --git a/NorthstarDLL/sourceinterface.cpp b/NorthstarDLL/core/sourceinterface.cpp
index d5f7b7cd..f9ad694c 100644
--- a/NorthstarDLL/sourceinterface.cpp
+++ b/NorthstarDLL/core/sourceinterface.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
#include "sourceinterface.h"
-#include "sourceconsole.h"
+#include "logging/sourceconsole.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/sourceinterface.h b/NorthstarDLL/core/sourceinterface.h
index 474e961b..474e961b 100644
--- a/NorthstarDLL/sourceinterface.h
+++ b/NorthstarDLL/core/sourceinterface.h
diff --git a/NorthstarDLL/structs.h b/NorthstarDLL/core/structs.h
index 939fd302..ac29f711 100644
--- a/NorthstarDLL/structs.h
+++ b/NorthstarDLL/core/structs.h
@@ -45,16 +45,15 @@ OFFSET_STRUCT(Name)
#define IIF_1(t, ...) t
#define PROBE(x) x, 1
-
#define MSVC_VA_ARGS_WORKAROUND(define, args) define args
#define CHECK(...) MSVC_VA_ARGS_WORKAROUND(CHECK_N, (__VA_ARGS__, 0))
-#define CHECK_N(x, n, ...) n
-
#define DO_PROBE(offset) PROBE_PROXY(OFFSET_##offset) // concatenate prefix with offset
#define PROBE_PROXY(...) PROBE_PRIMITIVE(__VA_ARGS__) // expand arguments
#define PROBE_PRIMITIVE(x) PROBE_COMBINE_##x // merge
#define PROBE_COMBINE_(...) PROBE(~) // if merge successful, expand to probe
+#define CHECK_N(x, n, ...) n
+
#define IS_0(offset) CHECK(DO_PROBE(offset))
#define FIELD(offset, signature) IIF(IS_0(offset))(STRUCT_FIELD_NOOFFSET, STRUCT_FIELD_OFFSET)(offset, signature)
diff --git a/NorthstarDLL/tier0.cpp b/NorthstarDLL/core/tier0.cpp
index 61ad7783..61ad7783 100644
--- a/NorthstarDLL/tier0.cpp
+++ b/NorthstarDLL/core/tier0.cpp
diff --git a/NorthstarDLL/tier0.h b/NorthstarDLL/core/tier0.h
index 92a63027..92a63027 100644
--- a/NorthstarDLL/tier0.h
+++ b/NorthstarDLL/core/tier0.h
diff --git a/NorthstarDLL/dedicated.cpp b/NorthstarDLL/dedicated/dedicated.cpp
index 7ba62d24..33a3f034 100644
--- a/NorthstarDLL/dedicated.cpp
+++ b/NorthstarDLL/dedicated/dedicated.cpp
@@ -1,12 +1,12 @@
#include "pch.h"
#include "dedicated.h"
-#include "tier0.h"
+#include "core/tier0.h"
#include "playlist.h"
-#include "r2engine.h"
-#include "hoststate.h"
-#include "serverauthentication.h"
-#include "masterserver.h"
-#include "printcommand.h"
+#include "engine/r2engine.h"
+#include "engine/hoststate.h"
+#include "server/auth/serverauthentication.h"
+#include "masterserver/masterserver.h"
+#include "util/printcommands.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/dedicated.h b/NorthstarDLL/dedicated/dedicated.h
index 82806763..82806763 100644
--- a/NorthstarDLL/dedicated.h
+++ b/NorthstarDLL/dedicated/dedicated.h
diff --git a/NorthstarDLL/dedicatedmaterialsystem.cpp b/NorthstarDLL/dedicated/dedicatedmaterialsystem.cpp
index 28ee9b76..37b74576 100644
--- a/NorthstarDLL/dedicatedmaterialsystem.cpp
+++ b/NorthstarDLL/dedicated/dedicatedmaterialsystem.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
#include "dedicated.h"
-#include "tier0.h"
+#include "core/tier0.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/dllmain.cpp b/NorthstarDLL/dllmain.cpp
index 44d973f2..cd52940d 100644
--- a/NorthstarDLL/dllmain.cpp
+++ b/NorthstarDLL/dllmain.cpp
@@ -1,13 +1,13 @@
#include "pch.h"
-#include "main.h"
-#include "logging.h"
-#include "crashhandler.h"
-#include "memalloc.h"
-#include "nsprefix.h"
-#include "plugin_abi.h"
-#include "plugins.h"
-#include "version.h"
-#include "pch.h"
+#include "dllmain.h"
+#include "logging/logging.h"
+#include "logging/crashhandler.h"
+#include "core/memalloc.h"
+#include "config/profile.h"
+#include "plugins/plugin_abi.h"
+#include "plugins/plugins.h"
+#include "util/version.h"
+#include "squirrel/squirrel.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
diff --git a/NorthstarDLL/main.h b/NorthstarDLL/dllmain.h
index 412f1e25..412f1e25 100644
--- a/NorthstarDLL/main.h
+++ b/NorthstarDLL/dllmain.h
diff --git a/NorthstarDLL/host.cpp b/NorthstarDLL/engine/host.cpp
index 87b1ce4e..a55c8dfd 100644
--- a/NorthstarDLL/host.cpp
+++ b/NorthstarDLL/engine/host.cpp
@@ -1,14 +1,12 @@
#include "pch.h"
-#include "convar.h"
-#include "modmanager.h"
-#include "printcommand.h"
-#include "printmaps.h"
-#include "misccommands.h"
+#include "core/convar/convar.h"
+#include "mods/modmanager.h"
+#include "util/printcommands.h"
+#include "util/printmaps.h"
+#include "shared/misccommands.h"
#include "r2engine.h"
-#include "tier0.h"
-
+#include "core/tier0.h"
AUTOHOOK_INIT()
-
// clang-format off
AUTOHOOK(Host_Init, engine.dll + 0x155EA0,
void, __fastcall, (bool bDedicated))
@@ -16,13 +14,10 @@ void, __fastcall, (bool bDedicated))
{
spdlog::info("Host_Init()");
Host_Init(bDedicated);
-
FixupCvarFlags();
-
// need to initialise these after host_init since they do stuff to preexisting concommands/convars without being client/server specific
InitialiseCommandPrint();
InitialiseMapsPrint();
-
// client/server autoexecs on necessary platforms
// dedi needs autoexec_ns_server on boot, while non-dedi will run it on on listen server start
if (bDedicated)
@@ -30,7 +25,6 @@ void, __fastcall, (bool bDedicated))
else
R2::Cbuf_AddText(R2::Cbuf_GetCurrentPlayer(), "exec autoexec_ns_client", R2::cmd_source_t::kCommandSrcCode);
}
-
ON_DLL_LOAD("engine.dll", Host_Init, (CModule module))
{
AUTOHOOK_DISPATCH()
diff --git a/NorthstarDLL/hoststate.cpp b/NorthstarDLL/engine/hoststate.cpp
index 54ef67a5..d474b908 100644
--- a/NorthstarDLL/hoststate.cpp
+++ b/NorthstarDLL/engine/hoststate.cpp
@@ -1,13 +1,13 @@
#include "pch.h"
-#include "hoststate.h"
-#include "masterserver.h"
-#include "serverauthentication.h"
-#include "serverpresence.h"
-#include "playlist.h"
-#include "tier0.h"
-#include "r2engine.h"
-#include "limits.h"
-#include "squirrel.h"
+#include "engine/hoststate.h"
+#include "masterserver/masterserver.h"
+#include "server/auth/serverauthentication.h"
+#include "server/serverpresence.h"
+#include "shared/playlist.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
+#include "shared/exploit_fixes/ns_limits.h"
+#include "squirrel/squirrel.h"
AUTOHOOK_INIT()
@@ -65,6 +65,34 @@ void, __fastcall, (CHostState* self))
}
// clang-format off
+AUTOHOOK(CHostState__State_LoadGame, engine.dll + 0x16E730,
+void, __fastcall, (CHostState* self))
+// clang-format on
+{
+ // singleplayer server starting
+ // useless in 99% of cases but without it things could potentially break very much
+
+ spdlog::info("HostState: LoadGame");
+
+ Cbuf_AddText(Cbuf_GetCurrentPlayer(), "exec autoexec_ns_server", cmd_source_t::kCommandSrcCode);
+ Cbuf_Execute();
+
+ // this is normally done in ServerStartingOrChangingMap(), but seemingly the map name isn't set at this point
+ g_pCVar->FindVar("net_data_block_enabled")->SetValue(true);
+ g_pServerAuthentication->m_bStartingLocalSPGame = true;
+
+ double dStartTime = Tier0::Plat_FloatTime();
+ CHostState__State_LoadGame(self);
+ spdlog::info("loading took {}s", Tier0::Plat_FloatTime() - dStartTime);
+
+ // no server presence, can't do it because no map name in hoststate
+ // and also not super important for sp saves really
+
+ g_pServerAuthentication->StartPlayerAuthServer();
+ g_pServerAuthentication->m_bNeedLocalAuthForNewgame = false;
+}
+
+// clang-format off
AUTOHOOK(CHostState__State_ChangeLevelMP, engine.dll + 0x16E520,
void, __fastcall, (CHostState* self))
// clang-format on
diff --git a/NorthstarDLL/hoststate.h b/NorthstarDLL/engine/hoststate.h
index a77385ef..a77385ef 100644
--- a/NorthstarDLL/hoststate.h
+++ b/NorthstarDLL/engine/hoststate.h
diff --git a/NorthstarDLL/r2engine.cpp b/NorthstarDLL/engine/r2engine.cpp
index 11233a2d..11233a2d 100644
--- a/NorthstarDLL/r2engine.cpp
+++ b/NorthstarDLL/engine/r2engine.cpp
diff --git a/NorthstarDLL/r2engine.h b/NorthstarDLL/engine/r2engine.h
index c816ec86..237ddc0a 100644
--- a/NorthstarDLL/r2engine.h
+++ b/NorthstarDLL/engine/r2engine.h
@@ -1,5 +1,5 @@
#pragma once
-#include "keyvalues.h"
+#include "shared/keyvalues.h"
// use the R2 namespace for game funcs
namespace R2
diff --git a/NorthstarDLL/runframe.cpp b/NorthstarDLL/engine/runframe.cpp
index eb401f51..d81356f2 100644
--- a/NorthstarDLL/runframe.cpp
+++ b/NorthstarDLL/engine/runframe.cpp
@@ -1,11 +1,10 @@
#include "pch.h"
-#include "r2engine.h"
-#include "r2server.h"
+#include "engine/r2engine.h"
+#include "server/r2server.h"
#include "hoststate.h"
-#include "serverpresence.h"
+#include "server/serverpresence.h"
AUTOHOOK_INIT()
-
// clang-format off
AUTOHOOK(CEngine__Frame, engine.dll + 0x1C8650,
void, __fastcall, (R2::CEngine* self))
@@ -13,7 +12,6 @@ void, __fastcall, (R2::CEngine* self))
{
CEngine__Frame(self);
}
-
ON_DLL_LOAD("engine.dll", RunFrame, (CModule module))
{
AUTOHOOK_DISPATCH()
diff --git a/NorthstarDLL/crashhandler.cpp b/NorthstarDLL/logging/crashhandler.cpp
index be09f870..d4a54169 100644
--- a/NorthstarDLL/crashhandler.cpp
+++ b/NorthstarDLL/logging/crashhandler.cpp
@@ -1,9 +1,9 @@
#include "pch.h"
#include "crashhandler.h"
-#include "dedicated.h"
-#include "nsprefix.h"
-#include "version.h"
-#include "modmanager.h"
+#include "dedicated/dedicated.h"
+#include "config/profile.h"
+#include "util/version.h"
+#include "mods/modmanager.h"
#include <minidumpapiset.h>
diff --git a/NorthstarDLL/crashhandler.h b/NorthstarDLL/logging/crashhandler.h
index 4d8a59ce..4d8a59ce 100644
--- a/NorthstarDLL/crashhandler.h
+++ b/NorthstarDLL/logging/crashhandler.h
diff --git a/NorthstarDLL/logging.cpp b/NorthstarDLL/logging/logging.cpp
index 2184bd3f..6bb57170 100644
--- a/NorthstarDLL/logging.cpp
+++ b/NorthstarDLL/logging/logging.cpp
@@ -1,9 +1,9 @@
#include "pch.h"
#include "logging.h"
-#include "convar.h"
-#include "concommand.h"
-#include "nsprefix.h"
-#include "tier0.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
+#include "config/profile.h"
+#include "core/tier0.h"
#include "spdlog/sinks/basic_file_sink.h"
#include <iomanip>
diff --git a/NorthstarDLL/logging.h b/NorthstarDLL/logging/logging.h
index a75dce91..b710915e 100644
--- a/NorthstarDLL/logging.h
+++ b/NorthstarDLL/logging/logging.h
@@ -2,8 +2,8 @@
#include "pch.h"
#include "spdlog/sinks/base_sink.h"
#include "spdlog/logger.h"
-#include "squirrel.h"
-#include "color.h"
+#include "squirrel/squirrel.h"
+#include "core/math/color.h"
void CreateLogFiles();
void InitialiseLogging();
diff --git a/NorthstarDLL/loghooks.cpp b/NorthstarDLL/logging/loghooks.cpp
index 316d34ae..d09f23cc 100644
--- a/NorthstarDLL/loghooks.cpp
+++ b/NorthstarDLL/logging/loghooks.cpp
@@ -1,12 +1,12 @@
#include "pch.h"
#include "logging.h"
#include "loghooks.h"
-#include "convar.h"
-#include "concommand.h"
-#include "bitbuf.h"
-#include "nsprefix.h"
-#include "tier0.h"
-
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
+#include "core/math/bitbuf.h"
+#include "config/profile.h"
+#include "core/tier0.h"
+#include "squirrel/squirrel.h"
#include <iomanip>
#include <sstream>
diff --git a/NorthstarDLL/loghooks.h b/NorthstarDLL/logging/loghooks.h
index 6f70f09b..6f70f09b 100644
--- a/NorthstarDLL/loghooks.h
+++ b/NorthstarDLL/logging/loghooks.h
diff --git a/NorthstarDLL/sourceconsole.cpp b/NorthstarDLL/logging/sourceconsole.cpp
index 0048ac4c..775caa49 100644
--- a/NorthstarDLL/sourceconsole.cpp
+++ b/NorthstarDLL/logging/sourceconsole.cpp
@@ -1,9 +1,9 @@
#include "pch.h"
-#include "convar.h"
+#include "core/convar/convar.h"
#include "sourceconsole.h"
-#include "sourceinterface.h"
-#include "concommand.h"
-#include "printcommand.h"
+#include "core/sourceinterface.h"
+#include "core/convar/concommand.h"
+#include "util/printcommands.h"
SourceInterface<CGameConsole>* g_pSourceGameConsole;
diff --git a/NorthstarDLL/sourceconsole.h b/NorthstarDLL/logging/sourceconsole.h
index b22ef2d3..cf7027df 100644
--- a/NorthstarDLL/sourceconsole.h
+++ b/NorthstarDLL/logging/sourceconsole.h
@@ -1,6 +1,6 @@
#pragma once
#include "pch.h"
-#include "sourceinterface.h"
+#include "core/sourceinterface.h"
#include "spdlog/sinks/base_sink.h"
#include <map>
diff --git a/NorthstarDLL/masterserver.cpp b/NorthstarDLL/masterserver/masterserver.cpp
index 2e1c5321..5679939b 100644
--- a/NorthstarDLL/masterserver.cpp
+++ b/NorthstarDLL/masterserver/masterserver.cpp
@@ -1,13 +1,13 @@
#include "pch.h"
-#include "masterserver.h"
-#include "concommand.h"
+#include "masterserver/masterserver.h"
+#include "core/convar/concommand.h"
#include "playlist.h"
-#include "serverauthentication.h"
-#include "tier0.h"
-#include "r2engine.h"
-#include "modmanager.h"
-#include "misccommands.h"
-#include "version.h"
+#include "server/auth/serverauthentication.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
+#include "mods/modmanager.h"
+#include "shared/misccommands.h"
+#include "util/version.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
diff --git a/NorthstarDLL/masterserver.h b/NorthstarDLL/masterserver/masterserver.h
index 4e649fae..bded9952 100644
--- a/NorthstarDLL/masterserver.h
+++ b/NorthstarDLL/masterserver/masterserver.h
@@ -1,7 +1,7 @@
#pragma once
-#include "convar.h"
-#include "serverpresence.h"
+#include "core/convar/convar.h"
+#include "server/serverpresence.h"
#include <winsock2.h>
#include <string>
#include <cstring>
diff --git a/NorthstarDLL/kb_act.cpp b/NorthstarDLL/mods/compiled/kb_act.cpp
index 5fe71cdb..4a011dc7 100644
--- a/NorthstarDLL/kb_act.cpp
+++ b/NorthstarDLL/mods/compiled/kb_act.cpp
@@ -1,45 +1,45 @@
-#include "pch.h"
-#include "modmanager.h"
-#include "filesystem.h"
-
-#include <fstream>
-
-const char* KB_ACT_PATH = "scripts\\kb_act.lst";
-
-// compiles the file kb_act.lst, that defines entries for keybindings in the options menu
-void ModManager::BuildKBActionsList()
-{
- spdlog::info("Building kb_act.lst");
-
- fs::create_directories(GetCompiledAssetsPath() / "scripts");
- std::ofstream soCompiledKeys(GetCompiledAssetsPath() / KB_ACT_PATH, std::ios::binary);
-
- // write vanilla file's content to compiled file
- soCompiledKeys << R2::ReadVPKOriginalFile(KB_ACT_PATH);
-
- for (Mod& mod : m_LoadedMods)
- {
- if (!mod.m_bEnabled)
- continue;
-
- // write content of each modded file to compiled file
- std::ifstream siModKeys(mod.m_ModDirectory / "kb_act.lst");
-
- if (siModKeys.good())
- soCompiledKeys << siModKeys.rdbuf() << std::endl;
-
- siModKeys.close();
- }
-
- soCompiledKeys.close();
-
- // push to overrides
- ModOverrideFile overrideFile;
- overrideFile.m_pOwningMod = nullptr;
- overrideFile.m_Path = KB_ACT_PATH;
-
- if (m_ModFiles.find(KB_ACT_PATH) == m_ModFiles.end())
- m_ModFiles.insert(std::make_pair(KB_ACT_PATH, overrideFile));
- else
- m_ModFiles[KB_ACT_PATH] = overrideFile;
-}
+#include "pch.h"
+#include "mods/modmanager.h"
+#include "core/filesystem/filesystem.h"
+
+#include <fstream>
+
+const char* KB_ACT_PATH = "scripts\\kb_act.lst";
+
+// compiles the file kb_act.lst, that defines entries for keybindings in the options menu
+void ModManager::BuildKBActionsList()
+{
+ spdlog::info("Building kb_act.lst");
+
+ fs::create_directories(GetCompiledAssetsPath() / "scripts");
+ std::ofstream soCompiledKeys(GetCompiledAssetsPath() / KB_ACT_PATH, std::ios::binary);
+
+ // write vanilla file's content to compiled file
+ soCompiledKeys << R2::ReadVPKOriginalFile(KB_ACT_PATH);
+
+ for (Mod& mod : m_LoadedMods)
+ {
+ if (!mod.m_bEnabled)
+ continue;
+
+ // write content of each modded file to compiled file
+ std::ifstream siModKeys(mod.m_ModDirectory / "kb_act.lst");
+
+ if (siModKeys.good())
+ soCompiledKeys << siModKeys.rdbuf() << std::endl;
+
+ siModKeys.close();
+ }
+
+ soCompiledKeys.close();
+
+ // push to overrides
+ ModOverrideFile overrideFile;
+ overrideFile.m_pOwningMod = nullptr;
+ overrideFile.m_Path = KB_ACT_PATH;
+
+ if (m_ModFiles.find(KB_ACT_PATH) == m_ModFiles.end())
+ m_ModFiles.insert(std::make_pair(KB_ACT_PATH, overrideFile));
+ else
+ m_ModFiles[KB_ACT_PATH] = overrideFile;
+}
diff --git a/NorthstarDLL/modkeyvalues.cpp b/NorthstarDLL/mods/compiled/modkeyvalues.cpp
index 75188329..774be0eb 100644
--- a/NorthstarDLL/modkeyvalues.cpp
+++ b/NorthstarDLL/mods/compiled/modkeyvalues.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "modmanager.h"
-#include "filesystem.h"
+#include "mods/modmanager.h"
+#include "core/filesystem/filesystem.h"
#include <fstream>
diff --git a/NorthstarDLL/modpdef.cpp b/NorthstarDLL/mods/compiled/modpdef.cpp
index d33ba8a6..219c744b 100644
--- a/NorthstarDLL/modpdef.cpp
+++ b/NorthstarDLL/mods/compiled/modpdef.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "modmanager.h"
-#include "filesystem.h"
+#include "mods/modmanager.h"
+#include "core/filesystem/filesystem.h"
#include <map>
#include <sstream>
diff --git a/NorthstarDLL/modscriptsrson.cpp b/NorthstarDLL/mods/compiled/modscriptsrson.cpp
index 3615dd80..15fcdd13 100644
--- a/NorthstarDLL/modscriptsrson.cpp
+++ b/NorthstarDLL/mods/compiled/modscriptsrson.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "modmanager.h"
-#include "filesystem.h"
-#include "squirrel.h"
+#include "mods/modmanager.h"
+#include "core/filesystem/filesystem.h"
+#include "squirrel/squirrel.h"
#include <fstream>
diff --git a/NorthstarDLL/modmanager.cpp b/NorthstarDLL/mods/modmanager.cpp
index d95bcbce..6310b7ec 100644
--- a/NorthstarDLL/modmanager.cpp
+++ b/NorthstarDLL/mods/modmanager.cpp
@@ -1,12 +1,12 @@
#include "pch.h"
#include "modmanager.h"
-#include "convar.h"
-#include "concommand.h"
-#include "audio.h"
-#include "masterserver.h"
-#include "filesystem.h"
-#include "rpakfilesystem.h"
-#include "nsprefix.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
+#include "client/audio.h"
+#include "masterserver/masterserver.h"
+#include "core/filesystem/filesystem.h"
+#include "core/filesystem/rpakfilesystem.h"
+#include "config/profile.h"
#include "rapidjson/error/en.h"
#include "rapidjson/document.h"
@@ -118,46 +118,59 @@ Mod::Mod(fs::path modDir, char* jsonBuf)
{
// parse cvar flags from string
// example string: ARCHIVE_PLAYERPROFILE | GAMEDLL
+ convar->Flags |= ParseConVarFlagsString(convar->Name, convarObj["Flags"].GetString());
+ }
+ }
- std::string sFlags = convarObj["Flags"].GetString();
- sFlags += '|'; // add additional | so we register the last flag
- std::string sCurrentFlag;
+ ConVars.push_back(convar);
+ }
+ }
- for (int i = 0; i < sFlags.length(); i++)
- {
- if (isspace(sFlags[i]))
- continue;
+ if (modJson.HasMember("ConCommands") && modJson["ConCommands"].IsArray())
+ {
+ for (auto& concommandObj : modJson["ConCommands"].GetArray())
+ {
+ if (!concommandObj.IsObject() || !concommandObj.HasMember("Name") || !concommandObj.HasMember("Function") ||
+ !concommandObj.HasMember("Context"))
+ {
+ continue;
+ }
- // if we encounter a |, add current string as a flag
- if (sFlags[i] == '|')
- {
- bool bHasFlags = false;
- int iCurrentFlags;
+ // have to allocate this manually, otherwise concommand registration will break
+ // unfortunately this causes us to leak memory on reload, unsure of a way around this rn
+ ModConCommand* concommand = new ModConCommand;
+ concommand->Name = concommandObj["Name"].GetString();
+ concommand->Function = concommandObj["Function"].GetString();
+ concommand->Context = ScriptContextFromString(concommandObj["Context"].GetString());
+ if (concommand->Context == ScriptContext::INVALID)
+ {
+ spdlog::warn("Mod ConCommand {} has invalid context {}", concommand->Name, concommandObj["Context"].GetString());
+ continue;
+ }
- for (auto& flagPair : g_PrintCommandFlags)
- {
- if (!sCurrentFlag.compare(flagPair.second))
- {
- iCurrentFlags = flagPair.first;
- bHasFlags = true;
- break;
- }
- }
+ if (concommandObj.HasMember("HelpString"))
+ concommand->HelpString = concommandObj["HelpString"].GetString();
+ else
+ concommand->HelpString = "";
- if (bHasFlags)
- convar->Flags |= iCurrentFlags;
- else
- spdlog::warn("Mod ConVar {} has unknown flag {}", convar->Name, sCurrentFlag);
+ concommand->Flags = FCVAR_NONE;
- sCurrentFlag = "";
- }
- else
- sCurrentFlag += sFlags[i];
- }
+ if (concommandObj.HasMember("Flags"))
+ {
+ // read raw integer flags
+ if (concommandObj["Flags"].IsInt())
+ {
+ concommand->Flags = concommandObj["Flags"].GetInt();
+ }
+ else if (concommandObj["Flags"].IsString())
+ {
+ // parse cvar flags from string
+ // example string: ARCHIVE_PLAYERPROFILE | GAMEDLL
+ concommand->Flags |= ParseConVarFlagsString(concommand->Name, concommandObj["Flags"].GetString());
}
}
- ConVars.push_back(convar);
+ ConCommands.push_back(concommand);
}
}
@@ -267,6 +280,70 @@ ModManager::ModManager()
LoadMods();
}
+struct Test
+{
+ std::string funcName;
+ ScriptContext context;
+};
+
+template <ScriptContext context> auto ModConCommandCallback_Internal(std::string name, const CCommand& command)
+{
+ if (g_pSquirrel<context>->m_pSQVM && g_pSquirrel<context>->m_pSQVM)
+ {
+ std::vector<std::string> args;
+ args.reserve(command.ArgC());
+ for (int i = 1; i < command.ArgC(); i++)
+ args.push_back(command.Arg(i));
+ g_pSquirrel<context>->AsyncCall(name, args);
+ }
+ else
+ {
+ spdlog::warn("ConCommand `{}` was called while the associated Squirrel VM `{}` was unloaded", name, GetContextName(context));
+ }
+}
+
+auto ModConCommandCallback(const CCommand& command)
+{
+ ModConCommand* found = nullptr;
+ auto commandString = std::string(command.GetCommandString());
+
+ // Finding the first space to remove the command's name
+ auto firstSpace = commandString.find(' ');
+ if (firstSpace)
+ {
+ commandString = commandString.substr(0, firstSpace);
+ }
+
+ // Find the mod this command belongs to
+ for (auto& mod : g_pModManager->m_LoadedMods)
+ {
+ auto res = std::find_if(
+ mod.ConCommands.begin(),
+ mod.ConCommands.end(),
+ [&commandString](const ModConCommand* other) { return other->Name == commandString; });
+ if (res != mod.ConCommands.end())
+ {
+ found = *res;
+ break;
+ }
+ }
+ if (!found)
+ return;
+
+ switch (found->Context)
+ {
+ case ScriptContext::CLIENT:
+ ModConCommandCallback_Internal<ScriptContext::CLIENT>(found->Function, command);
+ break;
+ case ScriptContext::SERVER:
+ ModConCommandCallback_Internal<ScriptContext::SERVER>(found->Function, command);
+ break;
+ case ScriptContext::UI:
+ ModConCommandCallback_Internal<ScriptContext::UI>(found->Function, command);
+ break;
+ };
+}
+
void ModManager::LoadMods()
{
if (m_bHasLoadedMods)
@@ -365,9 +442,25 @@ void ModManager::LoadMods()
// preexisting convars note: we don't delete convars if they already exist because they're used for script stuff, unfortunately this
// causes us to leak memory on reload, but not much, potentially find a way to not do this at some point
for (ModConVar* convar : mod.ConVars)
- if (!R2::g_pCVar->FindVar(convar->Name.c_str())) // make sure convar isn't registered yet, unsure if necessary but idk what
- // behaviour is for defining same convar multiple times
+ {
+ // make sure convar isn't registered yet, unsure if necessary but idk what
+ // behaviour is for defining same convar multiple times
+ if (!R2::g_pCVar->FindVar(convar->Name.c_str()))
+ {
new ConVar(convar->Name.c_str(), convar->DefaultValue.c_str(), convar->Flags, convar->HelpString.c_str());
+ }
+ }
+
+ for (ModConCommand* command : mod.ConCommands)
+ {
+ // make sure command isnt't registered multiple times.
+ if (!R2::g_pCVar->FindCommand(command->Name.c_str()))
+ {
+ ConCommand* newCommand = new ConCommand();
+ std::string funcName = command->Function;
+ RegisterConCommand(command->Name.c_str(), ModConCommandCallback, command->HelpString.c_str(), command->Flags);
+ }
+ }
// read vpk paths
if (fs::exists(mod.m_ModDirectory / "vpk"))
@@ -598,8 +691,9 @@ void ModManager::LoadMods()
// build modinfo obj for masterserver
rapidjson_document modinfoDoc;
+ auto& alloc = modinfoDoc.GetAllocator();
modinfoDoc.SetObject();
- modinfoDoc.AddMember("Mods", rapidjson_document::GenericValue(rapidjson::kArrayType), modinfoDoc.GetAllocator());
+ modinfoDoc.AddMember("Mods", rapidjson::kArrayType, alloc);
int currentModIndex = 0;
for (Mod& mod : m_LoadedMods)
@@ -607,7 +701,7 @@ void ModManager::LoadMods()
if (!mod.m_bEnabled || (!mod.RequiredOnClient && !mod.Pdiff.size()))
continue;
- modinfoDoc["Mods"].PushBack(rapidjson_document::GenericValue(rapidjson::kObjectType), modinfoDoc.GetAllocator());
+ modinfoDoc["Mods"].PushBack(rapidjson::kObjectType, modinfoDoc.GetAllocator());
modinfoDoc["Mods"][currentModIndex].AddMember("Name", rapidjson::StringRef(&mod.Name[0]), modinfoDoc.GetAllocator());
modinfoDoc["Mods"][currentModIndex].AddMember("Version", rapidjson::StringRef(&mod.Version[0]), modinfoDoc.GetAllocator());
modinfoDoc["Mods"][currentModIndex].AddMember("RequiredOnClient", mod.RequiredOnClient, modinfoDoc.GetAllocator());
@@ -649,10 +743,7 @@ void ModManager::UnloadMods()
// main issue with doing this here is when we reload mods for connecting to a server, we write enabled mods, which isn't necessarily
// what we wanna do
if (!m_EnabledModsCfg.HasMember(mod.Name.c_str()))
- m_EnabledModsCfg.AddMember(
- rapidjson_document::StringRefType(mod.Name.c_str()),
- rapidjson_document::GenericValue(false),
- m_EnabledModsCfg.GetAllocator());
+ m_EnabledModsCfg.AddMember(rapidjson_document::StringRefType(mod.Name.c_str()), false, m_EnabledModsCfg.GetAllocator());
m_EnabledModsCfg[mod.Name.c_str()].SetBool(mod.m_bEnabled);
}
diff --git a/NorthstarDLL/modmanager.h b/NorthstarDLL/mods/modmanager.h
index 6540a3de..ded6ff06 100644
--- a/NorthstarDLL/modmanager.h
+++ b/NorthstarDLL/mods/modmanager.h
@@ -1,7 +1,7 @@
#pragma once
-#include "convar.h"
-#include "memalloc.h"
-#include "squirrel.h"
+#include "core/convar/convar.h"
+#include "core/memalloc.h"
+#include "squirrel/squirrel.h"
#include "rapidjson/document.h"
#include <string>
@@ -22,6 +22,16 @@ struct ModConVar
int Flags;
};
+struct ModConCommand
+{
+ public:
+ std::string Name;
+ std::string Function;
+ std::string HelpString;
+ ScriptContext Context;
+ int Flags;
+};
+
struct ModScriptCallback
{
public:
@@ -87,6 +97,8 @@ class Mod
std::vector<ModScript> Scripts;
// convars created by the mod
std::vector<ModConVar*> ConVars;
+ // concommands created by the mod
+ std::vector<ModConCommand*> ConCommands;
// custom localisation files created by the mod
std::vector<std::string> LocalisationFiles;
diff --git a/NorthstarDLL/pch.h b/NorthstarDLL/pch.h
index 824aaee8..55ebba8b 100644
--- a/NorthstarDLL/pch.h
+++ b/NorthstarDLL/pch.h
@@ -9,7 +9,7 @@
#define RAPIDJSON_HAS_STDSTRING 1
// add headers that you want to pre-compile here
-#include "memalloc.h"
+#include "core/memalloc.h"
#include <windows.h>
#include <psapi.h>
@@ -20,32 +20,19 @@
namespace fs = std::filesystem;
-#include "structs.h"
-#include "color.h"
+// clang-format off
+#define assert_msg(exp, msg) assert((exp, msg))
+//clang-format on
+
+#include "core/macros.h"
+
+#include "core/structs.h"
+#include "core/math/color.h"
#include "spdlog/spdlog.h"
-#include "logging.h"
+#include "logging/logging.h"
#include "MinHook.h"
#include "libcurl/include/curl/curl.h"
-#include "hooks.h"
-#include "memory.h"
-
-template <typename ReturnType, typename... Args> ReturnType CallVFunc(int index, void* thisPtr, Args... args)
-{
- return (*reinterpret_cast<ReturnType(__fastcall***)(void*, Args...)>(thisPtr))[index](thisPtr, args...);
-}
-
-template <typename T, size_t index, typename... Args> constexpr T CallVFunc_Alt(void* classBase, Args... args) noexcept
-{
- return ((*(T(__thiscall***)(void*, Args...))(classBase))[index])(classBase, args...);
-}
-
-#define STR_HASH(s) (std::hash<std::string>()(s))
-
-// Example usage: M_VMETHOD(int, GetEntityIndex, 8, (CBaseEntity* ent), (this, ent))
-#define M_VMETHOD(returnType, name, index, args, argsRaw) \
- FORCEINLINE returnType name args noexcept \
- { \
- return CallVFunc_Alt<returnType, index> argsRaw; \
- }
+#include "core/hooks.h"
+#include "core/memory.h"
#endif
diff --git a/NorthstarDLL/plugin_abi.h b/NorthstarDLL/plugins/plugin_abi.h
index 4b176a32..4b176a32 100644
--- a/NorthstarDLL/plugin_abi.h
+++ b/NorthstarDLL/plugins/plugin_abi.h
diff --git a/NorthstarDLL/plugins.cpp b/NorthstarDLL/plugins/plugins.cpp
index 790439d1..97ac0b9f 100644
--- a/NorthstarDLL/plugins.cpp
+++ b/NorthstarDLL/plugins/plugins.cpp
@@ -1,9 +1,9 @@
#include "pch.h"
-#include "squirrel.h"
+#include "squirrel/squirrel.h"
#include "plugins.h"
-#include "masterserver.h"
-#include "convar.h"
-#include "serverpresence.h"
+#include "masterserver/masterserver.h"
+#include "core/convar/convar.h"
+#include "server/serverpresence.h"
#include <chrono>
#include <windows.h>
diff --git a/NorthstarDLL/plugins.h b/NorthstarDLL/plugins/plugins.h
index 953801a2..953801a2 100644
--- a/NorthstarDLL/plugins.h
+++ b/NorthstarDLL/plugins/plugins.h
diff --git a/NorthstarDLL/clientchathooks.cpp b/NorthstarDLL/scripts/client/clientchathooks.cpp
index 847b5eb1..0fc68302 100644
--- a/NorthstarDLL/clientchathooks.cpp
+++ b/NorthstarDLL/scripts/client/clientchathooks.cpp
@@ -1,8 +1,8 @@
#include "pch.h"
-#include "squirrel.h"
+#include "squirrel/squirrel.h"
-#include "serverchathooks.h"
-#include "localchatwriter.h"
+#include "server/serverchathooks.h"
+#include "client/localchatwriter.h"
#include <rapidjson/document.h>
diff --git a/NorthstarDLL/scriptbrowserhooks.cpp b/NorthstarDLL/scripts/client/scriptbrowserhooks.cpp
index df4014de..df4014de 100644
--- a/NorthstarDLL/scriptbrowserhooks.cpp
+++ b/NorthstarDLL/scripts/client/scriptbrowserhooks.cpp
diff --git a/NorthstarDLL/scriptmainmenupromos.cpp b/NorthstarDLL/scripts/client/scriptmainmenupromos.cpp
index 5f7a09c1..0ea167f8 100644
--- a/NorthstarDLL/scriptmainmenupromos.cpp
+++ b/NorthstarDLL/scripts/client/scriptmainmenupromos.cpp
@@ -1,6 +1,6 @@
#include "pch.h"
-#include "squirrel.h"
-#include "masterserver.h"
+#include "squirrel/squirrel.h"
+#include "masterserver/masterserver.h"
// mirror this in script
enum eMainMenuPromoDataProperty
@@ -121,4 +121,4 @@ ADD_SQFUNC("var", NSGetCustomMainMenuPromoData, "int promoDataKey", "", ScriptCo
}
return SQRESULT_NOTNULL;
-} \ No newline at end of file
+}
diff --git a/NorthstarDLL/scriptmodmenu.cpp b/NorthstarDLL/scripts/client/scriptmodmenu.cpp
index df5dc101..75d05acc 100644
--- a/NorthstarDLL/scriptmodmenu.cpp
+++ b/NorthstarDLL/scripts/client/scriptmodmenu.cpp
@@ -1,8 +1,8 @@
#include "pch.h"
-#include "modmanager.h"
-#include "squirrel.h"
+#include "mods/modmanager.h"
+#include "squirrel/squirrel.h"
-ADD_SQFUNC("array<string>", NSGetModNames, "", "", ScriptContext::UI)
+ADD_SQFUNC("array<string>", NSGetModNames, "", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
g_pSquirrel<context>->newarray(sqvm, 0);
@@ -15,7 +15,7 @@ ADD_SQFUNC("array<string>", NSGetModNames, "", "", ScriptContext::UI)
return SQRESULT_NOTNULL;
}
-ADD_SQFUNC("bool", NSIsModEnabled, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("bool", NSIsModEnabled, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -32,7 +32,7 @@ ADD_SQFUNC("bool", NSIsModEnabled, "string modName", "", ScriptContext::UI)
return SQRESULT_NULL;
}
-ADD_SQFUNC("void", NSSetModEnabled, "string modName, bool enabled", "", ScriptContext::UI)
+ADD_SQFUNC("void", NSSetModEnabled, "string modName, bool enabled", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
const SQBool enabled = g_pSquirrel<context>->getbool(sqvm, 2);
@@ -50,7 +50,7 @@ ADD_SQFUNC("void", NSSetModEnabled, "string modName, bool enabled", "", ScriptCo
return SQRESULT_NULL;
}
-ADD_SQFUNC("string", NSGetModDescriptionByModName, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("string", NSGetModDescriptionByModName, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -67,7 +67,7 @@ ADD_SQFUNC("string", NSGetModDescriptionByModName, "string modName", "", ScriptC
return SQRESULT_NULL;
}
-ADD_SQFUNC("string", NSGetModVersionByModName, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("string", NSGetModVersionByModName, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -84,7 +84,7 @@ ADD_SQFUNC("string", NSGetModVersionByModName, "string modName", "", ScriptConte
return SQRESULT_NULL;
}
-ADD_SQFUNC("string", NSGetModDownloadLinkByModName, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("string", NSGetModDownloadLinkByModName, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -101,7 +101,7 @@ ADD_SQFUNC("string", NSGetModDownloadLinkByModName, "string modName", "", Script
return SQRESULT_NULL;
}
-ADD_SQFUNC("int", NSGetModLoadPriority, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("int", NSGetModLoadPriority, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -118,7 +118,7 @@ ADD_SQFUNC("int", NSGetModLoadPriority, "string modName", "", ScriptContext::UI)
return SQRESULT_NULL;
}
-ADD_SQFUNC("bool", NSIsModRequiredOnClient, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC("bool", NSIsModRequiredOnClient, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
@@ -135,7 +135,8 @@ ADD_SQFUNC("bool", NSIsModRequiredOnClient, "string modName", "", ScriptContext:
return SQRESULT_NULL;
}
-ADD_SQFUNC("array<string>", NSGetModConvarsByModName, "string modName", "", ScriptContext::UI)
+ADD_SQFUNC(
+ "array<string>", NSGetModConvarsByModName, "string modName", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
{
const SQChar* modName = g_pSquirrel<context>->getstring(sqvm, 1);
g_pSquirrel<context>->newarray(sqvm, 0);
diff --git a/NorthstarDLL/scriptserverbrowser.cpp b/NorthstarDLL/scripts/client/scriptserverbrowser.cpp
index 05f83269..5f1287ad 100644
--- a/NorthstarDLL/scriptserverbrowser.cpp
+++ b/NorthstarDLL/scripts/client/scriptserverbrowser.cpp
@@ -1,9 +1,9 @@
#include "pch.h"
-#include "squirrel.h"
-#include "masterserver.h"
-#include "serverauthentication.h"
-#include "r2engine.h"
-#include "r2client.h"
+#include "squirrel/squirrel.h"
+#include "masterserver/masterserver.h"
+#include "server/auth/serverauthentication.h"
+#include "engine/r2engine.h"
+#include "client/r2client.h"
// functions for viewing server browser
diff --git a/NorthstarDLL/scriptservertoclientstringcommand.cpp b/NorthstarDLL/scripts/client/scriptservertoclientstringcommand.cpp
index ac19c3af..f3cb2f18 100644
--- a/NorthstarDLL/scriptservertoclientstringcommand.cpp
+++ b/NorthstarDLL/scripts/client/scriptservertoclientstringcommand.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "squirrel.h"
-#include "convar.h"
-#include "concommand.h"
+#include "squirrel/squirrel.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
void ConCommand_ns_script_servertoclientstringcommand(const CCommand& arg)
{
diff --git a/NorthstarDLL/scriptdatatables.cpp b/NorthstarDLL/scripts/scriptdatatables.cpp
index dfa45737..915d4df0 100644
--- a/NorthstarDLL/scriptdatatables.cpp
+++ b/NorthstarDLL/scripts/scriptdatatables.cpp
@@ -1,12 +1,12 @@
#include "pch.h"
-#include "squirrel.h"
-#include "rpakfilesystem.h"
-#include "convar.h"
-#include "dedicated.h"
-#include "filesystem.h"
-#include "vector.h"
-#include "tier0.h"
-#include "r2engine.h"
+#include "squirrel/squirrel.h"
+#include "core/filesystem/rpakfilesystem.h"
+#include "core/convar/convar.h"
+#include "dedicated/dedicated.h"
+#include "core/filesystem/filesystem.h"
+#include "core/math/vector.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
#include <iostream>
#include <sstream>
#include <map>
diff --git a/NorthstarDLL/scripts/scripthttprequesthandler.cpp b/NorthstarDLL/scripts/scripthttprequesthandler.cpp
new file mode 100644
index 00000000..17ccc888
--- /dev/null
+++ b/NorthstarDLL/scripts/scripthttprequesthandler.cpp
@@ -0,0 +1,586 @@
+#include "pch.h"
+#include "scripthttprequesthandler.h"
+#include "util/version.h"
+#include "squirrel/squirrel.h"
+#include "core/tier0.h"
+
+HttpRequestHandler* g_httpRequestHandler;
+
+bool IsHttpDisabled()
+{
+ const static bool bIsHttpDisabled = Tier0::CommandLine()->FindParm("-disablehttprequests");
+ return bIsHttpDisabled;
+}
+
+bool IsLocalHttpAllowed()
+{
+ const static bool bIsLocalHttpAllowed = Tier0::CommandLine()->FindParm("-allowlocalhttp");
+ return bIsLocalHttpAllowed;
+}
+
+bool DisableHttpSsl()
+{
+ const static bool bDisableHttpSsl = Tier0::CommandLine()->FindParm("-disablehttpssl");
+ return bDisableHttpSsl;
+}
+
+HttpRequestHandler::HttpRequestHandler()
+{
+ // Cache the launch parameters as early as possible in order to avoid possible exploits that change them at runtime.
+ IsHttpDisabled();
+ IsLocalHttpAllowed();
+ DisableHttpSsl();
+}
+
+void HttpRequestHandler::StartHttpRequestHandler()
+{
+ if (IsRunning())
+ {
+ spdlog::warn("%s was called while IsRunning() is true!", __FUNCTION__);
+ return;
+ }
+
+ m_bIsHttpRequestHandlerRunning = true;
+ spdlog::info("HttpRequestHandler started.");
+}
+
+void HttpRequestHandler::StopHttpRequestHandler()
+{
+ if (!IsRunning())
+ {
+ spdlog::warn("%s was called while IsRunning() is false", __FUNCTION__);
+ return;
+ }
+
+ m_bIsHttpRequestHandlerRunning = false;
+ spdlog::info("HttpRequestHandler stopped.");
+}
+
+bool IsHttpDestinationHostAllowed(const std::string& host, std::string& outHostname, std::string& outAddress, std::string& outPort)
+{
+ CURLU* url = curl_url();
+ if (!url)
+ {
+ spdlog::error("Failed to call curl_url() for http request.");
+ return false;
+ }
+
+ if (curl_url_set(url, CURLUPART_URL, host.c_str(), CURLU_DEFAULT_SCHEME) != CURLUE_OK)
+ {
+ spdlog::error("Failed to parse destination URL for http request.");
+
+ curl_url_cleanup(url);
+ return false;
+ }
+
+ char* urlHostname = nullptr;
+ if (curl_url_get(url, CURLUPART_HOST, &urlHostname, 0) != CURLUE_OK)
+ {
+ spdlog::error("Failed to parse hostname from destination URL for http request.");
+
+ curl_url_cleanup(url);
+ return false;
+ }
+
+ char* urlScheme = nullptr;
+ if (curl_url_get(url, CURLUPART_SCHEME, &urlScheme, CURLU_DEFAULT_SCHEME) != CURLUE_OK)
+ {
+ spdlog::error("Failed to parse scheme from destination URL for http request.");
+
+ curl_url_cleanup(url);
+ curl_free(urlHostname);
+ return false;
+ }
+
+ char* urlPort = nullptr;
+ if (curl_url_get(url, CURLUPART_PORT, &urlPort, CURLU_DEFAULT_PORT) != CURLUE_OK)
+ {
+ spdlog::error("Failed to parse port from destination URL for http request.");
+
+ curl_url_cleanup(url);
+ curl_free(urlHostname);
+ curl_free(urlScheme);
+ return false;
+ }
+
+ // Resolve the hostname into an address.
+ addrinfo* result;
+ addrinfo hints;
+ std::memset(&hints, 0, sizeof(addrinfo));
+ hints.ai_family = AF_UNSPEC;
+
+ if (getaddrinfo(urlHostname, urlScheme, &hints, &result) != 0)
+ {
+ spdlog::error("Failed to resolve http request destination {} using getaddrinfo().", urlHostname);
+
+ curl_url_cleanup(url);
+ curl_free(urlHostname);
+ curl_free(urlScheme);
+ curl_free(urlPort);
+ return false;
+ }
+
+ bool bFoundIPv6 = false;
+ sockaddr_in* sockaddr_ipv4 = nullptr;
+ for (addrinfo* info = result; info; info = info->ai_next)
+ {
+ if (info->ai_family == AF_INET)
+ {
+ sockaddr_ipv4 = (sockaddr_in*)info->ai_addr;
+ break;
+ }
+
+ bFoundIPv6 = bFoundIPv6 || info->ai_family == AF_INET6;
+ }
+
+ if (sockaddr_ipv4 == nullptr)
+ {
+ if (bFoundIPv6)
+ {
+ spdlog::error("Only IPv4 destinations are supported for HTTP requests. To allow IPv6, launch the game using -allowlocalhttp.");
+ }
+ else
+ {
+ spdlog::error("Failed to resolve http request destination {} into a valid IPv4 address.", urlHostname);
+ }
+
+ curl_free(urlHostname);
+ curl_free(urlScheme);
+ curl_free(urlPort);
+ curl_url_cleanup(url);
+
+ return false;
+ }
+
+ // Fast checks for private ranges of IPv4.
+ // clang-format off
+ {
+ auto addrBytes = sockaddr_ipv4->sin_addr.S_un.S_un_b;
+
+ if (addrBytes.s_b1 == 10 // 10.0.0.0 - 10.255.255.255 (Class A Private)
+ || addrBytes.s_b1 == 172 && addrBytes.s_b2 >= 16 && addrBytes.s_b2 <= 31 // 172.16.0.0 - 172.31.255.255 (Class B Private)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 == 168 // 192.168.0.0 - 192.168.255.255 (Class C Private)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 == 0 && addrBytes.s_b3 == 0 // 192.0.0.0 - 192.0.0.255 (IETF Assignment)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 == 0 && addrBytes.s_b3 == 2 // 192.0.2.0 - 192.0.2.255 (TEST-NET-1)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 == 88 && addrBytes.s_b3 == 99 // 192.88.99.0 - 192.88.99.255 (IPv4-IPv6 Relay)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 >= 18 && addrBytes.s_b2 <= 19 // 192.18.0.0 - 192.19.255.255 (Internet Benchmark)
+ || addrBytes.s_b1 == 192 && addrBytes.s_b2 == 51 && addrBytes.s_b3 == 100 // 192.51.100.0 - 192.51.100.255 (TEST-NET-2)
+ || addrBytes.s_b1 == 203 && addrBytes.s_b2 == 0 && addrBytes.s_b3 == 113 // 203.0.113.0 - 203.0.113.255 (TEST-NET-3)
+ || addrBytes.s_b1 == 169 && addrBytes.s_b2 == 254 // 169.254.00 - 169.254.255.255 (Link-local/APIPA)
+ || addrBytes.s_b1 == 127 // 127.0.0.0 - 127.255.255.255 (Loopback)
+ || addrBytes.s_b1 == 0 // 0.0.0.0 - 0.255.255.255 (Current network)
+ || addrBytes.s_b1 == 100 && addrBytes.s_b2 >= 64 && addrBytes.s_b2 <= 127 // 100.64.0.0 - 100.127.255.255 (Shared address space)
+ || sockaddr_ipv4->sin_addr.S_un.S_addr == 0xFFFFFFFF // 255.255.255.255 (Broadcast)
+ || addrBytes.s_b1 >= 224 && addrBytes.s_b2 <= 239 // 224.0.0.0 - 239.255.255.255 (Multicast)
+ || addrBytes.s_b1 == 233 && addrBytes.s_b2 == 252 && addrBytes.s_b3 == 0 // 233.252.0.0 - 233.252.0.255 (MCAST-TEST-NET)
+ || addrBytes.s_b1 >= 240 && addrBytes.s_b4 <= 254) // 240.0.0.0 - 255.255.255.254 (Future Use Class E)
+ {
+ curl_free(urlHostname);
+ curl_free(urlScheme);
+ curl_free(urlPort);
+ curl_url_cleanup(url);
+
+ return false;
+ }
+ }
+
+ // clang-format on
+
+ char resolvedStr[INET_ADDRSTRLEN];
+ inet_ntop(AF_INET, &sockaddr_ipv4->sin_addr, resolvedStr, INET_ADDRSTRLEN);
+
+ // Use the resolved address as the new request host.
+ outHostname = urlHostname;
+ outAddress = resolvedStr;
+ outPort = urlPort;
+
+ freeaddrinfo(result);
+
+ curl_free(urlHostname);
+ curl_free(urlScheme);
+ curl_free(urlPort);
+ curl_url_cleanup(url);
+
+ return true;
+}
+
+size_t HttpCurlWriteToStringBufferCallback(char* contents, size_t size, size_t nmemb, void* userp)
+{
+ ((std::string*)userp)->append((char*)contents, size * nmemb);
+ return size * nmemb;
+}
+
+template <ScriptContext context> int HttpRequestHandler::MakeHttpRequest(const HttpRequest& requestParameters)
+{
+ if (!IsRunning())
+ {
+ spdlog::warn("%s was called while IsRunning() is false!", __FUNCTION__);
+ return -1;
+ }
+
+ if (IsHttpDisabled())
+ {
+ spdlog::warn("NS_InternalMakeHttpRequest called while the game is running with -disablehttprequests."
+ " Please check if requests are allowed using NSIsHttpEnabled() first.");
+ return -1;
+ }
+
+ bool bAllowLocalHttp = IsLocalHttpAllowed();
+
+ // This handle will be returned to Squirrel so it can wait for the response and assign a callback for it.
+ int handle = ++m_iLastRequestHandle;
+
+ std::thread requestThread(
+ [this, handle, requestParameters, bAllowLocalHttp]()
+ {
+ std::string hostname, resolvedAddress, resolvedPort;
+
+ if (!bAllowLocalHttp)
+ {
+ if (!IsHttpDestinationHostAllowed(requestParameters.baseUrl, hostname, resolvedAddress, resolvedPort))
+ {
+ spdlog::warn(
+ "HttpRequestHandler::MakeHttpRequest attempted to make a request to a private network. This is only allowed when "
+ "running the game with -allowlocalhttp.");
+ g_pSquirrel<context>->AsyncCall(
+ "NSHandleFailedHttpRequest",
+ handle,
+ (int)0,
+ "Cannot make HTTP requests to private network hosts without -allowlocalhttp. Check your console for more "
+ "information.");
+ return;
+ }
+ }
+
+ CURL* curl = curl_easy_init();
+ if (!curl)
+ {
+ spdlog::error("HttpRequestHandler::MakeHttpRequest failed to init libcurl for request.");
+ g_pSquirrel<context>->AsyncCall(
+ "NSHandleFailedHttpRequest", handle, static_cast<int>(CURLE_FAILED_INIT), curl_easy_strerror(CURLE_FAILED_INIT));
+ return;
+ }
+
+ // HEAD has no body.
+ if (requestParameters.method == HttpRequestMethod::HRM_HEAD)
+ {
+ curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+ }
+
+ curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, HttpRequestMethod::ToString(requestParameters.method).c_str());
+
+ // Only resolve to IPv4 if we don't allow private network requests.
+ curl_slist* host = nullptr;
+ if (!bAllowLocalHttp)
+ {
+ curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+ host = curl_slist_append(host, fmt::format("{}:{}:{}", hostname, resolvedPort, resolvedAddress).c_str());
+ curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+ }
+
+ // Ensure we only allow HTTP or HTTPS.
+ curl_easy_setopt(curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
+
+ // Allow redirects
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+
+ // Check if the url already contains a query.
+ // If so, we'll know to append with & instead of start with ?
+ std::string queryUrl = requestParameters.baseUrl;
+ bool bUrlContainsQuery = false;
+
+ // If this fails, just ignore the parsing and trust what the user wants to query.
+ // Probably will fail but handling it here would be annoying.
+ CURLU* curlUrl = curl_url();
+ if (curlUrl)
+ {
+ if (curl_url_set(curlUrl, CURLUPART_URL, queryUrl.c_str(), CURLU_DEFAULT_SCHEME) == CURLUE_OK)
+ {
+ char* currentQuery;
+ if (curl_url_get(curlUrl, CURLUPART_QUERY, &currentQuery, 0) == CURLUE_OK)
+ {
+ if (currentQuery && std::strlen(currentQuery) != 0)
+ {
+ bUrlContainsQuery = true;
+ }
+ }
+
+ curl_free(currentQuery);
+ }
+
+ curl_url_cleanup(curlUrl);
+ }
+
+ // GET requests, or POST-like requests with an empty body, can have query parameters.
+ // Append them to the base url.
+ if (HttpRequestMethod::CanHaveQueryParameters(requestParameters.method) &&
+ !HttpRequestMethod::UsesCurlPostOptions(requestParameters.method) ||
+ requestParameters.body.empty())
+ {
+ bool isFirstValue = true;
+ for (const auto& kv : requestParameters.queryParameters)
+ {
+ char* key = curl_easy_escape(curl, kv.first.c_str(), kv.first.length());
+
+ for (const std::string& queryValue : kv.second)
+ {
+ char* value = curl_easy_escape(curl, queryValue.c_str(), queryValue.length());
+
+ if (isFirstValue && !bUrlContainsQuery)
+ {
+ queryUrl.append(fmt::format("?{}={}", key, value));
+ isFirstValue = false;
+ }
+ else
+ {
+ queryUrl.append(fmt::format("&{}={}", key, value));
+ }
+
+ curl_free(value);
+ }
+
+ curl_free(key);
+ }
+ }
+
+ // If this method uses POST-like curl options, set those and set the body.
+ // The body won't be sent if it's empty anyway, meaning the query parameters above, if any, would be.
+ if (HttpRequestMethod::UsesCurlPostOptions(requestParameters.method))
+ {
+ // Grab the body and set it as a POST field
+ curl_easy_setopt(curl, CURLOPT_POST, 1L);
+
+ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, requestParameters.body.length());
+ curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, requestParameters.body.c_str());
+ }
+
+ // Set the full URL for this http request.
+ curl_easy_setopt(curl, CURLOPT_URL, queryUrl.c_str());
+
+ std::string bodyBuffer;
+ std::string headerBuffer;
+
+ // Set up buffers to write the response headers and body.
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpCurlWriteToStringBufferCallback);
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, &bodyBuffer);
+ curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, HttpCurlWriteToStringBufferCallback);
+ curl_easy_setopt(curl, CURLOPT_HEADERDATA, &headerBuffer);
+
+ // Add all the headers for the request.
+ curl_slist* headers = nullptr;
+
+ // Content-Type header for POST-like requests.
+ if (HttpRequestMethod::UsesCurlPostOptions(requestParameters.method) && !requestParameters.body.empty())
+ {
+ headers = curl_slist_append(headers, fmt::format("Content-Type: {}", requestParameters.contentType).c_str());
+ }
+
+ for (const auto& kv : requestParameters.headers)
+ {
+ for (const std::string& headerValue : kv.second)
+ {
+ headers = curl_slist_append(headers, fmt::format("{}: {}", kv.first, headerValue).c_str());
+ }
+ }
+
+ if (headers != nullptr)
+ {
+ curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
+ }
+
+ // Disable SSL checks if requested by the user.
+ if (DisableHttpSsl())
+ {
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 0L);
+ }
+
+ // Enforce the Northstar user agent, unless an override was specified.
+ if (requestParameters.userAgent.empty())
+ {
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, &NSUserAgent);
+ }
+ else
+ {
+ curl_easy_setopt(curl, CURLOPT_USERAGENT, requestParameters.userAgent.c_str());
+ }
+
+ // Set the timeout for this request. Max 60 seconds so mods can't just spin up native threads all the time.
+ curl_easy_setopt(curl, CURLOPT_TIMEOUT, std::clamp<long>(requestParameters.timeout, 1, 60));
+
+ CURLcode result = curl_easy_perform(curl);
+ if (IsRunning())
+ {
+ if (result == CURLE_OK)
+ {
+ // While the curl request is OK, it could return a non success code.
+ // Squirrel side will handle firing the correct callback.
+ long httpCode = 0;
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
+ g_pSquirrel<context>->AsyncCall(
+ "NSHandleSuccessfulHttpRequest", handle, static_cast<int>(httpCode), bodyBuffer, headerBuffer);
+ }
+ else
+ {
+ // Pass CURL result code & error.
+ spdlog::error(
+ "curl_easy_perform() failed with code {}, error: {}", static_cast<int>(result), curl_easy_strerror(result));
+
+ // If it's an SSL issue, tell the user they may disable SSL checks using -disablehttpssl.
+ if (result == CURLE_PEER_FAILED_VERIFICATION || result == CURLE_SSL_CERTPROBLEM ||
+ result == CURLE_SSL_INVALIDCERTSTATUS)
+ {
+ spdlog::error("You can try disabling SSL verifications for this issue using the -disablehttpssl launch argument. "
+ "Keep in mind this is potentially dangerous!");
+ }
+
+ g_pSquirrel<context>->AsyncCall(
+ "NSHandleFailedHttpRequest", handle, static_cast<int>(result), curl_easy_strerror(result));
+ }
+ }
+
+ curl_easy_cleanup(curl);
+ curl_slist_free_all(headers);
+ curl_slist_free_all(host);
+ });
+
+ requestThread.detach();
+ return handle;
+}
+
+template <ScriptContext context> void HttpRequestHandler::RegisterSQFuncs()
+{
+ g_pSquirrel<context>->AddFuncRegistration(
+ "int",
+ "NS_InternalMakeHttpRequest",
+ "int method, string baseUrl, table<string, array<string> > headers, table<string, array<string> > queryParams, string contentType, "
+ "string body, "
+ "int timeout, string userAgent",
+ "[Internal use only] Passes the HttpRequest struct fields to be reconstructed in native and used for an http request",
+ SQ_InternalMakeHttpRequest<context>);
+
+ g_pSquirrel<context>->AddFuncRegistration(
+ "bool",
+ "NSIsHttpEnabled",
+ "",
+ "Whether or not HTTP requests are enabled. You can opt-out by starting the game with -disablehttprequests.",
+ SQ_IsHttpEnabled<context>);
+
+ g_pSquirrel<context>->AddFuncRegistration(
+ "bool",
+ "NSIsLocalHttpAllowed",
+ "",
+ "Whether or not HTTP requests can be made to a private network address. You can enable this by starting the game with "
+ "-allowlocalhttp.",
+ SQ_IsLocalHttpAllowed<context>);
+}
+
+// int NS_InternalMakeHttpRequest(int method, string baseUrl, table<string, string> headers, table<string, string> queryParams,
+// string contentType, string body, int timeout, string userAgent)
+template <ScriptContext context> SQRESULT SQ_InternalMakeHttpRequest(HSquirrelVM* sqvm)
+{
+ if (!g_httpRequestHandler || !g_httpRequestHandler->IsRunning())
+ {
+ spdlog::warn("NS_InternalMakeHttpRequest called while the http request handler isn't running.");
+ g_pSquirrel<context>->pushinteger(sqvm, -1);
+ return SQRESULT_NOTNULL;
+ }
+
+ if (IsHttpDisabled())
+ {
+ spdlog::warn("NS_InternalMakeHttpRequest called while the game is running with -disablehttprequests."
+ " Please check if requests are allowed using NSIsHttpEnabled() first.");
+ g_pSquirrel<context>->pushinteger(sqvm, -1);
+ return SQRESULT_NOTNULL;
+ }
+
+ HttpRequest request;
+ request.method = static_cast<HttpRequestMethod::Type>(g_pSquirrel<context>->getinteger(sqvm, 1));
+ request.baseUrl = g_pSquirrel<context>->getstring(sqvm, 2);
+
+ // Read the tables for headers and query parameters.
+ SQTable* headerTable = sqvm->_stackOfCurrentFunction[3]._VAL.asTable;
+ for (int idx = 0; idx < headerTable->_numOfNodes; ++idx)
+ {
+ tableNode* node = &headerTable->_nodes[idx];
+
+ if (node->key._Type == OT_STRING && node->val._Type == OT_ARRAY)
+ {
+ SQArray* valueArray = node->val._VAL.asArray;
+ std::vector<std::string> headerValues;
+
+ for (int vIdx = 0; vIdx < valueArray->_usedSlots; ++vIdx)
+ {
+ if (valueArray->_values[vIdx]._Type == OT_STRING)
+ {
+ headerValues.push_back(valueArray->_values[vIdx]._VAL.asString->_val);
+ }
+ }
+
+ request.headers[node->key._VAL.asString->_val] = headerValues;
+ }
+ }
+
+ SQTable* queryTable = sqvm->_stackOfCurrentFunction[4]._VAL.asTable;
+ for (int idx = 0; idx < queryTable->_numOfNodes; ++idx)
+ {
+ tableNode* node = &queryTable->_nodes[idx];
+
+ if (node->key._Type == OT_STRING && node->val._Type == OT_ARRAY)
+ {
+ SQArray* valueArray = node->val._VAL.asArray;
+ std::vector<std::string> queryValues;
+
+ for (int vIdx = 0; vIdx < valueArray->_usedSlots; ++vIdx)
+ {
+ if (valueArray->_values[vIdx]._Type == OT_STRING)
+ {
+ queryValues.push_back(valueArray->_values[vIdx]._VAL.asString->_val);
+ }
+ }
+
+ request.queryParameters[node->key._VAL.asString->_val] = queryValues;
+ }
+ }
+
+ request.contentType = g_pSquirrel<context>->getstring(sqvm, 5);
+ request.body = g_pSquirrel<context>->getstring(sqvm, 6);
+ request.timeout = g_pSquirrel<context>->getinteger(sqvm, 7);
+ request.userAgent = g_pSquirrel<context>->getstring(sqvm, 8);
+
+ int handle = g_httpRequestHandler->MakeHttpRequest<context>(request);
+ g_pSquirrel<context>->pushinteger(sqvm, handle);
+ return SQRESULT_NOTNULL;
+}
+
+// bool NSIsHttpEnabled()
+template <ScriptContext context> SQRESULT SQ_IsHttpEnabled(HSquirrelVM* sqvm)
+{
+ g_pSquirrel<context>->pushbool(sqvm, !IsHttpDisabled());
+ return SQRESULT_NOTNULL;
+}
+
+// bool NSIsLocalHttpAllowed()
+template <ScriptContext context> SQRESULT SQ_IsLocalHttpAllowed(HSquirrelVM* sqvm)
+{
+ g_pSquirrel<context>->pushbool(sqvm, IsLocalHttpAllowed());
+ return SQRESULT_NOTNULL;
+}
+
+ON_DLL_LOAD_RELIESON("client.dll", HttpRequestHandler_ClientInit, ClientSquirrel, (CModule module))
+{
+ g_httpRequestHandler->RegisterSQFuncs<ScriptContext::CLIENT>();
+ g_httpRequestHandler->RegisterSQFuncs<ScriptContext::UI>();
+}
+
+ON_DLL_LOAD_RELIESON("server.dll", HttpRequestHandler_ServerInit, ServerSquirrel, (CModule module))
+{
+ g_httpRequestHandler->RegisterSQFuncs<ScriptContext::SERVER>();
+}
+
+ON_DLL_LOAD("engine.dll", HttpRequestHandler_Init, (CModule module))
+{
+ g_httpRequestHandler = new HttpRequestHandler;
+ g_httpRequestHandler->StartHttpRequestHandler();
+}
diff --git a/NorthstarDLL/scripts/scripthttprequesthandler.h b/NorthstarDLL/scripts/scripthttprequesthandler.h
new file mode 100644
index 00000000..0f888b6e
--- /dev/null
+++ b/NorthstarDLL/scripts/scripthttprequesthandler.h
@@ -0,0 +1,132 @@
+#pragma once
+
+#include "pch.h"
+
+enum class ScriptContext;
+
+// These definitions below should match on the Squirrel side so we can easily pass them along through a function.
+
+/**
+ * Allowed methods for an HttpRequest.
+ */
+namespace HttpRequestMethod
+{
+ enum Type
+ {
+ HRM_GET = 0,
+ HRM_POST = 1,
+ HRM_HEAD = 2,
+ HRM_PUT = 3,
+ HRM_DELETE = 4,
+ HRM_PATCH = 5,
+ HRM_OPTIONS = 6,
+ };
+
+ /** Returns the HTTP string representation of the given method. */
+ inline std::string ToString(HttpRequestMethod::Type method)
+ {
+ switch (method)
+ {
+ case HttpRequestMethod::HRM_GET:
+ return "GET";
+ case HttpRequestMethod::HRM_POST:
+ return "POST";
+ case HttpRequestMethod::HRM_HEAD:
+ return "HEAD";
+ case HttpRequestMethod::HRM_PUT:
+ return "PUT";
+ case HttpRequestMethod::HRM_DELETE:
+ return "DELETE";
+ case HttpRequestMethod::HRM_PATCH:
+ return "PATCH";
+ case HttpRequestMethod::HRM_OPTIONS:
+ return "OPTIONS";
+ default:
+ return "INVALID";
+ }
+ }
+
+ /** Whether or not the given method should be treated like a POST for curlopts. */
+ bool UsesCurlPostOptions(HttpRequestMethod::Type method)
+ {
+ switch (method)
+ {
+ case HttpRequestMethod::HRM_POST:
+ case HttpRequestMethod::HRM_PUT:
+ case HttpRequestMethod::HRM_DELETE:
+ case HttpRequestMethod::HRM_PATCH:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ /** Whether or not the given http request method can have query parameters in the URL. */
+ bool CanHaveQueryParameters(HttpRequestMethod::Type method)
+ {
+ return method == HttpRequestMethod::HRM_GET || UsesCurlPostOptions(method);
+ }
+}; // namespace HttpRequestMethod
+
+/** Contains data about an http request that has been queued. */
+struct HttpRequest
+{
+ /** Method used for this http request. */
+ HttpRequestMethod::Type method;
+
+ /** Base URL of this http request. */
+ std::string baseUrl;
+
+ /** Headers used for this http request. Some may get overridden or ignored. */
+ std::unordered_map<std::string, std::vector<std::string>> headers;
+
+ /** Query parameters for this http request. */
+ std::unordered_map<std::string, std::vector<std::string>> queryParameters;
+
+ /** The content type of this http request. Defaults to text/plain & UTF-8 charset. */
+ std::string contentType = "text/plain; charset=utf-8";
+
+ /** The body of this http request. If set, will override queryParameters.*/
+ std::string body;
+
+ /** The timeout for the http request, in seconds. Must be between 1 and 60. */
+ int timeout;
+
+ /** If set, the override to use for the User-Agent header. */
+ std::string userAgent;
+};
+
+/**
+ * Handles making HTTP requests and sending the responses back to Squirrel.
+ */
+class HttpRequestHandler
+{
+ public:
+ HttpRequestHandler();
+
+ // Start/Stop the HTTP request handler. Right now this doesn't do much.
+ void StartHttpRequestHandler();
+ void StopHttpRequestHandler();
+
+ // Whether or not this http request handler is currently running.
+ bool IsRunning() const
+ {
+ return m_bIsHttpRequestHandlerRunning;
+ }
+
+ /**
+ * Creates a new thread to execute an HTTP request.
+ * @param requestParameters The parameters to use for this http request.
+ * @returns The handle for the http request being sent, or -1 if the request failed.
+ */
+ template <ScriptContext context> int MakeHttpRequest(const HttpRequest& requestParameters);
+
+ /** Registers the HTTP request Squirrel functions for the given script context. */
+ template <ScriptContext context> void RegisterSQFuncs();
+
+ private:
+ int m_iLastRequestHandle = 0;
+ std::atomic_bool m_bIsHttpRequestHandlerRunning = false;
+};
+
+extern HttpRequestHandler* g_httpRequestHandler;
diff --git a/NorthstarDLL/scriptjson.cpp b/NorthstarDLL/scripts/scriptjson.cpp
index 049a7b20..f41b0457 100644
--- a/NorthstarDLL/scriptjson.cpp
+++ b/NorthstarDLL/scripts/scriptjson.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "squirrel.h"
+#include "squirrel/squirrel.h"
#include "rapidjson/error/en.h"
#include "rapidjson/document.h"
@@ -117,32 +117,19 @@ template <ScriptContext context> void EncodeJSONTable(
rapidjson::StringRef(node->key._VAL.asString->_val), rapidjson::StringRef(node->val._VAL.asString->_val), allocator);
break;
case OT_INTEGER:
- obj->AddMember(
- rapidjson::StringRef(node->key._VAL.asString->_val),
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>(
- (int)node->val._VAL.asInteger),
- allocator);
+ obj->AddMember(rapidjson::StringRef(node->key._VAL.asString->_val), node->val._VAL.asInteger, allocator);
break;
case OT_FLOAT:
- obj->AddMember(
- rapidjson::StringRef(node->key._VAL.asString->_val),
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>(node->val._VAL.asFloat),
- allocator);
+ obj->AddMember(rapidjson::StringRef(node->key._VAL.asString->_val), node->val._VAL.asFloat, allocator);
break;
case OT_BOOL:
if (node->val._VAL.asInteger)
{
- obj->AddMember(
- rapidjson::StringRef(node->key._VAL.asString->_val),
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>(true),
- allocator);
+ obj->AddMember(rapidjson::StringRef(node->key._VAL.asString->_val), true, allocator);
}
else
{
- obj->AddMember(
- rapidjson::StringRef(node->key._VAL.asString->_val),
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>(false),
- allocator);
+ obj->AddMember(rapidjson::StringRef(node->key._VAL.asString->_val), false, allocator);
}
break;
case OT_TABLE:
@@ -179,14 +166,10 @@ template <ScriptContext context> void EncodeJSONArray(
obj->PushBack(rapidjson::StringRef(node->_VAL.asString->_val), allocator);
break;
case OT_INTEGER:
- obj->PushBack(
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>((int)node->_VAL.asInteger),
- allocator);
+ obj->PushBack(node->_VAL.asInteger, allocator);
break;
case OT_FLOAT:
- obj->PushBack(
- rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>(node->_VAL.asFloat),
- allocator);
+ obj->PushBack(node->_VAL.asFloat, allocator);
break;
case OT_BOOL:
if (node->_VAL.asInteger)
diff --git a/NorthstarDLL/scripts/scriptutility.cpp b/NorthstarDLL/scripts/scriptutility.cpp
new file mode 100644
index 00000000..fa35df7b
--- /dev/null
+++ b/NorthstarDLL/scripts/scriptutility.cpp
@@ -0,0 +1,29 @@
+#include "pch.h"
+#include "squirrel/squirrel.h"
+#include "client/r2client.h"
+#include "engine/r2engine.h"
+
+// asset function StringToAsset( string assetName )
+ADD_SQFUNC(
+ "asset",
+ StringToAsset,
+ "string assetName",
+ "converts a given string to an asset",
+ ScriptContext::UI | ScriptContext::CLIENT | ScriptContext::SERVER)
+{
+ g_pSquirrel<context>->pushasset(sqvm, g_pSquirrel<context>->getstring(sqvm, 1), -1);
+ return SQRESULT_NOTNULL;
+}
+
+// string function NSGetLocalPlayerUID()
+ADD_SQFUNC(
+ "string", NSGetLocalPlayerUID, "", "Returns the local player's uid.", ScriptContext::UI | ScriptContext::CLIENT | ScriptContext::SERVER)
+{
+ if (R2::g_pLocalPlayerUserID)
+ {
+ g_pSquirrel<context>->pushstring(sqvm, R2::g_pLocalPlayerUserID);
+ return SQRESULT_NOTNULL;
+ }
+
+ return SQRESULT_NULL;
+}
diff --git a/NorthstarDLL/miscserverfixes.cpp b/NorthstarDLL/scripts/server/miscserverfixes.cpp
index 4feca505..4feca505 100644
--- a/NorthstarDLL/miscserverfixes.cpp
+++ b/NorthstarDLL/scripts/server/miscserverfixes.cpp
diff --git a/NorthstarDLL/miscserverscript.cpp b/NorthstarDLL/scripts/server/miscserverscript.cpp
index a8e7264b..b58bdfda 100644
--- a/NorthstarDLL/miscserverscript.cpp
+++ b/NorthstarDLL/scripts/server/miscserverscript.cpp
@@ -1,10 +1,10 @@
#include "pch.h"
-#include "squirrel.h"
-#include "masterserver.h"
-#include "serverauthentication.h"
-#include "dedicated.h"
-#include "r2client.h"
-#include "r2server.h"
+#include "squirrel/squirrel.h"
+#include "masterserver/masterserver.h"
+#include "server/auth/serverauthentication.h"
+#include "dedicated/dedicated.h"
+#include "client/r2client.h"
+#include "server/r2server.h"
#include <filesystem>
@@ -58,3 +58,44 @@ ADD_SQFUNC("bool", NSIsDedicated, "", "", ScriptContext::SERVER)
g_pSquirrel<context>->pushbool(sqvm, IsDedicatedServer());
return SQRESULT_NOTNULL;
}
+
+ADD_SQFUNC(
+ "bool",
+ NSDisconnectPlayer,
+ "entity player, string reason",
+ "Disconnects the player from the server with the given reason",
+ ScriptContext::SERVER)
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<context>->getentity<R2::CBasePlayer>(sqvm, 1);
+ const char* reason = g_pSquirrel<context>->getstring(sqvm, 2);
+
+ if (!pPlayer)
+ {
+ spdlog::warn("Attempted to call NSDisconnectPlayer() with null player.");
+
+ g_pSquirrel<context>->pushbool(sqvm, false);
+ return SQRESULT_NOTNULL;
+ }
+
+ // Shouldn't happen but I like sanity checks.
+ R2::CBaseClient* pClient = &R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1];
+ if (!pClient)
+ {
+ spdlog::warn("NSDisconnectPlayer(): player entity has null CBaseClient!");
+
+ g_pSquirrel<context>->pushbool(sqvm, false);
+ return SQRESULT_NOTNULL;
+ }
+
+ if (reason)
+ {
+ R2::CBaseClient__Disconnect(pClient, 1, reason);
+ }
+ else
+ {
+ R2::CBaseClient__Disconnect(pClient, 1, "Disconnected by the server.");
+ }
+
+ g_pSquirrel<context>->pushbool(sqvm, true);
+ return SQRESULT_NOTNULL;
+}
diff --git a/NorthstarDLL/scriptuserinfo.cpp b/NorthstarDLL/scripts/server/scriptuserinfo.cpp
index 415ae3ea..68baac0e 100644
--- a/NorthstarDLL/scriptuserinfo.cpp
+++ b/NorthstarDLL/scripts/server/scriptuserinfo.cpp
@@ -1,105 +1,105 @@
-#include "pch.h"
-#include "squirrel.h"
-#include "r2engine.h"
-#include "r2server.h"
-
-// clang-format off
-ADD_SQFUNC("string", GetUserInfoKVString_Internal, "entity player, string key, string defaultValue = \"\"",
- "Gets the string value of a given player's userinfo convar by name", ScriptContext::SERVER)
-// clang-format on
-{
- const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
- if (!pPlayer)
- {
- g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
- return SQRESULT_ERROR;
- }
-
- const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
- const char* pDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 3);
-
- const char* pResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetString(pKey, pDefaultValue);
- g_pSquirrel<ScriptContext::SERVER>->pushstring(sqvm, pResult);
- return SQRESULT_NOTNULL;
-}
-
-// clang-format off
-ADD_SQFUNC("asset", GetUserInfoKVAsset_Internal, "entity player, string key, asset defaultValue = $\"\"",
- "Gets the asset value of a given player's userinfo convar by name", ScriptContext::SERVER)
-// clang-format on
-{
- const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
- if (!pPlayer)
- {
- g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
- return SQRESULT_ERROR;
- }
-
- const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
- const char* pDefaultValue;
- g_pSquirrel<ScriptContext::SERVER>->getasset(sqvm, 3, &pDefaultValue);
-
- const char* pResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetString(pKey, pDefaultValue);
- g_pSquirrel<ScriptContext::SERVER>->pushasset(sqvm, pResult);
- return SQRESULT_NOTNULL;
-}
-
-// clang-format off
-ADD_SQFUNC("int", GetUserInfoKVInt_Internal, "entity player, string key, int defaultValue = 0",
- "Gets the int value of a given player's userinfo convar by name", ScriptContext::SERVER)
-// clang-format on
-{
- const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
- if (!pPlayer)
- {
- g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
- return SQRESULT_ERROR;
- }
-
- const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
- const int iDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getinteger(sqvm, 3);
-
- const int iResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetInt(pKey, iDefaultValue);
- g_pSquirrel<ScriptContext::SERVER>->pushinteger(sqvm, iResult);
- return SQRESULT_NOTNULL;
-}
-
-// clang-format off
-ADD_SQFUNC("float", GetUserInfoKVFloat_Internal, "entity player, string key, float defaultValue = 0",
- "Gets the float value of a given player's userinfo convar by name", ScriptContext::SERVER)
-// clang-format on
-{
- const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
- if (!pPlayer)
- {
- g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
- return SQRESULT_ERROR;
- }
-
- const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
- const float flDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getfloat(sqvm, 3);
-
- const float flResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetFloat(pKey, flDefaultValue);
- g_pSquirrel<ScriptContext::SERVER>->pushfloat(sqvm, flResult);
- return SQRESULT_NOTNULL;
-}
-
-// clang-format off
-ADD_SQFUNC("bool", GetUserInfoKVBool_Internal, "entity player, string key, bool defaultValue = false",
- "Gets the bool value of a given player's userinfo convar by name", ScriptContext::SERVER)
-// clang-format on
-{
- const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
- if (!pPlayer)
- {
- g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
- return SQRESULT_ERROR;
- }
-
- const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
- const bool bDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getbool(sqvm, 3);
-
- const bool bResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetInt(pKey, bDefaultValue);
- g_pSquirrel<ScriptContext::SERVER>->pushbool(sqvm, bResult);
- return SQRESULT_NOTNULL;
-}
+#include "pch.h"
+#include "squirrel/squirrel.h"
+#include "engine/r2engine.h"
+#include "server/r2server.h"
+
+// clang-format off
+ADD_SQFUNC("string", GetUserInfoKVString_Internal, "entity player, string key, string defaultValue = \"\"",
+ "Gets the string value of a given player's userinfo convar by name", ScriptContext::SERVER)
+// clang-format on
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
+ if (!pPlayer)
+ {
+ g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
+ return SQRESULT_ERROR;
+ }
+
+ const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
+ const char* pDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 3);
+
+ const char* pResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetString(pKey, pDefaultValue);
+ g_pSquirrel<ScriptContext::SERVER>->pushstring(sqvm, pResult);
+ return SQRESULT_NOTNULL;
+}
+
+// clang-format off
+ADD_SQFUNC("asset", GetUserInfoKVAsset_Internal, "entity player, string key, asset defaultValue = $\"\"",
+ "Gets the asset value of a given player's userinfo convar by name", ScriptContext::SERVER)
+// clang-format on
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
+ if (!pPlayer)
+ {
+ g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
+ return SQRESULT_ERROR;
+ }
+
+ const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
+ const char* pDefaultValue;
+ g_pSquirrel<ScriptContext::SERVER>->getasset(sqvm, 3, &pDefaultValue);
+
+ const char* pResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetString(pKey, pDefaultValue);
+ g_pSquirrel<ScriptContext::SERVER>->pushasset(sqvm, pResult);
+ return SQRESULT_NOTNULL;
+}
+
+// clang-format off
+ADD_SQFUNC("int", GetUserInfoKVInt_Internal, "entity player, string key, int defaultValue = 0",
+ "Gets the int value of a given player's userinfo convar by name", ScriptContext::SERVER)
+// clang-format on
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
+ if (!pPlayer)
+ {
+ g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
+ return SQRESULT_ERROR;
+ }
+
+ const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
+ const int iDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getinteger(sqvm, 3);
+
+ const int iResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetInt(pKey, iDefaultValue);
+ g_pSquirrel<ScriptContext::SERVER>->pushinteger(sqvm, iResult);
+ return SQRESULT_NOTNULL;
+}
+
+// clang-format off
+ADD_SQFUNC("float", GetUserInfoKVFloat_Internal, "entity player, string key, float defaultValue = 0",
+ "Gets the float value of a given player's userinfo convar by name", ScriptContext::SERVER)
+// clang-format on
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
+ if (!pPlayer)
+ {
+ g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
+ return SQRESULT_ERROR;
+ }
+
+ const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
+ const float flDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getfloat(sqvm, 3);
+
+ const float flResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetFloat(pKey, flDefaultValue);
+ g_pSquirrel<ScriptContext::SERVER>->pushfloat(sqvm, flResult);
+ return SQRESULT_NOTNULL;
+}
+
+// clang-format off
+ADD_SQFUNC("bool", GetUserInfoKVBool_Internal, "entity player, string key, bool defaultValue = false",
+ "Gets the bool value of a given player's userinfo convar by name", ScriptContext::SERVER)
+// clang-format on
+{
+ const R2::CBasePlayer* pPlayer = g_pSquirrel<ScriptContext::SERVER>->getentity<R2::CBasePlayer>(sqvm, 1);
+ if (!pPlayer)
+ {
+ g_pSquirrel<ScriptContext::SERVER>->raiseerror(sqvm, "player is null");
+ return SQRESULT_ERROR;
+ }
+
+ const char* pKey = g_pSquirrel<ScriptContext::SERVER>->getstring(sqvm, 2);
+ const bool bDefaultValue = g_pSquirrel<ScriptContext::SERVER>->getbool(sqvm, 3);
+
+ const bool bResult = R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1].m_ConVars->GetInt(pKey, bDefaultValue);
+ g_pSquirrel<ScriptContext::SERVER>->pushbool(sqvm, bResult);
+ return SQRESULT_NOTNULL;
+}
diff --git a/NorthstarDLL/scriptutility.cpp b/NorthstarDLL/scriptutility.cpp
deleted file mode 100644
index 1ff8e4bb..00000000
--- a/NorthstarDLL/scriptutility.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "pch.h"
-#include "squirrel.h"
-
-// asset function StringToAsset( string assetName )
-ADD_SQFUNC(
- "asset",
- StringToAsset,
- "string assetName",
- "converts a given string to an asset",
- ScriptContext::UI | ScriptContext::CLIENT | ScriptContext::SERVER)
-{
- g_pSquirrel<context>->pushasset(sqvm, g_pSquirrel<context>->getstring(sqvm, 1), -1);
- return SQRESULT_NOTNULL;
-}
diff --git a/NorthstarDLL/bansystem.cpp b/NorthstarDLL/server/auth/bansystem.cpp
index 5ba24cf1..d3dff0c7 100644
--- a/NorthstarDLL/bansystem.cpp
+++ b/NorthstarDLL/server/auth/bansystem.cpp
@@ -2,11 +2,11 @@
#include "pch.h"
#include "bansystem.h"
#include "serverauthentication.h"
-#include "maxplayers.h"
-#include "concommand.h"
-#include "r2server.h"
-#include "r2engine.h"
-#include "nsprefix.h"
+#include "shared/maxplayers.h"
+#include "core/convar/concommand.h"
+#include "server/r2server.h"
+#include "engine/r2engine.h"
+#include "config/profile.h"
#include <filesystem>
diff --git a/NorthstarDLL/bansystem.h b/NorthstarDLL/server/auth/bansystem.h
index 6f180126..6f180126 100644
--- a/NorthstarDLL/bansystem.h
+++ b/NorthstarDLL/server/auth/bansystem.h
diff --git a/NorthstarDLL/serverauthentication.cpp b/NorthstarDLL/server/auth/serverauthentication.cpp
index 53892623..c6283b7a 100644
--- a/NorthstarDLL/serverauthentication.cpp
+++ b/NorthstarDLL/server/auth/serverauthentication.cpp
@@ -1,21 +1,21 @@
#include "pch.h"
#include "serverauthentication.h"
-#include "limits.h"
-#include "cvar.h"
-#include "convar.h"
-#include "masterserver.h"
-#include "serverpresence.h"
-#include "hoststate.h"
-#include "maxplayers.h"
+#include "shared/exploit_fixes/ns_limits.h"
+#include "core/convar/cvar.h"
+#include "core/convar/convar.h"
+#include "masterserver/masterserver.h"
+#include "server/serverpresence.h"
+#include "engine/hoststate.h"
+#include "shared/maxplayers.h"
#include "bansystem.h"
-#include "concommand.h"
-#include "dedicated.h"
-#include "nsprefix.h"
-#include "tier0.h"
-#include "r2engine.h"
-#include "r2client.h"
-#include "r2server.h"
-#include "bots.h"
+#include "core/convar/concommand.h"
+#include "dedicated/dedicated.h"
+#include "config/profile.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
+#include "client/r2client.h"
+#include "server/r2server.h"
+#include "server/bots.h"
#include "httplib.h"
@@ -328,6 +328,9 @@ bool,, (R2::CBaseClient* self, char* pName, void* pNetChannel, char bFakePlayer,
return false;
}
+ // we already know this player's authentication data is legit, actually write it to them now
+ g_pServerAuthentication->AuthenticatePlayer(self, iNextPlayerUid, pNextPlayerToken);
+
// try to actually connect the player
if (!CBaseClient__Connect(self, pVerifiedName, pNetChannel, bFakePlayer, a5, pDisconnectReason, a7))
return false;
diff --git a/NorthstarDLL/serverauthentication.h b/NorthstarDLL/server/auth/serverauthentication.h
index 33154118..2ca07a8a 100644
--- a/NorthstarDLL/serverauthentication.h
+++ b/NorthstarDLL/server/auth/serverauthentication.h
@@ -1,7 +1,7 @@
#pragma once
-#include "convar.h"
+#include "core/convar/convar.h"
#include "httplib.h"
-#include "r2engine.h"
+#include "engine/r2engine.h"
#include <unordered_map>
#include <string>
diff --git a/NorthstarDLL/bots.cpp b/NorthstarDLL/server/bots.cpp
index f8a37d26..fe376853 100644
--- a/NorthstarDLL/bots.cpp
+++ b/NorthstarDLL/server/bots.cpp
@@ -1,12 +1,12 @@
#include "pch.h"
#include "bots.h"
-#include "concommand.h"
-#include "r2engine.h"
-#include "r2server.h"
-#include "playlist.h"
-#include "maxplayers.h"
-#include "serverauthentication.h"
+#include "core/convar/concommand.h"
+#include "engine/r2engine.h"
+#include "shared/maxplayers.h"
+#include "shared/playlist.h"
+#include "server/auth/serverauthentication.h"
+#include "server/r2server.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/bots.h b/NorthstarDLL/server/bots.h
index 5973983a..276c0702 100644
--- a/NorthstarDLL/bots.h
+++ b/NorthstarDLL/server/bots.h
@@ -1,6 +1,6 @@
#pragma once
-#include "convar.h"
-#include "r2engine.h"
+#include "core/convar/convar.h"
+#include "engine/r2engine.h"
class ServerBotManager
{
diff --git a/NorthstarDLL/buildainfile.cpp b/NorthstarDLL/server/buildainfile.cpp
index 8190adba..f6dc4717 100644
--- a/NorthstarDLL/buildainfile.cpp
+++ b/NorthstarDLL/server/buildainfile.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "convar.h"
-#include "hoststate.h"
-#include "r2engine.h"
+#include "core/convar/convar.h"
+#include "engine/hoststate.h"
+#include "engine/r2engine.h"
#include <fstream>
#include <filesystem>
diff --git a/NorthstarDLL/r2server.cpp b/NorthstarDLL/server/r2server.cpp
index 50cfa239..50cfa239 100644
--- a/NorthstarDLL/r2server.cpp
+++ b/NorthstarDLL/server/r2server.cpp
diff --git a/NorthstarDLL/r2server.h b/NorthstarDLL/server/r2server.h
index 5d69f53e..237317df 100644
--- a/NorthstarDLL/r2server.h
+++ b/NorthstarDLL/server/r2server.h
@@ -1,6 +1,6 @@
#pragma once
-#include "vector.h"
+#include "core/math/vector.h"
// use the R2 namespace for game funcs
namespace R2
diff --git a/NorthstarDLL/serverchathooks.cpp b/NorthstarDLL/server/serverchathooks.cpp
index e4e67e05..57c2c31a 100644
--- a/NorthstarDLL/serverchathooks.cpp
+++ b/NorthstarDLL/server/serverchathooks.cpp
@@ -1,8 +1,8 @@
#include "pch.h"
#include "serverchathooks.h"
-#include "limits.h"
-#include "squirrel.h"
-#include "r2server.h"
+#include "shared/exploit_fixes/ns_limits.h"
+#include "squirrel/squirrel.h"
+#include "server/r2server.h"
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
diff --git a/NorthstarDLL/serverchathooks.h b/NorthstarDLL/server/serverchathooks.h
index 1d8a806a..1d8a806a 100644
--- a/NorthstarDLL/serverchathooks.h
+++ b/NorthstarDLL/server/serverchathooks.h
diff --git a/NorthstarDLL/serverpresence.cpp b/NorthstarDLL/server/serverpresence.cpp
index fb8cf624..bda5e7fe 100644
--- a/NorthstarDLL/serverpresence.cpp
+++ b/NorthstarDLL/server/serverpresence.cpp
@@ -1,8 +1,8 @@
#include "pch.h"
#include "serverpresence.h"
-#include "playlist.h"
-#include "tier0.h"
-#include "convar.h"
+#include "shared/playlist.h"
+#include "core/tier0.h"
+#include "core/convar/convar.h"
#include <regex>
diff --git a/NorthstarDLL/serverpresence.h b/NorthstarDLL/server/serverpresence.h
index 97b4654c..125b2e68 100644
--- a/NorthstarDLL/serverpresence.h
+++ b/NorthstarDLL/server/serverpresence.h
@@ -1,5 +1,5 @@
#pragma once
-#include "convar.h"
+#include "core/convar/convar.h"
struct ServerPresence
{
diff --git a/NorthstarDLL/exploitfixes.cpp b/NorthstarDLL/shared/exploit_fixes/exploitfixes.cpp
index 240c352c..e4430fd4 100644
--- a/NorthstarDLL/exploitfixes.cpp
+++ b/NorthstarDLL/shared/exploit_fixes/exploitfixes.cpp
@@ -1,11 +1,11 @@
#include "pch.h"
-#include "cvar.h"
-#include "limits.h"
-#include "dedicated.h"
-#include "tier0.h"
-#include "r2engine.h"
-#include "r2client.h"
-#include "vector.h"
+#include "core/convar/cvar.h"
+#include "ns_limits.h"
+#include "dedicated/dedicated.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
+#include "client/r2client.h"
+#include "core/math/vector.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/exploitfixes_lzss.cpp b/NorthstarDLL/shared/exploit_fixes/exploitfixes_lzss.cpp
index 4205133a..4205133a 100644
--- a/NorthstarDLL/exploitfixes_lzss.cpp
+++ b/NorthstarDLL/shared/exploit_fixes/exploitfixes_lzss.cpp
diff --git a/NorthstarDLL/exploitfixes_utf8parser.cpp b/NorthstarDLL/shared/exploit_fixes/exploitfixes_utf8parser.cpp
index e2510765..e2510765 100644
--- a/NorthstarDLL/exploitfixes_utf8parser.cpp
+++ b/NorthstarDLL/shared/exploit_fixes/exploitfixes_utf8parser.cpp
diff --git a/NorthstarDLL/limits.cpp b/NorthstarDLL/shared/exploit_fixes/ns_limits.cpp
index c254de52..49f80bab 100644
--- a/NorthstarDLL/limits.cpp
+++ b/NorthstarDLL/shared/exploit_fixes/ns_limits.cpp
@@ -1,13 +1,13 @@
#include "pch.h"
-#include "limits.h"
-#include "hoststate.h"
-#include "r2client.h"
-#include "r2engine.h"
-#include "r2server.h"
-#include "maxplayers.h"
-#include "tier0.h"
-#include "vector.h"
-#include "serverauthentication.h"
+#include "ns_limits.h"
+#include "engine/hoststate.h"
+#include "client/r2client.h"
+#include "engine/r2engine.h"
+#include "server/r2server.h"
+#include "shared/maxplayers.h"
+#include "core/tier0.h"
+#include "core/math/vector.h"
+#include "server/auth/serverauthentication.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/limits.h b/NorthstarDLL/shared/exploit_fixes/ns_limits.h
index 068f91c9..bbc0a85f 100644
--- a/NorthstarDLL/limits.h
+++ b/NorthstarDLL/shared/exploit_fixes/ns_limits.h
@@ -1,6 +1,6 @@
#pragma once
-#include "r2engine.h"
-#include "convar.h"
+#include "engine/r2engine.h"
+#include "core/convar/convar.h"
#include <unordered_map>
struct PlayerLimitData
diff --git a/NorthstarDLL/keyvalues.cpp b/NorthstarDLL/shared/keyvalues.cpp
index afb7ae30..fe7d6299 100644
--- a/NorthstarDLL/keyvalues.cpp
+++ b/NorthstarDLL/shared/keyvalues.cpp
@@ -1,1316 +1,1316 @@
-#include "pch.h"
-#include "keyvalues.h"
-#include <winnt.h>
-
-// implementation of the ConVar class
-// heavily based on https://github.com/Mauler125/r5sdk/blob/master/r5dev/vpc/keyvalues.cpp
-
-typedef int HKeySymbol;
-#define INVALID_KEY_SYMBOL (-1)
-
-#define MAKE_3_BYTES_FROM_1_AND_2(x1, x2) ((((uint16_t)x2) << 8) | (uint8_t)(x1))
-#define SPLIT_3_BYTES_INTO_1_AND_2(x1, x2, x3) \
- do \
- { \
- x1 = (uint8_t)(x3); \
- x2 = (uint16_t)((x3) >> 8); \
- } while (0)
-
-struct CKeyValuesSystem
-{
- public:
- struct __VTable
- {
- char pad0[8 * 3]; // 2 methods
- HKeySymbol (*GetSymbolForString)(CKeyValuesSystem* self, const char* name, bool bCreate);
- const char* (*GetStringForSymbol)(CKeyValuesSystem* self, HKeySymbol symbol);
- char pad1[8 * 5];
- HKeySymbol (*GetSymbolForStringCaseSensitive)(
- CKeyValuesSystem* self, HKeySymbol& hCaseInsensitiveSymbol, const char* name, bool bCreate);
- };
-
- const __VTable* m_pVtable;
-};
-
-int (*V_UTF8ToUnicode)(const char* pUTF8, wchar_t* pwchDest, int cubDestSizeInBytes);
-int (*V_UnicodeToUTF8)(const wchar_t* pUnicode, char* pUTF8, int cubDestSizeInBytes);
-CKeyValuesSystem* (*KeyValuesSystem)();
-
-KeyValues::KeyValues() {} // default constructor for copying and such
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(const char* pszSetName)
-{
- Init();
- SetName(pszSetName);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-// *pszFirstKey -
-// *pszFirstValue -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(const char* pszSsetName, const char* pszFirstKey, const char* pszFirstValue)
-{
- Init();
- SetName(pszSsetName);
- SetString(pszFirstKey, pszFirstValue);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-// *pszFirstKey -
-// *pwszFirstValue -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, const wchar_t* pwszFirstValue)
-{
- Init();
- SetName(pszSetName);
- SetWString(pszFirstKey, pwszFirstValue);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-// *pszFirstKey -
-// iFirstValue -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue)
-{
- Init();
- SetName(pszSetName);
- SetInt(pszFirstKey, iFirstValue);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-// *pszFirstKey -
-// *pszFirstValue -
-// *pszSecondKey -
-// *pszSecondValue -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(
- const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue, const char* pszSecondKey, const char* pszSecondValue)
-{
- Init();
- SetName(pszSetName);
- SetString(pszFirstKey, pszFirstValue);
- SetString(pszSecondKey, pszSecondValue);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor
-// Input : *pszSetName -
-// *pszFirstKey -
-// iFirstValue -
-// *pszSecondKey -
-// iSecondValue -
-//-----------------------------------------------------------------------------
-KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue, const char* pszSecondKey, int iSecondValue)
-{
- Init();
- SetName(pszSetName);
- SetInt(pszFirstKey, iFirstValue);
- SetInt(pszSecondKey, iSecondValue);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Destructor
-//-----------------------------------------------------------------------------
-KeyValues::~KeyValues(void)
-{
- RemoveEverything();
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Initialize member variables
-//-----------------------------------------------------------------------------
-void KeyValues::Init(void)
-{
- m_iKeyName = 0;
- m_iKeyNameCaseSensitive1 = 0;
- m_iKeyNameCaseSensitive2 = 0;
- m_iDataType = TYPE_NONE;
-
- m_pSub = nullptr;
- m_pPeer = nullptr;
- m_pChain = nullptr;
-
- m_sValue = nullptr;
- m_wsValue = nullptr;
- m_pValue = nullptr;
-
- m_bHasEscapeSequences = 0;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Clear out all subkeys, and the current value
-//-----------------------------------------------------------------------------
-void KeyValues::Clear(void)
-{
- delete m_pSub;
- m_pSub = nullptr;
- m_iDataType = TYPE_NONE;
-}
-
-//-----------------------------------------------------------------------------
-// for backwards compat - we used to need this to force the free to run from the same DLL
-// as the alloc
-//-----------------------------------------------------------------------------
-void KeyValues::DeleteThis(void)
-{
- delete this;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: remove everything
-//-----------------------------------------------------------------------------
-void KeyValues::RemoveEverything(void)
-{
- KeyValues* dat;
- KeyValues* datNext = nullptr;
- for (dat = m_pSub; dat != nullptr; dat = datNext)
- {
- datNext = dat->m_pPeer;
- dat->m_pPeer = nullptr;
- delete dat;
- }
-
- for (dat = m_pPeer; dat && dat != this; dat = datNext)
- {
- datNext = dat->m_pPeer;
- dat->m_pPeer = nullptr;
- delete dat;
- }
-
- delete[] m_sValue;
- m_sValue = nullptr;
- delete[] m_wsValue;
- m_wsValue = nullptr;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Find a keyValue, create it if it is not found.
-// Set bCreate to true to create the key if it doesn't already exist
-// (which ensures a valid pointer will be returned)
-// Input : *pszKeyName -
-// bCreate -
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::FindKey(const char* pszKeyName, bool bCreate)
-{
- assert(this, "Member function called on NULL KeyValues");
-
- if (!pszKeyName || !*pszKeyName)
- return this;
-
- const char* pSubStr = strchr(pszKeyName, '/');
-
- HKeySymbol iSearchStr = KeyValuesSystem()->m_pVtable->GetSymbolForString(KeyValuesSystem(), pszKeyName, bCreate);
- if (iSearchStr == INVALID_KEY_SYMBOL)
- {
- // not found, couldn't possibly be in key value list
- return nullptr;
- }
-
- KeyValues* pLastKVs = nullptr;
- KeyValues* pCurrentKVs;
- // find the searchStr in the current peer list
- for (pCurrentKVs = m_pSub; pCurrentKVs != NULL; pCurrentKVs = pCurrentKVs->m_pPeer)
- {
- pLastKVs = pCurrentKVs; // record the last item looked at (for if we need to append to the end of the list)
-
- // symbol compare
- if (pLastKVs->m_iKeyName == (uint32_t)iSearchStr)
- break;
- }
-
- if (!pCurrentKVs && m_pChain)
- pCurrentKVs = m_pChain->FindKey(pszKeyName, false);
-
- // make sure a key was found
- if (!pCurrentKVs)
- {
- if (bCreate)
- {
- // we need to create a new key
- pCurrentKVs = new KeyValues(pszKeyName);
- // Assert(dat != NULL);
-
- // insert new key at end of list
- if (pLastKVs)
- pLastKVs->m_pPeer = pCurrentKVs;
- else
- m_pSub = pCurrentKVs;
-
- pCurrentKVs->m_pPeer = NULL;
-
- // a key graduates to be a submsg as soon as it's m_pSub is set
- // this should be the only place m_pSub is set
- m_iDataType = TYPE_NONE;
- }
- else
- {
- return NULL;
- }
- }
-
- // if we've still got a subStr we need to keep looking deeper in the tree
- if (pSubStr)
- {
- // recursively chain down through the paths in the string
- return pCurrentKVs->FindKey(pSubStr + 1, bCreate);
- }
-
- return pCurrentKVs;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Locate last child. Returns NULL if we have no children
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::FindLastSubKey(void) const
-{
- // No children?
- if (m_pSub == nullptr)
- return nullptr;
-
- // Scan for the last one
- KeyValues* pLastChild = m_pSub;
- while (pLastChild->m_pPeer)
- pLastChild = pLastChild->m_pPeer;
- return pLastChild;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Adds a subkey. Make sure the subkey isn't a child of some other keyvalues
-// Input : *pSubKey -
-//-----------------------------------------------------------------------------
-void KeyValues::AddSubKey(KeyValues* pSubkey)
-{
- // Make sure the subkey isn't a child of some other keyvalues
- assert(pSubkey != nullptr);
- assert(pSubkey->m_pPeer == nullptr);
-
- // add into subkey list
- if (m_pSub == nullptr)
- {
- m_pSub = pSubkey;
- }
- else
- {
- KeyValues* pTempDat = m_pSub;
- while (pTempDat->GetNextKey() != nullptr)
- {
- pTempDat = pTempDat->GetNextKey();
- }
-
- pTempDat->SetNextKey(pSubkey);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Remove a subkey from the list
-// Input : *pSubKey -
-//-----------------------------------------------------------------------------
-void KeyValues::RemoveSubKey(KeyValues* pSubKey)
-{
- if (!pSubKey)
- return;
-
- // check the list pointer
- if (m_pSub == pSubKey)
- {
- m_pSub = pSubKey->m_pPeer;
- }
- else
- {
- // look through the list
- KeyValues* kv = m_pSub;
- while (kv->m_pPeer)
- {
- if (kv->m_pPeer == pSubKey)
- {
- kv->m_pPeer = pSubKey->m_pPeer;
- break;
- }
-
- kv = kv->m_pPeer;
- }
- }
-
- pSubKey->m_pPeer = nullptr;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Insert a subkey at index
-// Input : nIndex -
-// *pSubKey -
-//-----------------------------------------------------------------------------
-void KeyValues::InsertSubKey(int nIndex, KeyValues* pSubKey)
-{
- // Sub key must be valid and not part of another chain
- assert(pSubKey && pSubKey->m_pPeer == nullptr);
-
- if (nIndex == 0)
- {
- pSubKey->m_pPeer = m_pSub;
- m_pSub = pSubKey;
- return;
- }
- else
- {
- int nCurrentIndex = 0;
- for (KeyValues* pIter = GetFirstSubKey(); pIter != nullptr; pIter = pIter->GetNextKey())
- {
- ++nCurrentIndex;
- if (nCurrentIndex == nIndex)
- {
- pSubKey->m_pPeer = pIter->m_pPeer;
- pIter->m_pPeer = pSubKey;
- return;
- }
- }
- // Index is out of range if we get here
- assert(0);
- return;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Checks if key contains a subkey
-// Input : *pSubKey -
-// Output : true if contains, false otherwise
-//-----------------------------------------------------------------------------
-bool KeyValues::ContainsSubKey(KeyValues* pSubKey)
-{
- for (KeyValues* pIter = GetFirstSubKey(); pIter != nullptr; pIter = pIter->GetNextKey())
- {
- if (pSubKey == pIter)
- {
- return true;
- }
- }
- return false;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Swaps existing subkey with another
-// Input : *pExistingSubkey -
-// *pNewSubKey -
-//-----------------------------------------------------------------------------
-void KeyValues::SwapSubKey(KeyValues* pExistingSubkey, KeyValues* pNewSubKey)
-{
- assert(pExistingSubkey != nullptr && pNewSubKey != nullptr);
-
- // Make sure the new sub key isn't a child of some other keyvalues
- assert(pNewSubKey->m_pPeer == nullptr);
-
- // Check the list pointer
- if (m_pSub == pExistingSubkey)
- {
- pNewSubKey->m_pPeer = pExistingSubkey->m_pPeer;
- pExistingSubkey->m_pPeer = nullptr;
- m_pSub = pNewSubKey;
- }
- else
- {
- // Look through the list
- KeyValues* kv = m_pSub;
- while (kv->m_pPeer)
- {
- if (kv->m_pPeer == pExistingSubkey)
- {
- pNewSubKey->m_pPeer = pExistingSubkey->m_pPeer;
- pExistingSubkey->m_pPeer = nullptr;
- kv->m_pPeer = pNewSubKey;
- break;
- }
-
- kv = kv->m_pPeer;
- }
- // Existing sub key should always be found, otherwise it's a bug in the calling code.
- assert(kv->m_pPeer != nullptr);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Elides subkey
-// Input : *pSubKey -
-//-----------------------------------------------------------------------------
-void KeyValues::ElideSubKey(KeyValues* pSubKey)
-{
- // This pointer's "next" pointer needs to be fixed up when we elide the key
- KeyValues** ppPointerToFix = &m_pSub;
- for (KeyValues* pKeyIter = m_pSub; pKeyIter != nullptr; ppPointerToFix = &pKeyIter->m_pPeer, pKeyIter = pKeyIter->GetNextKey())
- {
- if (pKeyIter == pSubKey)
- {
- if (pSubKey->m_pSub == nullptr)
- {
- // No children, simply remove the key
- *ppPointerToFix = pSubKey->m_pPeer;
- delete pSubKey;
- }
- else
- {
- *ppPointerToFix = pSubKey->m_pSub;
- // Attach the remainder of this chain to the last child of pSubKey
- KeyValues* pChildIter = pSubKey->m_pSub;
- while (pChildIter->m_pPeer != nullptr)
- {
- pChildIter = pChildIter->m_pPeer;
- }
- // Now points to the last child of pSubKey
- pChildIter->m_pPeer = pSubKey->m_pPeer;
- // Detach the node to be elided
- pSubKey->m_pSub = nullptr;
- pSubKey->m_pPeer = nullptr;
- delete pSubKey;
- }
- return;
- }
- }
- // Key not found; that's caller error.
- assert(0);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Check if a keyName has no value assigned to it.
-// Input : *pszKeyName -
-// Output : true on success, false otherwise
-//-----------------------------------------------------------------------------
-bool KeyValues::IsEmpty(const char* pszKeyName)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (!pKey)
- return true;
-
- if (pKey->m_iDataType == TYPE_NONE && pKey->m_pSub == nullptr)
- return true;
-
- return false;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: gets the first true sub key
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetFirstTrueSubKey(void) const
-{
- assert(this, "Member function called on NULL KeyValues");
- KeyValues* pRet = this ? m_pSub : nullptr;
- while (pRet && pRet->m_iDataType != TYPE_NONE)
- pRet = pRet->m_pPeer;
-
- return pRet;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: gets the next true sub key
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetNextTrueSubKey(void) const
-{
- assert(this, "Member function called on NULL KeyValues");
- KeyValues* pRet = this ? m_pPeer : nullptr;
- while (pRet && pRet->m_iDataType != TYPE_NONE)
- pRet = pRet->m_pPeer;
-
- return pRet;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: gets the first value
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetFirstValue(void) const
-{
- assert(this, "Member function called on NULL KeyValues");
- KeyValues* pRet = this ? m_pSub : nullptr;
- while (pRet && pRet->m_iDataType == TYPE_NONE)
- pRet = pRet->m_pPeer;
-
- return pRet;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: gets the next value
-// Output : *KeyValues
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetNextValue(void) const
-{
- assert(this, "Member function called on NULL KeyValues");
- KeyValues* pRet = this ? m_pPeer : nullptr;
- while (pRet && pRet->m_iDataType == TYPE_NONE)
- pRet = pRet->m_pPeer;
-
- return pRet;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Return the first subkey in the list
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetFirstSubKey() const
-{
- assert(this, "Member function called on NULL KeyValues");
- return this ? m_pSub : nullptr;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Return the next subkey
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::GetNextKey() const
-{
- assert(this, "Member function called on NULL KeyValues");
- return this ? m_pPeer : nullptr;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the name of the current key section
-// Output : const char*
-//-----------------------------------------------------------------------------
-const char* KeyValues::GetName(void) const
-{
- return KeyValuesSystem()->m_pVtable->GetStringForSymbol(
- KeyValuesSystem(), MAKE_3_BYTES_FROM_1_AND_2(m_iKeyNameCaseSensitive1, m_iKeyNameCaseSensitive2));
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the integer value of a keyName. Default value is returned
-// if the keyName can't be found.
-// Input : *pszKeyName -
-// nDefaultValue -
-// Output : int
-//-----------------------------------------------------------------------------
-int KeyValues::GetInt(const char* pszKeyName, int iDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- switch (pKey->m_iDataType)
- {
- case TYPE_STRING:
- return atoi(pKey->m_sValue);
- case TYPE_WSTRING:
- return _wtoi(pKey->m_wsValue);
- case TYPE_FLOAT:
- return static_cast<int>(pKey->m_flValue);
- case TYPE_UINT64:
- // can't convert, since it would lose data
- assert(0);
- return 0;
- case TYPE_INT:
- case TYPE_PTR:
- default:
- return pKey->m_iValue;
- };
- }
- return iDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the integer value of a keyName. Default value is returned
-// if the keyName can't be found.
-// Input : *pszKeyName -
-// nDefaultValue -
-// Output : uint64_t
-//-----------------------------------------------------------------------------
-uint64_t KeyValues::GetUint64(const char* pszKeyName, uint64_t nDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- switch (pKey->m_iDataType)
- {
- case TYPE_STRING:
- {
- uint64_t uiResult = 0ull;
- sscanf(pKey->m_sValue, "%lld", &uiResult);
- return uiResult;
- }
- case TYPE_WSTRING:
- {
- uint64_t uiResult = 0ull;
- swscanf(pKey->m_wsValue, L"%lld", &uiResult);
- return uiResult;
- }
- case TYPE_FLOAT:
- return static_cast<int>(pKey->m_flValue);
- case TYPE_UINT64:
- return *reinterpret_cast<uint64_t*>(pKey->m_sValue);
- case TYPE_PTR:
- return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(pKey->m_pValue));
- case TYPE_INT:
- default:
- return pKey->m_iValue;
- };
- }
- return nDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the pointer value of a keyName. Default value is returned
-// if the keyName can't be found.
-// Input : *pszKeyName -
-// pDefaultValue -
-// Output : void*
-//-----------------------------------------------------------------------------
-void* KeyValues::GetPtr(const char* pszKeyName, void* pDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- switch (pKey->m_iDataType)
- {
- case TYPE_PTR:
- return pKey->m_pValue;
-
- case TYPE_WSTRING:
- case TYPE_STRING:
- case TYPE_FLOAT:
- case TYPE_INT:
- case TYPE_UINT64:
- default:
- return nullptr;
- };
- }
- return pDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the float value of a keyName. Default value is returned
-// if the keyName can't be found.
-// Input : *pszKeyName -
-// flDefaultValue -
-// Output : float
-//-----------------------------------------------------------------------------
-float KeyValues::GetFloat(const char* pszKeyName, float flDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- switch (pKey->m_iDataType)
- {
- case TYPE_STRING:
- return static_cast<float>(atof(pKey->m_sValue));
- case TYPE_WSTRING:
- return static_cast<float>(_wtof(pKey->m_wsValue)); // no wtof
- case TYPE_FLOAT:
- return pKey->m_flValue;
- case TYPE_INT:
- return static_cast<float>(pKey->m_iValue);
- case TYPE_UINT64:
- return static_cast<float>((*(reinterpret_cast<uint64_t*>(pKey->m_sValue))));
- case TYPE_PTR:
- default:
- return 0.0f;
- };
- }
- return flDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the string pointer of a keyName. Default value is returned
-// if the keyName can't be found.
-// // Input : *pszKeyName -
-// pszDefaultValue -
-// Output : const char*
-//-----------------------------------------------------------------------------
-const char* KeyValues::GetString(const char* pszKeyName, const char* pszDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- // convert the data to string form then return it
- char buf[64];
- switch (pKey->m_iDataType)
- {
- case TYPE_FLOAT:
- snprintf(buf, sizeof(buf), "%f", pKey->m_flValue);
- SetString(pszKeyName, buf);
- break;
- case TYPE_PTR:
- snprintf(buf, sizeof(buf), "%lld", reinterpret_cast<uint64_t>(pKey->m_pValue));
- SetString(pszKeyName, buf);
- break;
- case TYPE_INT:
- snprintf(buf, sizeof(buf), "%d", pKey->m_iValue);
- SetString(pszKeyName, buf);
- break;
- case TYPE_UINT64:
- snprintf(buf, sizeof(buf), "%lld", *(reinterpret_cast<uint64_t*>(pKey->m_sValue)));
- SetString(pszKeyName, buf);
- break;
- case TYPE_COLOR:
- snprintf(buf, sizeof(buf), "%d %d %d %d", pKey->m_Color[0], pKey->m_Color[1], pKey->m_Color[2], pKey->m_Color[3]);
- SetString(pszKeyName, buf);
- break;
-
- case TYPE_WSTRING:
- {
- // convert the string to char *, set it for future use, and return it
- char wideBuf[512];
- int result = V_UnicodeToUTF8(pKey->m_wsValue, wideBuf, 512);
- if (result)
- {
- // note: this will copy wideBuf
- SetString(pszKeyName, wideBuf);
- }
- else
- {
- return pszDefaultValue;
- }
- break;
- }
- case TYPE_STRING:
- break;
- default:
- return pszDefaultValue;
- };
-
- return pKey->m_sValue;
- }
- return pszDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the wide string pointer of a keyName. Default value is returned
-// if the keyName can't be found.
-// // Input : *pszKeyName -
-// pwszDefaultValue -
-// Output : const wchar_t*
-//-----------------------------------------------------------------------------
-const wchar_t* KeyValues::GetWString(const char* pszKeyName, const wchar_t* pwszDefaultValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- wchar_t wbuf[64];
- switch (pKey->m_iDataType)
- {
- case TYPE_FLOAT:
- swprintf(wbuf, ARRAYSIZE(wbuf), L"%f", pKey->m_flValue);
- SetWString(pszKeyName, wbuf);
- break;
- case TYPE_PTR:
- swprintf(wbuf, ARRAYSIZE(wbuf), L"%lld", static_cast<int64_t>(reinterpret_cast<size_t>(pKey->m_pValue)));
- SetWString(pszKeyName, wbuf);
- break;
- case TYPE_INT:
- swprintf(wbuf, ARRAYSIZE(wbuf), L"%d", pKey->m_iValue);
- SetWString(pszKeyName, wbuf);
- break;
- case TYPE_UINT64:
- {
- swprintf(wbuf, ARRAYSIZE(wbuf), L"%lld", *(reinterpret_cast<uint64_t*>(pKey->m_sValue)));
- SetWString(pszKeyName, wbuf);
- }
- break;
- case TYPE_COLOR:
- swprintf(wbuf, ARRAYSIZE(wbuf), L"%d %d %d %d", pKey->m_Color[0], pKey->m_Color[1], pKey->m_Color[2], pKey->m_Color[3]);
- SetWString(pszKeyName, wbuf);
- break;
-
- case TYPE_WSTRING:
- break;
- case TYPE_STRING:
- {
- size_t bufSize = strlen(pKey->m_sValue) + 1;
- wchar_t* pWBuf = new wchar_t[bufSize];
- int result = V_UTF8ToUnicode(pKey->m_sValue, pWBuf, static_cast<int>(bufSize * sizeof(wchar_t)));
- if (result >= 0) // may be a zero length string
- {
- SetWString(pszKeyName, pWBuf);
- delete[] pWBuf;
- }
- else
- {
- delete[] pWBuf;
- return pwszDefaultValue;
- }
-
- break;
- }
- default:
- return pwszDefaultValue;
- };
-
- return reinterpret_cast<const wchar_t*>(pKey->m_wsValue);
- }
- return pwszDefaultValue;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Gets a color
-// Input : *pszKeyName -
-// &defaultColor -
-// Output : Color
-//-----------------------------------------------------------------------------
-Color KeyValues::GetColor(const char* pszKeyName, const Color& defaultColor)
-{
- Color color = defaultColor;
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- {
- if (pKey->m_iDataType == TYPE_COLOR)
- {
- color[0] = pKey->m_Color[0];
- color[1] = pKey->m_Color[1];
- color[2] = pKey->m_Color[2];
- color[3] = pKey->m_Color[3];
- }
- else if (pKey->m_iDataType == TYPE_FLOAT)
- {
- color[0] = static_cast<unsigned char>(pKey->m_flValue);
- }
- else if (pKey->m_iDataType == TYPE_INT)
- {
- color[0] = static_cast<unsigned char>(pKey->m_iValue);
- }
- else if (pKey->m_iDataType == TYPE_STRING)
- {
- // parse the colors out of the string
- float a = 0, b = 0, c = 0, d = 0;
- sscanf(pKey->m_sValue, "%f %f %f %f", &a, &b, &c, &d);
- color[0] = static_cast<unsigned char>(a);
- color[1] = static_cast<unsigned char>(b);
- color[2] = static_cast<unsigned char>(c);
- color[3] = static_cast<unsigned char>(d);
- }
- }
- return color;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the data type of the value stored in a keyName
-// Input : *pszKeyName -
-//-----------------------------------------------------------------------------
-KeyValuesTypes_t KeyValues::GetDataType(const char* pszKeyName)
-{
- KeyValues* pKey = FindKey(pszKeyName, false);
- if (pKey)
- return static_cast<KeyValuesTypes_t>(pKey->m_iDataType);
-
- return TYPE_NONE;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the data type of the value stored in this keyName
-//-----------------------------------------------------------------------------
-KeyValuesTypes_t KeyValues::GetDataType(void) const
-{
- return static_cast<KeyValuesTypes_t>(m_iDataType);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the integer value of a keyName.
-// Input : *pszKeyName -
-// iValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetInt(const char* pszKeyName, int iValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
- if (pKey)
- {
- pKey->m_iValue = iValue;
- pKey->m_iDataType = TYPE_INT;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the integer value of a keyName.
-//-----------------------------------------------------------------------------
-void KeyValues::SetUint64(const char* pszKeyName, uint64_t nValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
-
- if (pKey)
- {
- // delete the old value
- delete[] pKey->m_sValue;
- // make sure we're not storing the WSTRING - as we're converting over to STRING
- delete[] pKey->m_wsValue;
- pKey->m_wsValue = nullptr;
-
- pKey->m_sValue = new char[sizeof(uint64_t)];
- *(reinterpret_cast<uint64_t*>(pKey->m_sValue)) = nValue;
- pKey->m_iDataType = TYPE_UINT64;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the float value of a keyName.
-// Input : *pszKeyName -
-// flValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetFloat(const char* pszKeyName, float flValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
- if (pKey)
- {
- pKey->m_flValue = flValue;
- pKey->m_iDataType = TYPE_FLOAT;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the name value of a keyName.
-// Input : *pszSetName -
-//-----------------------------------------------------------------------------
-void KeyValues::SetName(const char* pszSetName)
-{
- HKeySymbol hCaseSensitiveKeyName = INVALID_KEY_SYMBOL, hCaseInsensitiveKeyName = INVALID_KEY_SYMBOL;
- hCaseSensitiveKeyName =
- KeyValuesSystem()->m_pVtable->GetSymbolForStringCaseSensitive(KeyValuesSystem(), hCaseInsensitiveKeyName, pszSetName, false);
-
- m_iKeyName = hCaseInsensitiveKeyName;
- SPLIT_3_BYTES_INTO_1_AND_2(m_iKeyNameCaseSensitive1, m_iKeyNameCaseSensitive2, hCaseSensitiveKeyName);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the pointer value of a keyName.
-// Input : *pszKeyName -
-// *pValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetPtr(const char* pszKeyName, void* pValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
-
- if (pKey)
- {
- pKey->m_pValue = pValue;
- pKey->m_iDataType = TYPE_PTR;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the string value (internal)
-// Input : *pszValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetStringValue(char const* pszValue)
-{
- // delete the old value
- delete[] m_sValue;
- // make sure we're not storing the WSTRING - as we're converting over to STRING
- delete[] m_wsValue;
- m_wsValue = nullptr;
-
- if (!pszValue)
- {
- // ensure a valid value
- pszValue = "";
- }
-
- // allocate memory for the new value and copy it in
- size_t len = strlen(pszValue);
- m_sValue = new char[len + 1];
- memcpy(m_sValue, pszValue, len + 1);
-
- m_iDataType = TYPE_STRING;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Sets this key's peer to the KeyValues passed in
-// Input : *pDat -
-//-----------------------------------------------------------------------------
-void KeyValues::SetNextKey(KeyValues* pDat)
-{
- m_pPeer = pDat;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the string value of a keyName.
-// Input : *pszKeyName -
-// *pszValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetString(const char* pszKeyName, const char* pszValue)
-{
- if (KeyValues* pKey = FindKey(pszKeyName, true))
- {
- pKey->SetStringValue(pszValue);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Set the string value of a keyName.
-// Input : *pszKeyName -
-// *pwszValue -
-//-----------------------------------------------------------------------------
-void KeyValues::SetWString(const char* pszKeyName, const wchar_t* pwszValue)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
- if (pKey)
- {
- // delete the old value
- delete[] pKey->m_wsValue;
- // make sure we're not storing the STRING - as we're converting over to WSTRING
- delete[] pKey->m_sValue;
- pKey->m_sValue = nullptr;
-
- if (!pwszValue)
- {
- // ensure a valid value
- pwszValue = L"";
- }
-
- // allocate memory for the new value and copy it in
- size_t len = wcslen(pwszValue);
- pKey->m_wsValue = new wchar_t[len + 1];
- memcpy(pKey->m_wsValue, pwszValue, (len + 1) * sizeof(wchar_t));
-
- pKey->m_iDataType = TYPE_WSTRING;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Sets a color
-// Input : *pszKeyName -
-// color -
-//-----------------------------------------------------------------------------
-void KeyValues::SetColor(const char* pszKeyName, Color color)
-{
- KeyValues* pKey = FindKey(pszKeyName, true);
-
- if (pKey)
- {
- pKey->m_iDataType = TYPE_COLOR;
- pKey->m_Color[0] = color[0];
- pKey->m_Color[1] = color[1];
- pKey->m_Color[2] = color[2];
- pKey->m_Color[3] = color[3];
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : &src -
-//-----------------------------------------------------------------------------
-void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
-{
- // garymcthack - need to check this code for possible buffer overruns.
-
- m_iKeyName = src.m_iKeyName;
- m_iKeyNameCaseSensitive1 = src.m_iKeyNameCaseSensitive1;
- m_iKeyNameCaseSensitive2 = src.m_iKeyNameCaseSensitive2;
-
- if (!src.m_pSub)
- {
- m_iDataType = src.m_iDataType;
- char buf[256];
- switch (src.m_iDataType)
- {
- case TYPE_NONE:
- break;
- case TYPE_STRING:
- if (src.m_sValue)
- {
- size_t len = strlen(src.m_sValue) + 1;
- m_sValue = new char[len];
- strncpy(m_sValue, src.m_sValue, len);
- }
- break;
- case TYPE_INT:
- {
- m_iValue = src.m_iValue;
- snprintf(buf, sizeof(buf), "%d", m_iValue);
- size_t len = strlen(buf) + 1;
- m_sValue = new char[len];
- strncpy(m_sValue, buf, len);
- }
- break;
- case TYPE_FLOAT:
- {
- m_flValue = src.m_flValue;
- snprintf(buf, sizeof(buf), "%f", m_flValue);
- size_t len = strlen(buf) + 1;
- m_sValue = new char[len];
- strncpy(m_sValue, buf, len);
- }
- break;
- case TYPE_PTR:
- {
- m_pValue = src.m_pValue;
- }
- break;
- case TYPE_UINT64:
- {
- m_sValue = new char[sizeof(uint64_t)];
- memcpy(m_sValue, src.m_sValue, sizeof(uint64_t));
- }
- break;
- case TYPE_COLOR:
- {
- m_Color[0] = src.m_Color[0];
- m_Color[1] = src.m_Color[1];
- m_Color[2] = src.m_Color[2];
- m_Color[3] = src.m_Color[3];
- }
- break;
-
- default:
- {
- // do nothing . .what the heck is this?
- assert(0);
- }
- break;
- }
- }
-
- // Handle the immediate child
- if (src.m_pSub)
- {
- m_pSub = new KeyValues;
-
- m_pSub->Init();
- m_pSub->SetName(nullptr);
-
- m_pSub->RecursiveCopyKeyValues(*src.m_pSub);
- }
-
- // Handle the immediate peer
- if (src.m_pPeer)
- {
- m_pPeer = new KeyValues;
-
- m_pPeer->Init();
- m_pPeer->SetName(nullptr);
-
- m_pPeer->RecursiveCopyKeyValues(*src.m_pPeer);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Make a new copy of all subkeys, add them all to the passed-in keyvalues
-// Input : *pParent -
-//-----------------------------------------------------------------------------
-void KeyValues::CopySubkeys(KeyValues* pParent) const
-{
- // recursively copy subkeys
- // Also maintain ordering....
- KeyValues* pPrev = nullptr;
- for (KeyValues* pSub = m_pSub; pSub != nullptr; pSub = pSub->m_pPeer)
- {
- // take a copy of the subkey
- KeyValues* pKey = pSub->MakeCopy();
-
- // add into subkey list
- if (pPrev)
- {
- pPrev->m_pPeer = pKey;
- }
- else
- {
- pParent->m_pSub = pKey;
- }
- pKey->m_pPeer = nullptr;
- pPrev = pKey;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Makes a copy of the whole key-value pair set
-// Output : KeyValues*
-//-----------------------------------------------------------------------------
-KeyValues* KeyValues::MakeCopy(void) const
-{
- KeyValues* pNewKeyValue = new KeyValues;
-
- pNewKeyValue->Init();
- pNewKeyValue->SetName(GetName());
-
- // copy data
- pNewKeyValue->m_iDataType = m_iDataType;
- switch (m_iDataType)
- {
- case TYPE_STRING:
- {
- if (m_sValue)
- {
- size_t len = strlen(m_sValue);
- assert(!pNewKeyValue->m_sValue);
- pNewKeyValue->m_sValue = new char[len + 1];
- memcpy(pNewKeyValue->m_sValue, m_sValue, len + 1);
- }
- }
- break;
- case TYPE_WSTRING:
- {
- if (m_wsValue)
- {
- size_t len = wcslen(m_wsValue);
- pNewKeyValue->m_wsValue = new wchar_t[len + 1];
- memcpy(pNewKeyValue->m_wsValue, m_wsValue, len + 1 * sizeof(wchar_t));
- }
- }
- break;
-
- case TYPE_INT:
- pNewKeyValue->m_iValue = m_iValue;
- break;
-
- case TYPE_FLOAT:
- pNewKeyValue->m_flValue = m_flValue;
- break;
-
- case TYPE_PTR:
- pNewKeyValue->m_pValue = m_pValue;
- break;
-
- case TYPE_COLOR:
- pNewKeyValue->m_Color[0] = m_Color[0];
- pNewKeyValue->m_Color[1] = m_Color[1];
- pNewKeyValue->m_Color[2] = m_Color[2];
- pNewKeyValue->m_Color[3] = m_Color[3];
- break;
-
- case TYPE_UINT64:
- pNewKeyValue->m_sValue = new char[sizeof(uint64_t)];
- memcpy(pNewKeyValue->m_sValue, m_sValue, sizeof(uint64_t));
- break;
- };
-
- // recursively copy subkeys
- CopySubkeys(pNewKeyValue);
- return pNewKeyValue;
-}
-
-ON_DLL_LOAD("vstdlib.dll", KeyValues, (CModule module))
-{
- V_UTF8ToUnicode = module.GetExport("V_UTF8ToUnicode").As<int (*)(const char*, wchar_t*, int)>();
- V_UnicodeToUTF8 = module.GetExport("V_UnicodeToUTF8").As<int (*)(const wchar_t*, char*, int)>();
- KeyValuesSystem = module.GetExport("KeyValuesSystem").As<CKeyValuesSystem* (*)()>();
-}
-
-AUTOHOOK_INIT()
-
-// clang-format off
-AUTOHOOK(KeyValues__LoadFromBuffer, engine.dll + 0x426C30,
-char, __fastcall, (KeyValues* self, const char* pResourceName, const char* pBuffer, void* pFileSystem, void* a5, void* a6, int a7))
-// clang-format on
-{
- static void* pSavedFilesystemPtr = nullptr;
-
- // this is just to allow playlists to get a valid pFileSystem ptr for kv building, other functions that call this particular overload of
- // LoadFromBuffer seem to get called on network stuff exclusively not exactly sure what the address wanted here is, so just taking it
- // from a function call that always happens before playlists is loaded
-
- // note: would be better if we could serialize this to disk for playlists, as this method breaks saving playlists in demos
- if (pFileSystem != nullptr)
- pSavedFilesystemPtr = pFileSystem;
- if (!pFileSystem && !strcmp(pResourceName, "playlists"))
- pFileSystem = pSavedFilesystemPtr;
-
- return KeyValues__LoadFromBuffer(self, pResourceName, pBuffer, pFileSystem, a5, a6, a7);
-}
-
-ON_DLL_LOAD("engine.dll", EngineKeyValues, (CModule module))
-{
- AUTOHOOK_DISPATCH()
-}
+#include "pch.h"
+#include "keyvalues.h"
+#include <winnt.h>
+
+// implementation of the ConVar class
+// heavily based on https://github.com/Mauler125/r5sdk/blob/master/r5dev/vpc/keyvalues.cpp
+
+typedef int HKeySymbol;
+#define INVALID_KEY_SYMBOL (-1)
+
+#define MAKE_3_BYTES_FROM_1_AND_2(x1, x2) ((((uint16_t)x2) << 8) | (uint8_t)(x1))
+#define SPLIT_3_BYTES_INTO_1_AND_2(x1, x2, x3) \
+ do \
+ { \
+ x1 = (uint8_t)(x3); \
+ x2 = (uint16_t)((x3) >> 8); \
+ } while (0)
+
+struct CKeyValuesSystem
+{
+ public:
+ struct __VTable
+ {
+ char pad0[8 * 3]; // 2 methods
+ HKeySymbol (*GetSymbolForString)(CKeyValuesSystem* self, const char* name, bool bCreate);
+ const char* (*GetStringForSymbol)(CKeyValuesSystem* self, HKeySymbol symbol);
+ char pad1[8 * 5];
+ HKeySymbol (*GetSymbolForStringCaseSensitive)(
+ CKeyValuesSystem* self, HKeySymbol& hCaseInsensitiveSymbol, const char* name, bool bCreate);
+ };
+
+ const __VTable* m_pVtable;
+};
+
+int (*V_UTF8ToUnicode)(const char* pUTF8, wchar_t* pwchDest, int cubDestSizeInBytes);
+int (*V_UnicodeToUTF8)(const wchar_t* pUnicode, char* pUTF8, int cubDestSizeInBytes);
+CKeyValuesSystem* (*KeyValuesSystem)();
+
+KeyValues::KeyValues() {} // default constructor for copying and such
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(const char* pszSetName)
+{
+ Init();
+ SetName(pszSetName);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+// *pszFirstKey -
+// *pszFirstValue -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(const char* pszSsetName, const char* pszFirstKey, const char* pszFirstValue)
+{
+ Init();
+ SetName(pszSsetName);
+ SetString(pszFirstKey, pszFirstValue);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+// *pszFirstKey -
+// *pwszFirstValue -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, const wchar_t* pwszFirstValue)
+{
+ Init();
+ SetName(pszSetName);
+ SetWString(pszFirstKey, pwszFirstValue);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+// *pszFirstKey -
+// iFirstValue -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue)
+{
+ Init();
+ SetName(pszSetName);
+ SetInt(pszFirstKey, iFirstValue);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+// *pszFirstKey -
+// *pszFirstValue -
+// *pszSecondKey -
+// *pszSecondValue -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(
+ const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue, const char* pszSecondKey, const char* pszSecondValue)
+{
+ Init();
+ SetName(pszSetName);
+ SetString(pszFirstKey, pszFirstValue);
+ SetString(pszSecondKey, pszSecondValue);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *pszSetName -
+// *pszFirstKey -
+// iFirstValue -
+// *pszSecondKey -
+// iSecondValue -
+//-----------------------------------------------------------------------------
+KeyValues::KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue, const char* pszSecondKey, int iSecondValue)
+{
+ Init();
+ SetName(pszSetName);
+ SetInt(pszFirstKey, iFirstValue);
+ SetInt(pszSecondKey, iSecondValue);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Destructor
+//-----------------------------------------------------------------------------
+KeyValues::~KeyValues(void)
+{
+ RemoveEverything();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Initialize member variables
+//-----------------------------------------------------------------------------
+void KeyValues::Init(void)
+{
+ m_iKeyName = 0;
+ m_iKeyNameCaseSensitive1 = 0;
+ m_iKeyNameCaseSensitive2 = 0;
+ m_iDataType = TYPE_NONE;
+
+ m_pSub = nullptr;
+ m_pPeer = nullptr;
+ m_pChain = nullptr;
+
+ m_sValue = nullptr;
+ m_wsValue = nullptr;
+ m_pValue = nullptr;
+
+ m_bHasEscapeSequences = 0;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Clear out all subkeys, and the current value
+//-----------------------------------------------------------------------------
+void KeyValues::Clear(void)
+{
+ delete m_pSub;
+ m_pSub = nullptr;
+ m_iDataType = TYPE_NONE;
+}
+
+//-----------------------------------------------------------------------------
+// for backwards compat - we used to need this to force the free to run from the same DLL
+// as the alloc
+//-----------------------------------------------------------------------------
+void KeyValues::DeleteThis(void)
+{
+ delete this;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: remove everything
+//-----------------------------------------------------------------------------
+void KeyValues::RemoveEverything(void)
+{
+ KeyValues* dat;
+ KeyValues* datNext = nullptr;
+ for (dat = m_pSub; dat != nullptr; dat = datNext)
+ {
+ datNext = dat->m_pPeer;
+ dat->m_pPeer = nullptr;
+ delete dat;
+ }
+
+ for (dat = m_pPeer; dat && dat != this; dat = datNext)
+ {
+ datNext = dat->m_pPeer;
+ dat->m_pPeer = nullptr;
+ delete dat;
+ }
+
+ delete[] m_sValue;
+ m_sValue = nullptr;
+ delete[] m_wsValue;
+ m_wsValue = nullptr;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Find a keyValue, create it if it is not found.
+// Set bCreate to true to create the key if it doesn't already exist
+// (which ensures a valid pointer will be returned)
+// Input : *pszKeyName -
+// bCreate -
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::FindKey(const char* pszKeyName, bool bCreate)
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+
+ if (!pszKeyName || !*pszKeyName)
+ return this;
+
+ const char* pSubStr = strchr(pszKeyName, '/');
+
+ HKeySymbol iSearchStr = KeyValuesSystem()->m_pVtable->GetSymbolForString(KeyValuesSystem(), pszKeyName, bCreate);
+ if (iSearchStr == INVALID_KEY_SYMBOL)
+ {
+ // not found, couldn't possibly be in key value list
+ return nullptr;
+ }
+
+ KeyValues* pLastKVs = nullptr;
+ KeyValues* pCurrentKVs;
+ // find the searchStr in the current peer list
+ for (pCurrentKVs = m_pSub; pCurrentKVs != NULL; pCurrentKVs = pCurrentKVs->m_pPeer)
+ {
+ pLastKVs = pCurrentKVs; // record the last item looked at (for if we need to append to the end of the list)
+
+ // symbol compare
+ if (pLastKVs->m_iKeyName == (uint32_t)iSearchStr)
+ break;
+ }
+
+ if (!pCurrentKVs && m_pChain)
+ pCurrentKVs = m_pChain->FindKey(pszKeyName, false);
+
+ // make sure a key was found
+ if (!pCurrentKVs)
+ {
+ if (bCreate)
+ {
+ // we need to create a new key
+ pCurrentKVs = new KeyValues(pszKeyName);
+ // Assert(dat != NULL);
+
+ // insert new key at end of list
+ if (pLastKVs)
+ pLastKVs->m_pPeer = pCurrentKVs;
+ else
+ m_pSub = pCurrentKVs;
+
+ pCurrentKVs->m_pPeer = NULL;
+
+ // a key graduates to be a submsg as soon as it's m_pSub is set
+ // this should be the only place m_pSub is set
+ m_iDataType = TYPE_NONE;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ // if we've still got a subStr we need to keep looking deeper in the tree
+ if (pSubStr)
+ {
+ // recursively chain down through the paths in the string
+ return pCurrentKVs->FindKey(pSubStr + 1, bCreate);
+ }
+
+ return pCurrentKVs;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Locate last child. Returns NULL if we have no children
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::FindLastSubKey(void) const
+{
+ // No children?
+ if (m_pSub == nullptr)
+ return nullptr;
+
+ // Scan for the last one
+ KeyValues* pLastChild = m_pSub;
+ while (pLastChild->m_pPeer)
+ pLastChild = pLastChild->m_pPeer;
+ return pLastChild;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Adds a subkey. Make sure the subkey isn't a child of some other keyvalues
+// Input : *pSubKey -
+//-----------------------------------------------------------------------------
+void KeyValues::AddSubKey(KeyValues* pSubkey)
+{
+ // Make sure the subkey isn't a child of some other keyvalues
+ assert(pSubkey != nullptr);
+ assert(pSubkey->m_pPeer == nullptr);
+
+ // add into subkey list
+ if (m_pSub == nullptr)
+ {
+ m_pSub = pSubkey;
+ }
+ else
+ {
+ KeyValues* pTempDat = m_pSub;
+ while (pTempDat->GetNextKey() != nullptr)
+ {
+ pTempDat = pTempDat->GetNextKey();
+ }
+
+ pTempDat->SetNextKey(pSubkey);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Remove a subkey from the list
+// Input : *pSubKey -
+//-----------------------------------------------------------------------------
+void KeyValues::RemoveSubKey(KeyValues* pSubKey)
+{
+ if (!pSubKey)
+ return;
+
+ // check the list pointer
+ if (m_pSub == pSubKey)
+ {
+ m_pSub = pSubKey->m_pPeer;
+ }
+ else
+ {
+ // look through the list
+ KeyValues* kv = m_pSub;
+ while (kv->m_pPeer)
+ {
+ if (kv->m_pPeer == pSubKey)
+ {
+ kv->m_pPeer = pSubKey->m_pPeer;
+ break;
+ }
+
+ kv = kv->m_pPeer;
+ }
+ }
+
+ pSubKey->m_pPeer = nullptr;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Insert a subkey at index
+// Input : nIndex -
+// *pSubKey -
+//-----------------------------------------------------------------------------
+void KeyValues::InsertSubKey(int nIndex, KeyValues* pSubKey)
+{
+ // Sub key must be valid and not part of another chain
+ assert(pSubKey && pSubKey->m_pPeer == nullptr);
+
+ if (nIndex == 0)
+ {
+ pSubKey->m_pPeer = m_pSub;
+ m_pSub = pSubKey;
+ return;
+ }
+ else
+ {
+ int nCurrentIndex = 0;
+ for (KeyValues* pIter = GetFirstSubKey(); pIter != nullptr; pIter = pIter->GetNextKey())
+ {
+ ++nCurrentIndex;
+ if (nCurrentIndex == nIndex)
+ {
+ pSubKey->m_pPeer = pIter->m_pPeer;
+ pIter->m_pPeer = pSubKey;
+ return;
+ }
+ }
+ // Index is out of range if we get here
+ assert(0);
+ return;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Checks if key contains a subkey
+// Input : *pSubKey -
+// Output : true if contains, false otherwise
+//-----------------------------------------------------------------------------
+bool KeyValues::ContainsSubKey(KeyValues* pSubKey)
+{
+ for (KeyValues* pIter = GetFirstSubKey(); pIter != nullptr; pIter = pIter->GetNextKey())
+ {
+ if (pSubKey == pIter)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Swaps existing subkey with another
+// Input : *pExistingSubkey -
+// *pNewSubKey -
+//-----------------------------------------------------------------------------
+void KeyValues::SwapSubKey(KeyValues* pExistingSubkey, KeyValues* pNewSubKey)
+{
+ assert(pExistingSubkey != nullptr && pNewSubKey != nullptr);
+
+ // Make sure the new sub key isn't a child of some other keyvalues
+ assert(pNewSubKey->m_pPeer == nullptr);
+
+ // Check the list pointer
+ if (m_pSub == pExistingSubkey)
+ {
+ pNewSubKey->m_pPeer = pExistingSubkey->m_pPeer;
+ pExistingSubkey->m_pPeer = nullptr;
+ m_pSub = pNewSubKey;
+ }
+ else
+ {
+ // Look through the list
+ KeyValues* kv = m_pSub;
+ while (kv->m_pPeer)
+ {
+ if (kv->m_pPeer == pExistingSubkey)
+ {
+ pNewSubKey->m_pPeer = pExistingSubkey->m_pPeer;
+ pExistingSubkey->m_pPeer = nullptr;
+ kv->m_pPeer = pNewSubKey;
+ break;
+ }
+
+ kv = kv->m_pPeer;
+ }
+ // Existing sub key should always be found, otherwise it's a bug in the calling code.
+ assert(kv->m_pPeer != nullptr);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Elides subkey
+// Input : *pSubKey -
+//-----------------------------------------------------------------------------
+void KeyValues::ElideSubKey(KeyValues* pSubKey)
+{
+ // This pointer's "next" pointer needs to be fixed up when we elide the key
+ KeyValues** ppPointerToFix = &m_pSub;
+ for (KeyValues* pKeyIter = m_pSub; pKeyIter != nullptr; ppPointerToFix = &pKeyIter->m_pPeer, pKeyIter = pKeyIter->GetNextKey())
+ {
+ if (pKeyIter == pSubKey)
+ {
+ if (pSubKey->m_pSub == nullptr)
+ {
+ // No children, simply remove the key
+ *ppPointerToFix = pSubKey->m_pPeer;
+ delete pSubKey;
+ }
+ else
+ {
+ *ppPointerToFix = pSubKey->m_pSub;
+ // Attach the remainder of this chain to the last child of pSubKey
+ KeyValues* pChildIter = pSubKey->m_pSub;
+ while (pChildIter->m_pPeer != nullptr)
+ {
+ pChildIter = pChildIter->m_pPeer;
+ }
+ // Now points to the last child of pSubKey
+ pChildIter->m_pPeer = pSubKey->m_pPeer;
+ // Detach the node to be elided
+ pSubKey->m_pSub = nullptr;
+ pSubKey->m_pPeer = nullptr;
+ delete pSubKey;
+ }
+ return;
+ }
+ }
+ // Key not found; that's caller error.
+ assert(0);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Check if a keyName has no value assigned to it.
+// Input : *pszKeyName -
+// Output : true on success, false otherwise
+//-----------------------------------------------------------------------------
+bool KeyValues::IsEmpty(const char* pszKeyName)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (!pKey)
+ return true;
+
+ if (pKey->m_iDataType == TYPE_NONE && pKey->m_pSub == nullptr)
+ return true;
+
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: gets the first true sub key
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetFirstTrueSubKey(void) const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ KeyValues* pRet = this ? m_pSub : nullptr;
+ while (pRet && pRet->m_iDataType != TYPE_NONE)
+ pRet = pRet->m_pPeer;
+
+ return pRet;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: gets the next true sub key
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetNextTrueSubKey(void) const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ KeyValues* pRet = this ? m_pPeer : nullptr;
+ while (pRet && pRet->m_iDataType != TYPE_NONE)
+ pRet = pRet->m_pPeer;
+
+ return pRet;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: gets the first value
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetFirstValue(void) const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ KeyValues* pRet = this ? m_pSub : nullptr;
+ while (pRet && pRet->m_iDataType == TYPE_NONE)
+ pRet = pRet->m_pPeer;
+
+ return pRet;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: gets the next value
+// Output : *KeyValues
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetNextValue(void) const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ KeyValues* pRet = this ? m_pPeer : nullptr;
+ while (pRet && pRet->m_iDataType == TYPE_NONE)
+ pRet = pRet->m_pPeer;
+
+ return pRet;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Return the first subkey in the list
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetFirstSubKey() const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ return this ? m_pSub : nullptr;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Return the next subkey
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::GetNextKey() const
+{
+ assert_msg(this, "Member function called on NULL KeyValues");
+ return this ? m_pPeer : nullptr;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the name of the current key section
+// Output : const char*
+//-----------------------------------------------------------------------------
+const char* KeyValues::GetName(void) const
+{
+ return KeyValuesSystem()->m_pVtable->GetStringForSymbol(
+ KeyValuesSystem(), MAKE_3_BYTES_FROM_1_AND_2(m_iKeyNameCaseSensitive1, m_iKeyNameCaseSensitive2));
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the integer value of a keyName. Default value is returned
+// if the keyName can't be found.
+// Input : *pszKeyName -
+// nDefaultValue -
+// Output : int
+//-----------------------------------------------------------------------------
+int KeyValues::GetInt(const char* pszKeyName, int iDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_STRING:
+ return atoi(pKey->m_sValue);
+ case TYPE_WSTRING:
+ return _wtoi(pKey->m_wsValue);
+ case TYPE_FLOAT:
+ return static_cast<int>(pKey->m_flValue);
+ case TYPE_UINT64:
+ // can't convert, since it would lose data
+ assert(0);
+ return 0;
+ case TYPE_INT:
+ case TYPE_PTR:
+ default:
+ return pKey->m_iValue;
+ };
+ }
+ return iDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the integer value of a keyName. Default value is returned
+// if the keyName can't be found.
+// Input : *pszKeyName -
+// nDefaultValue -
+// Output : uint64_t
+//-----------------------------------------------------------------------------
+uint64_t KeyValues::GetUint64(const char* pszKeyName, uint64_t nDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_STRING:
+ {
+ uint64_t uiResult = 0ull;
+ sscanf(pKey->m_sValue, "%lld", &uiResult);
+ return uiResult;
+ }
+ case TYPE_WSTRING:
+ {
+ uint64_t uiResult = 0ull;
+ swscanf(pKey->m_wsValue, L"%lld", &uiResult);
+ return uiResult;
+ }
+ case TYPE_FLOAT:
+ return static_cast<int>(pKey->m_flValue);
+ case TYPE_UINT64:
+ return *reinterpret_cast<uint64_t*>(pKey->m_sValue);
+ case TYPE_PTR:
+ return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(pKey->m_pValue));
+ case TYPE_INT:
+ default:
+ return pKey->m_iValue;
+ };
+ }
+ return nDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the pointer value of a keyName. Default value is returned
+// if the keyName can't be found.
+// Input : *pszKeyName -
+// pDefaultValue -
+// Output : void*
+//-----------------------------------------------------------------------------
+void* KeyValues::GetPtr(const char* pszKeyName, void* pDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_PTR:
+ return pKey->m_pValue;
+
+ case TYPE_WSTRING:
+ case TYPE_STRING:
+ case TYPE_FLOAT:
+ case TYPE_INT:
+ case TYPE_UINT64:
+ default:
+ return nullptr;
+ };
+ }
+ return pDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the float value of a keyName. Default value is returned
+// if the keyName can't be found.
+// Input : *pszKeyName -
+// flDefaultValue -
+// Output : float
+//-----------------------------------------------------------------------------
+float KeyValues::GetFloat(const char* pszKeyName, float flDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_STRING:
+ return static_cast<float>(atof(pKey->m_sValue));
+ case TYPE_WSTRING:
+ return static_cast<float>(_wtof(pKey->m_wsValue)); // no wtof
+ case TYPE_FLOAT:
+ return pKey->m_flValue;
+ case TYPE_INT:
+ return static_cast<float>(pKey->m_iValue);
+ case TYPE_UINT64:
+ return static_cast<float>((*(reinterpret_cast<uint64_t*>(pKey->m_sValue))));
+ case TYPE_PTR:
+ default:
+ return 0.0f;
+ };
+ }
+ return flDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the string pointer of a keyName. Default value is returned
+// if the keyName can't be found.
+// // Input : *pszKeyName -
+// pszDefaultValue -
+// Output : const char*
+//-----------------------------------------------------------------------------
+const char* KeyValues::GetString(const char* pszKeyName, const char* pszDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ // convert the data to string form then return it
+ char buf[64];
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_FLOAT:
+ snprintf(buf, sizeof(buf), "%f", pKey->m_flValue);
+ SetString(pszKeyName, buf);
+ break;
+ case TYPE_PTR:
+ snprintf(buf, sizeof(buf), "%lld", reinterpret_cast<uint64_t>(pKey->m_pValue));
+ SetString(pszKeyName, buf);
+ break;
+ case TYPE_INT:
+ snprintf(buf, sizeof(buf), "%d", pKey->m_iValue);
+ SetString(pszKeyName, buf);
+ break;
+ case TYPE_UINT64:
+ snprintf(buf, sizeof(buf), "%lld", *(reinterpret_cast<uint64_t*>(pKey->m_sValue)));
+ SetString(pszKeyName, buf);
+ break;
+ case TYPE_COLOR:
+ snprintf(buf, sizeof(buf), "%d %d %d %d", pKey->m_Color[0], pKey->m_Color[1], pKey->m_Color[2], pKey->m_Color[3]);
+ SetString(pszKeyName, buf);
+ break;
+
+ case TYPE_WSTRING:
+ {
+ // convert the string to char *, set it for future use, and return it
+ char wideBuf[512];
+ int result = V_UnicodeToUTF8(pKey->m_wsValue, wideBuf, 512);
+ if (result)
+ {
+ // note: this will copy wideBuf
+ SetString(pszKeyName, wideBuf);
+ }
+ else
+ {
+ return pszDefaultValue;
+ }
+ break;
+ }
+ case TYPE_STRING:
+ break;
+ default:
+ return pszDefaultValue;
+ };
+
+ return pKey->m_sValue;
+ }
+ return pszDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the wide string pointer of a keyName. Default value is returned
+// if the keyName can't be found.
+// // Input : *pszKeyName -
+// pwszDefaultValue -
+// Output : const wchar_t*
+//-----------------------------------------------------------------------------
+const wchar_t* KeyValues::GetWString(const char* pszKeyName, const wchar_t* pwszDefaultValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ wchar_t wbuf[64];
+ switch (pKey->m_iDataType)
+ {
+ case TYPE_FLOAT:
+ swprintf(wbuf, ARRAYSIZE(wbuf), L"%f", pKey->m_flValue);
+ SetWString(pszKeyName, wbuf);
+ break;
+ case TYPE_PTR:
+ swprintf(wbuf, ARRAYSIZE(wbuf), L"%lld", static_cast<int64_t>(reinterpret_cast<size_t>(pKey->m_pValue)));
+ SetWString(pszKeyName, wbuf);
+ break;
+ case TYPE_INT:
+ swprintf(wbuf, ARRAYSIZE(wbuf), L"%d", pKey->m_iValue);
+ SetWString(pszKeyName, wbuf);
+ break;
+ case TYPE_UINT64:
+ {
+ swprintf(wbuf, ARRAYSIZE(wbuf), L"%lld", *(reinterpret_cast<uint64_t*>(pKey->m_sValue)));
+ SetWString(pszKeyName, wbuf);
+ }
+ break;
+ case TYPE_COLOR:
+ swprintf(wbuf, ARRAYSIZE(wbuf), L"%d %d %d %d", pKey->m_Color[0], pKey->m_Color[1], pKey->m_Color[2], pKey->m_Color[3]);
+ SetWString(pszKeyName, wbuf);
+ break;
+
+ case TYPE_WSTRING:
+ break;
+ case TYPE_STRING:
+ {
+ size_t bufSize = strlen(pKey->m_sValue) + 1;
+ wchar_t* pWBuf = new wchar_t[bufSize];
+ int result = V_UTF8ToUnicode(pKey->m_sValue, pWBuf, static_cast<int>(bufSize * sizeof(wchar_t)));
+ if (result >= 0) // may be a zero length string
+ {
+ SetWString(pszKeyName, pWBuf);
+ delete[] pWBuf;
+ }
+ else
+ {
+ delete[] pWBuf;
+ return pwszDefaultValue;
+ }
+
+ break;
+ }
+ default:
+ return pwszDefaultValue;
+ };
+
+ return reinterpret_cast<const wchar_t*>(pKey->m_wsValue);
+ }
+ return pwszDefaultValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Gets a color
+// Input : *pszKeyName -
+// &defaultColor -
+// Output : Color
+//-----------------------------------------------------------------------------
+Color KeyValues::GetColor(const char* pszKeyName, const Color& defaultColor)
+{
+ Color color = defaultColor;
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ {
+ if (pKey->m_iDataType == TYPE_COLOR)
+ {
+ color[0] = pKey->m_Color[0];
+ color[1] = pKey->m_Color[1];
+ color[2] = pKey->m_Color[2];
+ color[3] = pKey->m_Color[3];
+ }
+ else if (pKey->m_iDataType == TYPE_FLOAT)
+ {
+ color[0] = static_cast<unsigned char>(pKey->m_flValue);
+ }
+ else if (pKey->m_iDataType == TYPE_INT)
+ {
+ color[0] = static_cast<unsigned char>(pKey->m_iValue);
+ }
+ else if (pKey->m_iDataType == TYPE_STRING)
+ {
+ // parse the colors out of the string
+ float a = 0, b = 0, c = 0, d = 0;
+ sscanf(pKey->m_sValue, "%f %f %f %f", &a, &b, &c, &d);
+ color[0] = static_cast<unsigned char>(a);
+ color[1] = static_cast<unsigned char>(b);
+ color[2] = static_cast<unsigned char>(c);
+ color[3] = static_cast<unsigned char>(d);
+ }
+ }
+ return color;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the data type of the value stored in a keyName
+// Input : *pszKeyName -
+//-----------------------------------------------------------------------------
+KeyValuesTypes_t KeyValues::GetDataType(const char* pszKeyName)
+{
+ KeyValues* pKey = FindKey(pszKeyName, false);
+ if (pKey)
+ return static_cast<KeyValuesTypes_t>(pKey->m_iDataType);
+
+ return TYPE_NONE;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Get the data type of the value stored in this keyName
+//-----------------------------------------------------------------------------
+KeyValuesTypes_t KeyValues::GetDataType(void) const
+{
+ return static_cast<KeyValuesTypes_t>(m_iDataType);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the integer value of a keyName.
+// Input : *pszKeyName -
+// iValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetInt(const char* pszKeyName, int iValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+ if (pKey)
+ {
+ pKey->m_iValue = iValue;
+ pKey->m_iDataType = TYPE_INT;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the integer value of a keyName.
+//-----------------------------------------------------------------------------
+void KeyValues::SetUint64(const char* pszKeyName, uint64_t nValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+
+ if (pKey)
+ {
+ // delete the old value
+ delete[] pKey->m_sValue;
+ // make sure we're not storing the WSTRING - as we're converting over to STRING
+ delete[] pKey->m_wsValue;
+ pKey->m_wsValue = nullptr;
+
+ pKey->m_sValue = new char[sizeof(uint64_t)];
+ *(reinterpret_cast<uint64_t*>(pKey->m_sValue)) = nValue;
+ pKey->m_iDataType = TYPE_UINT64;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the float value of a keyName.
+// Input : *pszKeyName -
+// flValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetFloat(const char* pszKeyName, float flValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+ if (pKey)
+ {
+ pKey->m_flValue = flValue;
+ pKey->m_iDataType = TYPE_FLOAT;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the name value of a keyName.
+// Input : *pszSetName -
+//-----------------------------------------------------------------------------
+void KeyValues::SetName(const char* pszSetName)
+{
+ HKeySymbol hCaseSensitiveKeyName = INVALID_KEY_SYMBOL, hCaseInsensitiveKeyName = INVALID_KEY_SYMBOL;
+ hCaseSensitiveKeyName =
+ KeyValuesSystem()->m_pVtable->GetSymbolForStringCaseSensitive(KeyValuesSystem(), hCaseInsensitiveKeyName, pszSetName, false);
+
+ m_iKeyName = hCaseInsensitiveKeyName;
+ SPLIT_3_BYTES_INTO_1_AND_2(m_iKeyNameCaseSensitive1, m_iKeyNameCaseSensitive2, hCaseSensitiveKeyName);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the pointer value of a keyName.
+// Input : *pszKeyName -
+// *pValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetPtr(const char* pszKeyName, void* pValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+
+ if (pKey)
+ {
+ pKey->m_pValue = pValue;
+ pKey->m_iDataType = TYPE_PTR;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the string value (internal)
+// Input : *pszValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetStringValue(char const* pszValue)
+{
+ // delete the old value
+ delete[] m_sValue;
+ // make sure we're not storing the WSTRING - as we're converting over to STRING
+ delete[] m_wsValue;
+ m_wsValue = nullptr;
+
+ if (!pszValue)
+ {
+ // ensure a valid value
+ pszValue = "";
+ }
+
+ // allocate memory for the new value and copy it in
+ size_t len = strlen(pszValue);
+ m_sValue = new char[len + 1];
+ memcpy(m_sValue, pszValue, len + 1);
+
+ m_iDataType = TYPE_STRING;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets this key's peer to the KeyValues passed in
+// Input : *pDat -
+//-----------------------------------------------------------------------------
+void KeyValues::SetNextKey(KeyValues* pDat)
+{
+ m_pPeer = pDat;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the string value of a keyName.
+// Input : *pszKeyName -
+// *pszValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetString(const char* pszKeyName, const char* pszValue)
+{
+ if (KeyValues* pKey = FindKey(pszKeyName, true))
+ {
+ pKey->SetStringValue(pszValue);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Set the string value of a keyName.
+// Input : *pszKeyName -
+// *pwszValue -
+//-----------------------------------------------------------------------------
+void KeyValues::SetWString(const char* pszKeyName, const wchar_t* pwszValue)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+ if (pKey)
+ {
+ // delete the old value
+ delete[] pKey->m_wsValue;
+ // make sure we're not storing the STRING - as we're converting over to WSTRING
+ delete[] pKey->m_sValue;
+ pKey->m_sValue = nullptr;
+
+ if (!pwszValue)
+ {
+ // ensure a valid value
+ pwszValue = L"";
+ }
+
+ // allocate memory for the new value and copy it in
+ size_t len = wcslen(pwszValue);
+ pKey->m_wsValue = new wchar_t[len + 1];
+ memcpy(pKey->m_wsValue, pwszValue, (len + 1) * sizeof(wchar_t));
+
+ pKey->m_iDataType = TYPE_WSTRING;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets a color
+// Input : *pszKeyName -
+// color -
+//-----------------------------------------------------------------------------
+void KeyValues::SetColor(const char* pszKeyName, Color color)
+{
+ KeyValues* pKey = FindKey(pszKeyName, true);
+
+ if (pKey)
+ {
+ pKey->m_iDataType = TYPE_COLOR;
+ pKey->m_Color[0] = color[0];
+ pKey->m_Color[1] = color[1];
+ pKey->m_Color[2] = color[2];
+ pKey->m_Color[3] = color[3];
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : &src -
+//-----------------------------------------------------------------------------
+void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
+{
+ // garymcthack - need to check this code for possible buffer overruns.
+
+ m_iKeyName = src.m_iKeyName;
+ m_iKeyNameCaseSensitive1 = src.m_iKeyNameCaseSensitive1;
+ m_iKeyNameCaseSensitive2 = src.m_iKeyNameCaseSensitive2;
+
+ if (!src.m_pSub)
+ {
+ m_iDataType = src.m_iDataType;
+ char buf[256];
+ switch (src.m_iDataType)
+ {
+ case TYPE_NONE:
+ break;
+ case TYPE_STRING:
+ if (src.m_sValue)
+ {
+ size_t len = strlen(src.m_sValue) + 1;
+ m_sValue = new char[len];
+ strncpy(m_sValue, src.m_sValue, len);
+ }
+ break;
+ case TYPE_INT:
+ {
+ m_iValue = src.m_iValue;
+ snprintf(buf, sizeof(buf), "%d", m_iValue);
+ size_t len = strlen(buf) + 1;
+ m_sValue = new char[len];
+ strncpy(m_sValue, buf, len);
+ }
+ break;
+ case TYPE_FLOAT:
+ {
+ m_flValue = src.m_flValue;
+ snprintf(buf, sizeof(buf), "%f", m_flValue);
+ size_t len = strlen(buf) + 1;
+ m_sValue = new char[len];
+ strncpy(m_sValue, buf, len);
+ }
+ break;
+ case TYPE_PTR:
+ {
+ m_pValue = src.m_pValue;
+ }
+ break;
+ case TYPE_UINT64:
+ {
+ m_sValue = new char[sizeof(uint64_t)];
+ memcpy(m_sValue, src.m_sValue, sizeof(uint64_t));
+ }
+ break;
+ case TYPE_COLOR:
+ {
+ m_Color[0] = src.m_Color[0];
+ m_Color[1] = src.m_Color[1];
+ m_Color[2] = src.m_Color[2];
+ m_Color[3] = src.m_Color[3];
+ }
+ break;
+
+ default:
+ {
+ // do nothing . .what the heck is this?
+ assert(0);
+ }
+ break;
+ }
+ }
+
+ // Handle the immediate child
+ if (src.m_pSub)
+ {
+ m_pSub = new KeyValues;
+
+ m_pSub->Init();
+ m_pSub->SetName(nullptr);
+
+ m_pSub->RecursiveCopyKeyValues(*src.m_pSub);
+ }
+
+ // Handle the immediate peer
+ if (src.m_pPeer)
+ {
+ m_pPeer = new KeyValues;
+
+ m_pPeer->Init();
+ m_pPeer->SetName(nullptr);
+
+ m_pPeer->RecursiveCopyKeyValues(*src.m_pPeer);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Make a new copy of all subkeys, add them all to the passed-in keyvalues
+// Input : *pParent -
+//-----------------------------------------------------------------------------
+void KeyValues::CopySubkeys(KeyValues* pParent) const
+{
+ // recursively copy subkeys
+ // Also maintain ordering....
+ KeyValues* pPrev = nullptr;
+ for (KeyValues* pSub = m_pSub; pSub != nullptr; pSub = pSub->m_pPeer)
+ {
+ // take a copy of the subkey
+ KeyValues* pKey = pSub->MakeCopy();
+
+ // add into subkey list
+ if (pPrev)
+ {
+ pPrev->m_pPeer = pKey;
+ }
+ else
+ {
+ pParent->m_pSub = pKey;
+ }
+ pKey->m_pPeer = nullptr;
+ pPrev = pKey;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Makes a copy of the whole key-value pair set
+// Output : KeyValues*
+//-----------------------------------------------------------------------------
+KeyValues* KeyValues::MakeCopy(void) const
+{
+ KeyValues* pNewKeyValue = new KeyValues;
+
+ pNewKeyValue->Init();
+ pNewKeyValue->SetName(GetName());
+
+ // copy data
+ pNewKeyValue->m_iDataType = m_iDataType;
+ switch (m_iDataType)
+ {
+ case TYPE_STRING:
+ {
+ if (m_sValue)
+ {
+ size_t len = strlen(m_sValue);
+ assert(!pNewKeyValue->m_sValue);
+ pNewKeyValue->m_sValue = new char[len + 1];
+ memcpy(pNewKeyValue->m_sValue, m_sValue, len + 1);
+ }
+ }
+ break;
+ case TYPE_WSTRING:
+ {
+ if (m_wsValue)
+ {
+ size_t len = wcslen(m_wsValue);
+ pNewKeyValue->m_wsValue = new wchar_t[len + 1];
+ memcpy(pNewKeyValue->m_wsValue, m_wsValue, len + 1 * sizeof(wchar_t));
+ }
+ }
+ break;
+
+ case TYPE_INT:
+ pNewKeyValue->m_iValue = m_iValue;
+ break;
+
+ case TYPE_FLOAT:
+ pNewKeyValue->m_flValue = m_flValue;
+ break;
+
+ case TYPE_PTR:
+ pNewKeyValue->m_pValue = m_pValue;
+ break;
+
+ case TYPE_COLOR:
+ pNewKeyValue->m_Color[0] = m_Color[0];
+ pNewKeyValue->m_Color[1] = m_Color[1];
+ pNewKeyValue->m_Color[2] = m_Color[2];
+ pNewKeyValue->m_Color[3] = m_Color[3];
+ break;
+
+ case TYPE_UINT64:
+ pNewKeyValue->m_sValue = new char[sizeof(uint64_t)];
+ memcpy(pNewKeyValue->m_sValue, m_sValue, sizeof(uint64_t));
+ break;
+ };
+
+ // recursively copy subkeys
+ CopySubkeys(pNewKeyValue);
+ return pNewKeyValue;
+}
+
+ON_DLL_LOAD("vstdlib.dll", KeyValues, (CModule module))
+{
+ V_UTF8ToUnicode = module.GetExport("V_UTF8ToUnicode").As<int (*)(const char*, wchar_t*, int)>();
+ V_UnicodeToUTF8 = module.GetExport("V_UnicodeToUTF8").As<int (*)(const wchar_t*, char*, int)>();
+ KeyValuesSystem = module.GetExport("KeyValuesSystem").As<CKeyValuesSystem* (*)()>();
+}
+
+AUTOHOOK_INIT()
+
+// clang-format off
+AUTOHOOK(KeyValues__LoadFromBuffer, engine.dll + 0x426C30,
+char, __fastcall, (KeyValues* self, const char* pResourceName, const char* pBuffer, void* pFileSystem, void* a5, void* a6, int a7))
+// clang-format on
+{
+ static void* pSavedFilesystemPtr = nullptr;
+
+ // this is just to allow playlists to get a valid pFileSystem ptr for kv building, other functions that call this particular overload of
+ // LoadFromBuffer seem to get called on network stuff exclusively not exactly sure what the address wanted here is, so just taking it
+ // from a function call that always happens before playlists is loaded
+
+ // note: would be better if we could serialize this to disk for playlists, as this method breaks saving playlists in demos
+ if (pFileSystem != nullptr)
+ pSavedFilesystemPtr = pFileSystem;
+ if (!pFileSystem && !strcmp(pResourceName, "playlists"))
+ pFileSystem = pSavedFilesystemPtr;
+
+ return KeyValues__LoadFromBuffer(self, pResourceName, pBuffer, pFileSystem, a5, a6, a7);
+}
+
+ON_DLL_LOAD("engine.dll", EngineKeyValues, (CModule module))
+{
+ AUTOHOOK_DISPATCH()
+}
diff --git a/NorthstarDLL/keyvalues.h b/NorthstarDLL/shared/keyvalues.h
index 3ea682d6..64ca0cc7 100644
--- a/NorthstarDLL/keyvalues.h
+++ b/NorthstarDLL/shared/keyvalues.h
@@ -1,134 +1,134 @@
-#pragma once
-#include "color.h"
-
-enum KeyValuesTypes_t : char
-{
- TYPE_NONE = 0x0,
- TYPE_STRING = 0x1,
- TYPE_INT = 0x2,
- TYPE_FLOAT = 0x3,
- TYPE_PTR = 0x4,
- TYPE_WSTRING = 0x5,
- TYPE_COLOR = 0x6,
- TYPE_UINT64 = 0x7,
- TYPE_COMPILED_INT_BYTE = 0x8,
- TYPE_COMPILED_INT_0 = 0x9,
- TYPE_COMPILED_INT_1 = 0xA,
- TYPE_NUMTYPES = 0xB,
-};
-
-enum MergeKeyValuesOp_t
-{
- MERGE_KV_ALL,
- MERGE_KV_UPDATE, // update values are copied into storage, adding new keys to storage or updating existing ones
- MERGE_KV_DELETE, // update values specify keys that get deleted from storage
- MERGE_KV_BORROW, // update values only update existing keys in storage, keys in update that do not exist in storage are discarded
-};
-
-//-----------------------------------------------------------------------------
-// Purpose: Simple recursive data access class
-// Used in vgui for message parameters and resource files
-// Destructor deletes all child KeyValues nodes
-// Data is stored in key (string names) - (string/int/float)value pairs called nodes.
-//
-// About KeyValues Text File Format:
-
-// It has 3 control characters '{', '}' and '"'. Names and values may be quoted or
-// not. The quote '"' character must not be used within name or values, only for
-// quoting whole tokens. You may use escape sequences wile parsing and add within a
-// quoted token a \" to add quotes within your name or token. When using Escape
-// Sequence the parser must now that by setting KeyValues::UsesEscapeSequences( true ),
-// which it's off by default. Non-quoted tokens ends with a whitespace, '{', '}' and '"'.
-// So you may use '{' and '}' within quoted tokens, but not for non-quoted tokens.
-// An open bracket '{' after a key name indicates a list of subkeys which is finished
-// with a closing bracket '}'. Subkeys use the same definitions recursively.
-// Whitespaces are space, return, newline and tabulator. Allowed Escape sequences
-// are \n, \t, \\, \n and \". The number character '#' is used for macro purposes
-// (eg #include), don't use it as first character in key names.
-//-----------------------------------------------------------------------------
-class KeyValues
-{
- private:
- KeyValues(); // for internal use only
-
- public:
- // Constructors/destructors
- KeyValues(const char* pszSetName);
- KeyValues(const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue);
- KeyValues(const char* pszSetName, const char* pszFirstKey, const wchar_t* pwszFirstValue);
- KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue);
- KeyValues(
- const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue, const char* pszSecondKey, const char* pszSecondValue);
- KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue, const char* pszSecondKey, int iSecondValue);
- ~KeyValues(void);
-
- void Init(void);
- void Clear(void);
- void DeleteThis(void);
- void RemoveEverything();
-
- KeyValues* FindKey(const char* pKeyName, bool bCreate = false);
- KeyValues* FindLastSubKey(void) const;
-
- void AddSubKey(KeyValues* pSubkey);
- void RemoveSubKey(KeyValues* pSubKey);
- void InsertSubKey(int nIndex, KeyValues* pSubKey);
- bool ContainsSubKey(KeyValues* pSubKey);
- void SwapSubKey(KeyValues* pExistingSubkey, KeyValues* pNewSubKey);
- void ElideSubKey(KeyValues* pSubKey);
-
- // Data access
- bool IsEmpty(const char* pszKeyName);
- KeyValues* GetFirstTrueSubKey(void) const;
- KeyValues* GetNextTrueSubKey(void) const;
- KeyValues* GetFirstValue(void) const;
- KeyValues* GetNextValue(void) const;
- KeyValues* GetFirstSubKey() const;
- KeyValues* GetNextKey() const;
- const char* GetName(void) const;
- int GetInt(const char* pszKeyName, int iDefaultValue);
- uint64_t GetUint64(const char* pszKeyName, uint64_t nDefaultValue);
- void* GetPtr(const char* pszKeyName, void* pDefaultValue);
- float GetFloat(const char* pszKeyName, float flDefaultValue);
- const char* GetString(const char* pszKeyName = nullptr, const char* pszDefaultValue = "");
- const wchar_t* GetWString(const char* pszKeyName = nullptr, const wchar_t* pwszDefaultValue = L"");
- Color GetColor(const char* pszKeyName, const Color& defaultColor);
- KeyValuesTypes_t GetDataType(const char* pszKeyName);
- KeyValuesTypes_t GetDataType(void) const;
-
- // Key writing
- void SetInt(const char* pszKeyName, int iValue);
- void SetUint64(const char* pszKeyName, uint64_t nValue);
- void SetPtr(const char* pszKeyName, void* pValue);
- void SetNextKey(KeyValues* pDat);
- void SetName(const char* pszName);
- void SetString(const char* pszKeyName, const char* pszValue);
- void SetWString(const char* pszKeyName, const wchar_t* pwszValue);
- void SetStringValue(char const* pszValue);
- void SetColor(const char* pszKeyName, Color color);
- void SetFloat(const char* pszKeyName, float flValue);
-
- void RecursiveCopyKeyValues(KeyValues& src);
- void CopySubkeys(KeyValues* pParent) const;
- KeyValues* MakeCopy(void) const;
-
- public:
- uint32_t m_iKeyName : 24; // 0x0000
- uint32_t m_iKeyNameCaseSensitive1 : 8; // 0x0003
- char* m_sValue; // 0x0008
- wchar_t* m_wsValue; // 0x0010
- union // 0x0018
- {
- int m_iValue;
- float m_flValue;
- void* m_pValue;
- unsigned char m_Color[4];
- };
- char m_szShortName[8]; // 0x0020
- char m_iDataType; // 0x0028
- char m_bHasEscapeSequences; // 0x0029
- uint16_t m_iKeyNameCaseSensitive2; // 0x002A
- KeyValues* m_pPeer; // 0x0030
- KeyValues* m_pSub; // 0x0038
- KeyValues* m_pChain; // 0x0040
-};
+#pragma once
+#include "core/math/color.h"
+
+enum KeyValuesTypes_t : char
+{
+ TYPE_NONE = 0x0,
+ TYPE_STRING = 0x1,
+ TYPE_INT = 0x2,
+ TYPE_FLOAT = 0x3,
+ TYPE_PTR = 0x4,
+ TYPE_WSTRING = 0x5,
+ TYPE_COLOR = 0x6,
+ TYPE_UINT64 = 0x7,
+ TYPE_COMPILED_INT_BYTE = 0x8,
+ TYPE_COMPILED_INT_0 = 0x9,
+ TYPE_COMPILED_INT_1 = 0xA,
+ TYPE_NUMTYPES = 0xB,
+};
+
+enum MergeKeyValuesOp_t
+{
+ MERGE_KV_ALL,
+ MERGE_KV_UPDATE, // update values are copied into storage, adding new keys to storage or updating existing ones
+ MERGE_KV_DELETE, // update values specify keys that get deleted from storage
+ MERGE_KV_BORROW, // update values only update existing keys in storage, keys in update that do not exist in storage are discarded
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Simple recursive data access class
+// Used in vgui for message parameters and resource files
+// Destructor deletes all child KeyValues nodes
+// Data is stored in key (string names) - (string/int/float)value pairs called nodes.
+//
+// About KeyValues Text File Format:
+
+// It has 3 control characters '{', '}' and '"'. Names and values may be quoted or
+// not. The quote '"' character must not be used within name or values, only for
+// quoting whole tokens. You may use escape sequences wile parsing and add within a
+// quoted token a \" to add quotes within your name or token. When using Escape
+// Sequence the parser must now that by setting KeyValues::UsesEscapeSequences( true ),
+// which it's off by default. Non-quoted tokens ends with a whitespace, '{', '}' and '"'.
+// So you may use '{' and '}' within quoted tokens, but not for non-quoted tokens.
+// An open bracket '{' after a key name indicates a list of subkeys which is finished
+// with a closing bracket '}'. Subkeys use the same definitions recursively.
+// Whitespaces are space, return, newline and tabulator. Allowed Escape sequences
+// are \n, \t, \\, \n and \". The number character '#' is used for macro purposes
+// (eg #include), don't use it as first character in key names.
+//-----------------------------------------------------------------------------
+class KeyValues
+{
+ private:
+ KeyValues(); // for internal use only
+
+ public:
+ // Constructors/destructors
+ KeyValues(const char* pszSetName);
+ KeyValues(const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue);
+ KeyValues(const char* pszSetName, const char* pszFirstKey, const wchar_t* pwszFirstValue);
+ KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue);
+ KeyValues(
+ const char* pszSetName, const char* pszFirstKey, const char* pszFirstValue, const char* pszSecondKey, const char* pszSecondValue);
+ KeyValues(const char* pszSetName, const char* pszFirstKey, int iFirstValue, const char* pszSecondKey, int iSecondValue);
+ ~KeyValues(void);
+
+ void Init(void);
+ void Clear(void);
+ void DeleteThis(void);
+ void RemoveEverything();
+
+ KeyValues* FindKey(const char* pKeyName, bool bCreate = false);
+ KeyValues* FindLastSubKey(void) const;
+
+ void AddSubKey(KeyValues* pSubkey);
+ void RemoveSubKey(KeyValues* pSubKey);
+ void InsertSubKey(int nIndex, KeyValues* pSubKey);
+ bool ContainsSubKey(KeyValues* pSubKey);
+ void SwapSubKey(KeyValues* pExistingSubkey, KeyValues* pNewSubKey);
+ void ElideSubKey(KeyValues* pSubKey);
+
+ // Data access
+ bool IsEmpty(const char* pszKeyName);
+ KeyValues* GetFirstTrueSubKey(void) const;
+ KeyValues* GetNextTrueSubKey(void) const;
+ KeyValues* GetFirstValue(void) const;
+ KeyValues* GetNextValue(void) const;
+ KeyValues* GetFirstSubKey() const;
+ KeyValues* GetNextKey() const;
+ const char* GetName(void) const;
+ int GetInt(const char* pszKeyName, int iDefaultValue);
+ uint64_t GetUint64(const char* pszKeyName, uint64_t nDefaultValue);
+ void* GetPtr(const char* pszKeyName, void* pDefaultValue);
+ float GetFloat(const char* pszKeyName, float flDefaultValue);
+ const char* GetString(const char* pszKeyName = nullptr, const char* pszDefaultValue = "");
+ const wchar_t* GetWString(const char* pszKeyName = nullptr, const wchar_t* pwszDefaultValue = L"");
+ Color GetColor(const char* pszKeyName, const Color& defaultColor);
+ KeyValuesTypes_t GetDataType(const char* pszKeyName);
+ KeyValuesTypes_t GetDataType(void) const;
+
+ // Key writing
+ void SetInt(const char* pszKeyName, int iValue);
+ void SetUint64(const char* pszKeyName, uint64_t nValue);
+ void SetPtr(const char* pszKeyName, void* pValue);
+ void SetNextKey(KeyValues* pDat);
+ void SetName(const char* pszName);
+ void SetString(const char* pszKeyName, const char* pszValue);
+ void SetWString(const char* pszKeyName, const wchar_t* pwszValue);
+ void SetStringValue(char const* pszValue);
+ void SetColor(const char* pszKeyName, Color color);
+ void SetFloat(const char* pszKeyName, float flValue);
+
+ void RecursiveCopyKeyValues(KeyValues& src);
+ void CopySubkeys(KeyValues* pParent) const;
+ KeyValues* MakeCopy(void) const;
+
+ public:
+ uint32_t m_iKeyName : 24; // 0x0000
+ uint32_t m_iKeyNameCaseSensitive1 : 8; // 0x0003
+ char* m_sValue; // 0x0008
+ wchar_t* m_wsValue; // 0x0010
+ union // 0x0018
+ {
+ int m_iValue;
+ float m_flValue;
+ void* m_pValue;
+ unsigned char m_Color[4];
+ };
+ char m_szShortName[8]; // 0x0020
+ char m_iDataType; // 0x0028
+ char m_bHasEscapeSequences; // 0x0029
+ uint16_t m_iKeyNameCaseSensitive2; // 0x002A
+ KeyValues* m_pPeer; // 0x0030
+ KeyValues* m_pSub; // 0x0038
+ KeyValues* m_pChain; // 0x0040
+};
diff --git a/NorthstarDLL/maxplayers.cpp b/NorthstarDLL/shared/maxplayers.cpp
index ece8d14b..ebb44341 100644
--- a/NorthstarDLL/maxplayers.cpp
+++ b/NorthstarDLL/shared/maxplayers.cpp
@@ -1,5 +1,5 @@
#include "pch.h"
-#include "tier0.h"
+#include "core/tier0.h"
#include "maxplayers.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/maxplayers.h b/NorthstarDLL/shared/maxplayers.h
index b251f6a6..b251f6a6 100644
--- a/NorthstarDLL/maxplayers.h
+++ b/NorthstarDLL/shared/maxplayers.h
diff --git a/NorthstarDLL/misccommands.cpp b/NorthstarDLL/shared/misccommands.cpp
index fd17b884..ad8b2a32 100644
--- a/NorthstarDLL/misccommands.cpp
+++ b/NorthstarDLL/shared/misccommands.cpp
@@ -1,15 +1,15 @@
#include "pch.h"
#include "misccommands.h"
-#include "concommand.h"
-#include "playlist.h"
-#include "r2engine.h"
-#include "r2client.h"
-#include "tier0.h"
-#include "hoststate.h"
-#include "masterserver.h"
-#include "modmanager.h"
-#include "serverauthentication.h"
-#include "squirrel.h"
+#include "core/convar/concommand.h"
+#include "shared/playlist.h"
+#include "engine/r2engine.h"
+#include "client/r2client.h"
+#include "core/tier0.h"
+#include "engine/hoststate.h"
+#include "masterserver/masterserver.h"
+#include "mods/modmanager.h"
+#include "server/auth/serverauthentication.h"
+#include "squirrel/squirrel.h"
void ConCommand_force_newgame(const CCommand& arg)
{
diff --git a/NorthstarDLL/misccommands.h b/NorthstarDLL/shared/misccommands.h
index 07a07fb3..07a07fb3 100644
--- a/NorthstarDLL/misccommands.h
+++ b/NorthstarDLL/shared/misccommands.h
diff --git a/NorthstarDLL/playlist.cpp b/NorthstarDLL/shared/playlist.cpp
index 4f34dbb1..2fb856b3 100644
--- a/NorthstarDLL/playlist.cpp
+++ b/NorthstarDLL/shared/playlist.cpp
@@ -1,10 +1,10 @@
#include "pch.h"
#include "playlist.h"
-#include "concommand.h"
-#include "convar.h"
-#include "squirrel.h"
-#include "hoststate.h"
-#include "serverpresence.h"
+#include "core/convar/concommand.h"
+#include "core/convar/convar.h"
+#include "squirrel/squirrel.h"
+#include "engine/hoststate.h"
+#include "server/serverpresence.h"
AUTOHOOK_INIT()
diff --git a/NorthstarDLL/playlist.h b/NorthstarDLL/shared/playlist.h
index c77b37d9..c77b37d9 100644
--- a/NorthstarDLL/playlist.h
+++ b/NorthstarDLL/shared/playlist.h
diff --git a/NorthstarDLL/squirrel.cpp b/NorthstarDLL/squirrel/squirrel.cpp
index 02ca651e..8dd93ed0 100644
--- a/NorthstarDLL/squirrel.cpp
+++ b/NorthstarDLL/squirrel/squirrel.cpp
@@ -1,10 +1,10 @@
#include "pch.h"
#include "squirrel.h"
-#include "concommand.h"
-#include "modmanager.h"
-#include "dedicated.h"
-#include "r2engine.h"
-#include "tier0.h"
+#include "core/convar/concommand.h"
+#include "mods/modmanager.h"
+#include "dedicated/dedicated.h"
+#include "engine/r2engine.h"
+#include "core/tier0.h"
#include <any>
@@ -88,6 +88,18 @@ eSQReturnType SQReturnTypeFromString(const char* pReturnType)
return eSQReturnType::Default; // previous default value
}
+ScriptContext ScriptContextFromString(std::string string)
+{
+ if (string == "UI")
+ return ScriptContext::UI;
+ if (string == "CLIENT")
+ return ScriptContext::CLIENT;
+ if (string == "SERVER")
+ return ScriptContext::SERVER;
+ else
+ return ScriptContext::INVALID;
+}
+
const char* SQTypeNameFromID(int type)
{
switch (type)
@@ -152,10 +164,13 @@ void AsyncCall_External(ScriptContext context, const char* func_name, SquirrelMe
{
case ScriptContext::CLIENT:
g_pSquirrel<ScriptContext::CLIENT>->messageBuffer->push(message);
+ break;
case ScriptContext::SERVER:
g_pSquirrel<ScriptContext::SERVER>->messageBuffer->push(message);
+ break;
case ScriptContext::UI:
g_pSquirrel<ScriptContext::UI>->messageBuffer->push(message);
+ break;
}
}
@@ -317,18 +332,19 @@ template <ScriptContext context> CSquirrelVM* __fastcall CreateNewVMHook(void* a
return sqvm;
}
-template <ScriptContext context> void (*__fastcall DestroyVM)(void* a1, HSquirrelVM* sqvm);
-template <ScriptContext context> void __fastcall DestroyVMHook(void* a1, HSquirrelVM* sqvm)
+template <ScriptContext context> void (*__fastcall DestroyVM)(void* a1, CSquirrelVM* sqvm);
+template <ScriptContext context> void __fastcall DestroyVMHook(void* a1, CSquirrelVM* sqvm)
{
ScriptContext realContext = context; // ui and client use the same function so we use this for prints
- if (IsUIVM(context, sqvm))
+ if (IsUIVM(context, sqvm->sqvm))
{
realContext = ScriptContext::UI;
g_pSquirrel<ScriptContext::UI>->VMDestroyed();
+ DestroyVM<ScriptContext::CLIENT>(a1, sqvm); // If we pass UI here it crashes
}
else
{
- g_pSquirrel<context>->m_pSQVM = nullptr; // Fixes a race-like bug
+ g_pSquirrel<context>->VMDestroyed();
DestroyVM<context>(a1, sqvm);
}
@@ -514,40 +530,76 @@ template <ScriptContext context> void StubUnsafeSQFuncs()
template <ScriptContext context> void SquirrelManager<context>::ProcessMessageBuffer()
{
- auto maybeMessage = messageBuffer->pop();
- if (!maybeMessage)
+ while (std::optional<SquirrelMessage> maybeMessage = messageBuffer->pop())
{
- return;
- }
+ SquirrelMessage message = maybeMessage.value();
+
+ SQObject functionobj {};
+ int result = sq_getfunction(m_pSQVM->sqvm, message.functionName.c_str(), &functionobj, 0);
+ if (result != 0) // This func returns 0 on success for some reason
+ {
+ NS::log::squirrel_logger<context>()->error(
+ "ProcessMessageBuffer was unable to find function with name '{}'. Is it global?", message.functionName);
+ continue;
+ }
- SquirrelMessage message = maybeMessage.value();
+ pushobject(m_pSQVM->sqvm, &functionobj); // Push the function object
+ pushroottable(m_pSQVM->sqvm);
- SQObject functionobj {};
- int result = sq_getfunction(m_pSQVM->sqvm, message.functionName.c_str(), &functionobj, 0);
- if (result != 0) // This func returns 0 on success for some reason
- {
- spdlog::error(
- "ProcessMessageBuffer was unable to find function with name '{}' on {}. Is it global?",
- message.functionName,
- GetContextName(context));
- return;
+ if (message.isExternal)
+ {
+ message.externalFunc(m_pSQVM->sqvm);
+ }
+ else
+ {
+ for (auto& v : message.args)
+ {
+ // Execute lambda to push arg to stack
+ v();
+ }
+ }
+
+ _call(m_pSQVM->sqvm, message.args.size());
}
- pushobject(m_pSQVM->sqvm, &functionobj); // Push the function object
- pushroottable(m_pSQVM->sqvm);
- if (message.isExternal)
+}
+
+ADD_SQFUNC(
+ "string",
+ NSGetCurrentModName,
+ "",
+ "Returns the mod name of the script running this function",
+ ScriptContext::UI | ScriptContext::CLIENT | ScriptContext::SERVER)
+{
+ int depth = g_pSquirrel<context>->getinteger(sqvm, 1);
+ if (auto mod = g_pSquirrel<context>->getcallingmod(sqvm, depth); mod == nullptr)
{
- message.externalFunc(m_pSQVM->sqvm);
+ g_pSquirrel<context>->raiseerror(sqvm, "NSGetModName was called from a non-mod script. This shouldn't be possible");
+ return SQRESULT_ERROR;
}
else
{
- for (auto& v : message.args)
- {
- // Execute lambda to push arg to stack
- v();
- }
+ g_pSquirrel<context>->pushstring(sqvm, mod->Name.c_str());
}
+ return SQRESULT_NOTNULL;
+}
- _call(m_pSQVM->sqvm, message.args.size());
+ADD_SQFUNC(
+ "string",
+ NSGetCallingModName,
+ "int depth = 0",
+ "Returns the mod name of the script running this function",
+ ScriptContext::UI | ScriptContext::CLIENT | ScriptContext::SERVER)
+{
+ int depth = g_pSquirrel<context>->getinteger(sqvm, 1);
+ if (auto mod = g_pSquirrel<context>->getcallingmod(sqvm, depth); mod == nullptr)
+ {
+ g_pSquirrel<context>->pushstring(sqvm, "Unknown");
+ }
+ else
+ {
+ g_pSquirrel<context>->pushstring(sqvm, mod->Name.c_str());
+ }
+ return SQRESULT_NOTNULL;
}
ON_DLL_LOAD_RELIESON("client.dll", ClientSquirrel, ConCommand, (CModule module))
@@ -626,6 +678,8 @@ ON_DLL_LOAD_RELIESON("client.dll", ClientSquirrel, ConCommand, (CModule module))
g_pSquirrel<ScriptContext::UI>->messageBuffer = g_pSquirrel<ScriptContext::CLIENT>->messageBuffer;
g_pSquirrel<ScriptContext::CLIENT>->__sq_getfunction = module.Offset(0x572FB0).As<sq_getfunctionType>();
g_pSquirrel<ScriptContext::UI>->__sq_getfunction = g_pSquirrel<ScriptContext::CLIENT>->__sq_getfunction;
+ g_pSquirrel<ScriptContext::CLIENT>->__sq_stackinfos = module.Offset(0x35970).As<sq_stackinfosType>();
+ g_pSquirrel<ScriptContext::UI>->__sq_stackinfos = g_pSquirrel<ScriptContext::CLIENT>->__sq_stackinfos;
MAKEHOOK(
module.Offset(0x108E0),
@@ -707,6 +761,7 @@ ON_DLL_LOAD_RELIESON("server.dll", ServerSquirrel, ConCommand, (CModule module))
g_pSquirrel<ScriptContext::SERVER>->logger = NS::log::SCRIPT_SV;
// Message buffer stuff
g_pSquirrel<ScriptContext::SERVER>->__sq_getfunction = module.Offset(0x6C85).As<sq_getfunctionType>();
+ g_pSquirrel<ScriptContext::SERVER>->__sq_stackinfos = module.Offset(0x35920).As<sq_stackinfosType>();
MAKEHOOK(
module.Offset(0x1DD10),
diff --git a/NorthstarDLL/squirrel.h b/NorthstarDLL/squirrel/squirrel.h
index 65dd66c5..82825b3c 100644
--- a/NorthstarDLL/squirrel.h
+++ b/NorthstarDLL/squirrel/squirrel.h
@@ -2,7 +2,8 @@
#include "squirrelclasstypes.h"
#include "squirrelautobind.h"
-#include "vector.h"
+#include "core/math/vector.h"
+#include "mods/modmanager.h"
// stolen from ttf2sdk: sqvm types
typedef float SQFloat;
@@ -36,6 +37,13 @@ const char* GetContextName_Short(ScriptContext context);
eSQReturnType SQReturnTypeFromString(const char* pReturnType);
const char* SQTypeNameFromID(const int iTypeId);
+ScriptContext ScriptContextFromString(std::string string);
+
+namespace NS::log
+{
+ template <ScriptContext context> std::shared_ptr<spdlog::logger> squirrel_logger();
+}; // namespace NS::log
+
void schedule_call_external(ScriptContext context, const char* func_name, SquirrelMessage_External_Pop function);
// This base class means that only the templated functions have to be rebuilt for each template instance
@@ -88,6 +96,8 @@ class SquirrelManagerBase
sq_getthisentityType __sq_getthisentity;
sq_getobjectType __sq_getobject;
+ sq_stackinfosType __sq_stackinfos;
+
sq_createuserdataType __sq_createuserdata;
sq_setuserdatatypeidType __sq_setuserdatatypeid;
sq_getfunctionType __sq_getfunction;
@@ -114,7 +124,7 @@ class SquirrelManagerBase
return __sq_call(sqvm, args + 1, false, false);
}
- inline SQInteger raiseerror(HSquirrelVM* sqvm, const const SQChar* sError)
+ inline SQInteger raiseerror(HSquirrelVM* sqvm, const SQChar* sError)
{
return __sq_raiseerror(sqvm, sError);
}
@@ -220,6 +230,28 @@ class SquirrelManagerBase
return __sq_getasset(sqvm, stackpos, result);
}
+ inline long long sq_stackinfos(HSquirrelVM* sqvm, int level, SQStackInfos& out)
+ {
+ return __sq_stackinfos(sqvm, level, &out, sqvm->_callstacksize);
+ }
+
+ inline Mod* getcallingmod(HSquirrelVM* sqvm, int depth = 0)
+ {
+ SQStackInfos stackInfo {};
+ if (1 + depth >= sqvm->_callstacksize)
+ {
+ return nullptr;
+ }
+ sq_stackinfos(sqvm, 1 + depth, stackInfo);
+ std::string sourceName = stackInfo._sourceName;
+ std::replace(sourceName.begin(), sourceName.end(), '/', '\\');
+ std::string filename = "scripts\\vscripts\\" + sourceName;
+ if (auto res = g_pModManager->m_ModFiles.find(filename); res != g_pModManager->m_ModFiles.end())
+ {
+ return res->second.m_pOwningMod;
+ }
+ return nullptr;
+ }
template <typename T> inline SQRESULT getuserdata(HSquirrelVM* sqvm, const SQInteger stackpos, T* data, uint64_t* typeId)
{
return __sq_getuserdata(sqvm, stackpos, (void**)data, typeId); // this sometimes crashes idk
@@ -297,6 +329,7 @@ template <ScriptContext context> class SquirrelManager : public virtual Squirrel
int result = sq_getfunction(m_pSQVM->sqvm, funcname, &functionobj, 0);
if (result != 0) // This func returns 0 on success for some reason
{
+ NS::log::squirrel_logger<context>()->error("Call was unable to find function with name '{}'. Is it global?", funcname);
return SQRESULT_ERROR;
}
pushobject(m_pSQVM->sqvm, &functionobj); // Push the function object
@@ -319,6 +352,7 @@ template <ScriptContext context> class SquirrelManager : public virtual Squirrel
int result = sq_getfunction(m_pSQVM->sqvm, funcname, &functionobj, 0);
if (result != 0) // This func returns 0 on success for some reason
{
+ NS::log::squirrel_logger<context>()->error("Call was unable to find function with name '{}'. Is it global?", funcname);
return SQRESULT_ERROR;
}
pushobject(m_pSQVM->sqvm, &functionobj); // Push the function object
diff --git a/NorthstarDLL/squirrelautobind.cpp b/NorthstarDLL/squirrel/squirrelautobind.cpp
index d5f42477..d5f42477 100644
--- a/NorthstarDLL/squirrelautobind.cpp
+++ b/NorthstarDLL/squirrel/squirrelautobind.cpp
diff --git a/NorthstarDLL/squirrelautobind.h b/NorthstarDLL/squirrel/squirrelautobind.h
index 865479a1..865479a1 100644
--- a/NorthstarDLL/squirrelautobind.h
+++ b/NorthstarDLL/squirrel/squirrelautobind.h
diff --git a/NorthstarDLL/squirrelclasstypes.h b/NorthstarDLL/squirrel/squirrelclasstypes.h
index e26bc8d0..efc80f15 100644
--- a/NorthstarDLL/squirrelclasstypes.h
+++ b/NorthstarDLL/squirrel/squirrelclasstypes.h
@@ -73,6 +73,7 @@ struct SQFuncRegistration
enum class ScriptContext : int
{
+ INVALID = -1,
SERVER,
CLIENT,
UI,
@@ -223,6 +224,8 @@ typedef SQFloat* (*sq_getvectorType)(HSquirrelVM* sqvm, SQInteger iStackpos);
typedef SQBool (*sq_getthisentityType)(HSquirrelVM*, void** ppEntity);
typedef void (*sq_getobjectType)(HSquirrelVM*, SQInteger iStackPos, SQObject* pOutObj);
+typedef long long (*sq_stackinfosType)(HSquirrelVM* sqvm, int iLevel, SQStackInfos* pOutObj, int iCallStackSize);
+
// sq stack userpointer funcs
typedef void* (*sq_createuserdataType)(HSquirrelVM* sqvm, SQInteger iSize);
typedef SQRESULT (*sq_setuserdatatypeidType)(HSquirrelVM* sqvm, SQInteger iStackpos, uint64_t iTypeId);
diff --git a/NorthstarDLL/squirreldatatypes.h b/NorthstarDLL/squirrel/squirreldatatypes.h
index e9f88d08..b5025f6b 100644
--- a/NorthstarDLL/squirreldatatypes.h
+++ b/NorthstarDLL/squirrel/squirreldatatypes.h
@@ -251,7 +251,7 @@ struct alignas(8) HSquirrelVM
void* pointer_28;
CallInfo* ci;
CallInfo* _callstack;
- int _callsstacksize;
+ int _callstacksize;
int _stackbase;
SQObject* _stackOfCurrentFunction;
SQSharedState* sharedState;
@@ -275,7 +275,7 @@ struct alignas(8) HSquirrelVM
int _nnativecalls;
int _suspended;
int _suspended_root;
- int _callstacksize;
+ int _unk;
int _suspended_target;
int trapAmount;
int _suspend_varargs;
diff --git a/NorthstarDLL/printcommands.cpp b/NorthstarDLL/util/printcommands.cpp
index 90af1575..5552c50c 100644
--- a/NorthstarDLL/printcommands.cpp
+++ b/NorthstarDLL/util/printcommands.cpp
@@ -1,7 +1,7 @@
#include "pch.h"
-#include "printcommand.h"
-#include "convar.h"
-#include "concommand.h"
+#include "printcommands.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
void PrintCommandHelpDialogue(const ConCommandBase* command, const char* name)
{
diff --git a/NorthstarDLL/printcommand.h b/NorthstarDLL/util/printcommands.h
index 6c3ef850..cb72e5cc 100644
--- a/NorthstarDLL/printcommand.h
+++ b/NorthstarDLL/util/printcommands.h
@@ -1,5 +1,5 @@
#pragma once
-#include "concommand.h"
+#include "core/convar/concommand.h"
void PrintCommandHelpDialogue(const ConCommandBase* command, const char* name);
void TryPrintCvarHelpForCommand(const char* pCommand);
diff --git a/NorthstarDLL/printmaps.cpp b/NorthstarDLL/util/printmaps.cpp
index c378daad..e0192d69 100644
--- a/NorthstarDLL/printmaps.cpp
+++ b/NorthstarDLL/util/printmaps.cpp
@@ -1,10 +1,10 @@
#include "pch.h"
#include "printmaps.h"
-#include "convar.h"
-#include "concommand.h"
-#include "modmanager.h"
-#include "tier0.h"
-#include "r2engine.h"
+#include "core/convar/convar.h"
+#include "core/convar/concommand.h"
+#include "mods/modmanager.h"
+#include "core/tier0.h"
+#include "engine/r2engine.h"
#include <filesystem>
#include <regex>
diff --git a/NorthstarDLL/printmaps.h b/NorthstarDLL/util/printmaps.h
index b01761c0..b01761c0 100644
--- a/NorthstarDLL/printmaps.h
+++ b/NorthstarDLL/util/printmaps.h
diff --git a/NorthstarDLL/util/version.cpp b/NorthstarDLL/util/version.cpp
new file mode 100644
index 00000000..8697b61f
--- /dev/null
+++ b/NorthstarDLL/util/version.cpp
@@ -0,0 +1,96 @@
+#include "util/version.h"
+#include "pch.h"
+#include "ns_version.h"
+#include "dedicated/dedicated.h"
+
+char version[16];
+char NSUserAgent[256];
+
+void InitialiseVersion()
+{
+ constexpr int northstar_version[4] {NORTHSTAR_VERSION};
+ int ua_len = 0;
+
+ // We actually use the rightmost integer do determine whether or not we're a debug/dev build
+ // If it is set to 1, we are a dev build
+ // On github CI, we set this 1 to a 0 automatically as we replace the 0,0,0,1 with the real version number
+ if (northstar_version[3] == 1)
+ {
+ sprintf(version, "%d.%d.%d.%d+dev", northstar_version[0], northstar_version[1], northstar_version[2], northstar_version[3]);
+ ua_len += snprintf(
+ NSUserAgent + ua_len,
+ sizeof(NSUserAgent) - ua_len,
+ "R2Northstar/%d.%d.%d+dev",
+ northstar_version[0],
+ northstar_version[1],
+ northstar_version[2]);
+ }
+ else
+ {
+ sprintf(version, "%d.%d.%d.%d", northstar_version[0], northstar_version[1], northstar_version[2], northstar_version[3]);
+ ua_len += snprintf(
+ NSUserAgent + ua_len,
+ sizeof(NSUserAgent) - ua_len,
+ "R2Northstar/%d.%d.%d",
+ northstar_version[0],
+ northstar_version[1],
+ northstar_version[2]);
+ }
+
+ if (IsDedicatedServer())
+ ua_len += snprintf(NSUserAgent + ua_len, sizeof(NSUserAgent) - ua_len, " (Dedicated)");
+
+ // Add the host platform info to the user agent.
+ //
+ // note: ntdll will always be loaded
+ HMODULE ntdll = GetModuleHandleA("ntdll");
+ if (ntdll)
+ {
+ // real win32 version info (i.e., ignore manifest)
+ DWORD(WINAPI * RtlGetVersion)(LPOSVERSIONINFOEXW);
+ *(FARPROC*)(&RtlGetVersion) = GetProcAddress(ntdll, "RtlGetVersion");
+
+ // wine version (7.0-rc1, 7.0, 7.11, etc)
+ const char*(CDECL * wine_get_version)(void);
+ *(FARPROC*)(&wine_get_version) = GetProcAddress(ntdll, "wine_get_version");
+
+ // human-readable build string (e.g., "wine-7.22 (Staging)")
+ const char*(CDECL * wine_get_build_id)(void);
+ *(FARPROC*)(&wine_get_build_id) = GetProcAddress(ntdll, "wine_get_build_id");
+
+ // uname sysname (Darwin, Linux, etc) and release (kernel version string)
+ void(CDECL * wine_get_host_version)(const char** sysname, const char** release);
+ *(FARPROC*)(&wine_get_host_version) = GetProcAddress(ntdll, "wine_get_host_version");
+
+ OSVERSIONINFOEXW osvi = {};
+ const char *wine_version = NULL, *wine_build_id = NULL, *wine_sysname = NULL, *wine_release = NULL;
+ if (RtlGetVersion)
+ RtlGetVersion(&osvi);
+ if (wine_get_version)
+ wine_version = wine_get_version();
+ if (wine_get_build_id)
+ wine_build_id = wine_get_build_id();
+ if (wine_get_host_version)
+ wine_get_host_version(&wine_sysname, &wine_release);
+
+ // windows version
+ if (osvi.dwMajorVersion)
+ ua_len += snprintf(
+ NSUserAgent + ua_len,
+ sizeof(NSUserAgent) - ua_len,
+ " Windows/%d.%d.%d",
+ osvi.dwMajorVersion,
+ osvi.dwMinorVersion,
+ osvi.dwBuildNumber);
+
+ // wine version
+ if (wine_version && wine_build_id)
+ ua_len += snprintf(NSUserAgent + ua_len, sizeof(NSUserAgent) - ua_len, " Wine/%s (%s)", wine_version, wine_build_id);
+
+ // wine host system version
+ if (wine_sysname && wine_release)
+ ua_len += snprintf(NSUserAgent + ua_len, sizeof(NSUserAgent) - ua_len, " %s/%s", wine_sysname, wine_release);
+ }
+
+ return;
+}
diff --git a/NorthstarDLL/version.h b/NorthstarDLL/util/version.h
index 261a4cf1..261a4cf1 100644
--- a/NorthstarDLL/version.h
+++ b/NorthstarDLL/util/version.h
diff --git a/NorthstarDLL/version.cpp b/NorthstarDLL/version.cpp
deleted file mode 100644
index 3755e4c4..00000000
--- a/NorthstarDLL/version.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "version.h"
-#include "pch.h"
-#include "ns_version.h"
-
-char version[16];
-char NSUserAgent[32];
-
-void InitialiseVersion()
-{
- constexpr int northstar_version[4] {NORTHSTAR_VERSION};
-
- // We actually use the rightmost integer do determine whether or not we're a debug/dev build
- // If it is set to 1, we are a dev build
- // On github CI, we set this 1 to a 0 automatically as we replace the 0,0,0,1 with the real version number
- if (northstar_version[3] == 1)
- {
- sprintf(version, "%d.%d.%d.%d+dev", northstar_version[0], northstar_version[1], northstar_version[2], northstar_version[3]);
- sprintf(NSUserAgent, "R2Northstar/%d.%d.%d+dev", northstar_version[0], northstar_version[1], northstar_version[2]);
- }
- else
- {
- sprintf(version, "%d.%d.%d.%d", northstar_version[0], northstar_version[1], northstar_version[2], northstar_version[3]);
- sprintf(NSUserAgent, "R2Northstar/%d.%d.%d", northstar_version[0], northstar_version[1], northstar_version[2]);
- }
- return;
-}
diff --git a/NorthstarLauncher/NorthstarLauncher.vcxproj b/NorthstarLauncher/NorthstarLauncher.vcxproj
index b4c7845f..29ea7187 100644
--- a/NorthstarLauncher/NorthstarLauncher.vcxproj
+++ b/NorthstarLauncher/NorthstarLauncher.vcxproj
@@ -58,6 +58,7 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalOptions>/F8000000 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -79,6 +80,7 @@
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalOptions>/F8000000 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -96,6 +98,41 @@
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\include\rapidjson\allocators.h" />
+ <ClInclude Include="..\include\rapidjson\document.h" />
+ <ClInclude Include="..\include\rapidjson\encodedstream.h" />
+ <ClInclude Include="..\include\rapidjson\encodings.h" />
+ <ClInclude Include="..\include\rapidjson\error\en.h" />
+ <ClInclude Include="..\include\rapidjson\error\error.h" />
+ <ClInclude Include="..\include\rapidjson\filereadstream.h" />
+ <ClInclude Include="..\include\rapidjson\filewritestream.h" />
+ <ClInclude Include="..\include\rapidjson\fwd.h" />
+ <ClInclude Include="..\include\rapidjson\internal\biginteger.h" />
+ <ClInclude Include="..\include\rapidjson\internal\diyfp.h" />
+ <ClInclude Include="..\include\rapidjson\internal\dtoa.h" />
+ <ClInclude Include="..\include\rapidjson\internal\ieee754.h" />
+ <ClInclude Include="..\include\rapidjson\internal\itoa.h" />
+ <ClInclude Include="..\include\rapidjson\internal\meta.h" />
+ <ClInclude Include="..\include\rapidjson\internal\pow10.h" />
+ <ClInclude Include="..\include\rapidjson\internal\regex.h" />
+ <ClInclude Include="..\include\rapidjson\internal\stack.h" />
+ <ClInclude Include="..\include\rapidjson\internal\strfunc.h" />
+ <ClInclude Include="..\include\rapidjson\internal\strtod.h" />
+ <ClInclude Include="..\include\rapidjson\internal\swap.h" />
+ <ClInclude Include="..\include\rapidjson\istreamwrapper.h" />
+ <ClInclude Include="..\include\rapidjson\memorybuffer.h" />
+ <ClInclude Include="..\include\rapidjson\memorystream.h" />
+ <ClInclude Include="..\include\rapidjson\msinttypes\inttypes.h" />
+ <ClInclude Include="..\include\rapidjson\msinttypes\stdint.h" />
+ <ClInclude Include="..\include\rapidjson\ostreamwrapper.h" />
+ <ClInclude Include="..\include\rapidjson\pointer.h" />
+ <ClInclude Include="..\include\rapidjson\prettywriter.h" />
+ <ClInclude Include="..\include\rapidjson\rapidjson.h" />
+ <ClInclude Include="..\include\rapidjson\reader.h" />
+ <ClInclude Include="..\include\rapidjson\schema.h" />
+ <ClInclude Include="..\include\rapidjson\stream.h" />
+ <ClInclude Include="..\include\rapidjson\stringbuffer.h" />
+ <ClInclude Include="..\include\rapidjson\writer.h" />
<ClInclude Include="resource1.h" />
</ItemGroup>
<ItemGroup>
diff --git a/NorthstarLauncher/NorthstarLauncher.vcxproj.filters b/NorthstarLauncher/NorthstarLauncher.vcxproj.filters
index 76b907bf..8751c13f 100644
--- a/NorthstarLauncher/NorthstarLauncher.vcxproj.filters
+++ b/NorthstarLauncher/NorthstarLauncher.vcxproj.filters
@@ -13,6 +13,21 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
+ <Filter Include="Header Files\include">
+ <UniqueIdentifier>{edd42629-a0d5-42b0-88b3-6e63e04770b7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\include\rapidjson">
+ <UniqueIdentifier>{2afc4c90-5392-4487-bb44-ed261ad1c52c}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\include\rapidjson\internal">
+ <UniqueIdentifier>{20ea1f52-8ae5-47e6-bd72-252c78ce192e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\include\rapidjson\error">
+ <UniqueIdentifier>{19fbc37e-7523-475a-84ee-6242e4b12b66}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\include\rapidjson\msinttypes">
+ <UniqueIdentifier>{8f22e7e3-536a-4bc8-ab77-2c62a9b85075}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
@@ -23,6 +38,111 @@
<ClInclude Include="resource1.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="..\include\rapidjson\allocators.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\document.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\encodedstream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\encodings.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\filereadstream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\filewritestream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\fwd.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\istreamwrapper.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\memorybuffer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\memorystream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\ostreamwrapper.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\pointer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\prettywriter.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\rapidjson.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\reader.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\schema.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\stream.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\stringbuffer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\writer.h">
+ <Filter>Header Files\include\rapidjson</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\biginteger.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\diyfp.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\dtoa.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\ieee754.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\itoa.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\meta.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\pow10.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\regex.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\stack.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\strfunc.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\strtod.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\internal\swap.h">
+ <Filter>Header Files\include\rapidjson\internal</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\error\en.h">
+ <Filter>Header Files\include\rapidjson\error</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\error\error.h">
+ <Filter>Header Files\include\rapidjson\error</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\msinttypes\inttypes.h">
+ <Filter>Header Files\include\rapidjson\msinttypes</Filter>
+ </ClInclude>
+ <ClInclude Include="..\include\rapidjson\msinttypes\stdint.h">
+ <Filter>Header Files\include\rapidjson\msinttypes</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="resources.rc">
diff --git a/R2Northstar.sln b/R2Northstar.sln
index b66b0dcd..a89f687d 100644
--- a/R2Northstar.sln
+++ b/R2Northstar.sln
@@ -1,14 +1,11 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Northstar", "NorthstarDLL\NorthstarDLL.vcxproj", "{CFAD2623-064F-453C-8196-79EE10292E32}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NorthstarDLL", "NorthstarDLL\NorthstarDLL.vcxproj", "{CFAD2623-064F-453C-8196-79EE10292E32}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NorthstarLauncher", "NorthstarLauncher\NorthstarLauncher.vcxproj", "{0EA82CB0-53FE-4D4C-96DF-47FA970513D0}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_launcher_proxy", "loader_launcher_proxy\loader_launcher_proxy.vcxproj", "{F65C322D-66DF-4AF1-B650-70221DE334C0}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader_wsock32_proxy", "loader_wsock32_proxy\loader_wsock32_proxy.vcxproj", "{CF55F3B5-F348-450A-9CCB-C269F21D629D}"
EndProject
Global
@@ -25,10 +22,6 @@ Global
{0EA82CB0-53FE-4D4C-96DF-47FA970513D0}.Debug|x64.Build.0 = Debug|x64
{0EA82CB0-53FE-4D4C-96DF-47FA970513D0}.Release|x64.ActiveCfg = Release|x64
{0EA82CB0-53FE-4D4C-96DF-47FA970513D0}.Release|x64.Build.0 = Release|x64
- {F65C322D-66DF-4AF1-B650-70221DE334C0}.Debug|x64.ActiveCfg = Debug|x64
- {F65C322D-66DF-4AF1-B650-70221DE334C0}.Debug|x64.Build.0 = Debug|x64
- {F65C322D-66DF-4AF1-B650-70221DE334C0}.Release|x64.ActiveCfg = Release|x64
- {F65C322D-66DF-4AF1-B650-70221DE334C0}.Release|x64.Build.0 = Release|x64
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Debug|x64.ActiveCfg = Debug|x64
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Debug|x64.Build.0 = Debug|x64
{CF55F3B5-F348-450A-9CCB-C269F21D629D}.Release|x64.ActiveCfg = Release|x64
diff --git a/NorthstarDLL/include/MinHook.h b/include/MinHook.h
index 15c0a875..15c0a875 100644
--- a/NorthstarDLL/include/MinHook.h
+++ b/include/MinHook.h
diff --git a/NorthstarDLL/include/MinHook.x64.lib b/include/MinHook.x64.lib
index a346f386..a346f386 100644
--- a/NorthstarDLL/include/MinHook.x64.lib
+++ b/include/MinHook.x64.lib
Binary files differ
diff --git a/NorthstarDLL/include/crypto/__DECC_INCLUDE_EPILOGUE.H b/include/crypto/__DECC_INCLUDE_EPILOGUE.H
index e57c0eab..e57c0eab 100644
--- a/NorthstarDLL/include/crypto/__DECC_INCLUDE_EPILOGUE.H
+++ b/include/crypto/__DECC_INCLUDE_EPILOGUE.H
diff --git a/NorthstarDLL/include/crypto/__DECC_INCLUDE_PROLOGUE.H b/include/crypto/__DECC_INCLUDE_PROLOGUE.H
index a0139575..a0139575 100644
--- a/NorthstarDLL/include/crypto/__DECC_INCLUDE_PROLOGUE.H
+++ b/include/crypto/__DECC_INCLUDE_PROLOGUE.H
diff --git a/NorthstarDLL/include/crypto/aes_platform.h b/include/crypto/aes_platform.h
index e95ad5aa..e95ad5aa 100644
--- a/NorthstarDLL/include/crypto/aes_platform.h
+++ b/include/crypto/aes_platform.h
diff --git a/NorthstarDLL/include/crypto/aria.h b/include/crypto/aria.h
index 21a9932e..21a9932e 100644
--- a/NorthstarDLL/include/crypto/aria.h
+++ b/include/crypto/aria.h
diff --git a/NorthstarDLL/include/crypto/asn1.h b/include/crypto/asn1.h
index ec76ae6f..ec76ae6f 100644
--- a/NorthstarDLL/include/crypto/asn1.h
+++ b/include/crypto/asn1.h
diff --git a/NorthstarDLL/include/crypto/asn1_dsa.h b/include/crypto/asn1_dsa.h
index 3eadb9ec..3eadb9ec 100644
--- a/NorthstarDLL/include/crypto/asn1_dsa.h
+++ b/include/crypto/asn1_dsa.h
diff --git a/NorthstarDLL/include/crypto/asn1err.h b/include/crypto/asn1err.h
index 6441386b..6441386b 100644
--- a/NorthstarDLL/include/crypto/asn1err.h
+++ b/include/crypto/asn1err.h
diff --git a/NorthstarDLL/include/crypto/async.h b/include/crypto/async.h
index 7bc0dbb6..7bc0dbb6 100644
--- a/NorthstarDLL/include/crypto/async.h
+++ b/include/crypto/async.h
diff --git a/NorthstarDLL/include/crypto/asyncerr.h b/include/crypto/asyncerr.h
index 574e0af7..574e0af7 100644
--- a/NorthstarDLL/include/crypto/asyncerr.h
+++ b/include/crypto/asyncerr.h
diff --git a/NorthstarDLL/include/crypto/bioerr.h b/include/crypto/bioerr.h
index a0c06099..a0c06099 100644
--- a/NorthstarDLL/include/crypto/bioerr.h
+++ b/include/crypto/bioerr.h
diff --git a/NorthstarDLL/include/crypto/bn.h b/include/crypto/bn.h
index cf69bea8..cf69bea8 100644
--- a/NorthstarDLL/include/crypto/bn.h
+++ b/include/crypto/bn.h
diff --git a/NorthstarDLL/include/crypto/bn_conf.h b/include/crypto/bn_conf.h
index a6f73d4a..a6f73d4a 100644
--- a/NorthstarDLL/include/crypto/bn_conf.h
+++ b/include/crypto/bn_conf.h
diff --git a/NorthstarDLL/include/crypto/bn_conf.h.in b/include/crypto/bn_conf.h.in
index dbc901b1..dbc901b1 100644
--- a/NorthstarDLL/include/crypto/bn_conf.h.in
+++ b/include/crypto/bn_conf.h.in
diff --git a/NorthstarDLL/include/crypto/bn_dh.h b/include/crypto/bn_dh.h
index 6d12c20e..6d12c20e 100644
--- a/NorthstarDLL/include/crypto/bn_dh.h
+++ b/include/crypto/bn_dh.h
diff --git a/NorthstarDLL/include/crypto/bn_srp.h b/include/crypto/bn_srp.h
index 00b160aa..00b160aa 100644
--- a/NorthstarDLL/include/crypto/bn_srp.h
+++ b/include/crypto/bn_srp.h
diff --git a/NorthstarDLL/include/crypto/bnerr.h b/include/crypto/bnerr.h
index 7282c915..7282c915 100644
--- a/NorthstarDLL/include/crypto/bnerr.h
+++ b/include/crypto/bnerr.h
diff --git a/NorthstarDLL/include/crypto/buffererr.h b/include/crypto/buffererr.h
index 54976d95..54976d95 100644
--- a/NorthstarDLL/include/crypto/buffererr.h
+++ b/include/crypto/buffererr.h
diff --git a/NorthstarDLL/include/crypto/chacha.h b/include/crypto/chacha.h
index d29998ff..d29998ff 100644
--- a/NorthstarDLL/include/crypto/chacha.h
+++ b/include/crypto/chacha.h
diff --git a/NorthstarDLL/include/crypto/cmll_platform.h b/include/crypto/cmll_platform.h
index 8cadadf6..8cadadf6 100644
--- a/NorthstarDLL/include/crypto/cmll_platform.h
+++ b/include/crypto/cmll_platform.h
diff --git a/NorthstarDLL/include/crypto/cmperr.h b/include/crypto/cmperr.h
index ac61dd48..ac61dd48 100644
--- a/NorthstarDLL/include/crypto/cmperr.h
+++ b/include/crypto/cmperr.h
diff --git a/NorthstarDLL/include/crypto/cmserr.h b/include/crypto/cmserr.h
index 1de2f9c7..1de2f9c7 100644
--- a/NorthstarDLL/include/crypto/cmserr.h
+++ b/include/crypto/cmserr.h
diff --git a/NorthstarDLL/include/crypto/comperr.h b/include/crypto/comperr.h
index 0fd9c6de..0fd9c6de 100644
--- a/NorthstarDLL/include/crypto/comperr.h
+++ b/include/crypto/comperr.h
diff --git a/NorthstarDLL/include/crypto/conferr.h b/include/crypto/conferr.h
index cb367e4f..cb367e4f 100644
--- a/NorthstarDLL/include/crypto/conferr.h
+++ b/include/crypto/conferr.h
diff --git a/NorthstarDLL/include/crypto/crmferr.h b/include/crypto/crmferr.h
index f1a27e04..f1a27e04 100644
--- a/NorthstarDLL/include/crypto/crmferr.h
+++ b/include/crypto/crmferr.h
diff --git a/NorthstarDLL/include/crypto/cryptlib.h b/include/crypto/cryptlib.h
index 39a956bf..39a956bf 100644
--- a/NorthstarDLL/include/crypto/cryptlib.h
+++ b/include/crypto/cryptlib.h
diff --git a/NorthstarDLL/include/crypto/cryptoerr.h b/include/crypto/cryptoerr.h
index 288b87ac..288b87ac 100644
--- a/NorthstarDLL/include/crypto/cryptoerr.h
+++ b/include/crypto/cryptoerr.h
diff --git a/NorthstarDLL/include/crypto/cterr.h b/include/crypto/cterr.h
index 760bc796..760bc796 100644
--- a/NorthstarDLL/include/crypto/cterr.h
+++ b/include/crypto/cterr.h
diff --git a/NorthstarDLL/include/crypto/ctype.h b/include/crypto/ctype.h
index a35c137e..a35c137e 100644
--- a/NorthstarDLL/include/crypto/ctype.h
+++ b/include/crypto/ctype.h
diff --git a/NorthstarDLL/include/crypto/decoder.h b/include/crypto/decoder.h
index cc06ef29..cc06ef29 100644
--- a/NorthstarDLL/include/crypto/decoder.h
+++ b/include/crypto/decoder.h
diff --git a/NorthstarDLL/include/crypto/decodererr.h b/include/crypto/decodererr.h
index d7badc43..d7badc43 100644
--- a/NorthstarDLL/include/crypto/decodererr.h
+++ b/include/crypto/decodererr.h
diff --git a/NorthstarDLL/include/crypto/des_platform.h b/include/crypto/des_platform.h
index 07ea1ddd..07ea1ddd 100644
--- a/NorthstarDLL/include/crypto/des_platform.h
+++ b/include/crypto/des_platform.h
diff --git a/NorthstarDLL/include/crypto/dh.h b/include/crypto/dh.h
index f6be4ae0..f6be4ae0 100644
--- a/NorthstarDLL/include/crypto/dh.h
+++ b/include/crypto/dh.h
diff --git a/NorthstarDLL/include/crypto/dherr.h b/include/crypto/dherr.h
index bb24d131..bb24d131 100644
--- a/NorthstarDLL/include/crypto/dherr.h
+++ b/include/crypto/dherr.h
diff --git a/NorthstarDLL/include/crypto/dsa.h b/include/crypto/dsa.h
index eedbd8c7..eedbd8c7 100644
--- a/NorthstarDLL/include/crypto/dsa.h
+++ b/include/crypto/dsa.h
diff --git a/NorthstarDLL/include/crypto/dsaerr.h b/include/crypto/dsaerr.h
index 9898097d..9898097d 100644
--- a/NorthstarDLL/include/crypto/dsaerr.h
+++ b/include/crypto/dsaerr.h
diff --git a/NorthstarDLL/include/crypto/dso_conf.h b/include/crypto/dso_conf.h
index 99514321..99514321 100644
--- a/NorthstarDLL/include/crypto/dso_conf.h
+++ b/include/crypto/dso_conf.h
diff --git a/NorthstarDLL/include/crypto/dso_conf.h.in b/include/crypto/dso_conf.h.in
index 12de11ad..12de11ad 100644
--- a/NorthstarDLL/include/crypto/dso_conf.h.in
+++ b/include/crypto/dso_conf.h.in
diff --git a/NorthstarDLL/include/crypto/ec.h b/include/crypto/ec.h
index 62163b31..62163b31 100644
--- a/NorthstarDLL/include/crypto/ec.h
+++ b/include/crypto/ec.h
diff --git a/NorthstarDLL/include/crypto/ecerr.h b/include/crypto/ecerr.h
index 07b6c7aa..07b6c7aa 100644
--- a/NorthstarDLL/include/crypto/ecerr.h
+++ b/include/crypto/ecerr.h
diff --git a/NorthstarDLL/include/crypto/ecx.h b/include/crypto/ecx.h
index 48b95fa5..48b95fa5 100644
--- a/NorthstarDLL/include/crypto/ecx.h
+++ b/include/crypto/ecx.h
diff --git a/NorthstarDLL/include/crypto/encoder.h b/include/crypto/encoder.h
index 09d445d2..09d445d2 100644
--- a/NorthstarDLL/include/crypto/encoder.h
+++ b/include/crypto/encoder.h
diff --git a/NorthstarDLL/include/crypto/encodererr.h b/include/crypto/encodererr.h
index 56c45823..56c45823 100644
--- a/NorthstarDLL/include/crypto/encodererr.h
+++ b/include/crypto/encodererr.h
diff --git a/NorthstarDLL/include/crypto/engine.h b/include/crypto/engine.h
index fac6ed09..fac6ed09 100644
--- a/NorthstarDLL/include/crypto/engine.h
+++ b/include/crypto/engine.h
diff --git a/NorthstarDLL/include/crypto/engineerr.h b/include/crypto/engineerr.h
index 737c841d..737c841d 100644
--- a/NorthstarDLL/include/crypto/engineerr.h
+++ b/include/crypto/engineerr.h
diff --git a/NorthstarDLL/include/crypto/err.h b/include/crypto/err.h
index 15ec6fd0..15ec6fd0 100644
--- a/NorthstarDLL/include/crypto/err.h
+++ b/include/crypto/err.h
diff --git a/NorthstarDLL/include/crypto/ess.h b/include/crypto/ess.h
index 7acde5f8..7acde5f8 100644
--- a/NorthstarDLL/include/crypto/ess.h
+++ b/include/crypto/ess.h
diff --git a/NorthstarDLL/include/crypto/esserr.h b/include/crypto/esserr.h
index 8df2df11..8df2df11 100644
--- a/NorthstarDLL/include/crypto/esserr.h
+++ b/include/crypto/esserr.h
diff --git a/NorthstarDLL/include/crypto/evp.h b/include/crypto/evp.h
index c5d3a930..c5d3a930 100644
--- a/NorthstarDLL/include/crypto/evp.h
+++ b/include/crypto/evp.h
diff --git a/NorthstarDLL/include/crypto/evperr.h b/include/crypto/evperr.h
index d90ba83f..d90ba83f 100644
--- a/NorthstarDLL/include/crypto/evperr.h
+++ b/include/crypto/evperr.h
diff --git a/NorthstarDLL/include/crypto/httperr.h b/include/crypto/httperr.h
index 969df17b..969df17b 100644
--- a/NorthstarDLL/include/crypto/httperr.h
+++ b/include/crypto/httperr.h
diff --git a/NorthstarDLL/include/crypto/lhash.h b/include/crypto/lhash.h
index 0f64869f..0f64869f 100644
--- a/NorthstarDLL/include/crypto/lhash.h
+++ b/include/crypto/lhash.h
diff --git a/NorthstarDLL/include/crypto/md32_common.h b/include/crypto/md32_common.h
index 3b16f1b7..3b16f1b7 100644
--- a/NorthstarDLL/include/crypto/md32_common.h
+++ b/include/crypto/md32_common.h
diff --git a/NorthstarDLL/include/crypto/modes.h b/include/crypto/modes.h
index 19f9d859..19f9d859 100644
--- a/NorthstarDLL/include/crypto/modes.h
+++ b/include/crypto/modes.h
diff --git a/NorthstarDLL/include/crypto/objects.h b/include/crypto/objects.h
index f22e9287..f22e9287 100644
--- a/NorthstarDLL/include/crypto/objects.h
+++ b/include/crypto/objects.h
diff --git a/NorthstarDLL/include/crypto/objectserr.h b/include/crypto/objectserr.h
index ec994824..ec994824 100644
--- a/NorthstarDLL/include/crypto/objectserr.h
+++ b/include/crypto/objectserr.h
diff --git a/NorthstarDLL/include/crypto/ocsperr.h b/include/crypto/ocsperr.h
index f9529b2a..f9529b2a 100644
--- a/NorthstarDLL/include/crypto/ocsperr.h
+++ b/include/crypto/ocsperr.h
diff --git a/NorthstarDLL/include/crypto/pem.h b/include/crypto/pem.h
index 840dc18f..840dc18f 100644
--- a/NorthstarDLL/include/crypto/pem.h
+++ b/include/crypto/pem.h
diff --git a/NorthstarDLL/include/crypto/pemerr.h b/include/crypto/pemerr.h
index b255ff5c..b255ff5c 100644
--- a/NorthstarDLL/include/crypto/pemerr.h
+++ b/include/crypto/pemerr.h
diff --git a/NorthstarDLL/include/crypto/pkcs12err.h b/include/crypto/pkcs12err.h
index 662f412e..662f412e 100644
--- a/NorthstarDLL/include/crypto/pkcs12err.h
+++ b/include/crypto/pkcs12err.h
diff --git a/NorthstarDLL/include/crypto/pkcs7.h b/include/crypto/pkcs7.h
index 9caa9af4..9caa9af4 100644
--- a/NorthstarDLL/include/crypto/pkcs7.h
+++ b/include/crypto/pkcs7.h
diff --git a/NorthstarDLL/include/crypto/pkcs7err.h b/include/crypto/pkcs7err.h
index c195190b..c195190b 100644
--- a/NorthstarDLL/include/crypto/pkcs7err.h
+++ b/include/crypto/pkcs7err.h
diff --git a/NorthstarDLL/include/crypto/poly1305.h b/include/crypto/poly1305.h
index ba54f3bd..ba54f3bd 100644
--- a/NorthstarDLL/include/crypto/poly1305.h
+++ b/include/crypto/poly1305.h
diff --git a/NorthstarDLL/include/crypto/ppc_arch.h b/include/crypto/ppc_arch.h
index 3b3ce4bf..3b3ce4bf 100644
--- a/NorthstarDLL/include/crypto/ppc_arch.h
+++ b/include/crypto/ppc_arch.h
diff --git a/NorthstarDLL/include/crypto/punycode.h b/include/crypto/punycode.h
index 133826d8..133826d8 100644
--- a/NorthstarDLL/include/crypto/punycode.h
+++ b/include/crypto/punycode.h
diff --git a/NorthstarDLL/include/crypto/rand.h b/include/crypto/rand.h
index fa3b5b2b..fa3b5b2b 100644
--- a/NorthstarDLL/include/crypto/rand.h
+++ b/include/crypto/rand.h
diff --git a/NorthstarDLL/include/crypto/rand_pool.h b/include/crypto/rand_pool.h
index f4d1d954..f4d1d954 100644
--- a/NorthstarDLL/include/crypto/rand_pool.h
+++ b/include/crypto/rand_pool.h
diff --git a/NorthstarDLL/include/crypto/randerr.h b/include/crypto/randerr.h
index 832a8b7d..832a8b7d 100644
--- a/NorthstarDLL/include/crypto/randerr.h
+++ b/include/crypto/randerr.h
diff --git a/NorthstarDLL/include/crypto/rsa.h b/include/crypto/rsa.h
index 100e7ceb..100e7ceb 100644
--- a/NorthstarDLL/include/crypto/rsa.h
+++ b/include/crypto/rsa.h
diff --git a/NorthstarDLL/include/crypto/rsaerr.h b/include/crypto/rsaerr.h
index 9b23500b..9b23500b 100644
--- a/NorthstarDLL/include/crypto/rsaerr.h
+++ b/include/crypto/rsaerr.h
diff --git a/NorthstarDLL/include/crypto/security_bits.h b/include/crypto/security_bits.h
index 58f49681..58f49681 100644
--- a/NorthstarDLL/include/crypto/security_bits.h
+++ b/include/crypto/security_bits.h
diff --git a/NorthstarDLL/include/crypto/sha.h b/include/crypto/sha.h
index 64305d17..64305d17 100644
--- a/NorthstarDLL/include/crypto/sha.h
+++ b/include/crypto/sha.h
diff --git a/NorthstarDLL/include/crypto/siphash.h b/include/crypto/siphash.h
index 0d0767fc..0d0767fc 100644
--- a/NorthstarDLL/include/crypto/siphash.h
+++ b/include/crypto/siphash.h
diff --git a/NorthstarDLL/include/crypto/siv.h b/include/crypto/siv.h
index 8dc58bd3..8dc58bd3 100644
--- a/NorthstarDLL/include/crypto/siv.h
+++ b/include/crypto/siv.h
diff --git a/NorthstarDLL/include/crypto/sm2.h b/include/crypto/sm2.h
index 9ab6c0b7..9ab6c0b7 100644
--- a/NorthstarDLL/include/crypto/sm2.h
+++ b/include/crypto/sm2.h
diff --git a/NorthstarDLL/include/crypto/sm2err.h b/include/crypto/sm2err.h
index 706f4d69..706f4d69 100644
--- a/NorthstarDLL/include/crypto/sm2err.h
+++ b/include/crypto/sm2err.h
diff --git a/NorthstarDLL/include/crypto/sm4.h b/include/crypto/sm4.h
index e21ec81c..e21ec81c 100644
--- a/NorthstarDLL/include/crypto/sm4.h
+++ b/include/crypto/sm4.h
diff --git a/NorthstarDLL/include/crypto/sparc_arch.h b/include/crypto/sparc_arch.h
index 447e715b..447e715b 100644
--- a/NorthstarDLL/include/crypto/sparc_arch.h
+++ b/include/crypto/sparc_arch.h
diff --git a/NorthstarDLL/include/crypto/sparse_array.h b/include/crypto/sparse_array.h
index 7ef74283..7ef74283 100644
--- a/NorthstarDLL/include/crypto/sparse_array.h
+++ b/include/crypto/sparse_array.h
diff --git a/NorthstarDLL/include/crypto/store.h b/include/crypto/store.h
index 13d2646b..13d2646b 100644
--- a/NorthstarDLL/include/crypto/store.h
+++ b/include/crypto/store.h
diff --git a/NorthstarDLL/include/crypto/storeerr.h b/include/crypto/storeerr.h
index c46d845f..c46d845f 100644
--- a/NorthstarDLL/include/crypto/storeerr.h
+++ b/include/crypto/storeerr.h
diff --git a/NorthstarDLL/include/crypto/tserr.h b/include/crypto/tserr.h
index 2f34ba31..2f34ba31 100644
--- a/NorthstarDLL/include/crypto/tserr.h
+++ b/include/crypto/tserr.h
diff --git a/NorthstarDLL/include/crypto/types.h b/include/crypto/types.h
index 0d814040..0d814040 100644
--- a/NorthstarDLL/include/crypto/types.h
+++ b/include/crypto/types.h
diff --git a/NorthstarDLL/include/crypto/uierr.h b/include/crypto/uierr.h
index 789077a8..789077a8 100644
--- a/NorthstarDLL/include/crypto/uierr.h
+++ b/include/crypto/uierr.h
diff --git a/NorthstarDLL/include/crypto/x509.h b/include/crypto/x509.h
index 1f00178e..1f00178e 100644
--- a/NorthstarDLL/include/crypto/x509.h
+++ b/include/crypto/x509.h
diff --git a/NorthstarDLL/include/crypto/x509err.h b/include/crypto/x509err.h
index 53f567d9..53f567d9 100644
--- a/NorthstarDLL/include/crypto/x509err.h
+++ b/include/crypto/x509err.h
diff --git a/NorthstarDLL/include/crypto/x509v3err.h b/include/crypto/x509v3err.h
index 66d3ad92..66d3ad92 100644
--- a/NorthstarDLL/include/crypto/x509v3err.h
+++ b/include/crypto/x509v3err.h
diff --git a/NorthstarDLL/include/httplib.h b/include/httplib.h
index 2b52f0fc..2b52f0fc 100644
--- a/NorthstarDLL/include/httplib.h
+++ b/include/httplib.h
diff --git a/NorthstarDLL/include/internal/__DECC_INCLUDE_EPILOGUE.H b/include/internal/__DECC_INCLUDE_EPILOGUE.H
index e57c0eab..e57c0eab 100644
--- a/NorthstarDLL/include/internal/__DECC_INCLUDE_EPILOGUE.H
+++ b/include/internal/__DECC_INCLUDE_EPILOGUE.H
diff --git a/NorthstarDLL/include/internal/__DECC_INCLUDE_PROLOGUE.H b/include/internal/__DECC_INCLUDE_PROLOGUE.H
index a0139575..a0139575 100644
--- a/NorthstarDLL/include/internal/__DECC_INCLUDE_PROLOGUE.H
+++ b/include/internal/__DECC_INCLUDE_PROLOGUE.H
diff --git a/NorthstarDLL/include/internal/asn1.h b/include/internal/asn1.h
index 3143e340..3143e340 100644
--- a/NorthstarDLL/include/internal/asn1.h
+++ b/include/internal/asn1.h
diff --git a/NorthstarDLL/include/internal/bio.h b/include/internal/bio.h
index 2d36a7b9..2d36a7b9 100644
--- a/NorthstarDLL/include/internal/bio.h
+++ b/include/internal/bio.h
diff --git a/NorthstarDLL/include/internal/comp.h b/include/internal/comp.h
index 3ad86fc7..3ad86fc7 100644
--- a/NorthstarDLL/include/internal/comp.h
+++ b/include/internal/comp.h
diff --git a/NorthstarDLL/include/internal/conf.h b/include/internal/conf.h
index 8c6c29cd..8c6c29cd 100644
--- a/NorthstarDLL/include/internal/conf.h
+++ b/include/internal/conf.h
diff --git a/NorthstarDLL/include/internal/constant_time.h b/include/internal/constant_time.h
index 0ed6f823..0ed6f823 100644
--- a/NorthstarDLL/include/internal/constant_time.h
+++ b/include/internal/constant_time.h
diff --git a/NorthstarDLL/include/internal/core.h b/include/internal/core.h
index d9dc4241..d9dc4241 100644
--- a/NorthstarDLL/include/internal/core.h
+++ b/include/internal/core.h
diff --git a/NorthstarDLL/include/internal/cryptlib.h b/include/internal/cryptlib.h
index 1291299b..1291299b 100644
--- a/NorthstarDLL/include/internal/cryptlib.h
+++ b/include/internal/cryptlib.h
diff --git a/NorthstarDLL/include/internal/dane.h b/include/internal/dane.h
index a3d78a7f..a3d78a7f 100644
--- a/NorthstarDLL/include/internal/dane.h
+++ b/include/internal/dane.h
diff --git a/NorthstarDLL/include/internal/deprecated.h b/include/internal/deprecated.h
index a313a015..a313a015 100644
--- a/NorthstarDLL/include/internal/deprecated.h
+++ b/include/internal/deprecated.h
diff --git a/NorthstarDLL/include/internal/der.h b/include/internal/der.h
index a3e56d0d..a3e56d0d 100644
--- a/NorthstarDLL/include/internal/der.h
+++ b/include/internal/der.h
diff --git a/NorthstarDLL/include/internal/dso.h b/include/internal/dso.h
index 160ddb98..160ddb98 100644
--- a/NorthstarDLL/include/internal/dso.h
+++ b/include/internal/dso.h
diff --git a/NorthstarDLL/include/internal/dsoerr.h b/include/internal/dsoerr.h
index b1719e83..b1719e83 100644
--- a/NorthstarDLL/include/internal/dsoerr.h
+++ b/include/internal/dsoerr.h
diff --git a/NorthstarDLL/include/internal/endian.h b/include/internal/endian.h
index 8b34e03e..8b34e03e 100644
--- a/NorthstarDLL/include/internal/endian.h
+++ b/include/internal/endian.h
diff --git a/NorthstarDLL/include/internal/err.h b/include/internal/err.h
index d8a308f0..d8a308f0 100644
--- a/NorthstarDLL/include/internal/err.h
+++ b/include/internal/err.h
diff --git a/NorthstarDLL/include/internal/ffc.h b/include/internal/ffc.h
index 79cb06ab..79cb06ab 100644
--- a/NorthstarDLL/include/internal/ffc.h
+++ b/include/internal/ffc.h
diff --git a/NorthstarDLL/include/internal/ktls.h b/include/internal/ktls.h
index 95492fd0..95492fd0 100644
--- a/NorthstarDLL/include/internal/ktls.h
+++ b/include/internal/ktls.h
diff --git a/NorthstarDLL/include/internal/namemap.h b/include/internal/namemap.h
index a4c60ae6..a4c60ae6 100644
--- a/NorthstarDLL/include/internal/namemap.h
+++ b/include/internal/namemap.h
diff --git a/NorthstarDLL/include/internal/nelem.h b/include/internal/nelem.h
index b758513b..b758513b 100644
--- a/NorthstarDLL/include/internal/nelem.h
+++ b/include/internal/nelem.h
diff --git a/NorthstarDLL/include/internal/numbers.h b/include/internal/numbers.h
index 4f4d3306..4f4d3306 100644
--- a/NorthstarDLL/include/internal/numbers.h
+++ b/include/internal/numbers.h
diff --git a/NorthstarDLL/include/internal/o_dir.h b/include/internal/o_dir.h
index add34d14..add34d14 100644
--- a/NorthstarDLL/include/internal/o_dir.h
+++ b/include/internal/o_dir.h
diff --git a/NorthstarDLL/include/internal/packet.h b/include/internal/packet.h
index 170997db..170997db 100644
--- a/NorthstarDLL/include/internal/packet.h
+++ b/include/internal/packet.h
diff --git a/NorthstarDLL/include/internal/param_build_set.h b/include/internal/param_build_set.h
index 126211b7..126211b7 100644
--- a/NorthstarDLL/include/internal/param_build_set.h
+++ b/include/internal/param_build_set.h
diff --git a/NorthstarDLL/include/internal/passphrase.h b/include/internal/passphrase.h
index 54d997b0..54d997b0 100644
--- a/NorthstarDLL/include/internal/passphrase.h
+++ b/include/internal/passphrase.h
diff --git a/NorthstarDLL/include/internal/property.h b/include/internal/property.h
index 82119745..82119745 100644
--- a/NorthstarDLL/include/internal/property.h
+++ b/include/internal/property.h
diff --git a/NorthstarDLL/include/internal/propertyerr.h b/include/internal/propertyerr.h
index fbee53f1..fbee53f1 100644
--- a/NorthstarDLL/include/internal/propertyerr.h
+++ b/include/internal/propertyerr.h
diff --git a/NorthstarDLL/include/internal/provider.h b/include/internal/provider.h
index d09829d0..d09829d0 100644
--- a/NorthstarDLL/include/internal/provider.h
+++ b/include/internal/provider.h
diff --git a/NorthstarDLL/include/internal/refcount.h b/include/internal/refcount.h
index 7412d62f..7412d62f 100644
--- a/NorthstarDLL/include/internal/refcount.h
+++ b/include/internal/refcount.h
diff --git a/NorthstarDLL/include/internal/sha3.h b/include/internal/sha3.h
index 80ad86e5..80ad86e5 100644
--- a/NorthstarDLL/include/internal/sha3.h
+++ b/include/internal/sha3.h
diff --git a/NorthstarDLL/include/internal/sizes.h b/include/internal/sizes.h
index f6496c81..f6496c81 100644
--- a/NorthstarDLL/include/internal/sizes.h
+++ b/include/internal/sizes.h
diff --git a/NorthstarDLL/include/internal/sm3.h b/include/internal/sm3.h
index db1d61f0..db1d61f0 100644
--- a/NorthstarDLL/include/internal/sm3.h
+++ b/include/internal/sm3.h
diff --git a/NorthstarDLL/include/internal/sockets.h b/include/internal/sockets.h
index 6e882fa6..6e882fa6 100644
--- a/NorthstarDLL/include/internal/sockets.h
+++ b/include/internal/sockets.h
diff --git a/NorthstarDLL/include/internal/sslconf.h b/include/internal/sslconf.h
index fd7f7e33..fd7f7e33 100644
--- a/NorthstarDLL/include/internal/sslconf.h
+++ b/include/internal/sslconf.h
diff --git a/NorthstarDLL/include/internal/symhacks.h b/include/internal/symhacks.h
index 33bae51e..33bae51e 100644
--- a/NorthstarDLL/include/internal/symhacks.h
+++ b/include/internal/symhacks.h
diff --git a/NorthstarDLL/include/internal/thread_once.h b/include/internal/thread_once.h
index d6cb2eee..d6cb2eee 100644
--- a/NorthstarDLL/include/internal/thread_once.h
+++ b/include/internal/thread_once.h
diff --git a/NorthstarDLL/include/internal/tlsgroups.h b/include/internal/tlsgroups.h
index 8a35ced1..8a35ced1 100644
--- a/NorthstarDLL/include/internal/tlsgroups.h
+++ b/include/internal/tlsgroups.h
diff --git a/NorthstarDLL/include/internal/tsan_assist.h b/include/internal/tsan_assist.h
index f8285b1d..f8285b1d 100644
--- a/NorthstarDLL/include/internal/tsan_assist.h
+++ b/include/internal/tsan_assist.h
diff --git a/NorthstarDLL/include/internal/unicode.h b/include/internal/unicode.h
index a6de8352..a6de8352 100644
--- a/NorthstarDLL/include/internal/unicode.h
+++ b/include/internal/unicode.h
diff --git a/NorthstarDLL/include/libcrypto_static.lib b/include/libcrypto_static.lib
index 0ddd830c..0ddd830c 100644
--- a/NorthstarDLL/include/libcrypto_static.lib
+++ b/include/libcrypto_static.lib
Binary files differ
diff --git a/NorthstarDLL/include/libcurl/include/curl/curl.h b/include/libcurl/include/curl/curl.h
index 7b69ce2d..7b69ce2d 100644
--- a/NorthstarDLL/include/libcurl/include/curl/curl.h
+++ b/include/libcurl/include/curl/curl.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/curlver.h b/include/libcurl/include/curl/curlver.h
index fe57e430..fe57e430 100644
--- a/NorthstarDLL/include/libcurl/include/curl/curlver.h
+++ b/include/libcurl/include/curl/curlver.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/easy.h b/include/libcurl/include/curl/easy.h
index 2dbfb26b..2dbfb26b 100644
--- a/NorthstarDLL/include/libcurl/include/curl/easy.h
+++ b/include/libcurl/include/curl/easy.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/mprintf.h b/include/libcurl/include/curl/mprintf.h
index 3549552d..3549552d 100644
--- a/NorthstarDLL/include/libcurl/include/curl/mprintf.h
+++ b/include/libcurl/include/curl/mprintf.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/multi.h b/include/libcurl/include/curl/multi.h
index 91cd95d3..91cd95d3 100644
--- a/NorthstarDLL/include/libcurl/include/curl/multi.h
+++ b/include/libcurl/include/curl/multi.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/options.h b/include/libcurl/include/curl/options.h
index 14373b55..14373b55 100644
--- a/NorthstarDLL/include/libcurl/include/curl/options.h
+++ b/include/libcurl/include/curl/options.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/stdcheaders.h b/include/libcurl/include/curl/stdcheaders.h
index 60596c75..60596c75 100644
--- a/NorthstarDLL/include/libcurl/include/curl/stdcheaders.h
+++ b/include/libcurl/include/curl/stdcheaders.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/system.h b/include/libcurl/include/curl/system.h
index faf8fcf8..faf8fcf8 100644
--- a/NorthstarDLL/include/libcurl/include/curl/system.h
+++ b/include/libcurl/include/curl/system.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/typecheck-gcc.h b/include/libcurl/include/curl/typecheck-gcc.h
index 9e14d8a3..9e14d8a3 100644
--- a/NorthstarDLL/include/libcurl/include/curl/typecheck-gcc.h
+++ b/include/libcurl/include/curl/typecheck-gcc.h
diff --git a/NorthstarDLL/include/libcurl/include/curl/urlapi.h b/include/libcurl/include/curl/urlapi.h
index a475f91b..a475f91b 100644
--- a/NorthstarDLL/include/libcurl/include/curl/urlapi.h
+++ b/include/libcurl/include/curl/urlapi.h
diff --git a/NorthstarDLL/include/libcurl/lib/libcurl_a.lib b/include/libcurl/lib/libcurl_a.lib
index 32b917c9..32b917c9 100644
--- a/NorthstarDLL/include/libcurl/lib/libcurl_a.lib
+++ b/include/libcurl/lib/libcurl_a.lib
Binary files differ
diff --git a/NorthstarDLL/include/libssl_static.lib b/include/libssl_static.lib
index f7916421..f7916421 100644
--- a/NorthstarDLL/include/libssl_static.lib
+++ b/include/libssl_static.lib
Binary files differ
diff --git a/NorthstarDLL/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/include/openssl/__DECC_INCLUDE_EPILOGUE.H
index d251d0a0..d251d0a0 100644
--- a/NorthstarDLL/include/openssl/__DECC_INCLUDE_EPILOGUE.H
+++ b/include/openssl/__DECC_INCLUDE_EPILOGUE.H
diff --git a/NorthstarDLL/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/include/openssl/__DECC_INCLUDE_PROLOGUE.H
index 91ac6b33..91ac6b33 100644
--- a/NorthstarDLL/include/openssl/__DECC_INCLUDE_PROLOGUE.H
+++ b/include/openssl/__DECC_INCLUDE_PROLOGUE.H
diff --git a/NorthstarDLL/include/openssl/aes.h b/include/openssl/aes.h
index d0f9dfc6..d0f9dfc6 100644
--- a/NorthstarDLL/include/openssl/aes.h
+++ b/include/openssl/aes.h
diff --git a/NorthstarDLL/include/openssl/asn1.h b/include/openssl/asn1.h
index aada23dc..aada23dc 100644
--- a/NorthstarDLL/include/openssl/asn1.h
+++ b/include/openssl/asn1.h
diff --git a/NorthstarDLL/include/openssl/asn1.h.in b/include/openssl/asn1.h.in
index 6d5094a3..6d5094a3 100644
--- a/NorthstarDLL/include/openssl/asn1.h.in
+++ b/include/openssl/asn1.h.in
diff --git a/NorthstarDLL/include/openssl/asn1_mac.h b/include/openssl/asn1_mac.h
index fdcb9836..fdcb9836 100644
--- a/NorthstarDLL/include/openssl/asn1_mac.h
+++ b/include/openssl/asn1_mac.h
diff --git a/NorthstarDLL/include/openssl/asn1err.h b/include/openssl/asn1err.h
index d4276220..d4276220 100644
--- a/NorthstarDLL/include/openssl/asn1err.h
+++ b/include/openssl/asn1err.h
diff --git a/NorthstarDLL/include/openssl/asn1t.h b/include/openssl/asn1t.h
index a725c532..a725c532 100644
--- a/NorthstarDLL/include/openssl/asn1t.h
+++ b/include/openssl/asn1t.h
diff --git a/NorthstarDLL/include/openssl/asn1t.h.in b/include/openssl/asn1t.h.in
index b536fe51..b536fe51 100644
--- a/NorthstarDLL/include/openssl/asn1t.h.in
+++ b/include/openssl/asn1t.h.in
diff --git a/NorthstarDLL/include/openssl/async.h b/include/openssl/async.h
index bc27d5db..bc27d5db 100644
--- a/NorthstarDLL/include/openssl/async.h
+++ b/include/openssl/async.h
diff --git a/NorthstarDLL/include/openssl/asyncerr.h b/include/openssl/asyncerr.h
index c093f7be..c093f7be 100644
--- a/NorthstarDLL/include/openssl/asyncerr.h
+++ b/include/openssl/asyncerr.h
diff --git a/NorthstarDLL/include/openssl/bio.h b/include/openssl/bio.h
index 3ef0cafb..3ef0cafb 100644
--- a/NorthstarDLL/include/openssl/bio.h
+++ b/include/openssl/bio.h
diff --git a/NorthstarDLL/include/openssl/bio.h.in b/include/openssl/bio.h.in
index 2c65b7e1..2c65b7e1 100644
--- a/NorthstarDLL/include/openssl/bio.h.in
+++ b/include/openssl/bio.h.in
diff --git a/NorthstarDLL/include/openssl/bioerr.h b/include/openssl/bioerr.h
index 787b30af..787b30af 100644
--- a/NorthstarDLL/include/openssl/bioerr.h
+++ b/include/openssl/bioerr.h
diff --git a/NorthstarDLL/include/openssl/blowfish.h b/include/openssl/blowfish.h
index 667d6423..667d6423 100644
--- a/NorthstarDLL/include/openssl/blowfish.h
+++ b/include/openssl/blowfish.h
diff --git a/NorthstarDLL/include/openssl/bn.h b/include/openssl/bn.h
index ecd7f01b..ecd7f01b 100644
--- a/NorthstarDLL/include/openssl/bn.h
+++ b/include/openssl/bn.h
diff --git a/NorthstarDLL/include/openssl/bnerr.h b/include/openssl/bnerr.h
index 847d326b..847d326b 100644
--- a/NorthstarDLL/include/openssl/bnerr.h
+++ b/include/openssl/bnerr.h
diff --git a/NorthstarDLL/include/openssl/buffer.h b/include/openssl/buffer.h
index 5773b986..5773b986 100644
--- a/NorthstarDLL/include/openssl/buffer.h
+++ b/include/openssl/buffer.h
diff --git a/NorthstarDLL/include/openssl/buffererr.h b/include/openssl/buffererr.h
index d18b1f8f..d18b1f8f 100644
--- a/NorthstarDLL/include/openssl/buffererr.h
+++ b/include/openssl/buffererr.h
diff --git a/NorthstarDLL/include/openssl/camellia.h b/include/openssl/camellia.h
index 88c2279e..88c2279e 100644
--- a/NorthstarDLL/include/openssl/camellia.h
+++ b/include/openssl/camellia.h
diff --git a/NorthstarDLL/include/openssl/cast.h b/include/openssl/cast.h
index 0bf217be..0bf217be 100644
--- a/NorthstarDLL/include/openssl/cast.h
+++ b/include/openssl/cast.h
diff --git a/NorthstarDLL/include/openssl/cmac.h b/include/openssl/cmac.h
index f5086183..f5086183 100644
--- a/NorthstarDLL/include/openssl/cmac.h
+++ b/include/openssl/cmac.h
diff --git a/NorthstarDLL/include/openssl/cmp.h b/include/openssl/cmp.h
index 7f258dc9..7f258dc9 100644
--- a/NorthstarDLL/include/openssl/cmp.h
+++ b/include/openssl/cmp.h
diff --git a/NorthstarDLL/include/openssl/cmp.h.in b/include/openssl/cmp.h.in
index b4734421..b4734421 100644
--- a/NorthstarDLL/include/openssl/cmp.h.in
+++ b/include/openssl/cmp.h.in
diff --git a/NorthstarDLL/include/openssl/cmp_util.h b/include/openssl/cmp_util.h
index 9a168922..9a168922 100644
--- a/NorthstarDLL/include/openssl/cmp_util.h
+++ b/include/openssl/cmp_util.h
diff --git a/NorthstarDLL/include/openssl/cmperr.h b/include/openssl/cmperr.h
index 3a26fd0b..3a26fd0b 100644
--- a/NorthstarDLL/include/openssl/cmperr.h
+++ b/include/openssl/cmperr.h
diff --git a/NorthstarDLL/include/openssl/cms.h b/include/openssl/cms.h
index 5b907f2c..5b907f2c 100644
--- a/NorthstarDLL/include/openssl/cms.h
+++ b/include/openssl/cms.h
diff --git a/NorthstarDLL/include/openssl/cms.h.in b/include/openssl/cms.h.in
index da20ddf2..da20ddf2 100644
--- a/NorthstarDLL/include/openssl/cms.h.in
+++ b/include/openssl/cms.h.in
diff --git a/NorthstarDLL/include/openssl/cmserr.h b/include/openssl/cmserr.h
index 1c4f4c79..1c4f4c79 100644
--- a/NorthstarDLL/include/openssl/cmserr.h
+++ b/include/openssl/cmserr.h
diff --git a/NorthstarDLL/include/openssl/comp.h b/include/openssl/comp.h
index 06ff5810..06ff5810 100644
--- a/NorthstarDLL/include/openssl/comp.h
+++ b/include/openssl/comp.h
diff --git a/NorthstarDLL/include/openssl/comperr.h b/include/openssl/comperr.h
index 01dd3e6b..01dd3e6b 100644
--- a/NorthstarDLL/include/openssl/comperr.h
+++ b/include/openssl/comperr.h
diff --git a/NorthstarDLL/include/openssl/conf.h b/include/openssl/conf.h
index 07793f17..07793f17 100644
--- a/NorthstarDLL/include/openssl/conf.h
+++ b/include/openssl/conf.h
diff --git a/NorthstarDLL/include/openssl/conf.h.in b/include/openssl/conf.h.in
index b0bd579a..b0bd579a 100644
--- a/NorthstarDLL/include/openssl/conf.h.in
+++ b/include/openssl/conf.h.in
diff --git a/NorthstarDLL/include/openssl/conf_api.h b/include/openssl/conf_api.h
index ed67d577..ed67d577 100644
--- a/NorthstarDLL/include/openssl/conf_api.h
+++ b/include/openssl/conf_api.h
diff --git a/NorthstarDLL/include/openssl/conferr.h b/include/openssl/conferr.h
index 496e2e1e..496e2e1e 100644
--- a/NorthstarDLL/include/openssl/conferr.h
+++ b/include/openssl/conferr.h
diff --git a/NorthstarDLL/include/openssl/configuration.h b/include/openssl/configuration.h
index d9662edd..d9662edd 100644
--- a/NorthstarDLL/include/openssl/configuration.h
+++ b/include/openssl/configuration.h
diff --git a/NorthstarDLL/include/openssl/configuration.h.in b/include/openssl/configuration.h.in
index b84dc1df..b84dc1df 100644
--- a/NorthstarDLL/include/openssl/configuration.h.in
+++ b/include/openssl/configuration.h.in
diff --git a/NorthstarDLL/include/openssl/conftypes.h b/include/openssl/conftypes.h
index 17cefaa4..17cefaa4 100644
--- a/NorthstarDLL/include/openssl/conftypes.h
+++ b/include/openssl/conftypes.h
diff --git a/NorthstarDLL/include/openssl/core.h b/include/openssl/core.h
index 9683ac70..9683ac70 100644
--- a/NorthstarDLL/include/openssl/core.h
+++ b/include/openssl/core.h
diff --git a/NorthstarDLL/include/openssl/core_dispatch.h b/include/openssl/core_dispatch.h
index 99fcda00..99fcda00 100644
--- a/NorthstarDLL/include/openssl/core_dispatch.h
+++ b/include/openssl/core_dispatch.h
diff --git a/NorthstarDLL/include/openssl/core_names.h b/include/openssl/core_names.h
index b549dae9..b549dae9 100644
--- a/NorthstarDLL/include/openssl/core_names.h
+++ b/include/openssl/core_names.h
diff --git a/NorthstarDLL/include/openssl/core_object.h b/include/openssl/core_object.h
index 62ccf39d..62ccf39d 100644
--- a/NorthstarDLL/include/openssl/core_object.h
+++ b/include/openssl/core_object.h
diff --git a/NorthstarDLL/include/openssl/crmf.h b/include/openssl/crmf.h
index b2a82edb..b2a82edb 100644
--- a/NorthstarDLL/include/openssl/crmf.h
+++ b/include/openssl/crmf.h
diff --git a/NorthstarDLL/include/openssl/crmf.h.in b/include/openssl/crmf.h.in
index 4d37ea6d..4d37ea6d 100644
--- a/NorthstarDLL/include/openssl/crmf.h.in
+++ b/include/openssl/crmf.h.in
diff --git a/NorthstarDLL/include/openssl/crmferr.h b/include/openssl/crmferr.h
index b242b922..b242b922 100644
--- a/NorthstarDLL/include/openssl/crmferr.h
+++ b/include/openssl/crmferr.h
diff --git a/NorthstarDLL/include/openssl/crypto.h b/include/openssl/crypto.h
index ef327f20..ef327f20 100644
--- a/NorthstarDLL/include/openssl/crypto.h
+++ b/include/openssl/crypto.h
diff --git a/NorthstarDLL/include/openssl/crypto.h.in b/include/openssl/crypto.h.in
index 724e2ca5..724e2ca5 100644
--- a/NorthstarDLL/include/openssl/crypto.h.in
+++ b/include/openssl/crypto.h.in
diff --git a/NorthstarDLL/include/openssl/cryptoerr.h b/include/openssl/cryptoerr.h
index c6a04d9b..c6a04d9b 100644
--- a/NorthstarDLL/include/openssl/cryptoerr.h
+++ b/include/openssl/cryptoerr.h
diff --git a/NorthstarDLL/include/openssl/cryptoerr_legacy.h b/include/openssl/cryptoerr_legacy.h
index ccab33a5..ccab33a5 100644
--- a/NorthstarDLL/include/openssl/cryptoerr_legacy.h
+++ b/include/openssl/cryptoerr_legacy.h
diff --git a/NorthstarDLL/include/openssl/ct.h b/include/openssl/ct.h
index 06c41b70..06c41b70 100644
--- a/NorthstarDLL/include/openssl/ct.h
+++ b/include/openssl/ct.h
diff --git a/NorthstarDLL/include/openssl/ct.h.in b/include/openssl/ct.h.in
index 16086b33..16086b33 100644
--- a/NorthstarDLL/include/openssl/ct.h.in
+++ b/include/openssl/ct.h.in
diff --git a/NorthstarDLL/include/openssl/cterr.h b/include/openssl/cterr.h
index 935d32d8..935d32d8 100644
--- a/NorthstarDLL/include/openssl/cterr.h
+++ b/include/openssl/cterr.h
diff --git a/NorthstarDLL/include/openssl/decoder.h b/include/openssl/decoder.h
index d4ee2cf4..d4ee2cf4 100644
--- a/NorthstarDLL/include/openssl/decoder.h
+++ b/include/openssl/decoder.h
diff --git a/NorthstarDLL/include/openssl/decodererr.h b/include/openssl/decodererr.h
index 4212a38b..4212a38b 100644
--- a/NorthstarDLL/include/openssl/decodererr.h
+++ b/include/openssl/decodererr.h
diff --git a/NorthstarDLL/include/openssl/des.h b/include/openssl/des.h
index 09798a61..09798a61 100644
--- a/NorthstarDLL/include/openssl/des.h
+++ b/include/openssl/des.h
diff --git a/NorthstarDLL/include/openssl/dh.h b/include/openssl/dh.h
index b97871ec..b97871ec 100644
--- a/NorthstarDLL/include/openssl/dh.h
+++ b/include/openssl/dh.h
diff --git a/NorthstarDLL/include/openssl/dherr.h b/include/openssl/dherr.h
index 5d2a762a..5d2a762a 100644
--- a/NorthstarDLL/include/openssl/dherr.h
+++ b/include/openssl/dherr.h
diff --git a/NorthstarDLL/include/openssl/dsa.h b/include/openssl/dsa.h
index 5c0e4cdd..5c0e4cdd 100644
--- a/NorthstarDLL/include/openssl/dsa.h
+++ b/include/openssl/dsa.h
diff --git a/NorthstarDLL/include/openssl/dsaerr.h b/include/openssl/dsaerr.h
index 5f0ca8d1..5f0ca8d1 100644
--- a/NorthstarDLL/include/openssl/dsaerr.h
+++ b/include/openssl/dsaerr.h
diff --git a/NorthstarDLL/include/openssl/dtls1.h b/include/openssl/dtls1.h
index 5dc6b541..5dc6b541 100644
--- a/NorthstarDLL/include/openssl/dtls1.h
+++ b/include/openssl/dtls1.h
diff --git a/NorthstarDLL/include/openssl/e_os2.h b/include/openssl/e_os2.h
index 67289092..67289092 100644
--- a/NorthstarDLL/include/openssl/e_os2.h
+++ b/include/openssl/e_os2.h
diff --git a/NorthstarDLL/include/openssl/ebcdic.h b/include/openssl/ebcdic.h
index e0ae1aa8..e0ae1aa8 100644
--- a/NorthstarDLL/include/openssl/ebcdic.h
+++ b/include/openssl/ebcdic.h
diff --git a/NorthstarDLL/include/openssl/ec.h b/include/openssl/ec.h
index f59b4f92..f59b4f92 100644
--- a/NorthstarDLL/include/openssl/ec.h
+++ b/include/openssl/ec.h
diff --git a/NorthstarDLL/include/openssl/ecdh.h b/include/openssl/ecdh.h
index 56bd4cc2..56bd4cc2 100644
--- a/NorthstarDLL/include/openssl/ecdh.h
+++ b/include/openssl/ecdh.h
diff --git a/NorthstarDLL/include/openssl/ecdsa.h b/include/openssl/ecdsa.h
index 56bd4cc2..56bd4cc2 100644
--- a/NorthstarDLL/include/openssl/ecdsa.h
+++ b/include/openssl/ecdsa.h
diff --git a/NorthstarDLL/include/openssl/ecerr.h b/include/openssl/ecerr.h
index 49088d20..49088d20 100644
--- a/NorthstarDLL/include/openssl/ecerr.h
+++ b/include/openssl/ecerr.h
diff --git a/NorthstarDLL/include/openssl/encoder.h b/include/openssl/encoder.h
index c37a6f16..c37a6f16 100644
--- a/NorthstarDLL/include/openssl/encoder.h
+++ b/include/openssl/encoder.h
diff --git a/NorthstarDLL/include/openssl/encodererr.h b/include/openssl/encodererr.h
index 5e318b14..5e318b14 100644
--- a/NorthstarDLL/include/openssl/encodererr.h
+++ b/include/openssl/encodererr.h
diff --git a/NorthstarDLL/include/openssl/engine.h b/include/openssl/engine.h
index 25c3cf7c..25c3cf7c 100644
--- a/NorthstarDLL/include/openssl/engine.h
+++ b/include/openssl/engine.h
diff --git a/NorthstarDLL/include/openssl/engineerr.h b/include/openssl/engineerr.h
index d439b682..d439b682 100644
--- a/NorthstarDLL/include/openssl/engineerr.h
+++ b/include/openssl/engineerr.h
diff --git a/NorthstarDLL/include/openssl/err.h b/include/openssl/err.h
index 3c7299db..3c7299db 100644
--- a/NorthstarDLL/include/openssl/err.h
+++ b/include/openssl/err.h
diff --git a/NorthstarDLL/include/openssl/err.h.in b/include/openssl/err.h.in
index 7ca0b970..7ca0b970 100644
--- a/NorthstarDLL/include/openssl/err.h.in
+++ b/include/openssl/err.h.in
diff --git a/NorthstarDLL/include/openssl/ess.h b/include/openssl/ess.h
index dad596a6..dad596a6 100644
--- a/NorthstarDLL/include/openssl/ess.h
+++ b/include/openssl/ess.h
diff --git a/NorthstarDLL/include/openssl/ess.h.in b/include/openssl/ess.h.in
index d1a685b9..d1a685b9 100644
--- a/NorthstarDLL/include/openssl/ess.h.in
+++ b/include/openssl/ess.h.in
diff --git a/NorthstarDLL/include/openssl/esserr.h b/include/openssl/esserr.h
index 165ce7c4..165ce7c4 100644
--- a/NorthstarDLL/include/openssl/esserr.h
+++ b/include/openssl/esserr.h
diff --git a/NorthstarDLL/include/openssl/evp.h b/include/openssl/evp.h
index 18503817..18503817 100644
--- a/NorthstarDLL/include/openssl/evp.h
+++ b/include/openssl/evp.h
diff --git a/NorthstarDLL/include/openssl/evperr.h b/include/openssl/evperr.h
index a5053f6c..a5053f6c 100644
--- a/NorthstarDLL/include/openssl/evperr.h
+++ b/include/openssl/evperr.h
diff --git a/NorthstarDLL/include/openssl/fips_names.h b/include/openssl/fips_names.h
index 0fdf5440..0fdf5440 100644
--- a/NorthstarDLL/include/openssl/fips_names.h
+++ b/include/openssl/fips_names.h
diff --git a/NorthstarDLL/include/openssl/fipskey.h b/include/openssl/fipskey.h
index ccc1d2f4..ccc1d2f4 100644
--- a/NorthstarDLL/include/openssl/fipskey.h
+++ b/include/openssl/fipskey.h
diff --git a/NorthstarDLL/include/openssl/fipskey.h.in b/include/openssl/fipskey.h.in
index 56b947e8..56b947e8 100644
--- a/NorthstarDLL/include/openssl/fipskey.h.in
+++ b/include/openssl/fipskey.h.in
diff --git a/NorthstarDLL/include/openssl/hmac.h b/include/openssl/hmac.h
index f9e1bff3..f9e1bff3 100644
--- a/NorthstarDLL/include/openssl/hmac.h
+++ b/include/openssl/hmac.h
diff --git a/NorthstarDLL/include/openssl/http.h b/include/openssl/http.h
index f7ab2142..f7ab2142 100644
--- a/NorthstarDLL/include/openssl/http.h
+++ b/include/openssl/http.h
diff --git a/NorthstarDLL/include/openssl/httperr.h b/include/openssl/httperr.h
index ee089592..ee089592 100644
--- a/NorthstarDLL/include/openssl/httperr.h
+++ b/include/openssl/httperr.h
diff --git a/NorthstarDLL/include/openssl/idea.h b/include/openssl/idea.h
index 1f9bb3b3..1f9bb3b3 100644
--- a/NorthstarDLL/include/openssl/idea.h
+++ b/include/openssl/idea.h
diff --git a/NorthstarDLL/include/openssl/kdf.h b/include/openssl/kdf.h
index 0983230a..0983230a 100644
--- a/NorthstarDLL/include/openssl/kdf.h
+++ b/include/openssl/kdf.h
diff --git a/NorthstarDLL/include/openssl/kdferr.h b/include/openssl/kdferr.h
index 963d766d..963d766d 100644
--- a/NorthstarDLL/include/openssl/kdferr.h
+++ b/include/openssl/kdferr.h
diff --git a/NorthstarDLL/include/openssl/lhash.h b/include/openssl/lhash.h
index 39dd6254..39dd6254 100644
--- a/NorthstarDLL/include/openssl/lhash.h
+++ b/include/openssl/lhash.h
diff --git a/NorthstarDLL/include/openssl/lhash.h.in b/include/openssl/lhash.h.in
index febefa3c..febefa3c 100644
--- a/NorthstarDLL/include/openssl/lhash.h.in
+++ b/include/openssl/lhash.h.in
diff --git a/NorthstarDLL/include/openssl/macros.h b/include/openssl/macros.h
index a6bc3f1f..a6bc3f1f 100644
--- a/NorthstarDLL/include/openssl/macros.h
+++ b/include/openssl/macros.h
diff --git a/NorthstarDLL/include/openssl/md2.h b/include/openssl/md2.h
index 5d4cb77e..5d4cb77e 100644
--- a/NorthstarDLL/include/openssl/md2.h
+++ b/include/openssl/md2.h
diff --git a/NorthstarDLL/include/openssl/md4.h b/include/openssl/md4.h
index 6c150a6c..6c150a6c 100644
--- a/NorthstarDLL/include/openssl/md4.h
+++ b/include/openssl/md4.h
diff --git a/NorthstarDLL/include/openssl/md5.h b/include/openssl/md5.h
index 77a57734..77a57734 100644
--- a/NorthstarDLL/include/openssl/md5.h
+++ b/include/openssl/md5.h
diff --git a/NorthstarDLL/include/openssl/mdc2.h b/include/openssl/mdc2.h
index 5a7ee289..5a7ee289 100644
--- a/NorthstarDLL/include/openssl/mdc2.h
+++ b/include/openssl/mdc2.h
diff --git a/NorthstarDLL/include/openssl/modes.h b/include/openssl/modes.h
index e1907991..e1907991 100644
--- a/NorthstarDLL/include/openssl/modes.h
+++ b/include/openssl/modes.h
diff --git a/NorthstarDLL/include/openssl/obj_mac.h b/include/openssl/obj_mac.h
index 0e860276..0e860276 100644
--- a/NorthstarDLL/include/openssl/obj_mac.h
+++ b/include/openssl/obj_mac.h
diff --git a/NorthstarDLL/include/openssl/objects.h b/include/openssl/objects.h
index 9ea91c27..9ea91c27 100644
--- a/NorthstarDLL/include/openssl/objects.h
+++ b/include/openssl/objects.h
diff --git a/NorthstarDLL/include/openssl/objectserr.h b/include/openssl/objectserr.h
index 585217f6..585217f6 100644
--- a/NorthstarDLL/include/openssl/objectserr.h
+++ b/include/openssl/objectserr.h
diff --git a/NorthstarDLL/include/openssl/ocsp.h b/include/openssl/ocsp.h
index 5688381e..5688381e 100644
--- a/NorthstarDLL/include/openssl/ocsp.h
+++ b/include/openssl/ocsp.h
diff --git a/NorthstarDLL/include/openssl/ocsp.h.in b/include/openssl/ocsp.h.in
index e2cc2716..e2cc2716 100644
--- a/NorthstarDLL/include/openssl/ocsp.h.in
+++ b/include/openssl/ocsp.h.in
diff --git a/NorthstarDLL/include/openssl/ocsperr.h b/include/openssl/ocsperr.h
index 46a0523c..46a0523c 100644
--- a/NorthstarDLL/include/openssl/ocsperr.h
+++ b/include/openssl/ocsperr.h
diff --git a/NorthstarDLL/include/openssl/opensslconf.h b/include/openssl/opensslconf.h
index 1e83371f..1e83371f 100644
--- a/NorthstarDLL/include/openssl/opensslconf.h
+++ b/include/openssl/opensslconf.h
diff --git a/NorthstarDLL/include/openssl/opensslv.h b/include/openssl/opensslv.h
index 612d5aec..612d5aec 100644
--- a/NorthstarDLL/include/openssl/opensslv.h
+++ b/include/openssl/opensslv.h
diff --git a/NorthstarDLL/include/openssl/opensslv.h.in b/include/openssl/opensslv.h.in
index 3f47a2ac..3f47a2ac 100644
--- a/NorthstarDLL/include/openssl/opensslv.h.in
+++ b/include/openssl/opensslv.h.in
diff --git a/NorthstarDLL/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h
index 82a58988..82a58988 100644
--- a/NorthstarDLL/include/openssl/ossl_typ.h
+++ b/include/openssl/ossl_typ.h
diff --git a/NorthstarDLL/include/openssl/param_build.h b/include/openssl/param_build.h
index f29fdb29..f29fdb29 100644
--- a/NorthstarDLL/include/openssl/param_build.h
+++ b/include/openssl/param_build.h
diff --git a/NorthstarDLL/include/openssl/params.h b/include/openssl/params.h
index d75eab07..d75eab07 100644
--- a/NorthstarDLL/include/openssl/params.h
+++ b/include/openssl/params.h
diff --git a/NorthstarDLL/include/openssl/pem.h b/include/openssl/pem.h
index 80940dfa..80940dfa 100644
--- a/NorthstarDLL/include/openssl/pem.h
+++ b/include/openssl/pem.h
diff --git a/NorthstarDLL/include/openssl/pem2.h b/include/openssl/pem2.h
index a8a5325b..a8a5325b 100644
--- a/NorthstarDLL/include/openssl/pem2.h
+++ b/include/openssl/pem2.h
diff --git a/NorthstarDLL/include/openssl/pemerr.h b/include/openssl/pemerr.h
index 18f6d9ef..18f6d9ef 100644
--- a/NorthstarDLL/include/openssl/pemerr.h
+++ b/include/openssl/pemerr.h
diff --git a/NorthstarDLL/include/openssl/pkcs12.h b/include/openssl/pkcs12.h
index f0da0867..f0da0867 100644
--- a/NorthstarDLL/include/openssl/pkcs12.h
+++ b/include/openssl/pkcs12.h
diff --git a/NorthstarDLL/include/openssl/pkcs12.h.in b/include/openssl/pkcs12.h.in
index c98eebfb..c98eebfb 100644
--- a/NorthstarDLL/include/openssl/pkcs12.h.in
+++ b/include/openssl/pkcs12.h.in
diff --git a/NorthstarDLL/include/openssl/pkcs12err.h b/include/openssl/pkcs12err.h
index 933c8329..933c8329 100644
--- a/NorthstarDLL/include/openssl/pkcs12err.h
+++ b/include/openssl/pkcs12err.h
diff --git a/NorthstarDLL/include/openssl/pkcs7.h b/include/openssl/pkcs7.h
index 097d2dbb..097d2dbb 100644
--- a/NorthstarDLL/include/openssl/pkcs7.h
+++ b/include/openssl/pkcs7.h
diff --git a/NorthstarDLL/include/openssl/pkcs7.h.in b/include/openssl/pkcs7.h.in
index f5c55a3f..f5c55a3f 100644
--- a/NorthstarDLL/include/openssl/pkcs7.h.in
+++ b/include/openssl/pkcs7.h.in
diff --git a/NorthstarDLL/include/openssl/pkcs7err.h b/include/openssl/pkcs7err.h
index ceb1a501..ceb1a501 100644
--- a/NorthstarDLL/include/openssl/pkcs7err.h
+++ b/include/openssl/pkcs7err.h
diff --git a/NorthstarDLL/include/openssl/prov_ssl.h b/include/openssl/prov_ssl.h
index d3e0896c..d3e0896c 100644
--- a/NorthstarDLL/include/openssl/prov_ssl.h
+++ b/include/openssl/prov_ssl.h
diff --git a/NorthstarDLL/include/openssl/proverr.h b/include/openssl/proverr.h
index ad67a8f8..ad67a8f8 100644
--- a/NorthstarDLL/include/openssl/proverr.h
+++ b/include/openssl/proverr.h
diff --git a/NorthstarDLL/include/openssl/provider.h b/include/openssl/provider.h
index dc86ff58..dc86ff58 100644
--- a/NorthstarDLL/include/openssl/provider.h
+++ b/include/openssl/provider.h
diff --git a/NorthstarDLL/include/openssl/rand.h b/include/openssl/rand.h
index ad3054fd..ad3054fd 100644
--- a/NorthstarDLL/include/openssl/rand.h
+++ b/include/openssl/rand.h
diff --git a/NorthstarDLL/include/openssl/randerr.h b/include/openssl/randerr.h
index b5e08e43..b5e08e43 100644
--- a/NorthstarDLL/include/openssl/randerr.h
+++ b/include/openssl/randerr.h
diff --git a/NorthstarDLL/include/openssl/rc2.h b/include/openssl/rc2.h
index ff633fd8..ff633fd8 100644
--- a/NorthstarDLL/include/openssl/rc2.h
+++ b/include/openssl/rc2.h
diff --git a/NorthstarDLL/include/openssl/rc4.h b/include/openssl/rc4.h
index 600b2885..600b2885 100644
--- a/NorthstarDLL/include/openssl/rc4.h
+++ b/include/openssl/rc4.h
diff --git a/NorthstarDLL/include/openssl/rc5.h b/include/openssl/rc5.h
index de833523..de833523 100644
--- a/NorthstarDLL/include/openssl/rc5.h
+++ b/include/openssl/rc5.h
diff --git a/NorthstarDLL/include/openssl/ripemd.h b/include/openssl/ripemd.h
index 900ee317..900ee317 100644
--- a/NorthstarDLL/include/openssl/ripemd.h
+++ b/include/openssl/ripemd.h
diff --git a/NorthstarDLL/include/openssl/rsa.h b/include/openssl/rsa.h
index a55c9727..a55c9727 100644
--- a/NorthstarDLL/include/openssl/rsa.h
+++ b/include/openssl/rsa.h
diff --git a/NorthstarDLL/include/openssl/rsaerr.h b/include/openssl/rsaerr.h
index c58463c7..c58463c7 100644
--- a/NorthstarDLL/include/openssl/rsaerr.h
+++ b/include/openssl/rsaerr.h
diff --git a/NorthstarDLL/include/openssl/safestack.h b/include/openssl/safestack.h
index 159ccf2a..159ccf2a 100644
--- a/NorthstarDLL/include/openssl/safestack.h
+++ b/include/openssl/safestack.h
diff --git a/NorthstarDLL/include/openssl/safestack.h.in b/include/openssl/safestack.h.in
index 6b366079..6b366079 100644
--- a/NorthstarDLL/include/openssl/safestack.h.in
+++ b/include/openssl/safestack.h.in
diff --git a/NorthstarDLL/include/openssl/seed.h b/include/openssl/seed.h
index edb218ae..edb218ae 100644
--- a/NorthstarDLL/include/openssl/seed.h
+++ b/include/openssl/seed.h
diff --git a/NorthstarDLL/include/openssl/self_test.h b/include/openssl/self_test.h
index 77c600a0..77c600a0 100644
--- a/NorthstarDLL/include/openssl/self_test.h
+++ b/include/openssl/self_test.h
diff --git a/NorthstarDLL/include/openssl/sha.h b/include/openssl/sha.h
index 6e65a040..6e65a040 100644
--- a/NorthstarDLL/include/openssl/sha.h
+++ b/include/openssl/sha.h
diff --git a/NorthstarDLL/include/openssl/srp.h b/include/openssl/srp.h
index a86fa5d2..a86fa5d2 100644
--- a/NorthstarDLL/include/openssl/srp.h
+++ b/include/openssl/srp.h
diff --git a/NorthstarDLL/include/openssl/srp.h.in b/include/openssl/srp.h.in
index dfbe845b..dfbe845b 100644
--- a/NorthstarDLL/include/openssl/srp.h.in
+++ b/include/openssl/srp.h.in
diff --git a/NorthstarDLL/include/openssl/srtp.h b/include/openssl/srtp.h
index d64606e5..d64606e5 100644
--- a/NorthstarDLL/include/openssl/srtp.h
+++ b/include/openssl/srtp.h
diff --git a/NorthstarDLL/include/openssl/ssl.h b/include/openssl/ssl.h
index 0763a33c..0763a33c 100644
--- a/NorthstarDLL/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
diff --git a/NorthstarDLL/include/openssl/ssl.h.in b/include/openssl/ssl.h.in
index 9c00eb3d..9c00eb3d 100644
--- a/NorthstarDLL/include/openssl/ssl.h.in
+++ b/include/openssl/ssl.h.in
diff --git a/NorthstarDLL/include/openssl/ssl2.h b/include/openssl/ssl2.h
index 428ead05..428ead05 100644
--- a/NorthstarDLL/include/openssl/ssl2.h
+++ b/include/openssl/ssl2.h
diff --git a/NorthstarDLL/include/openssl/ssl3.h b/include/openssl/ssl3.h
index 49bd51f2..49bd51f2 100644
--- a/NorthstarDLL/include/openssl/ssl3.h
+++ b/include/openssl/ssl3.h
diff --git a/NorthstarDLL/include/openssl/sslerr.h b/include/openssl/sslerr.h
index a4746d70..a4746d70 100644
--- a/NorthstarDLL/include/openssl/sslerr.h
+++ b/include/openssl/sslerr.h
diff --git a/NorthstarDLL/include/openssl/sslerr_legacy.h b/include/openssl/sslerr_legacy.h
index ccf6d3b3..ccf6d3b3 100644
--- a/NorthstarDLL/include/openssl/sslerr_legacy.h
+++ b/include/openssl/sslerr_legacy.h
diff --git a/NorthstarDLL/include/openssl/stack.h b/include/openssl/stack.h
index f0c5c547..f0c5c547 100644
--- a/NorthstarDLL/include/openssl/stack.h
+++ b/include/openssl/stack.h
diff --git a/NorthstarDLL/include/openssl/store.h b/include/openssl/store.h
index 3c1445e0..3c1445e0 100644
--- a/NorthstarDLL/include/openssl/store.h
+++ b/include/openssl/store.h
diff --git a/NorthstarDLL/include/openssl/storeerr.h b/include/openssl/storeerr.h
index 00529c88..00529c88 100644
--- a/NorthstarDLL/include/openssl/storeerr.h
+++ b/include/openssl/storeerr.h
diff --git a/NorthstarDLL/include/openssl/symhacks.h b/include/openssl/symhacks.h
index 816f8f99..816f8f99 100644
--- a/NorthstarDLL/include/openssl/symhacks.h
+++ b/include/openssl/symhacks.h
diff --git a/NorthstarDLL/include/openssl/tls1.h b/include/openssl/tls1.h
index d6e9331f..d6e9331f 100644
--- a/NorthstarDLL/include/openssl/tls1.h
+++ b/include/openssl/tls1.h
diff --git a/NorthstarDLL/include/openssl/trace.h b/include/openssl/trace.h
index 28200133..28200133 100644
--- a/NorthstarDLL/include/openssl/trace.h
+++ b/include/openssl/trace.h
diff --git a/NorthstarDLL/include/openssl/ts.h b/include/openssl/ts.h
index 5136e4e9..5136e4e9 100644
--- a/NorthstarDLL/include/openssl/ts.h
+++ b/include/openssl/ts.h
diff --git a/NorthstarDLL/include/openssl/tserr.h b/include/openssl/tserr.h
index e1b943e4..e1b943e4 100644
--- a/NorthstarDLL/include/openssl/tserr.h
+++ b/include/openssl/tserr.h
diff --git a/NorthstarDLL/include/openssl/txt_db.h b/include/openssl/txt_db.h
index af169a30..af169a30 100644
--- a/NorthstarDLL/include/openssl/txt_db.h
+++ b/include/openssl/txt_db.h
diff --git a/NorthstarDLL/include/openssl/types.h b/include/openssl/types.h
index de9f1665..de9f1665 100644
--- a/NorthstarDLL/include/openssl/types.h
+++ b/include/openssl/types.h
diff --git a/NorthstarDLL/include/openssl/ui.h b/include/openssl/ui.h
index 835b0eba..835b0eba 100644
--- a/NorthstarDLL/include/openssl/ui.h
+++ b/include/openssl/ui.h
diff --git a/NorthstarDLL/include/openssl/ui.h.in b/include/openssl/ui.h.in
index eb9a580f..eb9a580f 100644
--- a/NorthstarDLL/include/openssl/ui.h.in
+++ b/include/openssl/ui.h.in
diff --git a/NorthstarDLL/include/openssl/uierr.h b/include/openssl/uierr.h
index 473b04ed..473b04ed 100644
--- a/NorthstarDLL/include/openssl/uierr.h
+++ b/include/openssl/uierr.h
diff --git a/NorthstarDLL/include/openssl/whrlpool.h b/include/openssl/whrlpool.h
index 05ba4632..05ba4632 100644
--- a/NorthstarDLL/include/openssl/whrlpool.h
+++ b/include/openssl/whrlpool.h
diff --git a/NorthstarDLL/include/openssl/x509.h b/include/openssl/x509.h
index db57a9bf..db57a9bf 100644
--- a/NorthstarDLL/include/openssl/x509.h
+++ b/include/openssl/x509.h
diff --git a/NorthstarDLL/include/openssl/x509.h.in b/include/openssl/x509.h.in
index b4efbb55..b4efbb55 100644
--- a/NorthstarDLL/include/openssl/x509.h.in
+++ b/include/openssl/x509.h.in
diff --git a/NorthstarDLL/include/openssl/x509_vfy.h b/include/openssl/x509_vfy.h
index e04df0d3..e04df0d3 100644
--- a/NorthstarDLL/include/openssl/x509_vfy.h
+++ b/include/openssl/x509_vfy.h
diff --git a/NorthstarDLL/include/openssl/x509_vfy.h.in b/include/openssl/x509_vfy.h.in
index 80f18bd7..80f18bd7 100644
--- a/NorthstarDLL/include/openssl/x509_vfy.h.in
+++ b/include/openssl/x509_vfy.h.in
diff --git a/NorthstarDLL/include/openssl/x509err.h b/include/openssl/x509err.h
index a56facd4..a56facd4 100644
--- a/NorthstarDLL/include/openssl/x509err.h
+++ b/include/openssl/x509err.h
diff --git a/NorthstarDLL/include/openssl/x509v3.h b/include/openssl/x509v3.h
index 78c390b3..78c390b3 100644
--- a/NorthstarDLL/include/openssl/x509v3.h
+++ b/include/openssl/x509v3.h
diff --git a/NorthstarDLL/include/openssl/x509v3.h.in b/include/openssl/x509v3.h.in
index d00a66a3..d00a66a3 100644
--- a/NorthstarDLL/include/openssl/x509v3.h.in
+++ b/include/openssl/x509v3.h.in
diff --git a/NorthstarDLL/include/openssl/x509v3err.h b/include/openssl/x509v3err.h
index 1ae3a562..1ae3a562 100644
--- a/NorthstarDLL/include/openssl/x509v3err.h
+++ b/include/openssl/x509v3err.h
diff --git a/NorthstarDLL/include/rapidjson/allocators.h b/include/rapidjson/allocators.h
index 98affe03..98affe03 100644
--- a/NorthstarDLL/include/rapidjson/allocators.h
+++ b/include/rapidjson/allocators.h
diff --git a/NorthstarDLL/include/rapidjson/document.h b/include/rapidjson/document.h
index e3e20dfb..e3e20dfb 100644
--- a/NorthstarDLL/include/rapidjson/document.h
+++ b/include/rapidjson/document.h
diff --git a/NorthstarDLL/include/rapidjson/encodedstream.h b/include/rapidjson/encodedstream.h
index 14506838..14506838 100644
--- a/NorthstarDLL/include/rapidjson/encodedstream.h
+++ b/include/rapidjson/encodedstream.h
diff --git a/NorthstarDLL/include/rapidjson/encodings.h b/include/rapidjson/encodings.h
index baa7c2b1..baa7c2b1 100644
--- a/NorthstarDLL/include/rapidjson/encodings.h
+++ b/include/rapidjson/encodings.h
diff --git a/NorthstarDLL/include/rapidjson/error/en.h b/include/rapidjson/error/en.h
index 2db838bf..2db838bf 100644
--- a/NorthstarDLL/include/rapidjson/error/en.h
+++ b/include/rapidjson/error/en.h
diff --git a/NorthstarDLL/include/rapidjson/error/error.h b/include/rapidjson/error/error.h
index 95cb31a7..95cb31a7 100644
--- a/NorthstarDLL/include/rapidjson/error/error.h
+++ b/include/rapidjson/error/error.h
diff --git a/NorthstarDLL/include/rapidjson/filereadstream.h b/include/rapidjson/filereadstream.h
index b56ea13b..b56ea13b 100644
--- a/NorthstarDLL/include/rapidjson/filereadstream.h
+++ b/include/rapidjson/filereadstream.h
diff --git a/NorthstarDLL/include/rapidjson/filewritestream.h b/include/rapidjson/filewritestream.h
index 6378dd60..6378dd60 100644
--- a/NorthstarDLL/include/rapidjson/filewritestream.h
+++ b/include/rapidjson/filewritestream.h
diff --git a/NorthstarDLL/include/rapidjson/fwd.h b/include/rapidjson/fwd.h
index e8104e84..e8104e84 100644
--- a/NorthstarDLL/include/rapidjson/fwd.h
+++ b/include/rapidjson/fwd.h
diff --git a/NorthstarDLL/include/rapidjson/internal/biginteger.h b/include/rapidjson/internal/biginteger.h
index 9d3e88c9..9d3e88c9 100644
--- a/NorthstarDLL/include/rapidjson/internal/biginteger.h
+++ b/include/rapidjson/internal/biginteger.h
diff --git a/NorthstarDLL/include/rapidjson/internal/diyfp.h b/include/rapidjson/internal/diyfp.h
index c9fefdc6..c9fefdc6 100644
--- a/NorthstarDLL/include/rapidjson/internal/diyfp.h
+++ b/include/rapidjson/internal/diyfp.h
diff --git a/NorthstarDLL/include/rapidjson/internal/dtoa.h b/include/rapidjson/internal/dtoa.h
index 8d6350e6..8d6350e6 100644
--- a/NorthstarDLL/include/rapidjson/internal/dtoa.h
+++ b/include/rapidjson/internal/dtoa.h
diff --git a/NorthstarDLL/include/rapidjson/internal/ieee754.h b/include/rapidjson/internal/ieee754.h
index 82bb0b99..82bb0b99 100644
--- a/NorthstarDLL/include/rapidjson/internal/ieee754.h
+++ b/include/rapidjson/internal/ieee754.h
diff --git a/NorthstarDLL/include/rapidjson/internal/itoa.h b/include/rapidjson/internal/itoa.h
index 01a4e7e7..01a4e7e7 100644
--- a/NorthstarDLL/include/rapidjson/internal/itoa.h
+++ b/include/rapidjson/internal/itoa.h
diff --git a/NorthstarDLL/include/rapidjson/internal/meta.h b/include/rapidjson/internal/meta.h
index 5a9aaa42..5a9aaa42 100644
--- a/NorthstarDLL/include/rapidjson/internal/meta.h
+++ b/include/rapidjson/internal/meta.h
diff --git a/NorthstarDLL/include/rapidjson/internal/pow10.h b/include/rapidjson/internal/pow10.h
index 02f475d7..02f475d7 100644
--- a/NorthstarDLL/include/rapidjson/internal/pow10.h
+++ b/include/rapidjson/internal/pow10.h
diff --git a/NorthstarDLL/include/rapidjson/internal/regex.h b/include/rapidjson/internal/regex.h
index 422a5240..422a5240 100644
--- a/NorthstarDLL/include/rapidjson/internal/regex.h
+++ b/include/rapidjson/internal/regex.h
diff --git a/NorthstarDLL/include/rapidjson/internal/stack.h b/include/rapidjson/internal/stack.h
index 022c9aab..022c9aab 100644
--- a/NorthstarDLL/include/rapidjson/internal/stack.h
+++ b/include/rapidjson/internal/stack.h
diff --git a/NorthstarDLL/include/rapidjson/internal/strfunc.h b/include/rapidjson/internal/strfunc.h
index 2edfae52..2edfae52 100644
--- a/NorthstarDLL/include/rapidjson/internal/strfunc.h
+++ b/include/rapidjson/internal/strfunc.h
diff --git a/NorthstarDLL/include/rapidjson/internal/strtod.h b/include/rapidjson/internal/strtod.h
index 289c413b..289c413b 100644
--- a/NorthstarDLL/include/rapidjson/internal/strtod.h
+++ b/include/rapidjson/internal/strtod.h
diff --git a/NorthstarDLL/include/rapidjson/internal/swap.h b/include/rapidjson/internal/swap.h
index 666e49f9..666e49f9 100644
--- a/NorthstarDLL/include/rapidjson/internal/swap.h
+++ b/include/rapidjson/internal/swap.h
diff --git a/NorthstarDLL/include/rapidjson/istreamwrapper.h b/include/rapidjson/istreamwrapper.h
index f5fe2897..f5fe2897 100644
--- a/NorthstarDLL/include/rapidjson/istreamwrapper.h
+++ b/include/rapidjson/istreamwrapper.h
diff --git a/NorthstarDLL/include/rapidjson/memorybuffer.h b/include/rapidjson/memorybuffer.h
index 39bee1de..39bee1de 100644
--- a/NorthstarDLL/include/rapidjson/memorybuffer.h
+++ b/include/rapidjson/memorybuffer.h
diff --git a/NorthstarDLL/include/rapidjson/memorystream.h b/include/rapidjson/memorystream.h
index 1d71d8a4..1d71d8a4 100644
--- a/NorthstarDLL/include/rapidjson/memorystream.h
+++ b/include/rapidjson/memorystream.h
diff --git a/NorthstarDLL/include/rapidjson/msinttypes/inttypes.h b/include/rapidjson/msinttypes/inttypes.h
index 18111286..18111286 100644
--- a/NorthstarDLL/include/rapidjson/msinttypes/inttypes.h
+++ b/include/rapidjson/msinttypes/inttypes.h
diff --git a/NorthstarDLL/include/rapidjson/msinttypes/stdint.h b/include/rapidjson/msinttypes/stdint.h
index 3d4477b9..3d4477b9 100644
--- a/NorthstarDLL/include/rapidjson/msinttypes/stdint.h
+++ b/include/rapidjson/msinttypes/stdint.h
diff --git a/NorthstarDLL/include/rapidjson/ostreamwrapper.h b/include/rapidjson/ostreamwrapper.h
index 6f4667c0..6f4667c0 100644
--- a/NorthstarDLL/include/rapidjson/ostreamwrapper.h
+++ b/include/rapidjson/ostreamwrapper.h
diff --git a/NorthstarDLL/include/rapidjson/pointer.h b/include/rapidjson/pointer.h
index 0206ac1c..0206ac1c 100644
--- a/NorthstarDLL/include/rapidjson/pointer.h
+++ b/include/rapidjson/pointer.h
diff --git a/NorthstarDLL/include/rapidjson/prettywriter.h b/include/rapidjson/prettywriter.h
index 0dcb0fee..0dcb0fee 100644
--- a/NorthstarDLL/include/rapidjson/prettywriter.h
+++ b/include/rapidjson/prettywriter.h
diff --git a/NorthstarDLL/include/rapidjson/rapidjson.h b/include/rapidjson/rapidjson.h
index 053b2ce4..053b2ce4 100644
--- a/NorthstarDLL/include/rapidjson/rapidjson.h
+++ b/include/rapidjson/rapidjson.h
diff --git a/NorthstarDLL/include/rapidjson/reader.h b/include/rapidjson/reader.h
index 19f8849b..19f8849b 100644
--- a/NorthstarDLL/include/rapidjson/reader.h
+++ b/include/rapidjson/reader.h
diff --git a/NorthstarDLL/include/rapidjson/schema.h b/include/rapidjson/schema.h
index b182aa27..b182aa27 100644
--- a/NorthstarDLL/include/rapidjson/schema.h
+++ b/include/rapidjson/schema.h
diff --git a/NorthstarDLL/include/rapidjson/stream.h b/include/rapidjson/stream.h
index fef82c25..fef82c25 100644
--- a/NorthstarDLL/include/rapidjson/stream.h
+++ b/include/rapidjson/stream.h
diff --git a/NorthstarDLL/include/rapidjson/stringbuffer.h b/include/rapidjson/stringbuffer.h
index 78f34d20..78f34d20 100644
--- a/NorthstarDLL/include/rapidjson/stringbuffer.h
+++ b/include/rapidjson/stringbuffer.h
diff --git a/NorthstarDLL/include/rapidjson/writer.h b/include/rapidjson/writer.h
index 94f22dd5..94f22dd5 100644
--- a/NorthstarDLL/include/rapidjson/writer.h
+++ b/include/rapidjson/writer.h
diff --git a/NorthstarDLL/include/spdlog/async.h b/include/spdlog/async.h
index f7956305..f7956305 100644
--- a/NorthstarDLL/include/spdlog/async.h
+++ b/include/spdlog/async.h
diff --git a/NorthstarDLL/include/spdlog/async_logger-inl.h b/include/spdlog/async_logger-inl.h
index f8c9694c..f8c9694c 100644
--- a/NorthstarDLL/include/spdlog/async_logger-inl.h
+++ b/include/spdlog/async_logger-inl.h
diff --git a/NorthstarDLL/include/spdlog/async_logger.h b/include/spdlog/async_logger.h
index 6f299672..6f299672 100644
--- a/NorthstarDLL/include/spdlog/async_logger.h
+++ b/include/spdlog/async_logger.h
diff --git a/NorthstarDLL/include/spdlog/cfg/argv.h b/include/spdlog/cfg/argv.h
index 36d9f1c4..36d9f1c4 100644
--- a/NorthstarDLL/include/spdlog/cfg/argv.h
+++ b/include/spdlog/cfg/argv.h
diff --git a/NorthstarDLL/include/spdlog/cfg/env.h b/include/spdlog/cfg/env.h
index 1f39ebbb..1f39ebbb 100644
--- a/NorthstarDLL/include/spdlog/cfg/env.h
+++ b/include/spdlog/cfg/env.h
diff --git a/NorthstarDLL/include/spdlog/cfg/helpers-inl.h b/include/spdlog/cfg/helpers-inl.h
index 9e4daede..9e4daede 100644
--- a/NorthstarDLL/include/spdlog/cfg/helpers-inl.h
+++ b/include/spdlog/cfg/helpers-inl.h
diff --git a/NorthstarDLL/include/spdlog/cfg/helpers.h b/include/spdlog/cfg/helpers.h
index a795f39a..a795f39a 100644
--- a/NorthstarDLL/include/spdlog/cfg/helpers.h
+++ b/include/spdlog/cfg/helpers.h
diff --git a/NorthstarDLL/include/spdlog/common-inl.h b/include/spdlog/common-inl.h
index 378efe60..378efe60 100644
--- a/NorthstarDLL/include/spdlog/common-inl.h
+++ b/include/spdlog/common-inl.h
diff --git a/NorthstarDLL/include/spdlog/common.h b/include/spdlog/common.h
index fb9a3660..fb9a3660 100644
--- a/NorthstarDLL/include/spdlog/common.h
+++ b/include/spdlog/common.h
diff --git a/NorthstarDLL/include/spdlog/details/backtracer-inl.h b/include/spdlog/details/backtracer-inl.h
index 21553c26..21553c26 100644
--- a/NorthstarDLL/include/spdlog/details/backtracer-inl.h
+++ b/include/spdlog/details/backtracer-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/backtracer.h b/include/spdlog/details/backtracer.h
index 1da5d4c7..1da5d4c7 100644
--- a/NorthstarDLL/include/spdlog/details/backtracer.h
+++ b/include/spdlog/details/backtracer.h
diff --git a/NorthstarDLL/include/spdlog/details/circular_q.h b/include/spdlog/details/circular_q.h
index 1f2712e7..1f2712e7 100644
--- a/NorthstarDLL/include/spdlog/details/circular_q.h
+++ b/include/spdlog/details/circular_q.h
diff --git a/NorthstarDLL/include/spdlog/details/console_globals.h b/include/spdlog/details/console_globals.h
index 665201dd..665201dd 100644
--- a/NorthstarDLL/include/spdlog/details/console_globals.h
+++ b/include/spdlog/details/console_globals.h
diff --git a/NorthstarDLL/include/spdlog/details/file_helper-inl.h b/include/spdlog/details/file_helper-inl.h
index 30f3cf55..30f3cf55 100644
--- a/NorthstarDLL/include/spdlog/details/file_helper-inl.h
+++ b/include/spdlog/details/file_helper-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/file_helper.h b/include/spdlog/details/file_helper.h
index 5395d9cb..5395d9cb 100644
--- a/NorthstarDLL/include/spdlog/details/file_helper.h
+++ b/include/spdlog/details/file_helper.h
diff --git a/NorthstarDLL/include/spdlog/details/fmt_helper.h b/include/spdlog/details/fmt_helper.h
index 5dc311a0..5dc311a0 100644
--- a/NorthstarDLL/include/spdlog/details/fmt_helper.h
+++ b/include/spdlog/details/fmt_helper.h
diff --git a/NorthstarDLL/include/spdlog/details/log_msg-inl.h b/include/spdlog/details/log_msg-inl.h
index af11e0da..af11e0da 100644
--- a/NorthstarDLL/include/spdlog/details/log_msg-inl.h
+++ b/include/spdlog/details/log_msg-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/log_msg.h b/include/spdlog/details/log_msg.h
index 834ca4df..834ca4df 100644
--- a/NorthstarDLL/include/spdlog/details/log_msg.h
+++ b/include/spdlog/details/log_msg.h
diff --git a/NorthstarDLL/include/spdlog/details/log_msg_buffer-inl.h b/include/spdlog/details/log_msg_buffer-inl.h
index ca9429bb..ca9429bb 100644
--- a/NorthstarDLL/include/spdlog/details/log_msg_buffer-inl.h
+++ b/include/spdlog/details/log_msg_buffer-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/log_msg_buffer.h b/include/spdlog/details/log_msg_buffer.h
index 4410110f..4410110f 100644
--- a/NorthstarDLL/include/spdlog/details/log_msg_buffer.h
+++ b/include/spdlog/details/log_msg_buffer.h
diff --git a/NorthstarDLL/include/spdlog/details/mpmc_blocking_q.h b/include/spdlog/details/mpmc_blocking_q.h
index 5c3cca76..5c3cca76 100644
--- a/NorthstarDLL/include/spdlog/details/mpmc_blocking_q.h
+++ b/include/spdlog/details/mpmc_blocking_q.h
diff --git a/NorthstarDLL/include/spdlog/details/null_mutex.h b/include/spdlog/details/null_mutex.h
index 83533d4f..83533d4f 100644
--- a/NorthstarDLL/include/spdlog/details/null_mutex.h
+++ b/include/spdlog/details/null_mutex.h
diff --git a/NorthstarDLL/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h
index a701e13f..a701e13f 100644
--- a/NorthstarDLL/include/spdlog/details/os-inl.h
+++ b/include/spdlog/details/os-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/os.h b/include/spdlog/details/os.h
index 9fda1447..9fda1447 100644
--- a/NorthstarDLL/include/spdlog/details/os.h
+++ b/include/spdlog/details/os.h
diff --git a/NorthstarDLL/include/spdlog/details/periodic_worker-inl.h b/include/spdlog/details/periodic_worker-inl.h
index 1d794994..1d794994 100644
--- a/NorthstarDLL/include/spdlog/details/periodic_worker-inl.h
+++ b/include/spdlog/details/periodic_worker-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/periodic_worker.h b/include/spdlog/details/periodic_worker.h
index 42373665..42373665 100644
--- a/NorthstarDLL/include/spdlog/details/periodic_worker.h
+++ b/include/spdlog/details/periodic_worker.h
diff --git a/NorthstarDLL/include/spdlog/details/registry-inl.h b/include/spdlog/details/registry-inl.h
index a60faabc..a60faabc 100644
--- a/NorthstarDLL/include/spdlog/details/registry-inl.h
+++ b/include/spdlog/details/registry-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/registry.h b/include/spdlog/details/registry.h
index b069c3f5..b069c3f5 100644
--- a/NorthstarDLL/include/spdlog/details/registry.h
+++ b/include/spdlog/details/registry.h
diff --git a/NorthstarDLL/include/spdlog/details/synchronous_factory.h b/include/spdlog/details/synchronous_factory.h
index e1e42268..e1e42268 100644
--- a/NorthstarDLL/include/spdlog/details/synchronous_factory.h
+++ b/include/spdlog/details/synchronous_factory.h
diff --git a/NorthstarDLL/include/spdlog/details/tcp_client-windows.h b/include/spdlog/details/tcp_client-windows.h
index 7ee72927..7ee72927 100644
--- a/NorthstarDLL/include/spdlog/details/tcp_client-windows.h
+++ b/include/spdlog/details/tcp_client-windows.h
diff --git a/NorthstarDLL/include/spdlog/details/tcp_client.h b/include/spdlog/details/tcp_client.h
index 9f3bb99e..9f3bb99e 100644
--- a/NorthstarDLL/include/spdlog/details/tcp_client.h
+++ b/include/spdlog/details/tcp_client.h
diff --git a/NorthstarDLL/include/spdlog/details/thread_pool-inl.h b/include/spdlog/details/thread_pool-inl.h
index c1df4361..c1df4361 100644
--- a/NorthstarDLL/include/spdlog/details/thread_pool-inl.h
+++ b/include/spdlog/details/thread_pool-inl.h
diff --git a/NorthstarDLL/include/spdlog/details/thread_pool.h b/include/spdlog/details/thread_pool.h
index 61e25252..61e25252 100644
--- a/NorthstarDLL/include/spdlog/details/thread_pool.h
+++ b/include/spdlog/details/thread_pool.h
diff --git a/NorthstarDLL/include/spdlog/details/windows_include.h b/include/spdlog/details/windows_include.h
index 6a2f14f9..6a2f14f9 100644
--- a/NorthstarDLL/include/spdlog/details/windows_include.h
+++ b/include/spdlog/details/windows_include.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bin_to_hex.h b/include/spdlog/fmt/bin_to_hex.h
index 1e2b054b..1e2b054b 100644
--- a/NorthstarDLL/include/spdlog/fmt/bin_to_hex.h
+++ b/include/spdlog/fmt/bin_to_hex.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/LICENSE.rst b/include/spdlog/fmt/bundled/LICENSE.rst
index f0ec3db4..f0ec3db4 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/LICENSE.rst
+++ b/include/spdlog/fmt/bundled/LICENSE.rst
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/chrono.h b/include/spdlog/fmt/bundled/chrono.h
index bdfe2aa0..bdfe2aa0 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/chrono.h
+++ b/include/spdlog/fmt/bundled/chrono.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/color.h b/include/spdlog/fmt/bundled/color.h
index 94e3419d..94e3419d 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/color.h
+++ b/include/spdlog/fmt/bundled/color.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/compile.h b/include/spdlog/fmt/bundled/compile.h
index 3a33b020..3a33b020 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/compile.h
+++ b/include/spdlog/fmt/bundled/compile.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/core.h b/include/spdlog/fmt/bundled/core.h
index 0a81e0cc..0a81e0cc 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/core.h
+++ b/include/spdlog/fmt/bundled/core.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/format-inl.h b/include/spdlog/fmt/bundled/format-inl.h
index 8f2fe735..8f2fe735 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/format-inl.h
+++ b/include/spdlog/fmt/bundled/format-inl.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/format.h b/include/spdlog/fmt/bundled/format.h
index 1a037b02..1a037b02 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/format.h
+++ b/include/spdlog/fmt/bundled/format.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/locale.h b/include/spdlog/fmt/bundled/locale.h
index 7301bf92..7301bf92 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/locale.h
+++ b/include/spdlog/fmt/bundled/locale.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/os.h b/include/spdlog/fmt/bundled/os.h
index d44ea0c9..d44ea0c9 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/os.h
+++ b/include/spdlog/fmt/bundled/os.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/ostream.h b/include/spdlog/fmt/bundled/ostream.h
index 29c58ec1..29c58ec1 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/ostream.h
+++ b/include/spdlog/fmt/bundled/ostream.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/posix.h b/include/spdlog/fmt/bundled/posix.h
index da19e9d5..da19e9d5 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/posix.h
+++ b/include/spdlog/fmt/bundled/posix.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/printf.h b/include/spdlog/fmt/bundled/printf.h
index 8c28ac23..8c28ac23 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/printf.h
+++ b/include/spdlog/fmt/bundled/printf.h
diff --git a/NorthstarDLL/include/spdlog/fmt/bundled/ranges.h b/include/spdlog/fmt/bundled/ranges.h
index 632f0494..632f0494 100644
--- a/NorthstarDLL/include/spdlog/fmt/bundled/ranges.h
+++ b/include/spdlog/fmt/bundled/ranges.h
diff --git a/NorthstarDLL/include/spdlog/fmt/chrono.h b/include/spdlog/fmt/chrono.h
index e1fb7a06..e1fb7a06 100644
--- a/NorthstarDLL/include/spdlog/fmt/chrono.h
+++ b/include/spdlog/fmt/chrono.h
diff --git a/NorthstarDLL/include/spdlog/fmt/fmt.h b/include/spdlog/fmt/fmt.h
index ec10ac33..ec10ac33 100644
--- a/NorthstarDLL/include/spdlog/fmt/fmt.h
+++ b/include/spdlog/fmt/fmt.h
diff --git a/NorthstarDLL/include/spdlog/fmt/ostr.h b/include/spdlog/fmt/ostr.h
index f82eb679..f82eb679 100644
--- a/NorthstarDLL/include/spdlog/fmt/ostr.h
+++ b/include/spdlog/fmt/ostr.h
diff --git a/NorthstarDLL/include/spdlog/formatter.h b/include/spdlog/formatter.h
index 5086fb21..5086fb21 100644
--- a/NorthstarDLL/include/spdlog/formatter.h
+++ b/include/spdlog/formatter.h
diff --git a/NorthstarDLL/include/spdlog/fwd.h b/include/spdlog/fwd.h
index cc05ddd4..cc05ddd4 100644
--- a/NorthstarDLL/include/spdlog/fwd.h
+++ b/include/spdlog/fwd.h
diff --git a/NorthstarDLL/include/spdlog/logger-inl.h b/include/spdlog/logger-inl.h
index d01c08da..d01c08da 100644
--- a/NorthstarDLL/include/spdlog/logger-inl.h
+++ b/include/spdlog/logger-inl.h
diff --git a/NorthstarDLL/include/spdlog/logger.h b/include/spdlog/logger.h
index a34c5221..a34c5221 100644
--- a/NorthstarDLL/include/spdlog/logger.h
+++ b/include/spdlog/logger.h
diff --git a/NorthstarDLL/include/spdlog/pattern_formatter-inl.h b/include/spdlog/pattern_formatter-inl.h
index 54346e1e..54346e1e 100644
--- a/NorthstarDLL/include/spdlog/pattern_formatter-inl.h
+++ b/include/spdlog/pattern_formatter-inl.h
diff --git a/NorthstarDLL/include/spdlog/pattern_formatter.h b/include/spdlog/pattern_formatter.h
index bc13ae10..bc13ae10 100644
--- a/NorthstarDLL/include/spdlog/pattern_formatter.h
+++ b/include/spdlog/pattern_formatter.h
diff --git a/NorthstarDLL/include/spdlog/sinks/android_sink.h b/include/spdlog/sinks/android_sink.h
index 659beabb..659beabb 100644
--- a/NorthstarDLL/include/spdlog/sinks/android_sink.h
+++ b/include/spdlog/sinks/android_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/ansicolor_sink-inl.h b/include/spdlog/sinks/ansicolor_sink-inl.h
index 61c0a719..61c0a719 100644
--- a/NorthstarDLL/include/spdlog/sinks/ansicolor_sink-inl.h
+++ b/include/spdlog/sinks/ansicolor_sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/ansicolor_sink.h b/include/spdlog/sinks/ansicolor_sink.h
index 4438f706..4438f706 100644
--- a/NorthstarDLL/include/spdlog/sinks/ansicolor_sink.h
+++ b/include/spdlog/sinks/ansicolor_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/base_sink-inl.h b/include/spdlog/sinks/base_sink-inl.h
index b15fb0e6..b15fb0e6 100644
--- a/NorthstarDLL/include/spdlog/sinks/base_sink-inl.h
+++ b/include/spdlog/sinks/base_sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/base_sink.h b/include/spdlog/sinks/base_sink.h
index bf5072f8..bf5072f8 100644
--- a/NorthstarDLL/include/spdlog/sinks/base_sink.h
+++ b/include/spdlog/sinks/base_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/basic_file_sink-inl.h b/include/spdlog/sinks/basic_file_sink-inl.h
index 1260d15c..1260d15c 100644
--- a/NorthstarDLL/include/spdlog/sinks/basic_file_sink-inl.h
+++ b/include/spdlog/sinks/basic_file_sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/basic_file_sink.h b/include/spdlog/sinks/basic_file_sink.h
index 4a742624..4a742624 100644
--- a/NorthstarDLL/include/spdlog/sinks/basic_file_sink.h
+++ b/include/spdlog/sinks/basic_file_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/daily_file_sink.h b/include/spdlog/sinks/daily_file_sink.h
index 16be821a..16be821a 100644
--- a/NorthstarDLL/include/spdlog/sinks/daily_file_sink.h
+++ b/include/spdlog/sinks/daily_file_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/dist_sink.h b/include/spdlog/sinks/dist_sink.h
index 8fccb4ee..8fccb4ee 100644
--- a/NorthstarDLL/include/spdlog/sinks/dist_sink.h
+++ b/include/spdlog/sinks/dist_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/dup_filter_sink.h b/include/spdlog/sinks/dup_filter_sink.h
index c9a08d68..c9a08d68 100644
--- a/NorthstarDLL/include/spdlog/sinks/dup_filter_sink.h
+++ b/include/spdlog/sinks/dup_filter_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/hourly_file_sink.h b/include/spdlog/sinks/hourly_file_sink.h
index f5e34366..f5e34366 100644
--- a/NorthstarDLL/include/spdlog/sinks/hourly_file_sink.h
+++ b/include/spdlog/sinks/hourly_file_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/msvc_sink.h b/include/spdlog/sinks/msvc_sink.h
index 8fec428d..8fec428d 100644
--- a/NorthstarDLL/include/spdlog/sinks/msvc_sink.h
+++ b/include/spdlog/sinks/msvc_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/null_sink.h b/include/spdlog/sinks/null_sink.h
index eb832801..eb832801 100644
--- a/NorthstarDLL/include/spdlog/sinks/null_sink.h
+++ b/include/spdlog/sinks/null_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/ostream_sink.h b/include/spdlog/sinks/ostream_sink.h
index 95c1e962..95c1e962 100644
--- a/NorthstarDLL/include/spdlog/sinks/ostream_sink.h
+++ b/include/spdlog/sinks/ostream_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/ringbuffer_sink.h b/include/spdlog/sinks/ringbuffer_sink.h
index 1ee3f691..1ee3f691 100644
--- a/NorthstarDLL/include/spdlog/sinks/ringbuffer_sink.h
+++ b/include/spdlog/sinks/ringbuffer_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/rotating_file_sink-inl.h b/include/spdlog/sinks/rotating_file_sink-inl.h
index d715ebf3..d715ebf3 100644
--- a/NorthstarDLL/include/spdlog/sinks/rotating_file_sink-inl.h
+++ b/include/spdlog/sinks/rotating_file_sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/rotating_file_sink.h b/include/spdlog/sinks/rotating_file_sink.h
index e1e85a7d..e1e85a7d 100644
--- a/NorthstarDLL/include/spdlog/sinks/rotating_file_sink.h
+++ b/include/spdlog/sinks/rotating_file_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/sink-inl.h b/include/spdlog/sinks/sink-inl.h
index a8dd6a6c..a8dd6a6c 100644
--- a/NorthstarDLL/include/spdlog/sinks/sink-inl.h
+++ b/include/spdlog/sinks/sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/sink.h b/include/spdlog/sinks/sink.h
index be99744d..be99744d 100644
--- a/NorthstarDLL/include/spdlog/sinks/sink.h
+++ b/include/spdlog/sinks/sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/stdout_color_sinks-inl.h b/include/spdlog/sinks/stdout_color_sinks-inl.h
index 935f1ccc..935f1ccc 100644
--- a/NorthstarDLL/include/spdlog/sinks/stdout_color_sinks-inl.h
+++ b/include/spdlog/sinks/stdout_color_sinks-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/stdout_color_sinks.h b/include/spdlog/sinks/stdout_color_sinks.h
index e67aa91b..e67aa91b 100644
--- a/NorthstarDLL/include/spdlog/sinks/stdout_color_sinks.h
+++ b/include/spdlog/sinks/stdout_color_sinks.h
diff --git a/NorthstarDLL/include/spdlog/sinks/stdout_sinks-inl.h b/include/spdlog/sinks/stdout_sinks-inl.h
index 25192607..25192607 100644
--- a/NorthstarDLL/include/spdlog/sinks/stdout_sinks-inl.h
+++ b/include/spdlog/sinks/stdout_sinks-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/stdout_sinks.h b/include/spdlog/sinks/stdout_sinks.h
index 40688a46..40688a46 100644
--- a/NorthstarDLL/include/spdlog/sinks/stdout_sinks.h
+++ b/include/spdlog/sinks/stdout_sinks.h
diff --git a/NorthstarDLL/include/spdlog/sinks/syslog_sink.h b/include/spdlog/sinks/syslog_sink.h
index 7c38fcb5..7c38fcb5 100644
--- a/NorthstarDLL/include/spdlog/sinks/syslog_sink.h
+++ b/include/spdlog/sinks/syslog_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/systemd_sink.h b/include/spdlog/sinks/systemd_sink.h
index d23824b8..d23824b8 100644
--- a/NorthstarDLL/include/spdlog/sinks/systemd_sink.h
+++ b/include/spdlog/sinks/systemd_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/tcp_sink.h b/include/spdlog/sinks/tcp_sink.h
index 9dd9e51d..9dd9e51d 100644
--- a/NorthstarDLL/include/spdlog/sinks/tcp_sink.h
+++ b/include/spdlog/sinks/tcp_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/win_eventlog_sink.h b/include/spdlog/sinks/win_eventlog_sink.h
index 68170dd9..68170dd9 100644
--- a/NorthstarDLL/include/spdlog/sinks/win_eventlog_sink.h
+++ b/include/spdlog/sinks/win_eventlog_sink.h
diff --git a/NorthstarDLL/include/spdlog/sinks/wincolor_sink-inl.h b/include/spdlog/sinks/wincolor_sink-inl.h
index e2676d3c..e2676d3c 100644
--- a/NorthstarDLL/include/spdlog/sinks/wincolor_sink-inl.h
+++ b/include/spdlog/sinks/wincolor_sink-inl.h
diff --git a/NorthstarDLL/include/spdlog/sinks/wincolor_sink.h b/include/spdlog/sinks/wincolor_sink.h
index a82f1b24..a82f1b24 100644
--- a/NorthstarDLL/include/spdlog/sinks/wincolor_sink.h
+++ b/include/spdlog/sinks/wincolor_sink.h
diff --git a/NorthstarDLL/include/spdlog/spdlog-inl.h b/include/spdlog/spdlog-inl.h
index 96e09f59..96e09f59 100644
--- a/NorthstarDLL/include/spdlog/spdlog-inl.h
+++ b/include/spdlog/spdlog-inl.h
diff --git a/NorthstarDLL/include/spdlog/spdlog.h b/include/spdlog/spdlog.h
index bb130d94..bb130d94 100644
--- a/NorthstarDLL/include/spdlog/spdlog.h
+++ b/include/spdlog/spdlog.h
diff --git a/NorthstarDLL/include/spdlog/stopwatch.h b/include/spdlog/stopwatch.h
index bb976b19..bb976b19 100644
--- a/NorthstarDLL/include/spdlog/stopwatch.h
+++ b/include/spdlog/stopwatch.h
diff --git a/NorthstarDLL/include/spdlog/tweakme.h b/include/spdlog/tweakme.h
index 31e417ab..31e417ab 100644
--- a/NorthstarDLL/include/spdlog/tweakme.h
+++ b/include/spdlog/tweakme.h
diff --git a/NorthstarDLL/include/spdlog/version.h b/include/spdlog/version.h
index 828f78cb..828f78cb 100644
--- a/NorthstarDLL/include/spdlog/version.h
+++ b/include/spdlog/version.h
diff --git a/loader_launcher_proxy/dllmain.cpp b/loader_launcher_proxy/dllmain.cpp
deleted file mode 100644
index 06abb7b2..00000000
--- a/loader_launcher_proxy/dllmain.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-#include "pch.h"
-#include <stdio.h>
-#include <string>
-#include <system_error>
-#include <shlwapi.h>
-#include <sstream>
-#include <fstream>
-#include <filesystem>
-
-HMODULE hLauncherModule;
-HMODULE hHookModule;
-HMODULE hTier0Module;
-
-using CreateInterfaceFn = void* (*)(const char* pName, int* pReturnCode);
-
-// does not seem to ever be used
-extern "C" __declspec(dllexport) void* __fastcall CreateInterface(const char* pName, int* pReturnCode)
-{
- // AppSystemCreateInterfaceFn(pName, pReturnCode);
- printf("external CreateInterface: name: %s\n", pName);
-
- static CreateInterfaceFn launcher_CreateInterface = (CreateInterfaceFn)GetProcAddress(hLauncherModule, "CreateInterface");
- auto res = launcher_CreateInterface(pName, pReturnCode);
-
- printf("external CreateInterface: return code: %p\n", res);
- return res;
-}
-
-bool GetExePathWide(wchar_t* dest, DWORD destSize)
-{
- if (!dest)
- return NULL;
- if (destSize < MAX_PATH)
- return NULL;
-
- DWORD length = GetModuleFileNameW(NULL, dest, destSize);
- return length && PathRemoveFileSpecW(dest);
-}
-
-FARPROC GetLauncherMain()
-{
- static FARPROC Launcher_LauncherMain;
- if (!Launcher_LauncherMain)
- Launcher_LauncherMain = GetProcAddress(hLauncherModule, "LauncherMain");
- return Launcher_LauncherMain;
-}
-
-void LibraryLoadError(DWORD dwMessageId, const wchar_t* libName, const wchar_t* location)
-{
- char text[4096];
- std::string message = std::system_category().message(dwMessageId);
- sprintf_s(text, "Failed to load the %ls at \"%ls\" (%lu):\n\n%hs", libName, location, dwMessageId, message.c_str());
- if (dwMessageId == 126 && std::filesystem::exists(location))
- {
- sprintf_s(
- text,
- "%s\n\nThe file at the specified location DOES exist, so this error indicates that one of its *dependencies* failed to be "
- "found.",
- text);
- }
- MessageBoxA(GetForegroundWindow(), text, "Northstar Launcher Proxy Error", 0);
-}
-
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
-{
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
-}
-
-wchar_t exePath[4096];
-wchar_t dllPath[4096];
-
-bool ShouldLoadNorthstar()
-{
- bool loadNorthstar = !strstr(GetCommandLineA(), "-vanilla");
-
- if (!loadNorthstar)
- return loadNorthstar;
-
- auto runNorthstarFile = std::ifstream("run_northstar.txt");
- if (runNorthstarFile)
- {
- std::stringstream runNorthstarFileBuffer;
- runNorthstarFileBuffer << runNorthstarFile.rdbuf();
- runNorthstarFile.close();
- if (runNorthstarFileBuffer.str().starts_with("0"))
- loadNorthstar = false;
- }
- return loadNorthstar;
-}
-
-bool LoadNorthstar()
-{
- FARPROC Hook_Init = nullptr;
- {
- swprintf_s(dllPath, L"%s\\Northstar.dll", exePath);
- hHookModule = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
- if (hHookModule)
- Hook_Init = GetProcAddress(hHookModule, "InitialiseNorthstar");
- if (!hHookModule || Hook_Init == nullptr)
- {
- LibraryLoadError(GetLastError(), L"Northstar.dll", dllPath);
- return false;
- }
- }
-
- ((bool (*)())Hook_Init)();
- return true;
-}
-
-extern "C" __declspec(dllexport) int LauncherMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
-{
- {
- if (!GetExePathWide(exePath, 4096))
- {
- MessageBoxA(
- GetForegroundWindow(),
- "Failed getting game directory.\nThe game cannot continue and has to exit.",
- "Northstar Launcher Proxy Error",
- 0);
- return 1;
- }
-
- SetCurrentDirectoryW(exePath);
-
- bool loadNorthstar = ShouldLoadNorthstar();
-
- if (loadNorthstar)
- {
- swprintf_s(dllPath, L"%s\\bin\\x64_retail\\tier0.dll", exePath);
- hTier0Module = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
- if (!hTier0Module)
- {
- LibraryLoadError(GetLastError(), L"tier0.dll", dllPath);
- return 1;
- }
-
- if (!LoadNorthstar())
- return 1;
- }
- // else printf("\n\n WILL !!!NOT!!! LOAD NORTHSTAR\n\n");
-
- swprintf_s(dllPath, L"%s\\bin\\x64_retail\\launcher.org.dll", exePath);
- hLauncherModule = LoadLibraryExW(dllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
- if (!hLauncherModule)
- {
- LibraryLoadError(GetLastError(), L"launcher.org.dll", dllPath);
- return 1;
- }
- }
-
- auto LauncherMain = GetLauncherMain();
- if (!LauncherMain)
- MessageBoxA(
- GetForegroundWindow(),
- "Failed loading launcher.org.dll.\nThe game cannot continue and has to exit.",
- "Northstar Launcher Proxy Error",
- 0);
- // auto result = ((__int64(__fastcall*)())LauncherMain)();
- // auto result = ((signed __int64(__fastcall*)(__int64))LauncherMain)(0i64);
- return ((int(__fastcall*)(HINSTANCE, HINSTANCE, LPSTR, int))LauncherMain)(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
-}
-
-// doubt that will help us here (in launcher.dll) though
-extern "C"
-{
- __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001;
- __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
-}
diff --git a/loader_launcher_proxy/framework.h b/loader_launcher_proxy/framework.h
deleted file mode 100644
index 1800e436..00000000
--- a/loader_launcher_proxy/framework.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-#define WIN32_EXTRA_LEAN
-#define VC_EXTRALEAN
-// Windows Header Files
-#include <windows.h>
diff --git a/loader_launcher_proxy/loader_launcher_proxy.vcxproj b/loader_launcher_proxy/loader_launcher_proxy.vcxproj
deleted file mode 100644
index b62ac63f..00000000
--- a/loader_launcher_proxy/loader_launcher_proxy.vcxproj
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <VCProjectVersion>16.0</VCProjectVersion>
- <Keyword>Win32Proj</Keyword>
- <ProjectGuid>{f65c322d-66df-4af1-b650-70221de334c0}</ProjectGuid>
- <RootNamespace>loaderlauncherproxy</RootNamespace>
- <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="Shared">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <TargetName>launcher</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <TargetName>launcher</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>_DEBUG;LOADERLAUNCHERPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <LanguageStandard>stdcpp20</LanguageStandard>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableUAC>false</EnableUAC>
- <AdditionalDependencies>shlwapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>NDEBUG;LOADERLAUNCHERPROXY_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <LanguageStandard>stdcpp20</LanguageStandard>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableUAC>false</EnableUAC>
- <AdditionalOptions>/HIGHENTROPYVA:NO %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>shlwapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="framework.h" />
- <ClInclude Include="pch.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dllmain.cpp" />
- <ClCompile Include="pch.cpp">
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
- </ClCompile>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/loader_launcher_proxy/loader_launcher_proxy.vcxproj.filters b/loader_launcher_proxy/loader_launcher_proxy.vcxproj.filters
deleted file mode 100644
index 4bf52578..00000000
--- a/loader_launcher_proxy/loader_launcher_proxy.vcxproj.filters
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="framework.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="pch.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="dllmain.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="pch.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project>
diff --git a/loader_launcher_proxy/pch.cpp b/loader_launcher_proxy/pch.cpp
deleted file mode 100644
index 64b7eef6..00000000
--- a/loader_launcher_proxy/pch.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-// pch.cpp: source file corresponding to the pre-compiled header
-
-#include "pch.h"
-
-// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
diff --git a/loader_launcher_proxy/pch.h b/loader_launcher_proxy/pch.h
deleted file mode 100644
index cc757129..00000000
--- a/loader_launcher_proxy/pch.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// pch.h: This is a precompiled header file.
-// Files listed below are compiled only once, improving build performance for future builds.
-// This also affects IntelliSense performance, including code completion and many code browsing features.
-// However, files listed here are ALL re-compiled if any one of them is updated between builds.
-// Do not add files here that you will be updating frequently as this negates the performance advantage.
-
-#ifndef PCH_H
-#define PCH_H
-
-// add headers that you want to pre-compile here
-#include "framework.h"
-
-#endif // PCH_H