+
+// Proxy module stuff
+#include "Proxy.h"
+#include "ProxyClient.h"
+#include "DemoClient.h"
+#include "FakeClient.h"
+
+#include "Master.h"
+#include "Status.h"
diff --git a/rehlds/HLTV/Proxy/src/public_amalgamation.cpp b/rehlds/HLTV/Proxy/src/public_amalgamation.cpp
new file mode 100644
index 0000000..1fc308c
--- /dev/null
+++ b/rehlds/HLTV/Proxy/src/public_amalgamation.cpp
@@ -0,0 +1,3 @@
+#include "precompiled.h"
+
+#include "interface.cpp"
diff --git a/rehlds/HLTV/README.md b/rehlds/HLTV/README.md
new file mode 100644
index 0000000..c774022
--- /dev/null
+++ b/rehlds/HLTV/README.md
@@ -0,0 +1,333 @@
+## Half-Life TV for Goldsrc based games
+
+### Building
+On Windows:
+gradlew --max-workers=1 clean rehlds/HLTV:build
+
+On Linux (ICC):
+./gradlew --max-workers=1 clean rehlds/HLTV:build
+
+On Linux (GCC):
+./gradlew --max-workers=1 -PuseGcc clean rehlds/HLTV:build
+
+Compiled binaries will be placed in each project rehlds/HLTV/**/binaries/ directory
+
+### Overview
+Half-Life TV offers the ability to have an unlimited number of spectators watching online games.
+They can follow the game just like they would as a spectator on the game server.
+Spectators are invisible to players and can't interact with the running game in any way.
+Each spectator can choose any view position or choose any player to track individually.
+
+To have the most enjoyable spectating experience, spectators can enable the Auto-Director mode.
+Then the camera is changed automatically so that only interesting scenes are shown from a suitable viewpoint.
+Thus the spectator can lean back and won't miss any relevant action.
+All the time, spectators may communicate between each other using the standard HL chat system.
+
+Most popular Half-Life MODs are supported like `Counter-Strike`, `Team Fortress Classic`, `Day of Defeat` and many others.
+HLTV providers have full control over their HLTV system, may change number of spectator slots, add text messages or change the HLTV logo.
+
+The broadcast is delayed by a customizable amount of time, by default 30 seconds. This ensures that the playing teams can't use
+HLTV to get any usable information about their opponents. Providing a single HLTV server for up to 100 spectators is an easy task
+and doesn't need any changes in default configurations.
+
+Installing a larger HLTV network for thousands of spectators needs some more planning time and experience about required bandwidth
+and CPU/RAM demands (see [Larger Broadcasts](#larger-broadcasts)).
+
+### Spectating Games
+To watch a HLTV game, start Half-Life, open the Multiplayer menu and select 'Find Servers'.
+To search for currently broadcasted games, choose the 'Spectate' section and hit 'Refresh All'.
+After the list has been updated, double click on the server you want to spectate and you'll be connected.
+
+If computer game leagues announce important matches to be broadcasted via HLTV, they often provide IP:Port addresses of their HLTV servers.
+Instead of searching them via the server browser, you can also go to the 'Favorites' folder and add the HLTV address to your server
+list by pressing the right mouse button. Otherwise, you can also open the console window and use the 'connect' command to spectate a certain game.
+
+For example:
+
+connect 192.168.130.42:27020
+
+
+The default HLTV port number is 27020, but may be changed.
+It should always be included in the given address, since commonly this port number is different from the default port number 27015.
+
+You can spectate the game in different modes: `Chase Cam`, `First Person`, `Free Look`, `Map Overview` and `Map Chase`.
+The easiest way to change modes is to press the JUMP key (default `SPACE`). Alternatively you can use the spectator menu, which can be enabled by pressing the `DUCK` key (default `CTRL`).
+Here you can customize your personal view style and enable the Auto-Director Mode. Press `USE` (default `E`) to cycle through the different `Picture-In-Picture` modes.
+
+The following HL console commands can be used to customize spectator settings:
+
+| Console commands | Default | Min | Max | Description |
+| :---------------------------- | :-----: | :-: | :----------: | :--------------------------------------------- |
+| spec_autodirector | 1 | 0 | 1 | Turns Auto Director mode on or off |
+| spec_drawcone | 1 | 0 | 1 | Shows your view cone in map overview mode |
+| spec_drawnames | 1 | 0 | 1 | Shows player names under their icons |
+| spec_drawstatus | 1 | 0 | 1 | Shows game information (time, map etc) |
+| spec_pip | 0 | 0 | 1 | Turns Picture-In-Picture mode on or off |
+| spec_mode | 1 | 1 | 6 | Set the main view mode, seconds parameter is the PIP mode.
Not all combinations are valid.
Main modes are:
`1` Locked Chase
`2` Free Chase
`3` Free Roaming
`4` First Person
`5` Map Overview
`6` Chase Map Overview
PIP modes are:
`0` PIP off
`1` Free Chase
`2` First Person
`3` Map Overview
`4` Chase Map Overview
|
+| spec_menu | - | - | - | Opens the spectator menu |
+| spec_help | - | - | - | Shows a help screen |
+
+### HLTV Basics
+The core of the HLTV broadcasting system is the HLTV server, also called HLTV proxy.
+The HLTV executable is a console application that works much like a HL dedicated server.
+To broadcast a game running on a certain game server, the HLTV proxy connects to this server just like a normal player.
+Spectators connect themselves to the HLTV proxy and the game data stream is relayed through the HLTV proxy to all connected spectator clients.
+
+The next figure shows a basic HLTV configuration:
+
+HL Game Server -> HLTV Proxy => Spectator Clients
+
+
+The number of clients that one HLTV proxy can serve depends on available hardware and network resources.
+Theoretically, a single proxy can hold a maximum of 255 spectator clients.
+But be careful, even a proxy with 100 spectator clients needs a full 2 MBit line to run smoothly.
+If more spectator slots are needed, the required network load must be distributed over multiple HLTV proxies.
+
+The first HLTV proxy connected to the game server is called the Master proxy, which sets the general broadcast settings like
+game stream delay or packet rate. All other HLTV proxies linked to this proxy are the Relay proxies. Their total number and
+link order is not restricted, they may form a chain or tree of proxies.
+Most important is that their location is in different networks to ensure a balanced bandwidth usage.
+
+
+ -> HLTV Relay Proxy 1 => Spectator Clients
+HL Game Server -> HLTV Master -> HLTV Relay Proxy 2 => Spectator Clients
+ -> HLTV Relay Proxy 3 => Spectator Clients
+
+
+### Broadcasting Games
+Let's assume the most simple configuration, a single HLTV proxy in a LAN environment.
+This is a very common situation and the default HLTV settings doesn't need to be changed.
+Choose a dedicated computer as your HLTV proxy and install the Half-Life Dedicated Server, which also includes all files needed by a HLTV proxy.
+This isn't needed if Half-Life is already installed.
+
+Start the HLTV application (HL icon with a small camera) and the HLTV console will open, showing some initialization messages
+(if that takes a long time, HLTV maybe can't resolve some IP addresses, then start HLTV with the '-nodns' command line option).
+Then the console is ready to accept your commands, here we use '>' as the console prompt.
+
+First give your HLTV proxy an unique name:
+
+>name "My HLTV Proxy"
+
+
+Let's assume you have started the proxy on host `192.168.1.2` and the game server,
+you want to spectate is running on host `192.168.1.3:27015`.
+
+Then connect the HLTV proxy to this game server by typing:
+
+>connect 192.168.1.3:27015
+
+
+After a few seconds HLTV will be fully connected and ready to serve spectator clients.
+Use the 'status' command to verify that the HLTV proxy has connected properly:
+
+>status
+--- HLTV Status ---
+Online 00:23, FPS 79.0, Version 2435 (Win32)
+Local IP 192.168.1.2:27020, Network In 1.7, Out 1.0, Loss 0.00
+Local Slots 128, Spectators 0, Proxies 0
+Total Slots 128, Spectators 0, Proxies 1
+Source Game Server 192.168.1.3:27015, Delay 30
+Server Name "Half-Life dedicated server"
+Time 01:35, Game "valve", Map "maps/rapidcore.bsp", Players 1
+
+
+The 'status' command shows your own IP address, HLTV system cycles per second, total incoming and outgoing network traffic in `kB/sec`.
+Local slot and spectator numbers your HLTV proxy is providing, total numbers are the sum of all slots & spectators on all proxies broadcasting this game.
+The game source can be a game server, another HLTV proxy or a demo file.
+
+### Recording HLTV demos
+HLTV demo files are like normal recorded games in Half-Life, but you can choose any view point,
+view mode or player to chase during replay. To play back a HLTV demo, a HLTV proxy is not needed.
+Just start Half-Life and type in console `playdemo ` or `viewdemo `
+(viewdemo offers more options during playback like fast forward/backward, pause & slowmotion).
+To record a HLTV demo, connect the proxy to a game server (see [Broadcasting Games](#broadcasting-games)) and type in console:
+
+
+>record
+
+
+All games will be recorded after issuing this command. The demo files will be saved in the current Mod directory, e.g. `\cstrike`.
+All demo files have a special naming convention `--