diff --git a/GNUmakefile b/GNUmakefile
index b8350ca9..673074e2 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -189,6 +189,7 @@ help:
@echo "Useful CFLAGS to save memory when running $(BASE_PROGRAM_NAME) on very small embedded devices (finer control than FEATURES=)"
@echo " -DNO_EXTENDED_PRODUCT_LIST Don't compile the detailed product list."
@echo " -DNO_BASIC_PRODUCT_LIST Don't compile the basic product list."
+ @echo " -DNO_STRICT_MODES Don't support enhanced emulator detection prevention."
@echo " -DNO_VERBOSE_LOG Don't support verbose logging. Removes -v option."
@echo " -DNO_LOG Don't add support for logging. Implies -DNO_VERBOSE_LOG -DNO_EXTENDED_PRODUCT_LIST and -DNO_BASIC_PRODUCT_LIST."
@echo " -DNO_RANDOM_EPID Don't support random ePIDs."
@@ -199,6 +200,8 @@ help:
@echo " -DNO_CUSTOM_INTERVALS Don't support custom intervals for retry and refresh activation. Removes -A and -R options."
@echo " -DNO_FREEBIND Don't support binding to foreign IP addresses. Removes -F0 and -F1 options. Only affects FreeBSD and Linux."
@echo " -DNO_SOCKETS Don't support standalone operation. Requires an internet superserver to start $(BASE_PROGRAM_NAME)."
+ @echo " -DSIMPLE_SOCKETS Don't support listening on explicit IP addresses. Always listens on all IP addresses."
+ @echo " -DSIMPLE_RPC Don't support RPC with NDR64 and BTFN in $(BASE_PROGRAM_NAME) (but do in $(BASE_CLIENT_NAME)). Makes emulator detection easy."
@echo " -DNO_CL_PIDS Don't support specifying ePIDs and HwId from the command line in $(BASE_PROGRAM_NAME)."
@echo " -DNO_LIMIT Don't support limiting concurrent clients in $(BASE_PROGRAM_NAME)."
@echo " -DNO_SIGHUP Don't support SIGHUP handling in $(BASE_PROGRAM_NAME)."
diff --git a/VisualStudio/vlmcs/vlmcs.vcxproj b/VisualStudio/vlmcs/vlmcs.vcxproj
index 7a62e37b..7c510f05 100644
--- a/VisualStudio/vlmcs/vlmcs.vcxproj
+++ b/VisualStudio/vlmcs/vlmcs.vcxproj
@@ -177,6 +177,7 @@
falsefalse$(ExternalCompilerOptions) %(AdditionalOptions)
+ truetrue
diff --git a/VisualStudio/vlmcsd.sln b/VisualStudio/vlmcsd.sln
index 4c2ade7e..dcce7ec0 100755
--- a/VisualStudio/vlmcsd.sln
+++ b/VisualStudio/vlmcsd.sln
@@ -11,9 +11,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vlmcsdmulti-Windows", "vlmc
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libkms-Windows", "libkms\libkms.vcxproj", "{2A0FC04D-C3C0-43E2-8812-53AE901C5395}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vlmcsd-gcc5", "..\vlmcsd-linux-remote.vcxproj", "{CC2FBE0B-B9DF-4306-88A1-20706BBD2B0C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vlmcsd-gcc5", "..\src\vlmcsd-linux-remote.vcxproj", "{CC2FBE0B-B9DF-4306-88A1-20706BBD2B0C}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vlmcs-gcc5", "..\vlmcs-linux-remote.vcxproj", "{1ED83566-8AE1-4EE8-9B62-37188A7AC7CA}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vlmcs-gcc5", "..\src\vlmcs-linux-remote.vcxproj", "{1ED83566-8AE1-4EE8-9B62-37188A7AC7CA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/etc/vlmcsd.ini b/etc/vlmcsd.ini
index cb56f4fa..089e0052 100644
--- a/etc/vlmcsd.ini
+++ b/etc/vlmcsd.ini
@@ -82,6 +82,14 @@
# Command line: -v and -q
;LogVerbose = true
+# Whitelist known products
+# Command line: -K0, -K1, -K2, -K3
+;WhiteListingLevel = 0
+
+# Check that the client time is within +/- 4 hours of the system time
+# Command Line: -c0, -c1
+;CheckClientTime = false
+
# Set activation interval to 2 hours
# Command line: -A
;ActivationInterval = 2h
diff --git a/floppy/floppy144.vfd b/floppy/floppy144.vfd
index c5d591b5..73dd760c 100644
Binary files a/floppy/floppy144.vfd and b/floppy/floppy144.vfd differ
diff --git a/hotbird64-mass-build/make_dragonfly b/hotbird64-mass-build/make_dragonfly
index f2e3df7c..5ca86e17 100755
--- a/hotbird64-mass-build/make_dragonfly
+++ b/hotbird64-mass-build/make_dragonfly
@@ -19,7 +19,7 @@ CF45="-static-libgcc -pipe -fno-common -fno-exceptions -fno-stack-protector -fno
CFCLANG="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants"
LF="-Wl,-z,norelro -Wl,--hash-style=sysv -Wl,--build-id=none"
LFCLANG="-Wl,-z,norelro -Wl,--hash-style=sysv"
-export CC=gcc5
+export CC=gcc6
gmake $MAKEFLAGS MULTI_NAME=$BINDIR/vlmcsdmulti-DragonFly-x64 PROGRAM_NAME=$BINDIR/vlmcsd-DragonFly-x64 CLIENT_NAME=$BINDIR/vlmcs-DragonFly-x64 CFLAGS="$CF" LDFLAGS="$LF" allmulti
diff --git a/man/vlmcs.1 b/man/vlmcs.1
index 7ef8f938..5c81e301 100644
--- a/man/vlmcs.1
+++ b/man/vlmcs.1
@@ -1,5 +1,5 @@
.mso www.tmac
-.TH VLMCS 1 "May 2016" "Hotbird64" "KMS Activation Manual"
+.TH VLMCS 1 "October 2016" "Hotbird64" "KMS Activation Manual"
.LO 1
.SH NAME
@@ -76,7 +76,7 @@ to specify applications that are not listed with \fB-x\fR. The
option is used as a shortcut for the most common applications.
.IP "\fB-K\fR \fIprotocol-version\fR"
-Force a specific version of the KMS protocol. Valid versions are 4.0, 5.0 and 6.0. The default is to select a suitable version according to the \fIapplication\fR selected. You may use \fB-K\fR to send an incorrect protocol version to the KMS server and see how it behaves. Genuine KMS servers return HRESULT 0x8007000D if the KMS protocol is not 4.0, 5.0 or 6.0. Emulators should do the same. When sending a request with an incorrect protocol number, vlmcs ignores the minor protocol number (e.g. sends a v4 request for version 4.1). If the major version number is less then 4, it sends a v4 request. If the major version is greater then 6, is sends a v6 request. In any case the \fIprotocol-version\fR as specified by \fB-K\fR is put in the version fields of the request.
+Force a specific version of the KMS protocol. Valid versions are 4.0, 5.0 and 6.0. The default is to select a suitable version according to the \fIapplication\fR selected. You may use \fB-K\fR to send an incorrect protocol version to the KMS server and see how it behaves. Genuine KMS servers return HRESULT 0x8007000D if the KMS protocol is not 4.0, 5.0 or 6.0. Emulators should do the same. When sending a request with an incorrect protocol number, vlmcs ignores the minor protocol number (e.g. sends a v4 request for version 4.1). If the major version number is less then 4, it sends a v4 request. If the major version is greater then 6, it sends a v6 request. In any case the \fIprotocol-version\fR as specified by \fB-K\fR is put in the version fields of the request.
.IP "\fB-4\fR, \fB-5\fR and \fB-6"
Force version 4, 5 or 6 of the KMS protocol. These options are actually shortcuts of \fB-K 4.0\fR, \fB-K 5.0\fR and \fB-K 6.0\fR.
diff --git a/man/vlmcs.1.dos.txt b/man/vlmcs.1.dos.txt
index dcd26b62..73874ea8 100644
--- a/man/vlmcs.1.dos.txt
+++ b/man/vlmcs.1.dos.txt
@@ -90,7 +90,7 @@ OPTIONS
same. When sending a request with an incorrect protocol number,
vlmcs ignores the minor protocol number (e.g. sends a v4 request
for version 4.1). If the major version number is less then 4, it
- sends a v4 request. If the major version is greater then 6, is
+ sends a v4 request. If the major version is greater then 6, it
sends a v6 request. In any case the protocol-version as speci‐
fied by -K is put in the version fields of the request.
@@ -323,4 +323,4 @@ SEE ALSO
-Hotbird64 May 2016 VLMCS(1)
+Hotbird64 October 2016 VLMCS(1)
diff --git a/man/vlmcs.1.html b/man/vlmcs.1.html
index afe1e6de..85dc5589 100644
--- a/man/vlmcs.1.html
+++ b/man/vlmcs.1.html
@@ -1,5 +1,5 @@
-
+
@@ -39,7 +39,7 @@
NAME
-
vlmcs − a
+
vlmcs - a
client for testing and/or charging KMS servers
SYNOPSIS
@@ -197,7 +197,7 @@
OPTIONS
number, vlmcs ignores the minor protocol number (e.g. sends
a v4 request for version 4.1). If the major version number
is less then 4, it sends a v4 request. If the major version
-is greater then 6, is sends a v6 request. In any case the
+is greater then 6, it sends a v6 request. In any case the
protocol-version as specified by -K is put in
the version fields of the request.
@@ -292,7 +292,7 @@
OPTIONS
Send requests requests
to the server. The default is to send at least one request
and enough subsequent requests that the server is fully
-charged afterwards for the application−guid you
+charged afterwards for the application-guid you
selected (explicitly with -a or implicitly by using
-l).
@@ -384,7 +384,7 @@
OPTIONS
to "overcharge" a Microsoft KMS server.
-
−t status
+
-t status
Reports a specific license
status to the KMS server. status is a number that can
diff --git a/man/vlmcs.1.pdf b/man/vlmcs.1.pdf
index ecf5c4c4..e9515aa6 100644
Binary files a/man/vlmcs.1.pdf and b/man/vlmcs.1.pdf differ
diff --git a/man/vlmcs.1.unix.txt b/man/vlmcs.1.unix.txt
index c4db060f..fc72b135 100644
--- a/man/vlmcs.1.unix.txt
+++ b/man/vlmcs.1.unix.txt
@@ -90,7 +90,7 @@ OPTIONS
same. When sending a request with an incorrect protocol number,
vlmcs ignores the minor protocol number (e.g. sends a v4 request
for version 4.1). If the major version number is less then 4, it
- sends a v4 request. If the major version is greater then 6, is
+ sends a v4 request. If the major version is greater then 6, it
sends a v6 request. In any case the protocol-version as speci‐
fied by -K is put in the version fields of the request.
@@ -323,4 +323,4 @@ SEE ALSO
-Hotbird64 May 2016 VLMCS(1)
+Hotbird64 October 2016 VLMCS(1)
diff --git a/man/vlmcsd-floppy.7.html b/man/vlmcsd-floppy.7.html
index 417ba441..2324cad5 100644
--- a/man/vlmcsd-floppy.7.html
+++ b/man/vlmcsd-floppy.7.html
@@ -1,5 +1,5 @@
-
+
@@ -42,9 +42,8 @@
NAME
-
floppy144.vfd
-− a bootable floppy disk with Linux and
-vlmcsd(8)
+
floppy144.vfd -
+a bootable floppy disk with Linux and vlmcsd(8)
DESCRIPTION
@@ -549,9 +548,9 @@
OPERATION
Logging into
the system
There are 5 local logins provided on /dev/tty2 to /dev/tty6.
-To switch to these logins, simply press ALT−F2 to
-ALT−F6. To return to the console on /dev/tty1, press
-ALT−F1. If inetd(8) is running you can also use
+To switch to these logins, simply press ALT-F2 to ALT-F6. To
+return to the console on /dev/tty1, press ALT-F1. If
+inetd(8) is running you can also use
telnet(1). This allows you use a terminal program
(e.g. putty) that can utilize your keyboard layout, can be
resized and has full UTF-8 support. The local terminals
@@ -571,11 +570,11 @@
OPERATION
The menu
system
-You’ll find a menu system on /dev/tty8 (press
-ALT−F8 to see it). It allows you performing some
-administrative tasks and to view various system information.
-It is mainly for users that do not have much experience with
-Unix commands.
+You’ll find a menu system on /dev/tty8 (press ALT-F8
+to see it). It allows you performing some administrative
+tasks and to view various system information. It is mainly
+for users that do not have much experience with Unix
+commands.
1) (Re)start vlmcsd
Starts or restarts
diff --git a/man/vlmcsd-floppy.7.pdf b/man/vlmcsd-floppy.7.pdf
index 34d2675a..f4197eb5 100644
Binary files a/man/vlmcsd-floppy.7.pdf and b/man/vlmcsd-floppy.7.pdf differ
diff --git a/man/vlmcsd.7.html b/man/vlmcsd.7.html
index 721af94a..dc5b2b1f 100644
--- a/man/vlmcsd.7.html
+++ b/man/vlmcsd.7.html
@@ -1,5 +1,5 @@
-
+
@@ -35,7 +35,7 @@
NAME
-
vlmcsd − a
+
vlmcsd - a
guide to KMS activation using vlmcsd
SYNOPSIS
@@ -169,34 +169,29 @@
DESCRIPTION
Windows. Here is a list:
-
TX9XD−98N7V−6WMQ6−BX7FG−H8Q99
+
TX9XD-98N7V-6WMQ6-BX7FG-H8Q99
- Windows 10 Home
-3KHY7−WNT83−DGQKR−F7HPR−844BM -
-Windows 10 Home N
-7HNRX−D7KGG−3K4RQ−4WPJ4−YTDFH -
-Windows 10 Home Single Language
-PVMJN−6DFY6−9CCP6−7BKTT−D3WVR -
-Windows 10 Home Country Specific
-789NJ−TQK6T−6XTH8−J39CJ−J8D3P -
-Windows 8.1 Professional with Media Center
-M9Q9P−WNJJT−6PXPY−DWX8H−6XWKK -
-Windows 8.1 Core
-7B9N3−D94CG−YTVHR−QBPX3−RJP64 -
-Windows 8.1 Core N
-BB6NG−PQ82V−VRDPW−8XVD2−V8P66 -
-Windows 8.1 Core Single Language
-NCTT7−2RGK8−WMHRF−RY7YQ−JTXG3 -
-Windows 8.1 Core Country Specific
-GNBB8−YVD74−QJHX6−27H4K−8QHDG -
-Windows 8 Professional with Media Center
-BN3D2−R7TKB−3YPBD−8DRP2−27GG4 -
-Windows 8 Core
-8N2M2−HWPGY−7PGT9−HGDD8−GVGGY -
-Windows 8 Core N
-2WN2H−YGCQR−KFX6K−CD6TF−84YXQ -
-Windows 8 Core Single Language
-4K36P−JN4VD−GDC6V−KDT89−DYFKP -
-Windows 8 Core Country Specific
+3KHY7-WNT83-DGQKR-F7HPR-844BM - Windows 10 Home N
+7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH - Windows 10 Home Single
+Language
+PVMJN-6DFY6-9CCP6-7BKTT-D3WVR - Windows 10 Home Country
+Specific
+789NJ-TQK6T-6XTH8-J39CJ-J8D3P - Windows 8.1 Professional
+with Media Center
+M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK - Windows 8.1 Core
+7B9N3-D94CG-YTVHR-QBPX3-RJP64 - Windows 8.1 Core N
+BB6NG-PQ82V-VRDPW-8XVD2-V8P66 - Windows 8.1 Core Single
+Language
+NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3 - Windows 8.1 Core Country
+Specific
+GNBB8-YVD74-QJHX6-27H4K-8QHDG - Windows 8 Professional with
+Media Center
+BN3D2-R7TKB-3YPBD-8DRP2-27GG4 - Windows 8 Core
+8N2M2-HWPGY-7PGT9-HGDD8-GVGGY - Windows 8 Core N
+2WN2H-YGCQR-KFX6K-CD6TF-84YXQ - Windows 8 Core Single
+Language
+4K36P-JN4VD-GDC6V-KDT89-DYFKP - Windows 8 Core Country
+Specific
The above keys
require activation renewal every 45 days (Win 8.1) or 30
@@ -240,9 +235,9 @@
Why
doesn’t Office accpet a GVLK?
@@ -306,7 +301,7 @@
DESCRIPTION
You may type
slmgr /ato
-−or−
+-or-
cscript ospp.vbs /act
at any time to
@@ -325,8 +320,8 @@
DESCRIPTION
Connecting to
127.0.0.1:1688 ... successful
-Sending activation request (KMS V4) 1 of 1 −>
-06401−00206−296−206344−03−5179−9600.0000−3432013
+Sending activation request (KMS V4) 1 of 1 ->
+06401-00206-296-206344-03-5179-9600.0000-3432013
If anything
goes wrong, you’ll see an error message. Next try
diff --git a/man/vlmcsd.7.pdf b/man/vlmcsd.7.pdf
index 3532e68c..e78deb44 100644
Binary files a/man/vlmcsd.7.pdf and b/man/vlmcsd.7.pdf differ
diff --git a/man/vlmcsd.8 b/man/vlmcsd.8
index 8a7749ba..d75cb1bc 100644
--- a/man/vlmcsd.8
+++ b/man/vlmcsd.8
@@ -1,5 +1,5 @@
.mso www.tmac
-.TH VLMCSD 8 "September 2016" "Hotbird64" "KMS Activation Manual"
+.TH VLMCSD 8 "October 2016" "Hotbird64" "KMS Activation Manual"
.LO 8
.SH NAME
@@ -184,6 +184,25 @@ for a list of valid \fILCID\fRs. Please note that some of them are not recognize
Most other KMS emulators use a fixed \fILCID\fR of 1033 (English - US). To achive the same behavior in vlmcsd use \fB-C 1033\fR.
+.IP "\fB-K0\fR, \fB-K1\fR, \fB-K2\fR and \fB-K3\fR"
+Sets the whitelisting level to determine which products vlmcsd activates or refuses. The default is \fB-K0\fR.
+
+.RS 12
+\fB-K0\fR: activate all products with an unknown, retail or beta/preview KMS ID.
+.br
+\fB-K1\fR: activate products with a retail or beta/preview KMS ID but refuse to activate products with an unknown KMS ID.
+.br
+\fB-K2\fR: activate products with an unknown KMS ID but refuse products with a retail or beta/preview KMS ID.
+.br
+\fB-K3\fR: activate only products with a known volume license RTM KMS ID and refuse all others.
+.RE
+
+.IP ""
+The SKU ID is not checked. Like a genuine KMS server vlmcsd activates a product that has a random or unknown SKU ID. If you select \fB-K1\fR or \fB-K3\fR, vlmcsd also checks the Application ID for correctness. If Microsoft introduces a new KMS ID for a new product, you cannot activate it if you used \fB-K1\fR or \fB-K3\fR until a new version of vlmcsd is available.
+
+.IP "\fB-c0\fR and \fB-c1\fR"
+\fB-c1\fR causes vlmcsd to check if the client time differs no more than four hours from the system time. \fB-c0\fR (the default) disables this check. \fB-c1\fR is useful to prevent emulator detection. A client that tries to detect an emulator could simply send two subsequent request with two time stamps that differ more than four hours from each other. If both requests succeed, the server is an emulator. If you specify \fB-c1\fR on a system with no reliable time source, activations will fail. It is ok to set the correct system time after you started vlmcsd.
+
.IP "\fB-R\fR \fIrenewal-interval\fR"
Instructs clients to renew activation every \fIrenewal-interval\fR. The \fIrenewal-interval\fR is a number optionally immediately followed by a letter indicating the unit. Valid unit letters are s (seconds), m (minutes), h (hours), d (days) and w (weeks). If you do not specify a letter, minutes is assumed.
@@ -274,8 +293,6 @@ Installs \fBvlmcsd\fR as a Windows service with low privileges and logs everythi
An ePID specified in an ini file must not contain spaces.
.SH INTENTIONAL BUGS
-vlmcsd activates non-VL (retail) and beta/preview versions of Windows.
-.br
vlmcsd always reports enough active clients to satisfy the N count policy of the request.
.SH AUTHOR
diff --git a/man/vlmcsd.8.dos.txt b/man/vlmcsd.8.dos.txt
index 02cd5787..241624dd 100644
--- a/man/vlmcsd.8.dos.txt
+++ b/man/vlmcsd.8.dos.txt
@@ -415,6 +415,40 @@ OPTIONS
US). To achive the same behavior in vlmcsd use -C 1033.
+ -K0, -K1, -K2 and -K3
+ Sets the whitelisting level to determine which products vlmcsd
+ activates or refuses. The default is -K0.
+
+ -K0: activate all products with an unknown, retail or
+ beta/preview KMS ID.
+ -K1: activate products with a retail or beta/preview KMS ID
+ but refuse to activate products with an unknown KMS ID.
+ -K2: activate products with an unknown KMS ID but refuse
+ products with a retail or beta/preview KMS ID.
+ -K3: activate only products with a known volume license RTM
+ KMS ID and refuse all others.
+
+
+ The SKU ID is not checked. Like a genuine KMS server vlmcsd
+ activates a product that has a random or unknown SKU ID. If you
+ select -K1 or -K3, vlmcsd also checks the Application ID for
+ correctness. If Microsoft introduces a new KMS ID for a new
+ product, you cannot activate it if you used -K1 or -K3 until a
+ new version of vlmcsd is available.
+
+
+ -c0 and -c1
+ -c1 causes vlmcsd to check if the client time differs no more
+ than four hours from the system time. -c0 (the default) disables
+ this check. -c1 is useful to prevent emulator detection. A
+ client that tries to detect an emulator could simply send two
+ subsequent request with two time stamps that differ more than
+ four hours from each other. If both requests succeed, the server
+ is an emulator. If you specify -c1 on a system with no reliable
+ time source, activations will fail. It is ok to set the correct
+ system time after you started vlmcsd.
+
+
-R renewal-interval
Instructs clients to renew activation every renewal-interval.
The renewal-interval is a number optionally immediately followed
@@ -592,7 +626,6 @@ BUGS
INTENTIONAL BUGS
- vlmcsd activates non-VL (retail) and beta/preview versions of Windows.
vlmcsd always reports enough active clients to satisfy the N count pol‐
icy of the request.
@@ -612,4 +645,4 @@ SEE ALSO
-Hotbird64 September 2016 VLMCSD(8)
+Hotbird64 October 2016 VLMCSD(8)
diff --git a/man/vlmcsd.8.html b/man/vlmcsd.8.html
index a427d4fc..32b732df 100644
--- a/man/vlmcsd.8.html
+++ b/man/vlmcsd.8.html
@@ -1,5 +1,5 @@
-
+
@@ -43,8 +43,8 @@
NAME
-
vlmcsd −
-a fully Microsoft compatible KMS server
+
vlmcsd - a
+fully Microsoft compatible KMS server
SYNOPSIS
@@ -619,6 +619,54 @@
OPTIONS
emulators use a fixed LCID of 1033 (English - US). To
achive the same behavior in vlmcsd use -C 1033.
+
-K0, -K1,
+-K2 and -K3
+
+
Sets the whitelisting level to
+determine which products vlmcsd activates or refuses. The
+default is -K0.
+
+
-K0:
+activate all products with an unknown, retail or
+beta/preview KMS ID.
+-K1: activate products with a retail or beta/preview KMS
+ID but refuse to activate products with an unknown KMS ID.
+
+-K2: activate products with an unknown KMS ID but refuse
+products with a retail or beta/preview KMS ID.
+-K3: activate only products with a known volume license
+RTM KMS ID and refuse all others.
+
+
+
+
+
+
+
+
The SKU ID is not checked. Like a genuine KMS server
+vlmcsd activates a product that has a random or unknown SKU
+ID. If you select -K1 or -K3, vlmcsd also
+checks the Application ID for correctness. If Microsoft
+introduces a new KMS ID for a new product, you cannot
+activate it if you used -K1 or -K3 until a new
+version of vlmcsd is available.
+
+
+
-c0 and -c1
+
+
-c1 causes vlmcsd to
+check if the client time differs no more than four hours
+from the system time. -c0 (the default) disables this
+check. -c1 is useful to prevent emulator detection. A
+client that tries to detect an emulator could simply send
+two subsequent request with two time stamps that differ more
+than four hours from each other. If both requests succeed,
+the server is an emulator. If you specify -c1 on a
+system with no reliable time source, activations will fail.
+It is ok to set the correct system time after you started
+vlmcsd.
+
-Rrenewal-interval
@@ -736,8 +784,8 @@
OPTIONS
convenience you can use the special username "/l"
as a shortcut for "NT AUTHORITY\LocalService" and
"/n" for "NT AUTHORITY\NetworkService".
-"vlmcsd −s −U /n"
-installs the service to run as "NT
+"vlmcsd -s -U /n" installs the
+service to run as "NT
AUTHORITY\NetworkService".
-Wpassword
@@ -928,11 +976,9 @@
INTENTIONAL BUGS
-
vlmcsd
-activates non-VL (retail) and beta/preview versions of
-Windows.
-vlmcsd always reports enough active clients to satisfy the N
-count policy of the request.
+
vlmcsd always
+reports enough active clients to satisfy the N count policy
+of the request.
AUTHOR
diff --git a/man/vlmcsd.8.pdf b/man/vlmcsd.8.pdf
index 58abdf8d..e5dc3a6c 100644
Binary files a/man/vlmcsd.8.pdf and b/man/vlmcsd.8.pdf differ
diff --git a/man/vlmcsd.8.unix.txt b/man/vlmcsd.8.unix.txt
index a25f92bd..efc45f35 100644
--- a/man/vlmcsd.8.unix.txt
+++ b/man/vlmcsd.8.unix.txt
@@ -415,6 +415,40 @@ OPTIONS
US). To achive the same behavior in vlmcsd use -C 1033.
+ -K0, -K1, -K2 and -K3
+ Sets the whitelisting level to determine which products vlmcsd
+ activates or refuses. The default is -K0.
+
+ -K0: activate all products with an unknown, retail or
+ beta/preview KMS ID.
+ -K1: activate products with a retail or beta/preview KMS ID
+ but refuse to activate products with an unknown KMS ID.
+ -K2: activate products with an unknown KMS ID but refuse
+ products with a retail or beta/preview KMS ID.
+ -K3: activate only products with a known volume license RTM
+ KMS ID and refuse all others.
+
+
+ The SKU ID is not checked. Like a genuine KMS server vlmcsd
+ activates a product that has a random or unknown SKU ID. If you
+ select -K1 or -K3, vlmcsd also checks the Application ID for
+ correctness. If Microsoft introduces a new KMS ID for a new
+ product, you cannot activate it if you used -K1 or -K3 until a
+ new version of vlmcsd is available.
+
+
+ -c0 and -c1
+ -c1 causes vlmcsd to check if the client time differs no more
+ than four hours from the system time. -c0 (the default) disables
+ this check. -c1 is useful to prevent emulator detection. A
+ client that tries to detect an emulator could simply send two
+ subsequent request with two time stamps that differ more than
+ four hours from each other. If both requests succeed, the server
+ is an emulator. If you specify -c1 on a system with no reliable
+ time source, activations will fail. It is ok to set the correct
+ system time after you started vlmcsd.
+
+
-R renewal-interval
Instructs clients to renew activation every renewal-interval.
The renewal-interval is a number optionally immediately followed
@@ -592,7 +626,6 @@ BUGS
INTENTIONAL BUGS
- vlmcsd activates non-VL (retail) and beta/preview versions of Windows.
vlmcsd always reports enough active clients to satisfy the N count pol‐
icy of the request.
@@ -612,4 +645,4 @@ SEE ALSO
-Hotbird64 September 2016 VLMCSD(8)
+Hotbird64 October 2016 VLMCSD(8)
diff --git a/man/vlmcsd.ini.5 b/man/vlmcsd.ini.5
index a6a9da98..b3f3e2da 100644
--- a/man/vlmcsd.ini.5
+++ b/man/vlmcsd.ini.5
@@ -1,4 +1,4 @@
-.TH VLMCSD.INI 5 "September 2016" "Hotbird64" "KMS Activation Manual"
+.TH VLMCSD.INI 5 "October 2016" "Hotbird64" "KMS Activation Manual"
.LO 8
.SH NAME
@@ -99,6 +99,25 @@ Can be TRUE or FALSE. The default is TRUE. If set to FALSE, logging output does
.IP "\fBLogVerbose\fR"
Set this to either TRUE or FALSE. The default is FALSE. If set to TRUE, more details of each activation will be logged. You use \fB-v\fR and \fB-q\fR in the command line to control this setting. \fBLogVerbose\fR has an effect only if you specify a log file or redirect logging to \fBstdout\fR(3).
+.IP "\fBWhitelistingLevel\fR"
+Can be 0, 1, 2 or 3. The default is 0. Sets the whitelisting level to determine which products vlmcsd activates or refuses.
+
+.RS 12
+\fB0\fR: activate all products with an unknown, retail or beta/preview KMS ID.
+.br
+\fB1\fR: activate products with a retail or beta/preview KMS ID but refuse to activate products with an unknown KMS ID.
+.br
+\fB2\fR: activate products with an unknown KMS ID but refuse products with a retail or beta/preview KMS ID.
+.br
+\fB3\fR: activate only products with a known volume license RTM KMS ID and refuse all others.
+.RE
+
+.IP ""
+The SKU ID is not checked. Like a genuine KMS server vlmcsd activates a product that has a random or unknown SKU ID. If you select \fB1\fR or \fB3\fR, vlmcsd also checks the Application ID for correctness. If Microsoft introduces a new KMS ID for a new product, you cannot activate it if you used \fB1\fR or \fB3\fR until a new version of vlmcsd is available.
+
+.IP "\fBCheckClientTime\fR"
+Can be TRUE or FALSE. The default is FALSE. If you set this to TRUE \fBvlmcsd\fR(8) checks if the client time differs no more than four hours from the system time. This is useful to prevent emulator detection. A client that tries to detect an emulator could simply send two subsequent request with two time stamps that differ more than four hours from each other. If both requests succeed, the server is an emulator. If you set this to TRUE on a system with no reliable time source, activations will fail. It is ok to set the correct system time after you started \fBvlmcsd\fR(8).
+
.IP "\fBActivationInterval\fR"
This is the same as specifying \fB-A\fR on the command line. See \fBvlmcsd\fR(8) for details. The default is 2 hours. Example: ActivationInterval = 1h
diff --git a/man/vlmcsd.ini.5.dos.txt b/man/vlmcsd.ini.5.dos.txt
index 5f6f84d9..f5b6348a 100644
--- a/man/vlmcsd.ini.5.dos.txt
+++ b/man/vlmcsd.ini.5.dos.txt
@@ -208,88 +208,123 @@ KEYWORDS
logging to stdout(3).
+ WhitelistingLevel
+ Can be 0, 1, 2 or 3. The default is 0. Sets the whitelisting
+ level to determine which products vlmcsd activates or refuses.
+
+ 0: activate all products with an unknown, retail or
+ beta/preview KMS ID.
+ 1: activate products with a retail or beta/preview KMS ID
+ but refuse to activate products with an unknown KMS ID.
+ 2: activate products with an unknown KMS ID but refuse
+ products with a retail or beta/preview KMS ID.
+ 3: activate only products with a known volume license RTM
+ KMS ID and refuse all others.
+
+
+ The SKU ID is not checked. Like a genuine KMS server vlmcsd
+ activates a product that has a random or unknown SKU ID. If you
+ select 1 or 3, vlmcsd also checks the Application ID for cor‐
+ rectness. If Microsoft introduces a new KMS ID for a new prod‐
+ uct, you cannot activate it if you used 1 or 3 until a new ver‐
+ sion of vlmcsd is available.
+
+
+ CheckClientTime
+ Can be TRUE or FALSE. The default is FALSE. If you set this to
+ TRUE vlmcsd(8) checks if the client time differs no more than
+ four hours from the system time. This is useful to prevent emu‐
+ lator detection. A client that tries to detect an emulator could
+ simply send two subsequent request with two time stamps that
+ differ more than four hours from each other. If both requests
+ succeed, the server is an emulator. If you set this to TRUE on a
+ system with no reliable time source, activations will fail. It
+ is ok to set the correct system time after you started vlm‐
+ csd(8).
+
+
ActivationInterval
- This is the same as specifying -A on the command line. See vlm‐
+ This is the same as specifying -A on the command line. See vlm‐
csd(8) for details. The default is 2 hours. Example: Activation‐
Interval = 1h
RenewalInterval
- This is the same as specifying -R on the command line. See vlm‐
- csd(8) for details. The default is 7 days. Example: RenewalIn‐
+ This is the same as specifying -R on the command line. See vlm‐
+ csd(8) for details. The default is 7 days. Example: RenewalIn‐
terval = 3d. Please note that the KMS client decides itself when
to renew activation. Even though vlmcsd sends the renewal inter‐
- val you specify, it is no more than some kind of recommendation
- to the client. Older KMS clients did follow the recommendation
+ val you specify, it is no more than some kind of recommendation
+ to the client. Older KMS clients did follow the recommendation
from a KMS server or emulator. Newer clients do not.
- User Run vlmcsd as another, preferrably less privileged, user. The
- argument can be a user name or a numeric user id. You must have
- the required privileges (capabilities on Linux) to change the
- security context of a process without providing any credentials
- (a password in most cases). On most unixoid OSses 'root' is the
+ User Run vlmcsd as another, preferrably less privileged, user. The
+ argument can be a user name or a numeric user id. You must have
+ the required privileges (capabilities on Linux) to change the
+ security context of a process without providing any credentials
+ (a password in most cases). On most unixoid OSses 'root' is the
only user who has these privileges in the default configuration.
- This setting is not available in the native Windows version of
- vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on
+ This setting is not available in the native Windows version of
+ vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on
the fly by sending SIGHUP to vlmcsd.
- Group Run vlmcsd as another, preferrably less privileged, group. The
- argument can be a group name or a numeric group id. You must
- have the required privileges (capabilities on Linux) to change
- the security context of a process without providing any creden‐
- tials (a password in most cases). On most unixoid OSses 'root'
+ Group Run vlmcsd as another, preferrably less privileged, group. The
+ argument can be a group name or a numeric group id. You must
+ have the required privileges (capabilities on Linux) to change
+ the security context of a process without providing any creden‐
+ tials (a password in most cases). On most unixoid OSses 'root'
is the only user who has these privileges in the default config‐
- uration. This setting is not available in the native Windows
- version of vlmcsd. See -g in vlmcsd(8). This setting cannot be
+ uration. This setting is not available in the native Windows
+ version of vlmcsd. See -g in vlmcsd(8). This setting cannot be
changed on the fly by sending SIGHUP to vlmcsd.
Windows
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Windows activations. If specified, RandomizationLevel
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Windows activations. If specified, RandomizationLevel
for Windows activitations will be ignored.
Office2010
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2010 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2010 activations. If specified, Randomization‐
Level for Office 2010 activitations will be ignored.
Office2013
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2013 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2013 activations. If specified, Randomization‐
Level for Office 2013 activitations will be ignored.
Office2016
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2016 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2016 activations. If specified, Randomization‐
Level for Office 2016 activitations will be ignored.
VALID EPIDS
- The ePID is currently a comment only. You can specify any string up to
- 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs
- that were used in KMSv5 versions of the "Ratiborus Virtual Machine".
- Microsoft has given up on blacklisting when KMS emulators appeared in
+ The ePID is currently a comment only. You can specify any string up to
+ 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs
+ that were used in KMSv5 versions of the "Ratiborus Virtual Machine".
+ Microsoft has given up on blacklisting when KMS emulators appeared in
the wild.
Even if you can use "Activated by cool hacker guys" as an ePID, you may
wish to use ePIDs that cannot be detected as non-MS ePIDs. If you don't
- know how these "valid" ePIDs look like exactly, do not use GUIDS in
- vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid
+ know how these "valid" ePIDs look like exactly, do not use GUIDS in
+ vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid
ePIDs.
If you use non-ASCII characters in your ePID (you shouldn't do anyway),
- these must be in UTF-8 format. This is especially important when you
+ these must be in UTF-8 format. This is especially important when you
run vlmcsd on Windows or cygwin because UTF-8 is not the default encod‐
ing for most editors.
If you are specifying an optional HWID it follows the same syntax as in
- the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in
+ the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in
quotes even if it contains spaces.
@@ -303,7 +338,7 @@ AUTHOR
CREDITS
- Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐
+ Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐
borus, ...
@@ -312,4 +347,4 @@ SEE ALSO
-Hotbird64 September 2016 VLMCSD.INI(5)
+Hotbird64 October 2016 VLMCSD.INI(5)
diff --git a/man/vlmcsd.ini.5.html b/man/vlmcsd.ini.5.html
index 56a6dd4c..34c9bcb9 100644
--- a/man/vlmcsd.ini.5.html
+++ b/man/vlmcsd.ini.5.html
@@ -1,5 +1,5 @@
-
+
@@ -41,7 +41,7 @@
KEYWORDS
and 32767. While any number in that range is valid, you
should use an offcial LCID. A list of assigned LCIDs can be
found at
-http://msdn.microsoft.com/en−us/goglobal/bb964664.aspx.
-On the command line you control this setting with option
+http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx. On
+the command line you control this setting with option
-C.
@@ -339,6 +339,53 @@
KEYWORDS
LogVerbose has an effect only if you specify a log
file or redirect logging to stdout(3).
+
WhitelistingLevel
+
+
Can be 0, 1, 2 or 3. The
+default is 0. Sets the whitelisting level to determine which
+products vlmcsd activates or refuses.
+
+
0:
+activate all products with an unknown, retail or
+beta/preview KMS ID.
+1: activate products with a retail or beta/preview KMS
+ID but refuse to activate products with an unknown KMS ID.
+
+2: activate products with an unknown KMS ID but refuse
+products with a retail or beta/preview KMS ID.
+3: activate only products with a known volume license
+RTM KMS ID and refuse all others.
+
+
+
+
+
+
+
+
The SKU ID is not checked. Like a genuine KMS server
+vlmcsd activates a product that has a random or unknown SKU
+ID. If you select 1 or 3, vlmcsd also checks
+the Application ID for correctness. If Microsoft introduces
+a new KMS ID for a new product, you cannot activate it if
+you used 1 or 3 until a new version of vlmcsd
+is available.
+
+
+
CheckClientTime
+
+
Can be TRUE or FALSE. The
+default is FALSE. If you set this to TRUE vlmcsd(8)
+checks if the client time differs no more than four hours
+from the system time. This is useful to prevent emulator
+detection. A client that tries to detect an emulator could
+simply send two subsequent request with two time stamps that
+differ more than four hours from each other. If both
+requests succeed, the server is an emulator. If you set this
+to TRUE on a system with no reliable time source,
+activations will fail. It is ok to set the correct system
+time after you started vlmcsd(8).
+
ActivationInterval
This is the same as specifying
@@ -465,8 +512,8 @@
VALID EPIDS
If you are
specifying an optional HWID it follows the same syntax as in
-the −H option in vlmcsd(8) ecxept that
-you must not enclose a HWID in quotes even if it contains
+the -H option in vlmcsd(8) ecxept that you
+must not enclose a HWID in quotes even if it contains
spaces.
FILES
diff --git a/man/vlmcsd.ini.5.pdf b/man/vlmcsd.ini.5.pdf
index cc766290..2a11c63d 100644
Binary files a/man/vlmcsd.ini.5.pdf and b/man/vlmcsd.ini.5.pdf differ
diff --git a/man/vlmcsd.ini.5.unix.txt b/man/vlmcsd.ini.5.unix.txt
index c7836ef7..7506aaa3 100644
--- a/man/vlmcsd.ini.5.unix.txt
+++ b/man/vlmcsd.ini.5.unix.txt
@@ -208,88 +208,123 @@ KEYWORDS
logging to stdout(3).
+ WhitelistingLevel
+ Can be 0, 1, 2 or 3. The default is 0. Sets the whitelisting
+ level to determine which products vlmcsd activates or refuses.
+
+ 0: activate all products with an unknown, retail or
+ beta/preview KMS ID.
+ 1: activate products with a retail or beta/preview KMS ID
+ but refuse to activate products with an unknown KMS ID.
+ 2: activate products with an unknown KMS ID but refuse
+ products with a retail or beta/preview KMS ID.
+ 3: activate only products with a known volume license RTM
+ KMS ID and refuse all others.
+
+
+ The SKU ID is not checked. Like a genuine KMS server vlmcsd
+ activates a product that has a random or unknown SKU ID. If you
+ select 1 or 3, vlmcsd also checks the Application ID for cor‐
+ rectness. If Microsoft introduces a new KMS ID for a new prod‐
+ uct, you cannot activate it if you used 1 or 3 until a new ver‐
+ sion of vlmcsd is available.
+
+
+ CheckClientTime
+ Can be TRUE or FALSE. The default is FALSE. If you set this to
+ TRUE vlmcsd(8) checks if the client time differs no more than
+ four hours from the system time. This is useful to prevent emu‐
+ lator detection. A client that tries to detect an emulator could
+ simply send two subsequent request with two time stamps that
+ differ more than four hours from each other. If both requests
+ succeed, the server is an emulator. If you set this to TRUE on a
+ system with no reliable time source, activations will fail. It
+ is ok to set the correct system time after you started vlm‐
+ csd(8).
+
+
ActivationInterval
- This is the same as specifying -A on the command line. See vlm‐
+ This is the same as specifying -A on the command line. See vlm‐
csd(8) for details. The default is 2 hours. Example: Activation‐
Interval = 1h
RenewalInterval
- This is the same as specifying -R on the command line. See vlm‐
- csd(8) for details. The default is 7 days. Example: RenewalIn‐
+ This is the same as specifying -R on the command line. See vlm‐
+ csd(8) for details. The default is 7 days. Example: RenewalIn‐
terval = 3d. Please note that the KMS client decides itself when
to renew activation. Even though vlmcsd sends the renewal inter‐
- val you specify, it is no more than some kind of recommendation
- to the client. Older KMS clients did follow the recommendation
+ val you specify, it is no more than some kind of recommendation
+ to the client. Older KMS clients did follow the recommendation
from a KMS server or emulator. Newer clients do not.
- User Run vlmcsd as another, preferrably less privileged, user. The
- argument can be a user name or a numeric user id. You must have
- the required privileges (capabilities on Linux) to change the
- security context of a process without providing any credentials
- (a password in most cases). On most unixoid OSses 'root' is the
+ User Run vlmcsd as another, preferrably less privileged, user. The
+ argument can be a user name or a numeric user id. You must have
+ the required privileges (capabilities on Linux) to change the
+ security context of a process without providing any credentials
+ (a password in most cases). On most unixoid OSses 'root' is the
only user who has these privileges in the default configuration.
- This setting is not available in the native Windows version of
- vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on
+ This setting is not available in the native Windows version of
+ vlmcsd. See -u in vlmcsd(8). This setting cannot be changed on
the fly by sending SIGHUP to vlmcsd.
- Group Run vlmcsd as another, preferrably less privileged, group. The
- argument can be a group name or a numeric group id. You must
- have the required privileges (capabilities on Linux) to change
- the security context of a process without providing any creden‐
- tials (a password in most cases). On most unixoid OSses 'root'
+ Group Run vlmcsd as another, preferrably less privileged, group. The
+ argument can be a group name or a numeric group id. You must
+ have the required privileges (capabilities on Linux) to change
+ the security context of a process without providing any creden‐
+ tials (a password in most cases). On most unixoid OSses 'root'
is the only user who has these privileges in the default config‐
- uration. This setting is not available in the native Windows
- version of vlmcsd. See -g in vlmcsd(8). This setting cannot be
+ uration. This setting is not available in the native Windows
+ version of vlmcsd. See -g in vlmcsd(8). This setting cannot be
changed on the fly by sending SIGHUP to vlmcsd.
Windows
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Windows activations. If specified, RandomizationLevel
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Windows activations. If specified, RandomizationLevel
for Windows activitations will be ignored.
Office2010
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2010 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2010 activations. If specified, Randomization‐
Level for Office 2010 activitations will be ignored.
Office2013
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2013 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2013 activations. If specified, Randomization‐
Level for Office 2013 activitations will be ignored.
Office2016
- The argument has the form ePID [ / HwId ]. Always use ePID and
- HwId for Office 2016 activations. If specified, Randomization‐
+ The argument has the form ePID [ / HwId ]. Always use ePID and
+ HwId for Office 2016 activations. If specified, Randomization‐
Level for Office 2016 activitations will be ignored.
VALID EPIDS
- The ePID is currently a comment only. You can specify any string up to
- 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs
- that were used in KMSv5 versions of the "Ratiborus Virtual Machine".
- Microsoft has given up on blacklisting when KMS emulators appeared in
+ The ePID is currently a comment only. You can specify any string up to
+ 63 bytes. In Windows 7 Microsoft has blacklisted few ( < 10 ) ePIDs
+ that were used in KMSv5 versions of the "Ratiborus Virtual Machine".
+ Microsoft has given up on blacklisting when KMS emulators appeared in
the wild.
Even if you can use "Activated by cool hacker guys" as an ePID, you may
wish to use ePIDs that cannot be detected as non-MS ePIDs. If you don't
- know how these "valid" ePIDs look like exactly, do not use GUIDS in
- vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid
+ know how these "valid" ePIDs look like exactly, do not use GUIDS in
+ vlmcsd.ini. vlmcsd provides internal mechanisms to generate valid
ePIDs.
If you use non-ASCII characters in your ePID (you shouldn't do anyway),
- these must be in UTF-8 format. This is especially important when you
+ these must be in UTF-8 format. This is especially important when you
run vlmcsd on Windows or cygwin because UTF-8 is not the default encod‐
ing for most editors.
If you are specifying an optional HWID it follows the same syntax as in
- the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in
+ the -H option in vlmcsd(8) ecxept that you must not enclose a HWID in
quotes even if it contains spaces.
@@ -303,7 +338,7 @@ AUTHOR
CREDITS
- Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐
+ Thanks to CODYQX4, deagles, eIcn, mikmik38, nosferati87, qad, Rati‐
borus, ...
@@ -312,4 +347,4 @@ SEE ALSO
-Hotbird64 September 2016 VLMCSD.INI(5)
+Hotbird64 October 2016 VLMCSD.INI(5)
diff --git a/man/vlmcsdmulti.1.html b/man/vlmcsdmulti.1.html
index 0c35402d..48d1f968 100644
--- a/man/vlmcsdmulti.1.html
+++ b/man/vlmcsdmulti.1.html
@@ -1,5 +1,5 @@
-
+
@@ -36,8 +36,8 @@
NAME
-
vlmcsdmulti
-− a multi-call binary containing vlmcs(1) and
+
vlmcsdmulti - a
+multi-call binary containing vlmcs(1) and
vlmcsd(8)
SYNOPSIS
diff --git a/man/vlmcsdmulti.1.pdf b/man/vlmcsdmulti.1.pdf
index c1b9b77b..77741589 100644
Binary files a/man/vlmcsdmulti.1.pdf and b/man/vlmcsdmulti.1.pdf differ
diff --git a/src/GNUmakefile b/src/GNUmakefile
index 2b76ec26..dc9bc491 100644
--- a/src/GNUmakefile
+++ b/src/GNUmakefile
@@ -62,7 +62,7 @@ DNS_PARSER ?= OS
# You should supply your own version string here
-VLMCSD_VERSION ?= $(shell test -d .svn && echo svn`svnversion`)
+VLMCSD_VERSION ?= $(shell test -d ../.svn && echo svn`svnversion`)
FEATURES ?= full
VERBOSE ?= NO
@@ -251,14 +251,14 @@ else
STRIPFLAGS += -s
endif
-LIBRARY_CFLAGS = -DSIMPLE_SOCKETS -DNO_TIMEOUT -DNO_SIGHUP -DNO_CL_PIDS -DNO_EXTENDED_PRODUCT_LIST -DNO_BASIC_PRODUCT_LIST -DNO_LOG -DNO_RANDOM_EPID -DNO_INI_FILE -DNO_HELP -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_USER_SWITCH -DNO_VERBOSE_LOG -DNO_LIMIT -DNO_VERSION_INFORMATION -DNO_PRIVATE_IP_DETECT
+LIBRARY_CFLAGS = -DSIMPLE_SOCKETS -DNO_TIMEOUT -DNO_SIGHUP -DNO_CL_PIDS -DNO_EXTENDED_PRODUCT_LIST -DNO_BASIC_PRODUCT_LIST -DNO_LOG -DNO_RANDOM_EPID -DNO_INI_FILE -DNO_HELP -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_USER_SWITCH -DNO_VERBOSE_LOG -DNO_LIMIT -DNO_VERSION_INFORMATION -DNO_PRIVATE_IP_DETECT -UNO_SOCKETS -USIMPLE_RPC
ifeq ($(FEATURES), embedded)
BASECFLAGS += -DNO_HELP -DNO_USER_SWITCH -DNO_BASIC_PRODUCT_LIST -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_VERBOSE_LOG -DNO_VERSION_INFORMATION
else ifeq ($(FEATURES), autostart)
BASECFLAGS += -DNO_HELP -DNO_VERSION_INFORMATION
else ifeq ($(FEATURES), minimum)
- BASECFLAGS += -DSIMPLE_SOCKETS -DNO_TIMEOUT -DNO_SIGHUP -DNO_CL_PIDS -DNO_EXTENDED_PRODUCT_LIST -DNO_BASIC_PRODUCT_LIST -DNO_LOG -DNO_RANDOM_EPID -DNO_INI_FILE -DNO_HELP -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_USER_SWITCH -DNO_VERBOSE_LOG -DNO_LIMIT -DNO_VERSION_INFORMATION -DNO_PRIVATE_IP_DETECT -DSMALL_AES
+ BASECFLAGS += -DSIMPLE_RPC -DSIMPLE_SOCKETS -DNO_TIMEOUT -DNO_SIGHUP -DNO_CL_PIDS -DNO_EXTENDED_PRODUCT_LIST -DNO_BASIC_PRODUCT_LIST -DNO_LOG -DNO_RANDOM_EPID -DNO_INI_FILE -DNO_HELP -DNO_CUSTOM_INTERVALS -DNO_PID_FILE -DNO_USER_SWITCH -DNO_VERBOSE_LOG -DNO_LIMIT -DNO_VERSION_INFORMATION -DNO_PRIVATE_IP_DETECT -DSMALL_AES
else ifeq ($(FEATURES), most)
BASECFLAGS += -DNO_SIGHUP -DNO_PID_FILE -DNO_LIMIT
else ifeq ($(FEATURES), inetd)
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/_G_config.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/_G_config.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/_G_config.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/_G_config.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aliases.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aliases.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aliases.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/aliases.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/alloca.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/alloca.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/alloca.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/alloca.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argz.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argz.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argz.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/argz.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/ftp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/ftp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/ftp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/ftp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/inet.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/inet.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/inet.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/inet.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser_compat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser_compat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser_compat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/nameser_compat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/telnet.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/telnet.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/telnet.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/telnet.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/tftp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/tftp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/tftp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/arpa/tftp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/auxvec.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/auxvec.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/auxvec.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/auxvec.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/bitsperlong.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/bitsperlong.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/bitsperlong.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/bitsperlong.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno-base.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno-base.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno-base.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno-base.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/errno.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/fcntl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/fcntl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/fcntl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/fcntl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-l64.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-l64.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-l64.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-l64.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-ll64.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-ll64.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-ll64.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/int-ll64.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctls.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctls.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctls.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ioctls.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ipcbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ipcbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ipcbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ipcbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/kvm_para.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/kvm_para.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/kvm_para.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/kvm_para.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman-common.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman-common.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman-common.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman-common.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/mman.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/msgbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/msgbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/msgbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/msgbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/param.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/param.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/param.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/param.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/poll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/poll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/poll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/poll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/posix_types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/posix_types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/posix_types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/posix_types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/resource.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/resource.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/resource.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/resource.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sembuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sembuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sembuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sembuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/setup.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/setup.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/setup.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/setup.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmparam.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmparam.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmparam.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/shmparam.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/siginfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/siginfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/siginfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/siginfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal-defs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal-defs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal-defs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal-defs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/signal.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/socket.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/socket.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/socket.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/socket.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sockios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sockios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sockios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/sockios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/stat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/stat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/stat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/stat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/statfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/statfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/statfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/statfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/swab.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/swab.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/swab.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/swab.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termbits.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termbits.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termbits.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termbits.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/termios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ucontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ucontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ucontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/ucontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/unistd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/unistd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/unistd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm-generic/unistd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/a.out.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/a.out.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/a.out.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/a.out.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/auxvec.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/auxvec.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/auxvec.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/auxvec.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bitsperlong.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bitsperlong.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bitsperlong.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bitsperlong.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/boot.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/boot.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/boot.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/boot.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bootparam.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bootparam.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bootparam.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/bootparam.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/byteorder.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/byteorder.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/byteorder.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/byteorder.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/debugreg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/debugreg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/debugreg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/debugreg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/e820.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/e820.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/e820.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/e820.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/errno.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/errno.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/errno.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/errno.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/fcntl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/fcntl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/fcntl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/fcntl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hw_breakpoint.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hw_breakpoint.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hw_breakpoint.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hw_breakpoint.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hyperv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hyperv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hyperv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/hyperv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctls.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctls.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctls.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ioctls.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ipcbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ipcbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ipcbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ipcbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ist.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ist.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ist.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ist.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_para.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_para.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_para.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_para.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_perf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_perf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_perf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/kvm_perf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ldt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ldt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ldt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ldt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mce.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mce.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mce.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mce.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mman.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mman.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mman.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mman.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msgbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msgbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msgbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msgbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr-index.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr-index.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr-index.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr-index.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/msr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mtrr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mtrr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mtrr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/mtrr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/param.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/param.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/param.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/param.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/perf_regs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/perf_regs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/perf_regs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/perf_regs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/poll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/poll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/poll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/poll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_32.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_32.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_32.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_32.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_64.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_64.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_64.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_64.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_x32.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_x32.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_x32.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/posix_types_x32.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/prctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/prctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/prctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/prctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/processor-flags.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/processor-flags.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/processor-flags.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/processor-flags.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace-abi.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace-abi.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace-abi.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace-abi.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ptrace.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/resource.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/resource.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/resource.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/resource.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sembuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sembuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sembuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sembuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/setup.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/setup.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/setup.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/setup.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/shmbuf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/shmbuf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/shmbuf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/shmbuf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext32.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext32.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext32.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sigcontext32.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/siginfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/siginfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/siginfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/siginfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/signal.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/signal.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/signal.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/signal.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/socket.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/socket.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/socket.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/socket.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sockios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sockios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sockios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/sockios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/stat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/stat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/stat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/stat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/statfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/statfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/statfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/statfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/svm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/svm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/svm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/svm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/swab.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/swab.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/swab.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/swab.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termbits.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termbits.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termbits.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termbits.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/termios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ucontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ucontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ucontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/ucontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_32.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_32.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_32.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_32.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_64.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_64.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_64.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_64.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_x32.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_x32.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_x32.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/unistd_x32.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vm86.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vm86.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vm86.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vm86.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vmx.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vmx.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vmx.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vmx.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vsyscall.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vsyscall.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vsyscall.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/asm/vsyscall.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/assert.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/assert.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/assert.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/assert.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/a.out.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/a.out.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/a.out.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/a.out.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/auxv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/auxv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/auxv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/auxv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap-16.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap-16.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap-16.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap-16.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/byteswap.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/cmathcalls.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/cmathcalls.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/cmathcalls.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/cmathcalls.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/confname.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/confname.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/confname.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/confname.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dirent.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dirent.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dirent.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dirent.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dlfcn.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dlfcn.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dlfcn.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/dlfcn.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/elfclass.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/elfclass.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/elfclass.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/elfclass.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/endian.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/endian.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/endian.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/endian.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/environments.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/environments.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/environments.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/environments.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/epoll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/epoll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/epoll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/epoll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/errno.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/errno.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/errno.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/errno.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/error.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/error.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/error.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/error.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/eventfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/eventfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/eventfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/eventfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl-linux.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl-linux.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl-linux.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl-linux.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fcntl2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenvinline.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenvinline.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenvinline.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/fenvinline.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_val.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_val.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_val.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_val.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_valf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_valf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_valf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_valf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_vall.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_vall.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_vall.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/huge_vall.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/hwcap.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/hwcap.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/hwcap.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/hwcap.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/in.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/in.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/in.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/in.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/initspin.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/initspin.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/initspin.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/initspin.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inotify.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inotify.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inotify.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/inotify.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctl-types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctl-types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctl-types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctl-types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctls.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctls.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctls.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ioctls.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipc.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipc.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipc.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipc.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipctypes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipctypes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipctypes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ipctypes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libio-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libio-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libio-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libio-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libm-simd-decl-stubs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libm-simd-decl-stubs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libm-simd-decl-stubs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/libm-simd-decl-stubs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/link.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/link.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/link.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/link.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/local_lim.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/local_lim.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/local_lim.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/local_lim.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/locale.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/locale.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/locale.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/locale.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-finite.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-finite.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-finite.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-finite.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-vector.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-vector.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-vector.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/math-vector.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathcalls.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathcalls.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathcalls.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathcalls.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathdef.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathdef.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathdef.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathdef.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathinline.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathinline.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathinline.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mathinline.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman-linux.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman-linux.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman-linux.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman-linux.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mman.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/monetary-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/monetary-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/monetary-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/monetary-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/mqueue2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/msq.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/msq.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/msq.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/msq.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/nan.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/nan.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/nan.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/nan.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/netdb.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/netdb.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/netdb.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/netdb.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/param.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/param.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/param.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/param.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/poll2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix1_lim.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix1_lim.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix1_lim.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix1_lim.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix2_lim.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix2_lim.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix2_lim.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix2_lim.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix_opt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix_opt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix_opt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/posix_opt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/printf-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/printf-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/printf-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/printf-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/pthreadtypes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/pthreadtypes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/pthreadtypes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/pthreadtypes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/resource.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/resource.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/resource.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/resource.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sched.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sched.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sched.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sched.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/select2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sem.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sem.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sem.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sem.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/semaphore.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/semaphore.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/semaphore.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/semaphore.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/setjmp2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/shm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/shm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/shm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/shm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigaction.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigaction.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigaction.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigaction.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigcontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigcontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigcontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigcontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/siginfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/siginfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/siginfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/siginfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signalfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signalfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signalfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signalfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signum.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signum.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signum.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/signum.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigset.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigset.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigset.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigset.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigstack.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigstack.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigstack.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigstack.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigthread.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigthread.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigthread.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sigthread.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sockaddr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sockaddr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sockaddr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sockaddr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket_type.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket_type.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket_type.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/socket_type.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stab.def b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stab.def
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stab.def
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stab.def
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statvfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statvfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statvfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/statvfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio_lim.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio_lim.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio_lim.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdio_lim.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-bsearch.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-bsearch.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-bsearch.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-bsearch.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-float.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-float.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-float.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-float.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stdlib.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string3.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string3.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string3.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/string3.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stropts.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stropts.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stropts.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/stropts.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sys_errlist.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sys_errlist.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sys_errlist.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sys_errlist.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syscall.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syscall.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syscall.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syscall.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sysctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sysctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sysctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/sysctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-path.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-path.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-path.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog-path.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/syslog.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/termios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/termios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/termios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/termios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/time.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/time.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/time.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/time.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timerfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timerfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timerfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timerfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timex.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timex.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timex.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/timex.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/typesizes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/typesizes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/typesizes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/typesizes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/uio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/uio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/uio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/uio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/unistd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/unistd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/unistd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/unistd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ustat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ustat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ustat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/ustat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmpx.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmpx.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmpx.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utmpx.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utsname.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utsname.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utsname.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/utsname.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitflags.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitflags.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitflags.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitflags.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitstatus.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitstatus.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitstatus.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/waitstatus.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar-ldbl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar-ldbl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar-ldbl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar-ldbl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar2.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar2.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar2.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wchar2.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wordsize.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wordsize.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wordsize.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/wordsize.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xopen_lim.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xopen_lim.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xopen_lim.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xopen_lim.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xtitypes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xtitypes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xtitypes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/bits/xtitypes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/byteswap.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/byteswap.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/byteswap.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/byteswap.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/complex.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/complex.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/complex.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/complex.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/cpio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/cpio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/cpio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/cpio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/crypt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/crypt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/crypt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/crypt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ctype.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ctype.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ctype.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ctype.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dirent.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dirent.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dirent.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dirent.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dlfcn.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dlfcn.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dlfcn.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/dlfcn.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/elf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/elf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/elf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/elf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/endian.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/endian.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/endian.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/endian.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/envz.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/envz.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/envz.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/envz.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/err.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/err.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/err.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/err.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/errno.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/errno.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/errno.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/errno.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/error.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/error.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/error.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/error.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/execinfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/execinfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/execinfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/execinfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fcntl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fcntl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fcntl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fcntl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/features.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/features.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/features.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/features.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fenv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fenv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fenv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fenv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fmtmsg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fmtmsg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fmtmsg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fmtmsg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fnmatch.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fnmatch.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fnmatch.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fnmatch.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fstab.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fstab.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fstab.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fstab.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fts.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fts.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fts.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/fts.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ftw.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ftw.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ftw.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ftw.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gawkapi.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gawkapi.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gawkapi.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gawkapi.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gconv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gconv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gconv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gconv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/getopt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/getopt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/getopt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/getopt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/glob.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/glob.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/glob.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/glob.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnu-versions.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnu-versions.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnu-versions.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnu-versions.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnumake.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnumake.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnumake.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gnumake.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/grp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/grp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/grp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/grp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gshadow.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gshadow.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gshadow.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/gshadow.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/iconv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/iconv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/iconv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/iconv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ifaddrs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ifaddrs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ifaddrs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ifaddrs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/inttypes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/inttypes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/inttypes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/inttypes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/langinfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/langinfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/langinfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/langinfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/lastlog.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/lastlog.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/lastlog.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/lastlog.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libgen.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libgen.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libgen.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libgen.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libintl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libintl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libintl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libintl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/libio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/limits.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/limits.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/limits.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/limits.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/link.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/link.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/link.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/link.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/locale.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/locale.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/locale.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/locale.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/malloc.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/malloc.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/malloc.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/malloc.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/math.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/math.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/math.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/math.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mcheck.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mcheck.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mcheck.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mcheck.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/memory.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/memory.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/memory.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/memory.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/misc/cxl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/misc/cxl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/misc/cxl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/misc/cxl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mntent.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mntent.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mntent.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mntent.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/monetary.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/monetary.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/monetary.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/monetary.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mqueue.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mqueue.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mqueue.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/mqueue.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ethernet.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ethernet.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ethernet.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ethernet.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_arp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_arp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_arp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_arp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_packet.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_packet.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_packet.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_packet.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_ppp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_ppp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_ppp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_ppp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_shaper.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_shaper.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_shaper.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_shaper.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_slip.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_slip.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_slip.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/if_slip.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp-comp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp-comp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp-comp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp-comp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp_defs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp_defs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp_defs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/ppp_defs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/route.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/route.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/route.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/net/route.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netdb.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netdb.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netdb.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netdb.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ether.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ether.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ether.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ether.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/icmp6.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/icmp6.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/icmp6.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/icmp6.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_ether.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_ether.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_ether.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_ether.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_fddi.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_fddi.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_fddi.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_fddi.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_tr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_tr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_tr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/if_tr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/igmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/igmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/igmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/igmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in_systm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in_systm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in_systm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/in_systm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip6.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip6.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip6.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip6.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip_icmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip_icmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip_icmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/ip_icmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/tcp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/tcp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/tcp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/tcp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/udp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/udp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/udp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/netinet/udp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nl_types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nl_types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nl_types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nl_types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nss.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nss.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nss.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/nss.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/obstack.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/obstack.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/obstack.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/obstack.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/paths.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/paths.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/paths.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/paths.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/poll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/poll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/poll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/poll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/printf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/printf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/printf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/printf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/routed.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/routed.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/routed.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/routed.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/rwhod.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/rwhod.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/rwhod.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/rwhod.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/talkd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/talkd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/talkd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/talkd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/timed.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/timed.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/timed.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/protocols/timed.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pthread.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pthread.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pthread.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pthread.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pty.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pty.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pty.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pty.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pwd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pwd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pwd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/pwd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/re_comp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/re_comp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/re_comp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/re_comp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regex.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regex.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regex.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regex.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regexp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regexp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regexp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/regexp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/resolv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/resolv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/resolv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/resolv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_des.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_des.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_des.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_des.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_unix.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_unix.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_unix.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/auth_unix.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/clnt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/clnt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/clnt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/clnt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/des_crypt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/des_crypt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/des_crypt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/des_crypt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/key_prot.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/key_prot.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/key_prot.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/key_prot.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/netdb.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/netdb.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/netdb.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/netdb.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_clnt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_clnt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_clnt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_clnt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_prot.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_prot.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_prot.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_prot.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_rmt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_rmt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_rmt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/pmap_rmt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_des.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_des.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_des.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_des.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_msg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_msg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_msg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/rpc_msg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc_auth.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc_auth.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc_auth.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/svc_auth.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/xdr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/xdr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/xdr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/rpc/xdr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sched.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sched.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sched.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sched.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/search.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/search.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/search.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/search.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/semaphore.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/semaphore.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/semaphore.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/semaphore.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/setjmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/setjmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/setjmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/setjmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sgtty.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sgtty.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sgtty.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sgtty.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/shadow.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/shadow.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/shadow.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/shadow.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/signal.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/signal.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/signal.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/signal.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/spawn.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/spawn.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/spawn.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/spawn.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stab.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stab.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stab.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stab.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdc-predef.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdc-predef.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdc-predef.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdc-predef.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdint.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdint.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdint.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdint.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio_ext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio_ext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio_ext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdio_ext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdlib.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdlib.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdlib.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stdlib.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/string.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/string.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/string.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/string.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/strings.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/strings.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/strings.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/strings.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stropts.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stropts.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stropts.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/stropts.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sudo_plugin.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sudo_plugin.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sudo_plugin.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sudo_plugin.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acct.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acct.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acct.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acct.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/acl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/asoundlib.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/asoundlib.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/asoundlib.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/asoundlib.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/auxv.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/auxv.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/auxv.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/auxv.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/bitypes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/bitypes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/bitypes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/bitypes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/capability.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/capability.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/capability.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/capability.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/cdefs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/cdefs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/cdefs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/cdefs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/debugreg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/debugreg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/debugreg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/debugreg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/dir.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/dir.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/dir.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/dir.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/elf.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/elf.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/elf.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/elf.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/epoll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/epoll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/epoll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/epoll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/errno.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/errno.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/errno.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/errno.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/eventfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/eventfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/eventfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/eventfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fanotify.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fanotify.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fanotify.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fanotify.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fcntl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fcntl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fcntl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fcntl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/file.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/file.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/file.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/file.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fsuid.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fsuid.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fsuid.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/fsuid.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon_out.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon_out.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon_out.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/gmon_out.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/inotify.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/inotify.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/inotify.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/inotify.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/io.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/io.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/io.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/io.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ioctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ioctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ioctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ioctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ipc.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ipc.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ipc.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ipc.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/kd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/kd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/kd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/kd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/klog.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/klog.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/klog.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/klog.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mman.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mman.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mman.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mman.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mount.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mount.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mount.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mount.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/msg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/msg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/msg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/msg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mtio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mtio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mtio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/mtio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/param.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/param.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/param.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/param.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/pci.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/pci.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/pci.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/pci.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/perm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/perm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/perm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/perm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/personality.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/personality.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/personality.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/personality.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/poll.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/poll.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/poll.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/poll.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/prctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/prctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/prctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/prctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/procfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/procfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/procfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/procfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/profil.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/profil.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/profil.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/profil.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ptrace.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ptrace.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ptrace.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ptrace.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/queue.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/queue.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/queue.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/queue.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/quota.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/quota.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/quota.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/quota.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/raw.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/raw.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/raw.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/raw.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reboot.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reboot.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reboot.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reboot.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reg.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reg.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reg.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/reg.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/resource.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/resource.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/resource.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/resource.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/select.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/select.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/select.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/select.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sem.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sem.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sem.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sem.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sendfile.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sendfile.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sendfile.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sendfile.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/shm.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/shm.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/shm.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/shm.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signal.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signal.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signal.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signal.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signalfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signalfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signalfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/signalfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socket.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socket.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socket.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socket.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socketvar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socketvar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socketvar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/socketvar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/soundcard.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/soundcard.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/soundcard.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/soundcard.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statvfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statvfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statvfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/statvfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stropts.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stropts.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stropts.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/stropts.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/swap.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/swap.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/swap.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/swap.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syscall.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syscall.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syscall.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syscall.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysctl.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysctl.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysctl.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysctl.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysinfo.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysinfo.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysinfo.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysinfo.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syslog.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syslog.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syslog.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/syslog.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysmacros.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysmacros.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysmacros.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/sysmacros.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/termios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/termios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/termios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/termios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/time.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/time.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/time.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/time.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timeb.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timeb.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timeb.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timeb.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timerfd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timerfd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timerfd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timerfd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/times.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/times.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/times.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/times.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timex.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timex.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timex.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/timex.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttychars.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttychars.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttychars.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttychars.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttydefaults.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttydefaults.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttydefaults.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ttydefaults.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/types.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/types.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/types.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/types.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ucontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ucontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ucontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ucontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/uio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/uio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/uio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/uio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ultrasound.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ultrasound.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ultrasound.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ultrasound.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/un.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/un.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/un.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/un.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/unistd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/unistd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/unistd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/unistd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/user.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/user.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/user.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/user.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ustat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ustat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ustat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/ustat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/utsname.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/utsname.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/utsname.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/utsname.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vfs.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vfs.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vfs.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vfs.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vlimit.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vlimit.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vlimit.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vlimit.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vm86.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vm86.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vm86.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vm86.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vt.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vt.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vt.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vt.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vtimes.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vtimes.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vtimes.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/vtimes.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/wait.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/wait.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/wait.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/wait.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/xattr.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/xattr.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/xattr.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sys/xattr.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syscall.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syscall.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syscall.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syscall.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sysexits.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sysexits.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sysexits.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/sysexits.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syslog.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syslog.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syslog.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/syslog.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termio.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termio.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termio.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termio.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termios.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termios.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termios.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/termios.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tgmath.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tgmath.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tgmath.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/tgmath.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/thread_db.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/thread_db.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/thread_db.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/thread_db.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/time.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/time.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/time.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/time.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ttyent.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ttyent.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ttyent.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ttyent.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/uchar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/uchar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/uchar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/uchar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ucontext.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ucontext.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ucontext.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ucontext.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ulimit.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ulimit.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ulimit.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ulimit.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/unistd.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/unistd.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/unistd.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/unistd.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ustat.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ustat.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ustat.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/ustat.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utime.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utime.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utime.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utime.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmpx.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmpx.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmpx.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/utmpx.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/values.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/values.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/values.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/values.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wait.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wait.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wait.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wait.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wchar.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wchar.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wchar.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wchar.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wctype.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wctype.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wctype.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wctype.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wordexp.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wordexp.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wordexp.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/wordexp.h
diff --git a/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/xlocale.h b/src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/xlocale.h
similarity index 100%
rename from VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/xlocale.h
rename to src/VisualStudio-Linux-Remote/toolchains/gcc5-x86_64-linux-gnu/usr/include/xlocale.h
diff --git a/src/config.h b/src/config.h
index 24d9aed3..73dc113d 100644
--- a/src/config.h
+++ b/src/config.h
@@ -37,19 +37,19 @@
*/
#ifndef EPID_WINDOWS
-#define EPID_WINDOWS "03612-00206-471-494932-03-1033-14393.0000-2382016"
+#define EPID_WINDOWS "03612-00206-471-109239-03-1033-14393.0000-2932016"
#endif
#ifndef EPID_OFFICE2010
-#define EPID_OFFICE2010 "03612-00096-199-954738-03-1033-14393.0000-2382016"
+#define EPID_OFFICE2010 "03612-00096-199-390352-03-1033-14393.0000-2932016"
#endif
#ifndef EPID_OFFICE2013
-#define EPID_OFFICE2013 "03612-00206-234-177489-03-1033-14393.0000-2382016"
+#define EPID_OFFICE2013 "03612-00206-234-938378-03-1033-14393.0000-2932016"
#endif
#ifndef EPID_OFFICE2016
-#define EPID_OFFICE2016 "03612-00206-437-728387-03-1033-14393.0000-2382016"
+#define EPID_OFFICE2016 "03612-00206-437-305903-03-1033-14393.0000-2932016"
#endif
#ifndef HWID // HwId from the Ratiborus VM
@@ -455,6 +455,20 @@
+#ifndef NO_STRICT_MODES
+/*
+ * Disables the product whitelisting features. Removes -K0, -K1, -K2 and -K3 from vlmcsd
+ * command line options and WhitelistingLevel from INI file parameters. vlmcsd always behaves
+ * as if it was started with -K0.
+ */
+
+//#define NO_STRICT_MODES
+
+#endif // NO_STRICT_MODES
+
+
+
+
#ifndef NO_RANDOM_EPID
/*
* Disables the ability to generate random ePIDs. Useful if you managed to grab ePID/HWID from a
@@ -619,6 +633,19 @@
+#ifndef SIMPLE_RPC
+/*
+ * Uses a simple version of the RPC protocol which does not support NDR64 and BTFN.
+ * Supports RPC with the features present in Windows XP and earlier only. Using this creates
+ * smaller binaries but makes emulator detection easier.
+ */
+
+//#define SIMPLE_RPC
+#endif // !SIMPLE_RPC
+
+
+
+
#ifndef SIMPLE_SOCKETS
/*
* Disables the ability to choose IP addresses using the -L option in vlmcsd. vlmcsd will listen on all IP addresses.
diff --git a/src/helpers.c b/src/helpers.c
index 9c85025f..b702e030 100644
--- a/src/helpers.c
+++ b/src/helpers.c
@@ -29,85 +29,85 @@
-/*
- * UCS2 <-> UTF-8 functions
- * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC
- */
-
-// Convert one character from UTF-8 to UCS2
-// Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane)
-WCHAR utf8_to_ucs2_char (const unsigned char *input, const unsigned char **end_ptr)
+ /*
+ * UCS2 <-> UTF-8 functions
+ * All functions use little endian UCS2 since we only need it to communicate with Windows via RPC
+ */
+
+ // Convert one character from UTF-8 to UCS2
+ // Returns 0xffff, if utf-8 evaluates to > 0xfffe (outside basic multilingual pane)
+WCHAR utf8_to_ucs2_char(const unsigned char *input, const unsigned char **end_ptr)
{
- *end_ptr = input;
- if (input[0] == 0)
- return ~0;
+ *end_ptr = input;
+ if (input[0] == 0)
+ return ~0;
- if (input[0] < 0x80) {
- *end_ptr = input + 1;
- return LE16(input[0]);
- }
+ if (input[0] < 0x80) {
+ *end_ptr = input + 1;
+ return LE16(input[0]);
+ }
- if ((input[0] & 0xE0) == 0xE0) {
+ if ((input[0] & 0xE0) == 0xE0) {
- if (input[1] == 0 || input[2] == 0)
- return ~0;
+ if (input[1] == 0 || input[2] == 0)
+ return ~0;
- *end_ptr = input + 3;
+ *end_ptr = input + 3;
- return
- LE16((input[0] & 0x0F)<<12 |
- (input[1] & 0x3F)<<6 |
- (input[2] & 0x3F));
- }
+ return
+ LE16((input[0] & 0x0F) << 12 |
+ (input[1] & 0x3F) << 6 |
+ (input[2] & 0x3F));
+ }
- if ((input[0] & 0xC0) == 0xC0) {
- if (input[1] == 0)
- return ~0;
+ if ((input[0] & 0xC0) == 0xC0) {
+ if (input[1] == 0)
+ return ~0;
- *end_ptr = input + 2;
+ *end_ptr = input + 2;
- return
- LE16((input[0] & 0x1F)<<6 |
- (input[1] & 0x3F));
- }
- return ~0;
+ return
+ LE16((input[0] & 0x1F) << 6 |
+ (input[1] & 0x3F));
+ }
+ return ~0;
}
// Convert one character from UCS2 to UTF-8
// Returns length of UTF-8 char (1, 2 or 3) or -1 on error (UTF-16 outside UCS2)
// char *utf8 must be large enough to hold 3 bytes
-int ucs2_to_utf8_char (const WCHAR ucs2_le, char *utf8)
+int ucs2_to_utf8_char(const WCHAR ucs2_le, char *utf8)
{
- const WCHAR ucs2 = LE16(ucs2_le);
-
- if (ucs2 < 0x80) {
- utf8[0] = (char)ucs2;
- utf8[1] = '\0';
- return 1;
- }
-
- if (ucs2 >= 0x80 && ucs2 < 0x800) {
- utf8[0] = (ucs2 >> 6) | 0xC0;
- utf8[1] = (ucs2 & 0x3F) | 0x80;
- utf8[2] = '\0';
- return 2;
- }
-
- if (ucs2 >= 0x800 && ucs2 < 0xFFFF) {
-
- if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) {
- /* Ill-formed (UTF-16 ouside of BMP) */
- return -1;
- }
-
- utf8[0] = ((ucs2 >> 12) ) | 0xE0;
- utf8[1] = ((ucs2 >> 6 ) & 0x3F) | 0x80;
- utf8[2] = ((ucs2 ) & 0x3F) | 0x80;
- utf8[3] = '\0';
- return 3;
- }
-
- return -1;
+ const WCHAR ucs2 = LE16(ucs2_le);
+
+ if (ucs2 < 0x80) {
+ utf8[0] = (char)ucs2;
+ utf8[1] = '\0';
+ return 1;
+ }
+
+ if (ucs2 >= 0x80 && ucs2 < 0x800) {
+ utf8[0] = (ucs2 >> 6) | 0xC0;
+ utf8[1] = (ucs2 & 0x3F) | 0x80;
+ utf8[2] = '\0';
+ return 2;
+ }
+
+ if (ucs2 >= 0x800 && ucs2 < 0xFFFF) {
+
+ if (ucs2 >= 0xD800 && ucs2 <= 0xDFFF) {
+ /* Ill-formed (UTF-16 ouside of BMP) */
+ return -1;
+ }
+
+ utf8[0] = ((ucs2 >> 12)) | 0xE0;
+ utf8[1] = ((ucs2 >> 6) & 0x3F) | 0x80;
+ utf8[2] = ((ucs2) & 0x3F) | 0x80;
+ utf8[3] = '\0';
+ return 3;
+ }
+
+ return -1;
}
@@ -141,13 +141,13 @@ BOOL ucs2_to_utf8(const WCHAR* const ucs2_le, char* utf8, size_t maxucs2, size_t
const WCHAR* current_ucs2 = ucs2_le;
unsigned int index_utf8 = 0;
- for(*utf8 = 0; *current_ucs2; current_ucs2++)
+ for (*utf8 = 0; *current_ucs2; current_ucs2++)
{
if (current_ucs2 - ucs2_le > (intptr_t)maxucs2) return FALSE;
int len = ucs2_to_utf8_char(*current_ucs2, utf8_char);
if (index_utf8 + len > maxutf8) return FALSE;
strncat(utf8, utf8_char, len);
- index_utf8+=len;
+ index_utf8 += len;
}
return TRUE;
@@ -164,7 +164,7 @@ BOOL stringToInt(const char *const szValue, const unsigned int min, const unsign
errno = 0;
long long result = vlmcsd_strtoll(szValue, &nextchar, 10);
- if (errno || result < (long long)min || result > (long long)max || *nextchar)
+ if (errno || result < (long long)min || result >(long long)max || *nextchar)
{
return FALSE;
}
@@ -200,9 +200,9 @@ int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict g
hex2bin((BYTE*)&guid->Data3, inputCopy + 14, 4);
hex2bin(guid->Data4, input + 19, 16);
- guid->Data1 = BE32(guid->Data1);
- guid->Data2 = BE16(guid->Data2);
- guid->Data3 = BE16(guid->Data3);
+ guid->Data1 = BE32(guid->Data1);
+ guid->Data2 = BE16(guid->Data2);
+ guid->Data3 = BE16(guid->Data3);
return TRUE;
}
@@ -210,14 +210,25 @@ int_fast8_t string2Uuid(const char *const restrict input, GUID *const restrict g
// convert GUID to little-endian
void LEGUID(GUID *const restrict out, const GUID* const restrict in)
{
- #if __BYTE_ORDER != __LITTLE_ENDIAN
+# if __BYTE_ORDER != __LITTLE_ENDIAN
out->Data1 = LE32(in->Data1);
out->Data2 = LE16(in->Data2);
out->Data3 = LE16(in->Data3);
memcpy(out->Data4, in->Data4, sizeof(out->Data4));
- #else
+# else
memcpy(out, in, sizeof(GUID));
- #endif
+# endif
+}
+
+__pure int IsEqualGuidLE(const GUID *const restrict first, const GUID *const restrict second)
+{
+# if __BYTE_ORDER != __LITTLE_ENDIAN
+ GUID guid;
+ LEGUID(&guid, first);
+ return IsEqualGUID(&guid, second);
+# else
+ return IsEqualGUID(first, second);
+# endif
}
#if !IS_LIBRARY
@@ -229,7 +240,7 @@ __pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, c
if (!stringToInt(optarg, min, max, &result))
{
printerrorf("Fatal: Option \"-%c\" must be numeric between %u and %u.\n", o, min, max);
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
return result;
@@ -238,16 +249,16 @@ __pure unsigned int getOptionArgumentInt(const char o, const unsigned int min, c
// Resets getopt() to start parsing from the beginning
void optReset(void)
{
- #if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
+#if __minix__ || defined(__BSD__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
optind = 1;
optreset = 1; // Makes newer BSD getopt happy
- #elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here
+#elif defined(__UCLIBC__) // uClibc headers also define __GLIBC__ so be careful here
optind = 0; // uClibc seeks compatibility with GLIBC
- #elif defined(__GLIBC__)
+#elif defined(__GLIBC__)
optind = 0; // Makes GLIBC getopt happy
- #else // Standard for most systems
+#else // Standard for most systems
optind = 1;
- #endif
+#endif
}
#endif // !IS_LIBRARY
@@ -256,7 +267,7 @@ void optReset(void)
// Returns a static message buffer containing text for a given Win32 error. Not thread safe (same as strerror)
char* win_strerror(const int message)
{
- #define STRERROR_BUFFER_SIZE 256
+#define STRERROR_BUFFER_SIZE 256
static char buffer[STRERROR_BUFFER_SIZE];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, message, 0, buffer, STRERROR_BUFFER_SIZE, NULL);
@@ -317,7 +328,7 @@ void randomNumberInit()
__noreturn void OutOfMemory(void)
{
errorout("Fatal: Out of memory");
- exit(!0);
+ exit(VLMCSD_ENOMEM);
}
@@ -360,17 +371,17 @@ __pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument)
!strncasecmp(argument, "on", 2) ||
!strncasecmp(argument, "yes", 3) ||
!strncasecmp(argument, "1", 1)
- )
+ )
{
*result = TRUE;
return TRUE;
}
else if (
- !strncasecmp(argument, "false", 5) ||
- !strncasecmp(argument, "off", 3) ||
- !strncasecmp(argument, "no", 2) ||
- !strncasecmp(argument, "0", 1)
- )
+ !strncasecmp(argument, "false", 5) ||
+ !strncasecmp(argument, "off", 3) ||
+ !strncasecmp(argument, "no", 2) ||
+ !strncasecmp(argument, "0", 1)
+ )
{
*result = FALSE;
return TRUE;
diff --git a/src/helpers.h b/src/helpers.h
index 2a7460ed..af5a53ac 100644
--- a/src/helpers.h
+++ b/src/helpers.h
@@ -29,6 +29,7 @@ __noreturn void OutOfMemory(void);
void* vlmcsd_malloc(size_t len);
void hex2bin(BYTE *const bin, const char *hex, const size_t maxbin);
__pure BOOL getArgumentBool(int_fast8_t *result, const char *const argument);
+__pure int IsEqualGuidLE(const GUID *const restrict first, const GUID *const restrict second);
#endif // HELPERS_H
diff --git a/src/kms.c b/src/kms.c
index 77363f2d..5a499b95 100644
--- a/src/kms.c
+++ b/src/kms.c
@@ -63,265 +63,270 @@ const KmsIdList ProductList[] = {
/* 022 */ { { 0x6e9fc069, 0x257d, 0x4bc4, { 0xb4, 0xa7, 0x75, 0x05, 0x14, 0xd3, 0x27, 0x43, } } /*6e9fc069-257d-4bc4-b4a7-750514d32743*/, LOGTEXT("Windows Server 2016"), EPID_WINDOWS, 6, 5 },
/* 023 */ { { 0x969fe3c0, 0xa3ec, 0x491a, { 0x9f, 0x25, 0x42, 0x36, 0x05, 0xde, 0xb3, 0x65, } } /*969fe3c0-a3ec-491a-9f25-423605deb365*/, LOGTEXT("Windows 10 2016 (Volume)"), EPID_WINDOWS, 6, 25 },
# endif // NO_BASIC_PRODUCT_LIST
- /* 024 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } }, NULL, NULL, 0, 0 }
};
-#ifndef NO_LOG
+#ifndef NO_STRICT_MODES
+const ProdListIndex_t RetailAndBetaProducts[] = { KMS_ID_WIN10_RETAIL, KMS_ID_WIN81_RETAIL, KMS_ID_WIN8_RETAIL, KMS_ID_WIN_BETA, KMS_ID_WIN_SRV_BETA, KMS_ID_OFFICE2013_BETA };
+#endif // !NO_STRICT_MODES
+
+
+#if !defined(NO_LOG) || !defined(NO_STRICT_MODES)
// Application ID is used by KMS server to count KeyManagementServiceCurrentCount
// Do not change the order of this list. Append items as necessary
const KmsIdList AppList[] = {
/* 000 */ { { 0x55c92734, 0xd682, 0x4d71, { 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f } } /*"55C92734-D682-4D71-983E-D6EC3F16059F"*/, LOGTEXT(FRIENDLY_NAME_WINDOWS), EPID_WINDOWS, 0, 0},
/* 001 */ { { 0x59A52881, 0xa989, 0x479d, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"59A52881-A989-479D-AF46-F275C6370663"*/, LOGTEXT(FRIENDLY_NAME_OFFICE2010), EPID_OFFICE2010, 0, 0},
/* 002 */ { { 0x0FF1CE15, 0xA989, 0x479D, { 0xaf, 0x46, 0xf2, 0x75, 0xc6, 0x37, 0x06, 0x63 } } /*"0FF1CE15-A989-479D-AF46-F275C6370663"*/, LOGTEXT(FRIENDLY_NAME_OFFICE2013), EPID_OFFICE2013, 0, 0},
- /* 003 */ { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 }
};
-#endif // NO_LOG
+#endif // !defined(NO_LOG) || !defined(NO_STRICT_MODES)
#ifndef NO_EXTENDED_PRODUCT_LIST
-const KmsIdList ExtendedProductList [] = {
- // Windows 10 (Retail)
- { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, LOGTEXT("Windows 10 Home"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
- { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, LOGTEXT("Windows 10 Home Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
- { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, LOGTEXT("Windows 10 Home N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
- { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, LOGTEXT("Windows 10 Home Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
-
- // Windows 10 2015 (Volume)
- { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, LOGTEXT("Windows 10 Education"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, LOGTEXT("Windows 10 Education N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, LOGTEXT("Windows 10 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, LOGTEXT("Windows 10 Enterprise 2015 LTSB"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, LOGTEXT("Windows 10 Enterprise 2015 LTSB N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, LOGTEXT("Windows 10 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x43f2ab05, 0x7c87, 0x4d56, { 0xb2, 0x7c, 0x44, 0xd0, 0xf9, 0xa3, 0xda, 0xbd, } } /*43f2ab05-7c87-4d56-b27c-44d0f9a3dabd*/, LOGTEXT("Windows 10 Enterprise Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, LOGTEXT("Windows 10 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x3f1afc82, 0xf8ac, 0x4f6c, { 0x80, 0x05, 0x1d, 0x23, 0x3e, 0x60, 0x6e, 0xee, } } /*3f1afc82-f8ac-4f6c-8005-1d233e606eee*/, LOGTEXT("Windows 10 Professional Education"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0x5300b18c, 0x2e33, 0x4dc2, { 0x82, 0x91, 0x47, 0xff, 0xce, 0xc7, 0x46, 0xdd, } } /*5300b18c-2e33-4dc2-8291-47ffcec746dd*/, LOGTEXT("Windows 10 Professional Education N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0xa80b5abf, 0x76ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, LOGTEXT("Windows 10 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
- { { 0xff808201, 0xfec6, 0x4fd4, { 0xae, 0x16, 0xab, 0xbd, 0xda, 0xde, 0x57, 0x06, } } /*ff808201-fec6-4fd4-ae16-abbddade5706*/, LOGTEXT("Windows 10 Professional Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
-
- // Windows 10 2016 (Volume)
- { { 0x2d5a5a60, 0x3040, 0x48bf, { 0xbe, 0xb0, 0xfc, 0xd7, 0x70, 0xc2, 0x0c, 0xe0, } } /*2d5a5a60-3040-48bf-beb0-fcd770c20ce0*/, LOGTEXT("Windows 10 Enterprise 2016 LTSB"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_LTSB2016 },
- { { 0x9f776d83, 0x7156, 0x45b2, { 0x8a, 0x5c, 0x35, 0x9b, 0x9c, 0x9f, 0x22, 0xa3, } } /*9f776d83-7156-45b2-8a5c-359b9c9f22a3*/, LOGTEXT("Windows 10 Enterprise 2016 LTSB N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_LTSB2016 },
-
- // Windows 10 Unknown (Volume)
-
- // Windows 7
- { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, LOGTEXT("Windows 7 Embedded POSReady"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0xe1a8296a, 0xdb37, 0x44d1, { 0x8c, 0xce, 0x7b, 0xc9, 0x61, 0xd5, 0x9c, 0x54, } } /*e1a8296a-db37-44d1-8cce-7bc961d59c54*/, LOGTEXT("Windows 7 Embedded Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, LOGTEXT("Windows 7 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0x46bbed08, 0x9c7b, 0x48fc, { 0xa6, 0x14, 0x95, 0x25, 0x05, 0x73, 0xf4, 0xea, } } /*46bbed08-9c7b-48fc-a614-95250573f4ea*/, LOGTEXT("Windows 7 Enterprise E"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, LOGTEXT("Windows 7 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, LOGTEXT("Windows 7 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0x5a041529, 0xfef8, 0x4d07, { 0xb0, 0x6f, 0xb5, 0x9b, 0x57, 0x3b, 0x32, 0xd2, } } /*5a041529-fef8-4d07-b06f-b59b573b32d2*/, LOGTEXT("Windows 7 Professional E"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, LOGTEXT("Windows 7 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
- { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, LOGTEXT("Windows 7 ThinPC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
-
- // Windows 8 (Retail)
- { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, LOGTEXT("Windows 8 Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
- { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, LOGTEXT("Windows 8 Core Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
- { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, LOGTEXT("Windows 8 Core N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
- { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, LOGTEXT("Windows 8 Core Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
- { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, LOGTEXT("Windows 8 Professional WMC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
-
- // Windows 8 (Volume)
- { { 0x18db1848, 0x12e0, 0x4167, { 0xb9, 0xd7, 0xda, 0x7f, 0xcd, 0xa5, 0x07, 0xdb, } } /*18db1848-12e0-4167-b9d7-da7fcda507db*/, LOGTEXT("Windows 8 Embedded Industry Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
- { { 0x10018baf, 0xce21, 0x4060, { 0x80, 0xbd, 0x47, 0xfe, 0x74, 0xed, 0x4d, 0xab, } } /*10018baf-ce21-4060-80bd-47fe74ed4dab*/, LOGTEXT("Windows 8 Embedded Industry Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
- { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, LOGTEXT("Windows 8 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
- { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, LOGTEXT("Windows 8 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
- { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, LOGTEXT("Windows 8 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
- { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, LOGTEXT("Windows 8 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
-
- // Windows 8.1 (Retail)
- { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, LOGTEXT("Windows 8.1 Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, LOGTEXT("Windows 8.1 Core ARM"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, LOGTEXT("Windows 8.1 Core Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, LOGTEXT("Windows 8.1 Core N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, LOGTEXT("Windows 8.1 Core Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, LOGTEXT("Windows 8.1 Professional Student"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, LOGTEXT("Windows 8.1 Professional Student N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
- { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, LOGTEXT("Windows 8.1 Professional WMC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
-
- // Windows 8.1 (Volume)
- { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, LOGTEXT("Windows 8.1 Core Connected"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, LOGTEXT("Windows 8.1 Core Connected Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, LOGTEXT("Windows 8.1 Core Connected N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, LOGTEXT("Windows 8.1 Core Connected Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, LOGTEXT("Windows 8.1 Embedded Industry Automotive"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, LOGTEXT("Windows 8.1 Embedded Industry Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, LOGTEXT("Windows 8.1 Embedded Industry Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, LOGTEXT("Windows 8.1 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, LOGTEXT("Windows 8.1 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, LOGTEXT("Windows 8.1 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
- { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, LOGTEXT("Windows 8.1 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
-
- // Windows Preview
- # ifdef INCLUDE_BETAS
- { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, LOGTEXT("Windows 10 Enterprise Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
- { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, LOGTEXT("Windows 10 Professional Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
- { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, LOGTEXT("Windows 10 Professional WMC Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
- { { 0x2b9c337f, 0x7a1d, 0x4271, { 0x90, 0xa3, 0xc6, 0x85, 0x5a, 0x2b, 0x8a, 0x1c, } } /*2b9c337f-7a1d-4271-90a3-c6855a2b8a1c*/, LOGTEXT("Windows 8.x Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
- { { 0x631ead72, 0xa8ab, 0x4df8, { 0xbb, 0xdf, 0x37, 0x20, 0x29, 0x98, 0x9b, 0xdd, } } /*631ead72-a8ab-4df8-bbdf-372029989bdd*/, LOGTEXT("Windows 8.x Preview ARM"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
- # endif // INCLUDE_BETAS
-
- // Windows Server 2008 A (Web and HPC)
- { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, LOGTEXT("Windows Server 2008 Compute Cluster"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A },
- { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, LOGTEXT("Windows Server 2008 Web"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A },
-
- // Windows Server 2008 B (Standard and Enterprise)
- { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, LOGTEXT("Windows Server 2008 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
- { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, LOGTEXT("Windows Server 2008 Enterprise without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
- { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, LOGTEXT("Windows Server 2008 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
- { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, LOGTEXT("Windows Server 2008 Standard without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
-
- // Windows Server 2008 C (Datacenter)
- { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, LOGTEXT("Windows Server 2008 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
- { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, LOGTEXT("Windows Server 2008 Datacenter without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
- { { 0x01ef176b, 0x3e0d, 0x422a, { 0xb4, 0xf8, 0x4e, 0xa8, 0x80, 0x03, 0x5e, 0x8f, } } /*01ef176b-3e0d-422a-b4f8-4ea880035e8f*/, LOGTEXT("Windows Server 2008 for Itanium"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
-
- // Windows Server 2008 R2 A (Web and HPC)
- { { 0xf772515c, 0x0e87, 0x48d5, { 0xa6, 0x76, 0xe6, 0x96, 0x2c, 0x3e, 0x11, 0x95, } } /*f772515c-0e87-48d5-a676-e6962c3e1195*/, LOGTEXT("Windows MultiPoint Server 2010"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
- { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, LOGTEXT("Windows Server 2008 R2 HPC Edition"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
- { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, LOGTEXT("Windows Server 2008 R2 Web"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
-
- // Windows Server 2008 R2 B (Standard and Enterprise)
- { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, LOGTEXT("Windows Server 2008 R2 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B },
- { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, LOGTEXT("Windows Server 2008 R2 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B },
-
- // Windows Server 2008 R2 C (Datacenter)
- { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, LOGTEXT("Windows Server 2008 R2 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C },
- { { 0x8a26851c, 0x1c7e, 0x48d3, { 0xa6, 0x87, 0xfb, 0xca, 0x9b, 0x9a, 0xc1, 0x6b, } } /*8a26851c-1c7e-48d3-a687-fbca9b9ac16b*/, LOGTEXT("Windows Server 2008 R2 for Itanium Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C },
-
- // Windows Server 2012
- { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, LOGTEXT("Windows Server 2012 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
- { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, LOGTEXT("Windows Server 2012 MultiPoint Premium"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
- { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, LOGTEXT("Windows Server 2012 MultiPoint Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
- { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, LOGTEXT("Windows Server 2012 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
-
- // Windows Server 2012 R2
- { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, LOGTEXT("Windows Server 2012 R2 Cloud Storage"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
- { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, LOGTEXT("Windows Server 2012 R2 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
- { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, LOGTEXT("Windows Server 2012 R2 Essentials"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
- { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, LOGTEXT("Windows Server 2012 R2 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
-
- // Windows Server 2016
- { { 0x3dbf341b, 0x5f6c, 0x4fa7, { 0xb9, 0x36, 0x69, 0x9d, 0xce, 0x9e, 0x26, 0x3f, } } /*3dbf341b-5f6c-4fa7-b936-699dce9e263f*/, LOGTEXT("Windows Server 2016 Azure Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
- { { 0x7b4433f4, 0xb1e7, 0x4788, { 0x89, 0x5a, 0xc4, 0x53, 0x78, 0xd3, 0x82, 0x53, } } /*7b4433f4-b1e7-4788-895a-c45378d38253*/, LOGTEXT("Windows Server 2016 Cloud Storage"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
- { { 0x21c56779, 0xb449, 0x4d20, { 0xad, 0xfc, 0xee, 0xce, 0x0e, 0x1a, 0xd7, 0x4b, } } /*21c56779-b449-4d20-adfc-eece0e1ad74b*/, LOGTEXT("Windows Server 2016 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
- { { 0x2b5a1b0f, 0xa5ab, 0x4c54, { 0xac, 0x2f, 0xa6, 0xd9, 0x48, 0x24, 0xa2, 0x83, } } /*2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283*/, LOGTEXT("Windows Server 2016 Essentials"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
- { { 0x8c1c5410, 0x9f39, 0x4805, { 0x8c, 0x9d, 0x63, 0xa0, 0x77, 0x06, 0x35, 0x8f, } } /*8c1c5410-9f39-4805-8c9d-63a07706358f*/, LOGTEXT("Windows Server 2016 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
-
- // Windows Server Preview
- # ifdef INCLUDE_BETAS
- { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, LOGTEXT("Windows Server 2016 Datacenter Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA },
- # endif // INCLUDE_BETAS
-
- // Windows Vista
- { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, LOGTEXT("Windows Vista Business"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
- { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, LOGTEXT("Windows Vista Business N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
- { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, LOGTEXT("Windows Vista Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
- { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, LOGTEXT("Windows Vista Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
-
- // Office 2010
- { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, LOGTEXT("Office Access 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, LOGTEXT("Office Excel 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, LOGTEXT("Office Groove 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, LOGTEXT("Office InfoPath 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, LOGTEXT("Office Mondo 1 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, LOGTEXT("Office Mondo 2 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, LOGTEXT("Office OneNote 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, LOGTEXT("Office OutLook 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, LOGTEXT("Office PowerPoint 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, LOGTEXT("Office Professional Plus 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, LOGTEXT("Office Project Pro 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, LOGTEXT("Office Project Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, LOGTEXT("Office Publisher 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, LOGTEXT("Office Small Business Basics 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, LOGTEXT("Office Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, LOGTEXT("Office Visio Premium 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, LOGTEXT("Office Visio Pro 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, LOGTEXT("Office Visio Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
- { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, LOGTEXT("Office Word 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
-
- // Office 2013
- { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, LOGTEXT("Office Access 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, LOGTEXT("Office Excel 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, LOGTEXT("Office InfoPath 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, LOGTEXT("Office Lync 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, LOGTEXT("Office Mondo 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, LOGTEXT("Office OneNote 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, LOGTEXT("Office OutLook 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, LOGTEXT("Office PowerPoint 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, LOGTEXT("Office Professional Plus 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, LOGTEXT("Office Project Pro 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, LOGTEXT("Office Project Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, LOGTEXT("Office Publisher 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, LOGTEXT("Office Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, LOGTEXT("Office Visio Pro 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, LOGTEXT("Office Visio Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
- { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, LOGTEXT("Office Word 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
-
- // Office 2013 (Pre-Release)
- # ifdef INCLUDE_BETAS
- { { 0x44b538e2, 0xfb34, 0x4732, { 0x81, 0xe4, 0x64, 0x4c, 0x17, 0xd2, 0xe7, 0x46, } } /*44b538e2-fb34-4732-81e4-644c17d2e746*/, LOGTEXT("Office Access 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x9373bfa0, 0x97b3, 0x4587, { 0xab, 0x73, 0x30, 0x93, 0x44, 0x61, 0xd5, 0x5c, } } /*9373bfa0-97b3-4587-ab73-30934461d55c*/, LOGTEXT("Office Excel 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0xaa286eb4, 0x556f, 0x4eeb, { 0x96, 0x7c, 0xc1, 0xb7, 0x71, 0xb7, 0x67, 0x3e, } } /*aa286eb4-556f-4eeb-967c-c1b771b7673e*/, LOGTEXT("Office Groove 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x7ccc8256, 0xfbaa, 0x49c6, { 0xb2, 0xa9, 0xf5, 0xaf, 0xb4, 0x25, 0x7c, 0xd2, } } /*7ccc8256-fbaa-49c6-b2a9-f5afb4257cd2*/, LOGTEXT("Office InfoPath 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0xc53dfe17, 0xcc00, 0x4967, { 0xb1, 0x88, 0xa0, 0x88, 0xa9, 0x65, 0x49, 0x4d, } } /*c53dfe17-cc00-4967-b188-a088a965494d*/, LOGTEXT("Office Lync 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x2816a87d, 0xe1ed, 0x4097, { 0xb3, 0x11, 0xe2, 0x34, 0x1c, 0x57, 0xb1, 0x79, } } /*2816a87d-e1ed-4097-b311-e2341c57b179*/, LOGTEXT("Office Mondo 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x67c0f908, 0x184f, 0x4f64, { 0x82, 0x50, 0x12, 0xdb, 0x79, 0x7a, 0xb3, 0xc3, } } /*67c0f908-184f-4f64-8250-12db797ab3c3*/, LOGTEXT("Office OneNote 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x7bce4e7a, 0xdd80, 0x4682, { 0x98, 0xfa, 0xf9, 0x93, 0x72, 0x58, 0x03, 0xd2, } } /*7bce4e7a-dd80-4682-98fa-f993725803d2*/, LOGTEXT("Office Outlook 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x1ec10c0a, 0x54f6, 0x453e, { 0xb8, 0x5a, 0x6f, 0xa1, 0xbb, 0xfe, 0xa9, 0xb7, } } /*1ec10c0a-54f6-453e-b85a-6fa1bbfea9b7*/, LOGTEXT("Office PowerPoint 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x87d2b5bf, 0xd47b, 0x41fb, { 0xaf, 0x62, 0x71, 0xc3, 0x82, 0xf5, 0xcc, 0x85, } } /*87d2b5bf-d47b-41fb-af62-71c382f5cc85*/, LOGTEXT("Office Professional Plus 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x3cfe50a9, 0x0e03, 0x4b29, { 0x97, 0x54, 0x9f, 0x19, 0x3f, 0x07, 0xb7, 0x1f, } } /*3cfe50a9-0e03-4b29-9754-9f193f07b71f*/, LOGTEXT("Office Project Pro 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x39e49e57, 0xae68, 0x4ee3, { 0xb0, 0x98, 0x26, 0x48, 0x0d, 0xf3, 0xda, 0x96, } } /*39e49e57-ae68-4ee3-b098-26480df3da96*/, LOGTEXT("Office Project Standard 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x15aa2117, 0x8f79, 0x49a8, { 0x83, 0x17, 0x75, 0x30, 0x26, 0xd6, 0xa0, 0x54, } } /*15aa2117-8f79-49a8-8317-753026d6a054*/, LOGTEXT("Office Publisher 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0xcfbfd60e, 0x0b5f, 0x427d, { 0x91, 0x7c, 0xa4, 0xdf, 0x42, 0xa8, 0x0e, 0x44, } } /*cfbfd60e-0b5f-427d-917c-a4df42a80e44*/, LOGTEXT("Office Visio Pro 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0x7012cc81, 0x8887, 0x42e9, { 0xb1, 0x7d, 0x4e, 0x5e, 0x42, 0x76, 0x0f, 0x0d, } } /*7012cc81-8887-42e9-b17d-4e5e42760f0d*/, LOGTEXT("Office Visio Standard 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- { { 0xde9c7eb6, 0x5a85, 0x420d, { 0x97, 0x03, 0xff, 0xf1, 0x1b, 0xdd, 0x4d, 0x43, } } /*de9c7eb6-5a85-420d-9703-fff11bdd4d43*/, LOGTEXT("Office Word 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
- # endif // INCLUDE_BETAS
-
- // Office 2016
- { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, LOGTEXT("Office Access 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, LOGTEXT("Office Excel 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, LOGTEXT("Office Mondo 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, LOGTEXT("Office Mondo R 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, LOGTEXT("Office OneNote 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, LOGTEXT("Office Outlook 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, LOGTEXT("Office Powerpoint 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, LOGTEXT("Office Professional Plus 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, LOGTEXT("Office Project Pro 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x829b8110, 0x0e6f, 0x4349, { 0xbc, 0xa4, 0x42, 0x80, 0x35, 0x77, 0x78, 0x8d, } } /*829b8110-0e6f-4349-bca4-42803577788d*/, LOGTEXT("Office Project Pro 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, LOGTEXT("Office Project Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xcbbaca45, 0x556a, 0x4416, { 0xad, 0x03, 0xbd, 0xa5, 0x98, 0xea, 0xa7, 0xc8, } } /*cbbaca45-556a-4416-ad03-bda598eaa7c8*/, LOGTEXT("Office Project Standard 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, LOGTEXT("Office Publisher 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, LOGTEXT("Office Skype for Business 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, LOGTEXT("Office Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, LOGTEXT("Office Visio Pro 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xb234abe3, 0x0857, 0x4f9c, { 0xb0, 0x5a, 0x4d, 0xc3, 0x14, 0xf8, 0x55, 0x57, } } /*b234abe3-0857-4f9c-b05a-4dc314f85557*/, LOGTEXT("Office Visio Pro 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, LOGTEXT("Office Visio Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0x361fe620, 0x64f4, 0x41b5, { 0xba, 0x77, 0x84, 0xf8, 0xe0, 0x79, 0xb1, 0xf7, } } /*361fe620-64f4-41b5-ba77-84f8e079b1f7*/, LOGTEXT("Office Visio Standard 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
- { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, LOGTEXT("Office Word 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
-
- // End marker (necessity should be removed when time permits)
-
- { { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, NULL, NULL, 0, 0 }
+const KmsIdList ExtendedProductList[] = {
+ // Windows 10 (Retail)
+ { { 0x58e97c99, 0xf377, 0x4ef1, { 0x81, 0xd5, 0x4a, 0xd5, 0x52, 0x2b, 0x5f, 0xd8, } } /*58e97c99-f377-4ef1-81d5-4ad5522b5fd8*/, LOGTEXT("Windows 10 Home"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
+ { { 0xa9107544, 0xf4a0, 0x4053, { 0xa9, 0x6a, 0x14, 0x79, 0xab, 0xde, 0xf9, 0x12, } } /*a9107544-f4a0-4053-a96a-1479abdef912*/, LOGTEXT("Windows 10 Home Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
+ { { 0x7b9e1751, 0xa8da, 0x4f75, { 0x95, 0x60, 0x5f, 0xad, 0xfe, 0x3d, 0x8e, 0x38, } } /*7b9e1751-a8da-4f75-9560-5fadfe3d8e38*/, LOGTEXT("Windows 10 Home N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
+ { { 0xcd918a57, 0xa41b, 0x4c82, { 0x8d, 0xce, 0x1a, 0x53, 0x8e, 0x22, 0x1a, 0x83, } } /*cd918a57-a41b-4c82-8dce-1a538e221a83*/, LOGTEXT("Windows 10 Home Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_RETAIL },
+
+ // Windows 10 2015 (Volume)
+ { { 0xe0c42288, 0x980c, 0x4788, { 0xa0, 0x14, 0xc0, 0x80, 0xd2, 0xe1, 0x92, 0x6e, } } /*e0c42288-980c-4788-a014-c080d2e1926e*/, LOGTEXT("Windows 10 Education"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x3c102355, 0xd027, 0x42c6, { 0xad, 0x23, 0x2e, 0x7e, 0xf8, 0xa0, 0x25, 0x85, } } /*3c102355-d027-42c6-ad23-2e7ef8a02585*/, LOGTEXT("Windows 10 Education N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x73111121, 0x5638, 0x40f6, { 0xbc, 0x11, 0xf1, 0xd7, 0xb0, 0xd6, 0x43, 0x00, } } /*73111121-5638-40f6-bc11-f1d7b0d64300*/, LOGTEXT("Windows 10 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x7b51a46c, 0x0c04, 0x4e8f, { 0x9a, 0xf4, 0x84, 0x96, 0xcc, 0xa9, 0x0d, 0x5e, } } /*7b51a46c-0c04-4e8f-9af4-8496cca90d5e*/, LOGTEXT("Windows 10 Enterprise 2015 LTSB"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x87b838b7, 0x41b6, 0x4590, { 0x83, 0x18, 0x57, 0x97, 0x95, 0x1d, 0x85, 0x29, } } /*87b838b7-41b6-4590-8318-5797951d8529*/, LOGTEXT("Windows 10 Enterprise 2015 LTSB N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0xe272e3e2, 0x732f, 0x4c65, { 0xa8, 0xf0, 0x48, 0x47, 0x47, 0xd0, 0xd9, 0x47, } } /*e272e3e2-732f-4c65-a8f0-484747d0d947*/, LOGTEXT("Windows 10 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x43f2ab05, 0x7c87, 0x4d56, { 0xb2, 0x7c, 0x44, 0xd0, 0xf9, 0xa3, 0xda, 0xbd, } } /*43f2ab05-7c87-4d56-b27c-44d0f9a3dabd*/, LOGTEXT("Windows 10 Enterprise Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x2de67392, 0xb7a7, 0x462a, { 0xb1, 0xca, 0x10, 0x8d, 0xd1, 0x89, 0xf5, 0x88, } } /*2de67392-b7a7-462a-b1ca-108dd189f588*/, LOGTEXT("Windows 10 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x3f1afc82, 0xf8ac, 0x4f6c, { 0x80, 0x05, 0x1d, 0x23, 0x3e, 0x60, 0x6e, 0xee, } } /*3f1afc82-f8ac-4f6c-8005-1d233e606eee*/, LOGTEXT("Windows 10 Professional Education"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0x5300b18c, 0x2e33, 0x4dc2, { 0x82, 0x91, 0x47, 0xff, 0xce, 0xc7, 0x46, 0xdd, } } /*5300b18c-2e33-4dc2-8291-47ffcec746dd*/, LOGTEXT("Windows 10 Professional Education N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0xa80b5abf, 0x76ad, 0x428b, { 0xb0, 0x5d, 0xa4, 0x7d, 0x2d, 0xff, 0xee, 0xbf, } } /*a80b5abf-76ad-428b-b05d-a47d2dffeebf*/, LOGTEXT("Windows 10 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+ { { 0xff808201, 0xfec6, 0x4fd4, { 0xae, 0x16, 0xab, 0xbd, 0xda, 0xde, 0x57, 0x06, } } /*ff808201-fec6-4fd4-ae16-abbddade5706*/, LOGTEXT("Windows 10 Professional Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_VL },
+
+ // Windows 10 2016 (Volume)
+ { { 0x2d5a5a60, 0x3040, 0x48bf, { 0xbe, 0xb0, 0xfc, 0xd7, 0x70, 0xc2, 0x0c, 0xe0, } } /*2d5a5a60-3040-48bf-beb0-fcd770c20ce0*/, LOGTEXT("Windows 10 Enterprise 2016 LTSB"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_LTSB2016 },
+ { { 0x9f776d83, 0x7156, 0x45b2, { 0x8a, 0x5c, 0x35, 0x9b, 0x9c, 0x9f, 0x22, 0xa3, } } /*9f776d83-7156-45b2-8a5c-359b9c9f22a3*/, LOGTEXT("Windows 10 Enterprise 2016 LTSB N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN10_LTSB2016 },
+
+ // Windows 10 Unknown (Volume)
+
+ // Windows 7
+ { { 0xdb537896, 0x376f, 0x48ae, { 0xa4, 0x92, 0x53, 0xd0, 0x54, 0x77, 0x73, 0xd0, } } /*db537896-376f-48ae-a492-53d0547773d0*/, LOGTEXT("Windows 7 Embedded POSReady"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0xe1a8296a, 0xdb37, 0x44d1, { 0x8c, 0xce, 0x7b, 0xc9, 0x61, 0xd5, 0x9c, 0x54, } } /*e1a8296a-db37-44d1-8cce-7bc961d59c54*/, LOGTEXT("Windows 7 Embedded Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0xae2ee509, 0x1b34, 0x41c0, { 0xac, 0xb7, 0x6d, 0x46, 0x50, 0x16, 0x89, 0x15, } } /*ae2ee509-1b34-41c0-acb7-6d4650168915*/, LOGTEXT("Windows 7 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0x46bbed08, 0x9c7b, 0x48fc, { 0xa6, 0x14, 0x95, 0x25, 0x05, 0x73, 0xf4, 0xea, } } /*46bbed08-9c7b-48fc-a614-95250573f4ea*/, LOGTEXT("Windows 7 Enterprise E"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0x1cb6d605, 0x11b3, 0x4e14, { 0xbb, 0x30, 0xda, 0x91, 0xc8, 0xe3, 0x98, 0x3a, } } /*1cb6d605-11b3-4e14-bb30-da91c8e3983a*/, LOGTEXT("Windows 7 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0xb92e9980, 0xb9d5, 0x4821, { 0x9c, 0x94, 0x14, 0x0f, 0x63, 0x2f, 0x63, 0x12, } } /*b92e9980-b9d5-4821-9c94-140f632f6312*/, LOGTEXT("Windows 7 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0x5a041529, 0xfef8, 0x4d07, { 0xb0, 0x6f, 0xb5, 0x9b, 0x57, 0x3b, 0x32, 0xd2, } } /*5a041529-fef8-4d07-b06f-b59b573b32d2*/, LOGTEXT("Windows 7 Professional E"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0x54a09a0d, 0xd57b, 0x4c10, { 0x8b, 0x69, 0xa8, 0x42, 0xd6, 0x59, 0x0a, 0xd5, } } /*54a09a0d-d57b-4c10-8b69-a842d6590ad5*/, LOGTEXT("Windows 7 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+ { { 0xaa6dd3aa, 0xc2b4, 0x40e2, { 0xa5, 0x44, 0xa6, 0xbb, 0xb3, 0xf5, 0xc3, 0x95, } } /*aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395*/, LOGTEXT("Windows 7 ThinPC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN7 },
+
+ // Windows 8 (Retail)
+ { { 0xc04ed6bf, 0x55c8, 0x4b47, { 0x9f, 0x8e, 0x5a, 0x1f, 0x31, 0xce, 0xee, 0x60, } } /*c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60*/, LOGTEXT("Windows 8 Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
+ { { 0x9d5584a2, 0x2d85, 0x419a, { 0x98, 0x2c, 0xa0, 0x08, 0x88, 0xbb, 0x9d, 0xdf, } } /*9d5584a2-2d85-419a-982c-a00888bb9ddf*/, LOGTEXT("Windows 8 Core Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
+ { { 0x197390a0, 0x65f6, 0x4a95, { 0xbd, 0xc4, 0x55, 0xd5, 0x8a, 0x3b, 0x02, 0x53, } } /*197390a0-65f6-4a95-bdc4-55d58a3b0253*/, LOGTEXT("Windows 8 Core N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
+ { { 0x8860fcd4, 0xa77b, 0x4a20, { 0x90, 0x45, 0xa1, 0x50, 0xff, 0x11, 0xd6, 0x09, } } /*8860fcd4-a77b-4a20-9045-a150ff11d609*/, LOGTEXT("Windows 8 Core Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
+ { { 0xa00018a3, 0xf20f, 0x4632, { 0xbf, 0x7c, 0x8d, 0xaa, 0x53, 0x51, 0xc9, 0x14, } } /*a00018a3-f20f-4632-bf7c-8daa5351c914*/, LOGTEXT("Windows 8 Professional WMC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_RETAIL },
+
+ // Windows 8 (Volume)
+ { { 0x18db1848, 0x12e0, 0x4167, { 0xb9, 0xd7, 0xda, 0x7f, 0xcd, 0xa5, 0x07, 0xdb, } } /*18db1848-12e0-4167-b9d7-da7fcda507db*/, LOGTEXT("Windows 8 Embedded Industry Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+ { { 0x10018baf, 0xce21, 0x4060, { 0x80, 0xbd, 0x47, 0xfe, 0x74, 0xed, 0x4d, 0xab, } } /*10018baf-ce21-4060-80bd-47fe74ed4dab*/, LOGTEXT("Windows 8 Embedded Industry Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+ { { 0x458e1bec, 0x837a, 0x45f6, { 0xb9, 0xd5, 0x92, 0x5e, 0xd5, 0xd2, 0x99, 0xde, } } /*458e1bec-837a-45f6-b9d5-925ed5d299de*/, LOGTEXT("Windows 8 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+ { { 0xe14997e7, 0x800a, 0x4cf7, { 0xad, 0x10, 0xde, 0x4b, 0x45, 0xb5, 0x78, 0xdb, } } /*e14997e7-800a-4cf7-ad10-de4b45b578db*/, LOGTEXT("Windows 8 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+ { { 0xa98bcd6d, 0x5343, 0x4603, { 0x8a, 0xfe, 0x59, 0x08, 0xe4, 0x61, 0x11, 0x12, } } /*a98bcd6d-5343-4603-8afe-5908e4611112*/, LOGTEXT("Windows 8 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+ { { 0xebf245c1, 0x29a8, 0x4daf, { 0x9c, 0xb1, 0x38, 0xdf, 0xc6, 0x08, 0xa8, 0xc8, } } /*ebf245c1-29a8-4daf-9cb1-38dfc608a8c8*/, LOGTEXT("Windows 8 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN8_VL },
+
+ // Windows 8.1 (Retail)
+ { { 0xfe1c3238, 0x432a, 0x43a1, { 0x8e, 0x25, 0x97, 0xe7, 0xd1, 0xef, 0x10, 0xf3, } } /*fe1c3238-432a-43a1-8e25-97e7d1ef10f3*/, LOGTEXT("Windows 8.1 Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0xffee456a, 0xcd87, 0x4390, { 0x8e, 0x07, 0x16, 0x14, 0x6c, 0x67, 0x2f, 0xd0, } } /*ffee456a-cd87-4390-8e07-16146c672fd0*/, LOGTEXT("Windows 8.1 Core ARM"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0xdb78b74f, 0xef1c, 0x4892, { 0xab, 0xfe, 0x1e, 0x66, 0xb8, 0x23, 0x1d, 0xf6, } } /*db78b74f-ef1c-4892-abfe-1e66b8231df6*/, LOGTEXT("Windows 8.1 Core Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0x78558a64, 0xdc19, 0x43fe, { 0xa0, 0xd0, 0x80, 0x75, 0xb2, 0xa3, 0x70, 0xa3, } } /*78558a64-dc19-43fe-a0d0-8075b2a370a3*/, LOGTEXT("Windows 8.1 Core N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0xc72c6a1d, 0xf252, 0x4e7e, { 0xbd, 0xd1, 0x3f, 0xca, 0x34, 0x2a, 0xcb, 0x35, } } /*c72c6a1d-f252-4e7e-bdd1-3fca342acb35*/, LOGTEXT("Windows 8.1 Core Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0xe58d87b5, 0x8126, 0x4580, { 0x80, 0xfb, 0x86, 0x1b, 0x22, 0xf7, 0x92, 0x96, } } /*e58d87b5-8126-4580-80fb-861b22f79296*/, LOGTEXT("Windows 8.1 Professional Student"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0xcab491c7, 0xa918, 0x4f60, { 0xb5, 0x02, 0xda, 0xb7, 0x5e, 0x33, 0x4f, 0x40, } } /*cab491c7-a918-4f60-b502-dab75e334f40*/, LOGTEXT("Windows 8.1 Professional Student N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+ { { 0x096ce63d, 0x4fac, 0x48a9, { 0x82, 0xa9, 0x61, 0xae, 0x9e, 0x80, 0x0e, 0x5f, } } /*096ce63d-4fac-48a9-82a9-61ae9e800e5f*/, LOGTEXT("Windows 8.1 Professional WMC"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_RETAIL },
+
+ // Windows 8.1 (Volume)
+ { { 0xe9942b32, 0x2e55, 0x4197, { 0xb0, 0xbd, 0x5f, 0xf5, 0x8c, 0xba, 0x88, 0x60, } } /*e9942b32-2e55-4197-b0bd-5ff58cba8860*/, LOGTEXT("Windows 8.1 Core Connected"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xba998212, 0x460a, 0x44db, { 0xbf, 0xb5, 0x71, 0xbf, 0x09, 0xd1, 0xc6, 0x8b, } } /*ba998212-460a-44db-bfb5-71bf09d1c68b*/, LOGTEXT("Windows 8.1 Core Connected Country Specific"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xc6ddecd6, 0x2354, 0x4c19, { 0x90, 0x9b, 0x30, 0x6a, 0x30, 0x58, 0x48, 0x4e, } } /*c6ddecd6-2354-4c19-909b-306a3058484e*/, LOGTEXT("Windows 8.1 Core Connected N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xb8f5e3a3, 0xed33, 0x4608, { 0x81, 0xe1, 0x37, 0xd6, 0xc9, 0xdc, 0xfd, 0x9c, } } /*b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c*/, LOGTEXT("Windows 8.1 Core Connected Single Language"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xf7e88590, 0xdfc7, 0x4c78, { 0xbc, 0xcb, 0x6f, 0x38, 0x65, 0xb9, 0x9d, 0x1a, } } /*f7e88590-dfc7-4c78-bccb-6f3865b99d1a*/, LOGTEXT("Windows 8.1 Embedded Industry Automotive"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xcd4e2d9f, 0x5059, 0x4a50, { 0xa9, 0x2d, 0x05, 0xd5, 0xbb, 0x12, 0x67, 0xc7, } } /*cd4e2d9f-5059-4a50-a92d-05d5bb1267c7*/, LOGTEXT("Windows 8.1 Embedded Industry Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0x0ab82d54, 0x47f4, 0x4acb, { 0x81, 0x8c, 0xcc, 0x5b, 0xf0, 0xec, 0xb6, 0x49, } } /*0ab82d54-47f4-4acb-818c-cc5bf0ecb649*/, LOGTEXT("Windows 8.1 Embedded Industry Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0x81671aaf, 0x79d1, 0x4eb1, { 0xb0, 0x04, 0x8c, 0xbb, 0xe1, 0x73, 0xaf, 0xea, } } /*81671aaf-79d1-4eb1-b004-8cbbe173afea*/, LOGTEXT("Windows 8.1 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0x113e705c, 0xfa49, 0x48a4, { 0xbe, 0xea, 0x7d, 0xd8, 0x79, 0xb4, 0x6b, 0x14, } } /*113e705c-fa49-48a4-beea-7dd879b46b14*/, LOGTEXT("Windows 8.1 Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0xc06b6981, 0xd7fd, 0x4a35, { 0xb7, 0xb4, 0x05, 0x47, 0x42, 0xb7, 0xaf, 0x67, } } /*c06b6981-d7fd-4a35-b7b4-054742b7af67*/, LOGTEXT("Windows 8.1 Professional"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+ { { 0x7476d79f, 0x8e48, 0x49b4, { 0xab, 0x63, 0x4d, 0x0b, 0x81, 0x3a, 0x16, 0xe4, } } /*7476d79f-8e48-49b4-ab63-4d0b813a16e4*/, LOGTEXT("Windows 8.1 Professional N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN81_VL },
+
+ // Windows Preview
+# ifdef INCLUDE_BETAS
+ { { 0xcde952c7, 0x2f96, 0x4d9d, { 0x8f, 0x2b, 0x2d, 0x34, 0x9f, 0x64, 0xfc, 0x51, } } /*cde952c7-2f96-4d9d-8f2b-2d349f64fc51*/, LOGTEXT("Windows 10 Enterprise Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
+ { { 0xa4383e6b, 0xdada, 0x423d, { 0xa4, 0x3d, 0xf2, 0x56, 0x78, 0x42, 0x96, 0x76, } } /*a4383e6b-dada-423d-a43d-f25678429676*/, LOGTEXT("Windows 10 Professional Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
+ { { 0xcf59a07b, 0x1a2a, 0x4be0, { 0xbf, 0xe0, 0x42, 0x3b, 0x58, 0x23, 0xe6, 0x63, } } /*cf59a07b-1a2a-4be0-bfe0-423b5823e663*/, LOGTEXT("Windows 10 Professional WMC Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
+ { { 0x2b9c337f, 0x7a1d, 0x4271, { 0x90, 0xa3, 0xc6, 0x85, 0x5a, 0x2b, 0x8a, 0x1c, } } /*2b9c337f-7a1d-4271-90a3-c6855a2b8a1c*/, LOGTEXT("Windows 8.x Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
+ { { 0x631ead72, 0xa8ab, 0x4df8, { 0xbb, 0xdf, 0x37, 0x20, 0x29, 0x98, 0x9b, 0xdd, } } /*631ead72-a8ab-4df8-bbdf-372029989bdd*/, LOGTEXT("Windows 8.x Preview ARM"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_BETA },
+# endif // INCLUDE_BETAS
+
+ // Windows Server 2008 A (Web and HPC)
+ { { 0x7afb1156, 0x2c1d, 0x40fc, { 0xb2, 0x60, 0xaa, 0xb7, 0x44, 0x2b, 0x62, 0xfe, } } /*7afb1156-2c1d-40fc-b260-aab7442b62fe*/, LOGTEXT("Windows Server 2008 Compute Cluster"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A },
+ { { 0xddfa9f7c, 0xf09e, 0x40b9, { 0x8c, 0x1a, 0xbe, 0x87, 0x7a, 0x9a, 0x7f, 0x4b, } } /*ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b*/, LOGTEXT("Windows Server 2008 Web"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008A },
+
+ // Windows Server 2008 B (Standard and Enterprise)
+ { { 0xc1af4d90, 0xd1bc, 0x44ca, { 0x85, 0xd4, 0x00, 0x3b, 0xa3, 0x3d, 0xb3, 0xb9, } } /*c1af4d90-d1bc-44ca-85d4-003ba33db3b9*/, LOGTEXT("Windows Server 2008 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
+ { { 0x8198490a, 0xadd0, 0x47b2, { 0xb3, 0xba, 0x31, 0x6b, 0x12, 0xd6, 0x47, 0xb4, } } /*8198490a-add0-47b2-b3ba-316b12d647b4*/, LOGTEXT("Windows Server 2008 Enterprise without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
+ { { 0xad2542d4, 0x9154, 0x4c6d, { 0x8a, 0x44, 0x30, 0xf1, 0x1e, 0xe9, 0x69, 0x89, } } /*ad2542d4-9154-4c6d-8a44-30f11ee96989*/, LOGTEXT("Windows Server 2008 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
+ { { 0x2401e3d0, 0xc50a, 0x4b58, { 0x87, 0xb2, 0x7e, 0x79, 0x4b, 0x7d, 0x26, 0x07, } } /*2401e3d0-c50a-4b58-87b2-7e794b7d2607*/, LOGTEXT("Windows Server 2008 Standard without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008B },
+
+ // Windows Server 2008 C (Datacenter)
+ { { 0x68b6e220, 0xcf09, 0x466b, { 0x92, 0xd3, 0x45, 0xcd, 0x96, 0x4b, 0x95, 0x09, } } /*68b6e220-cf09-466b-92d3-45cd964b9509*/, LOGTEXT("Windows Server 2008 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
+ { { 0xfd09ef77, 0x5647, 0x4eff, { 0x80, 0x9c, 0xaf, 0x2b, 0x64, 0x65, 0x9a, 0x45, } } /*fd09ef77-5647-4eff-809c-af2b64659a45*/, LOGTEXT("Windows Server 2008 Datacenter without Hyper-V"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
+ { { 0x01ef176b, 0x3e0d, 0x422a, { 0xb4, 0xf8, 0x4e, 0xa8, 0x80, 0x03, 0x5e, 0x8f, } } /*01ef176b-3e0d-422a-b4f8-4ea880035e8f*/, LOGTEXT("Windows Server 2008 for Itanium"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008C },
+
+ // Windows Server 2008 R2 A (Web and HPC)
+ { { 0xf772515c, 0x0e87, 0x48d5, { 0xa6, 0x76, 0xe6, 0x96, 0x2c, 0x3e, 0x11, 0x95, } } /*f772515c-0e87-48d5-a676-e6962c3e1195*/, LOGTEXT("Windows MultiPoint Server 2010"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
+ { { 0xcda18cf3, 0xc196, 0x46ad, { 0xb2, 0x89, 0x60, 0xc0, 0x72, 0x86, 0x99, 0x94, } } /*cda18cf3-c196-46ad-b289-60c072869994*/, LOGTEXT("Windows Server 2008 R2 HPC Edition"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
+ { { 0xa78b8bd9, 0x8017, 0x4df5, { 0xb8, 0x6a, 0x09, 0xf7, 0x56, 0xaf, 0xfa, 0x7c, } } /*a78b8bd9-8017-4df5-b86a-09f756affa7c*/, LOGTEXT("Windows Server 2008 R2 Web"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2A },
+
+ // Windows Server 2008 R2 B (Standard and Enterprise)
+ { { 0x620e2b3d, 0x09e7, 0x42fd, { 0x80, 0x2a, 0x17, 0xa1, 0x36, 0x52, 0xfe, 0x7a, } } /*620e2b3d-09e7-42fd-802a-17a13652fe7a*/, LOGTEXT("Windows Server 2008 R2 Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B },
+ { { 0x68531fb9, 0x5511, 0x4989, { 0x97, 0xbe, 0xd1, 0x1a, 0x0f, 0x55, 0x63, 0x3f, } } /*68531fb9-5511-4989-97be-d11a0f55633f*/, LOGTEXT("Windows Server 2008 R2 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2B },
+
+ // Windows Server 2008 R2 C (Datacenter)
+ { { 0x7482e61b, 0xc589, 0x4b7f, { 0x8e, 0xcc, 0x46, 0xd4, 0x55, 0xac, 0x3b, 0x87, } } /*7482e61b-c589-4b7f-8ecc-46d455ac3b87*/, LOGTEXT("Windows Server 2008 R2 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C },
+ { { 0x8a26851c, 0x1c7e, 0x48d3, { 0xa6, 0x87, 0xfb, 0xca, 0x9b, 0x9a, 0xc1, 0x6b, } } /*8a26851c-1c7e-48d3-a687-fbca9b9ac16b*/, LOGTEXT("Windows Server 2008 R2 for Itanium Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2008R2C },
+
+ // Windows Server 2012
+ { { 0xd3643d60, 0x0c42, 0x412d, { 0xa7, 0xd6, 0x52, 0xe6, 0x63, 0x53, 0x27, 0xf6, } } /*d3643d60-0c42-412d-a7d6-52e6635327f6*/, LOGTEXT("Windows Server 2012 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
+ { { 0x95fd1c83, 0x7df5, 0x494a, { 0xbe, 0x8b, 0x13, 0x00, 0xe1, 0xc9, 0xd1, 0xcd, } } /*95fd1c83-7df5-494a-be8b-1300e1c9d1cd*/, LOGTEXT("Windows Server 2012 MultiPoint Premium"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
+ { { 0x7d5486c7, 0xe120, 0x4771, { 0xb7, 0xf1, 0x7b, 0x56, 0xc6, 0xd3, 0x17, 0x0c, } } /*7d5486c7-e120-4771-b7f1-7b56c6d3170c*/, LOGTEXT("Windows Server 2012 MultiPoint Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
+ { { 0xf0f5ec41, 0x0d55, 0x4732, { 0xaf, 0x02, 0x44, 0x0a, 0x44, 0xa3, 0xcf, 0x0f, } } /*f0f5ec41-0d55-4732-af02-440a44a3cf0f*/, LOGTEXT("Windows Server 2012 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012 },
+
+ // Windows Server 2012 R2
+ { { 0xb743a2be, 0x68d4, 0x4dd3, { 0xaf, 0x32, 0x92, 0x42, 0x5b, 0x7b, 0xb6, 0x23, } } /*b743a2be-68d4-4dd3-af32-92425b7bb623*/, LOGTEXT("Windows Server 2012 R2 Cloud Storage"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
+ { { 0x00091344, 0x1ea4, 0x4f37, { 0xb7, 0x89, 0x01, 0x75, 0x0b, 0xa6, 0x98, 0x8c, } } /*00091344-1ea4-4f37-b789-01750ba6988c*/, LOGTEXT("Windows Server 2012 R2 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
+ { { 0x21db6ba4, 0x9a7b, 0x4a14, { 0x9e, 0x29, 0x64, 0xa6, 0x0c, 0x59, 0x30, 0x1d, } } /*21db6ba4-9a7b-4a14-9e29-64a60c59301d*/, LOGTEXT("Windows Server 2012 R2 Essentials"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
+ { { 0xb3ca044e, 0xa358, 0x4d68, { 0x98, 0x83, 0xaa, 0xa2, 0x94, 0x1a, 0xca, 0x99, } } /*b3ca044e-a358-4d68-9883-aaa2941aca99*/, LOGTEXT("Windows Server 2012 R2 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2012R2 },
+
+ // Windows Server 2016
+ { { 0x3dbf341b, 0x5f6c, 0x4fa7, { 0xb9, 0x36, 0x69, 0x9d, 0xce, 0x9e, 0x26, 0x3f, } } /*3dbf341b-5f6c-4fa7-b936-699dce9e263f*/, LOGTEXT("Windows Server 2016 Azure Core"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
+ { { 0x7b4433f4, 0xb1e7, 0x4788, { 0x89, 0x5a, 0xc4, 0x53, 0x78, 0xd3, 0x82, 0x53, } } /*7b4433f4-b1e7-4788-895a-c45378d38253*/, LOGTEXT("Windows Server 2016 Cloud Storage"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
+ { { 0x21c56779, 0xb449, 0x4d20, { 0xad, 0xfc, 0xee, 0xce, 0x0e, 0x1a, 0xd7, 0x4b, } } /*21c56779-b449-4d20-adfc-eece0e1ad74b*/, LOGTEXT("Windows Server 2016 Datacenter"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
+ { { 0x2b5a1b0f, 0xa5ab, 0x4c54, { 0xac, 0x2f, 0xa6, 0xd9, 0x48, 0x24, 0xa2, 0x83, } } /*2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283*/, LOGTEXT("Windows Server 2016 Essentials"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
+ { { 0x8c1c5410, 0x9f39, 0x4805, { 0x8c, 0x9d, 0x63, 0xa0, 0x77, 0x06, 0x35, 0x8f, } } /*8c1c5410-9f39-4805-8c9d-63a07706358f*/, LOGTEXT("Windows Server 2016 Standard"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN2016 },
+
+ // Windows Server Preview
+# ifdef INCLUDE_BETAS
+ { { 0xba947c44, 0xd19d, 0x4786, { 0xb6, 0xae, 0x22, 0x77, 0x0b, 0xc9, 0x4c, 0x54, } } /*ba947c44-d19d-4786-b6ae-22770bc94c54*/, LOGTEXT("Windows Server 2016 Datacenter Preview"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_WIN_SRV_BETA },
+# endif // INCLUDE_BETAS
+
+ // Windows Vista
+ { { 0x4f3d1606, 0x3fea, 0x4c01, { 0xbe, 0x3c, 0x8d, 0x67, 0x1c, 0x40, 0x1e, 0x3b, } } /*4f3d1606-3fea-4c01-be3c-8d671c401e3b*/, LOGTEXT("Windows Vista Business"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
+ { { 0x2c682dc2, 0x8b68, 0x4f63, { 0xa1, 0x65, 0xae, 0x29, 0x1d, 0x4c, 0xf1, 0x38, } } /*2c682dc2-8b68-4f63-a165-ae291d4cf138*/, LOGTEXT("Windows Vista Business N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
+ { { 0xcfd8ff08, 0xc0d7, 0x452b, { 0x9f, 0x60, 0xef, 0x5c, 0x70, 0xc3, 0x20, 0x94, } } /*cfd8ff08-c0d7-452b-9f60-ef5c70c32094*/, LOGTEXT("Windows Vista Enterprise"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
+ { { 0xd4f54950, 0x26f2, 0x4fb4, { 0xba, 0x21, 0xff, 0xab, 0x16, 0xaf, 0xca, 0xde, } } /*d4f54950-26f2-4fb4-ba21-ffab16afcade*/, LOGTEXT("Windows Vista Enterprise N"), EPID_WINDOWS, APP_ID_WINDOWS, KMS_ID_VISTA },
+
+ // Office 2010
+ { { 0x8ce7e872, 0x188c, 0x4b98, { 0x9d, 0x90, 0xf8, 0xf9, 0x0b, 0x7a, 0xad, 0x02, } } /*8ce7e872-188c-4b98-9d90-f8f90b7aad02*/, LOGTEXT("Office Access 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xcee5d470, 0x6e3b, 0x4fcc, { 0x8c, 0x2b, 0xd1, 0x74, 0x28, 0x56, 0x8a, 0x9f, } } /*cee5d470-6e3b-4fcc-8c2b-d17428568a9f*/, LOGTEXT("Office Excel 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x8947d0b8, 0xc33b, 0x43e1, { 0x8c, 0x56, 0x9b, 0x67, 0x4c, 0x05, 0x28, 0x32, } } /*8947d0b8-c33b-43e1-8c56-9b674c052832*/, LOGTEXT("Office Groove 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xca6b6639, 0x4ad6, 0x40ae, { 0xa5, 0x75, 0x14, 0xde, 0xe0, 0x7f, 0x64, 0x30, } } /*ca6b6639-4ad6-40ae-a575-14dee07f6430*/, LOGTEXT("Office InfoPath 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x09ed9640, 0xf020, 0x400a, { 0xac, 0xd8, 0xd7, 0xd8, 0x67, 0xdf, 0xd9, 0xc2, } } /*09ed9640-f020-400a-acd8-d7d867dfd9c2*/, LOGTEXT("Office Mondo 1 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xef3d4e49, 0xa53d, 0x4d81, { 0xa2, 0xb1, 0x2c, 0xa6, 0xc2, 0x55, 0x6b, 0x2c, } } /*ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c*/, LOGTEXT("Office Mondo 2 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xab586f5c, 0x5256, 0x4632, { 0x96, 0x2f, 0xfe, 0xfd, 0x8b, 0x49, 0xe6, 0xf4, } } /*ab586f5c-5256-4632-962f-fefd8b49e6f4*/, LOGTEXT("Office OneNote 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xecb7c192, 0x73ab, 0x4ded, { 0xac, 0xf4, 0x23, 0x99, 0xb0, 0x95, 0xd0, 0xcc, } } /*ecb7c192-73ab-4ded-acf4-2399b095d0cc*/, LOGTEXT("Office OutLook 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x45593b1d, 0xdfb1, 0x4e91, { 0xbb, 0xfb, 0x2d, 0x5d, 0x0c, 0xe2, 0x22, 0x7a, } } /*45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a*/, LOGTEXT("Office PowerPoint 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x6f327760, 0x8c5c, 0x417c, { 0x9b, 0x61, 0x83, 0x6a, 0x98, 0x28, 0x7e, 0x0c, } } /*6f327760-8c5c-417c-9b61-836a98287e0c*/, LOGTEXT("Office Professional Plus 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xdf133ff7, 0xbf14, 0x4f95, { 0xaf, 0xe3, 0x7b, 0x48, 0xe7, 0xe3, 0x31, 0xef, } } /*df133ff7-bf14-4f95-afe3-7b48e7e331ef*/, LOGTEXT("Office Project Pro 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x5dc7bf61, 0x5ec9, 0x4996, { 0x9c, 0xcb, 0xdf, 0x80, 0x6a, 0x2d, 0x0e, 0xfe, } } /*5dc7bf61-5ec9-4996-9ccb-df806a2d0efe*/, LOGTEXT("Office Project Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xb50c4f75, 0x599b, 0x43e8, { 0x8d, 0xcd, 0x10, 0x81, 0xa7, 0x96, 0x72, 0x41, } } /*b50c4f75-599b-43e8-8dcd-1081a7967241*/, LOGTEXT("Office Publisher 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xea509e87, 0x07a1, 0x4a45, { 0x9e, 0xdc, 0xeb, 0xa5, 0xa3, 0x9f, 0x36, 0xaf, } } /*ea509e87-07a1-4a45-9edc-eba5a39f36af*/, LOGTEXT("Office Small Business Basics 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x9da2a678, 0xfb6b, 0x4e67, { 0xab, 0x84, 0x60, 0xdd, 0x6a, 0x9c, 0x81, 0x9a, } } /*9da2a678-fb6b-4e67-ab84-60dd6a9c819a*/, LOGTEXT("Office Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x92236105, 0xbb67, 0x494f, { 0x94, 0xc7, 0x7f, 0x7a, 0x60, 0x79, 0x29, 0xbd, } } /*92236105-bb67-494f-94c7-7f7a607929bd*/, LOGTEXT("Office Visio Premium 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0xe558389c, 0x83c3, 0x4b29, { 0xad, 0xfe, 0x5e, 0x4d, 0x7f, 0x46, 0xc3, 0x58, } } /*e558389c-83c3-4b29-adfe-5e4d7f46c358*/, LOGTEXT("Office Visio Pro 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x9ed833ff, 0x4f92, 0x4f36, { 0xb3, 0x70, 0x86, 0x83, 0xa4, 0xf1, 0x32, 0x75, } } /*9ed833ff-4f92-4f36-b370-8683a4f13275*/, LOGTEXT("Office Visio Standard 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+ { { 0x2d0882e7, 0xa4e7, 0x423b, { 0x8c, 0xcc, 0x70, 0xd9, 0x1e, 0x01, 0x58, 0xb1, } } /*2d0882e7-a4e7-423b-8ccc-70d91e0158b1*/, LOGTEXT("Office Word 2010"), EPID_OFFICE2010, APP_ID_OFFICE2010, KMS_ID_OFFICE2010 },
+
+ // Office 2013
+ { { 0x6ee7622c, 0x18d8, 0x4005, { 0x9f, 0xb7, 0x92, 0xdb, 0x64, 0x4a, 0x27, 0x9b, } } /*6ee7622c-18d8-4005-9fb7-92db644a279b*/, LOGTEXT("Office Access 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xf7461d52, 0x7c2b, 0x43b2, { 0x87, 0x44, 0xea, 0x95, 0x8e, 0x0b, 0xd0, 0x9a, } } /*f7461d52-7c2b-43b2-8744-ea958e0bd09a*/, LOGTEXT("Office Excel 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xa30b8040, 0xd68a, 0x423f, { 0xb0, 0xb5, 0x9c, 0xe2, 0x92, 0xea, 0x5a, 0x8f, } } /*a30b8040-d68a-423f-b0b5-9ce292ea5a8f*/, LOGTEXT("Office InfoPath 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x1b9f11e3, 0xc85c, 0x4e1b, { 0xbb, 0x29, 0x87, 0x9a, 0xd2, 0xc9, 0x09, 0xe3, } } /*1b9f11e3-c85c-4e1b-bb29-879ad2c909e3*/, LOGTEXT("Office Lync 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xdc981c6b, 0xfc8e, 0x420f, { 0xaa, 0x43, 0xf8, 0xf3, 0x3e, 0x5c, 0x09, 0x23, } } /*dc981c6b-fc8e-420f-aa43-f8f33e5c0923*/, LOGTEXT("Office Mondo 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xefe1f3e6, 0xaea2, 0x4144, { 0xa2, 0x08, 0x32, 0xaa, 0x87, 0x2b, 0x65, 0x45, } } /*efe1f3e6-aea2-4144-a208-32aa872b6545*/, LOGTEXT("Office OneNote 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x771c3afa, 0x50c5, 0x443f, { 0xb1, 0x51, 0xff, 0x25, 0x46, 0xd8, 0x63, 0xa0, } } /*771c3afa-50c5-443f-b151-ff2546d863a0*/, LOGTEXT("Office OutLook 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x8c762649, 0x97d1, 0x4953, { 0xad, 0x27, 0xb7, 0xe2, 0xc2, 0x5b, 0x97, 0x2e, } } /*8c762649-97d1-4953-ad27-b7e2c25b972e*/, LOGTEXT("Office PowerPoint 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xb322da9c, 0xa2e2, 0x4058, { 0x9e, 0x4e, 0xf5, 0x9a, 0x69, 0x70, 0xbd, 0x69, } } /*b322da9c-a2e2-4058-9e4e-f59a6970bd69*/, LOGTEXT("Office Professional Plus 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x4a5d124a, 0xe620, 0x44ba, { 0xb6, 0xff, 0x65, 0x89, 0x61, 0xb3, 0x3b, 0x9a, } } /*4a5d124a-e620-44ba-b6ff-658961b33b9a*/, LOGTEXT("Office Project Pro 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x427a28d1, 0xd17c, 0x4abf, { 0xb7, 0x17, 0x32, 0xc7, 0x80, 0xba, 0x6f, 0x07, } } /*427a28d1-d17c-4abf-b717-32c780ba6f07*/, LOGTEXT("Office Project Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0x00c79ff1, 0x6850, 0x443d, { 0xbf, 0x61, 0x71, 0xcd, 0xe0, 0xde, 0x30, 0x5f, } } /*00c79ff1-6850-443d-bf61-71cde0de305f*/, LOGTEXT("Office Publisher 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xb13afb38, 0xcd79, 0x4ae5, { 0x9f, 0x7f, 0xee, 0xd0, 0x58, 0xd7, 0x50, 0xca, } } /*b13afb38-cd79-4ae5-9f7f-eed058d750ca*/, LOGTEXT("Office Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xe13ac10e, 0x75d0, 0x4aff, { 0xa0, 0xcd, 0x76, 0x49, 0x82, 0xcf, 0x54, 0x1c, } } /*e13ac10e-75d0-4aff-a0cd-764982cf541c*/, LOGTEXT("Office Visio Pro 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xac4efaf0, 0xf81f, 0x4f61, { 0xbd, 0xf7, 0xea, 0x32, 0xb0, 0x2a, 0xb1, 0x17, } } /*ac4efaf0-f81f-4f61-bdf7-ea32b02ab117*/, LOGTEXT("Office Visio Standard 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+ { { 0xd9f5b1c6, 0x5386, 0x495a, { 0x88, 0xf9, 0x9a, 0xd6, 0xb4, 0x1a, 0xc9, 0xb3, } } /*d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3*/, LOGTEXT("Office Word 2013"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013 },
+
+ // Office 2013 (Pre-Release)
+# ifdef INCLUDE_BETAS
+ { { 0x44b538e2, 0xfb34, 0x4732, { 0x81, 0xe4, 0x64, 0x4c, 0x17, 0xd2, 0xe7, 0x46, } } /*44b538e2-fb34-4732-81e4-644c17d2e746*/, LOGTEXT("Office Access 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x9373bfa0, 0x97b3, 0x4587, { 0xab, 0x73, 0x30, 0x93, 0x44, 0x61, 0xd5, 0x5c, } } /*9373bfa0-97b3-4587-ab73-30934461d55c*/, LOGTEXT("Office Excel 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0xaa286eb4, 0x556f, 0x4eeb, { 0x96, 0x7c, 0xc1, 0xb7, 0x71, 0xb7, 0x67, 0x3e, } } /*aa286eb4-556f-4eeb-967c-c1b771b7673e*/, LOGTEXT("Office Groove 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x7ccc8256, 0xfbaa, 0x49c6, { 0xb2, 0xa9, 0xf5, 0xaf, 0xb4, 0x25, 0x7c, 0xd2, } } /*7ccc8256-fbaa-49c6-b2a9-f5afb4257cd2*/, LOGTEXT("Office InfoPath 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0xc53dfe17, 0xcc00, 0x4967, { 0xb1, 0x88, 0xa0, 0x88, 0xa9, 0x65, 0x49, 0x4d, } } /*c53dfe17-cc00-4967-b188-a088a965494d*/, LOGTEXT("Office Lync 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x2816a87d, 0xe1ed, 0x4097, { 0xb3, 0x11, 0xe2, 0x34, 0x1c, 0x57, 0xb1, 0x79, } } /*2816a87d-e1ed-4097-b311-e2341c57b179*/, LOGTEXT("Office Mondo 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x67c0f908, 0x184f, 0x4f64, { 0x82, 0x50, 0x12, 0xdb, 0x79, 0x7a, 0xb3, 0xc3, } } /*67c0f908-184f-4f64-8250-12db797ab3c3*/, LOGTEXT("Office OneNote 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x7bce4e7a, 0xdd80, 0x4682, { 0x98, 0xfa, 0xf9, 0x93, 0x72, 0x58, 0x03, 0xd2, } } /*7bce4e7a-dd80-4682-98fa-f993725803d2*/, LOGTEXT("Office Outlook 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x1ec10c0a, 0x54f6, 0x453e, { 0xb8, 0x5a, 0x6f, 0xa1, 0xbb, 0xfe, 0xa9, 0xb7, } } /*1ec10c0a-54f6-453e-b85a-6fa1bbfea9b7*/, LOGTEXT("Office PowerPoint 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x87d2b5bf, 0xd47b, 0x41fb, { 0xaf, 0x62, 0x71, 0xc3, 0x82, 0xf5, 0xcc, 0x85, } } /*87d2b5bf-d47b-41fb-af62-71c382f5cc85*/, LOGTEXT("Office Professional Plus 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x3cfe50a9, 0x0e03, 0x4b29, { 0x97, 0x54, 0x9f, 0x19, 0x3f, 0x07, 0xb7, 0x1f, } } /*3cfe50a9-0e03-4b29-9754-9f193f07b71f*/, LOGTEXT("Office Project Pro 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x39e49e57, 0xae68, 0x4ee3, { 0xb0, 0x98, 0x26, 0x48, 0x0d, 0xf3, 0xda, 0x96, } } /*39e49e57-ae68-4ee3-b098-26480df3da96*/, LOGTEXT("Office Project Standard 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x15aa2117, 0x8f79, 0x49a8, { 0x83, 0x17, 0x75, 0x30, 0x26, 0xd6, 0xa0, 0x54, } } /*15aa2117-8f79-49a8-8317-753026d6a054*/, LOGTEXT("Office Publisher 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0xcfbfd60e, 0x0b5f, 0x427d, { 0x91, 0x7c, 0xa4, 0xdf, 0x42, 0xa8, 0x0e, 0x44, } } /*cfbfd60e-0b5f-427d-917c-a4df42a80e44*/, LOGTEXT("Office Visio Pro 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0x7012cc81, 0x8887, 0x42e9, { 0xb1, 0x7d, 0x4e, 0x5e, 0x42, 0x76, 0x0f, 0x0d, } } /*7012cc81-8887-42e9-b17d-4e5e42760f0d*/, LOGTEXT("Office Visio Standard 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+ { { 0xde9c7eb6, 0x5a85, 0x420d, { 0x97, 0x03, 0xff, 0xf1, 0x1b, 0xdd, 0x4d, 0x43, } } /*de9c7eb6-5a85-420d-9703-fff11bdd4d43*/, LOGTEXT("Office Word 2013 (Pre-Release)"), EPID_OFFICE2013, APP_ID_OFFICE2013, KMS_ID_OFFICE2013_BETA },
+# endif // INCLUDE_BETAS
+
+ // Office 2016
+ { { 0x67c0fc0c, 0xdeba, 0x401b, { 0xbf, 0x8b, 0x9c, 0x8a, 0xd8, 0x39, 0x58, 0x04, } } /*67c0fc0c-deba-401b-bf8b-9c8ad8395804*/, LOGTEXT("Office Access 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xc3e65d36, 0x141f, 0x4d2f, { 0xa3, 0x03, 0xa8, 0x42, 0xee, 0x75, 0x6a, 0x29, } } /*c3e65d36-141f-4d2f-a303-a842ee756a29*/, LOGTEXT("Office Excel 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x9caabccb, 0x61b1, 0x4b4b, { 0x8b, 0xec, 0xd1, 0x0a, 0x3c, 0x3a, 0xc2, 0xce, } } /*9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce*/, LOGTEXT("Office Mondo 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xe914ea6e, 0xa5fa, 0x4439, { 0xa3, 0x94, 0xa9, 0xbb, 0x32, 0x93, 0xca, 0x09, } } /*e914ea6e-a5fa-4439-a394-a9bb3293ca09*/, LOGTEXT("Office Mondo R 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xd8cace59, 0x33d2, 0x4ac7, { 0x9b, 0x1b, 0x9b, 0x72, 0x33, 0x9c, 0x51, 0xc8, } } /*d8cace59-33d2-4ac7-9b1b-9b72339c51c8*/, LOGTEXT("Office OneNote 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xec9d9265, 0x9d1e, 0x4ed0, { 0x83, 0x8a, 0xcd, 0xc2, 0x0f, 0x25, 0x51, 0xa1, } } /*ec9d9265-9d1e-4ed0-838a-cdc20f2551a1*/, LOGTEXT("Office Outlook 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xd70b1bba, 0xb893, 0x4544, { 0x96, 0xe2, 0xb7, 0xa3, 0x18, 0x09, 0x1c, 0x33, } } /*d70b1bba-b893-4544-96e2-b7a318091c33*/, LOGTEXT("Office Powerpoint 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xd450596f, 0x894d, 0x49e0, { 0x96, 0x6a, 0xfd, 0x39, 0xed, 0x4c, 0x4c, 0x64, } } /*d450596f-894d-49e0-966a-fd39ed4c4c64*/, LOGTEXT("Office Professional Plus 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x4f414197, 0x0fc2, 0x4c01, { 0xb6, 0x8a, 0x86, 0xcb, 0xb9, 0xac, 0x25, 0x4c, } } /*4f414197-0fc2-4c01-b68a-86cbb9ac254c*/, LOGTEXT("Office Project Pro 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x829b8110, 0x0e6f, 0x4349, { 0xbc, 0xa4, 0x42, 0x80, 0x35, 0x77, 0x78, 0x8d, } } /*829b8110-0e6f-4349-bca4-42803577788d*/, LOGTEXT("Office Project Pro 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xda7ddabc, 0x3fbe, 0x4447, { 0x9e, 0x01, 0x6a, 0xb7, 0x44, 0x0b, 0x4c, 0xd4, } } /*da7ddabc-3fbe-4447-9e01-6ab7440b4cd4*/, LOGTEXT("Office Project Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xcbbaca45, 0x556a, 0x4416, { 0xad, 0x03, 0xbd, 0xa5, 0x98, 0xea, 0xa7, 0xc8, } } /*cbbaca45-556a-4416-ad03-bda598eaa7c8*/, LOGTEXT("Office Project Standard 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x041a06cb, 0xc5b8, 0x4772, { 0x80, 0x9f, 0x41, 0x6d, 0x03, 0xd1, 0x66, 0x54, } } /*041a06cb-c5b8-4772-809f-416d03d16654*/, LOGTEXT("Office Publisher 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x83e04ee1, 0xfa8d, 0x436d, { 0x89, 0x94, 0xd3, 0x1a, 0x86, 0x2c, 0xab, 0x77, } } /*83e04ee1-fa8d-436d-8994-d31a862cab77*/, LOGTEXT("Office Skype for Business 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xdedfa23d, 0x6ed1, 0x45a6, { 0x85, 0xdc, 0x63, 0xca, 0xe0, 0x54, 0x6d, 0xe6, } } /*dedfa23d-6ed1-45a6-85dc-63cae0546de6*/, LOGTEXT("Office Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x6bf301c1, 0xb94a, 0x43e9, { 0xba, 0x31, 0xd4, 0x94, 0x59, 0x8c, 0x47, 0xfb, } } /*6bf301c1-b94a-43e9-ba31-d494598c47fb*/, LOGTEXT("Office Visio Pro 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xb234abe3, 0x0857, 0x4f9c, { 0xb0, 0x5a, 0x4d, 0xc3, 0x14, 0xf8, 0x55, 0x57, } } /*b234abe3-0857-4f9c-b05a-4dc314f85557*/, LOGTEXT("Office Visio Pro 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xaa2a7821, 0x1827, 0x4c2c, { 0x8f, 0x1d, 0x45, 0x13, 0xa3, 0x4d, 0xda, 0x97, } } /*aa2a7821-1827-4c2c-8f1d-4513a34dda97*/, LOGTEXT("Office Visio Standard 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0x361fe620, 0x64f4, 0x41b5, { 0xba, 0x77, 0x84, 0xf8, 0xe0, 0x79, 0xb1, 0xf7, } } /*361fe620-64f4-41b5-ba77-84f8e079b1f7*/, LOGTEXT("Office Visio Standard 2016 XC2R"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
+ { { 0xbb11badf, 0xd8aa, 0x470e, { 0x93, 0x11, 0x20, 0xea, 0xf8, 0x0f, 0xe5, 0xcc, } } /*bb11badf-d8aa-470e-9311-20eaf80fe5cc*/, LOGTEXT("Office Word 2016"), EPID_OFFICE2016, APP_ID_OFFICE2013, KMS_ID_OFFICE2016 },
};
// necessary because other .c files cannot access _countof()
__pure ProdListIndex_t getExtendedProductListSize(void)
{
- return _countof(ExtendedProductList) - 1;
+ return _countof(ExtendedProductList);
}
-#ifndef NO_LOG
+#endif // NO_EXTENDED_PRODUCT_LIST
+
+#if !defined(NO_LOG) || !defined(NO_STRICT_MODES)
__pure ProdListIndex_t getAppListSize(void)
{
return _countof(AppList);
}
-#endif // NO_LOG
+#endif // !defined(NO_LOG) || !defined(NO_STRICT_MODES)
+
+__pure ProdListIndex_t getProductListSize(void)
+{
+ return _countof(ProductList);
+}
-#endif // NO_EXTENDED_PRODUCT_LIST
#endif // IS_LIBRARY
@@ -330,18 +335,18 @@ __pure ProdListIndex_t getAppListSize(void)
static const struct KMSHostOS { uint16_t Type; uint16_t Build; } HostOS[] =
{
{ 55041, 6002 }, // Windows Server 2008 SP2
- { 55041, 7601 }, // Windows Server 2008 R2 SP1
- { 5426, 9200 }, // Windows Server 2012
- { 6401, 9600 }, // Windows Server 2012 R2
+ { 55041, 7601 }, // Windows Server 2008 R2 SP1
+ { 5426, 9200 }, // Windows Server 2012
+ { 6401, 9600 }, // Windows Server 2012 R2
{ 3612, 14393 }, // Windows Server 2016
};
// GroupID and PIDRange
static const struct PKEYCONFIG { uint16_t GroupID; uint32_t RangeMin; uint32_t RangeMax; } pkeyconfig[] = {
- { 206, 471000000, 530999999 }, // Windows Server 2016
- { 96, 199000000, 217999999 }, // Office2010
- { 206, 234000000, 255999999 }, // Office2013
- { 206, 437000000, 458999999 }, // Office2016
+ { 206, 471000000, 530999999 }, // Windows Server 2016
+ { 96, 199000000, 217999999 }, // Office2010
+ { 206, 234000000, 255999999 }, // Office2013
+ { 206, 437000000, 458999999 }, // Office2016
};
// Valid language identifiers to be used in the ePID
@@ -373,19 +378,20 @@ uint16_t IsValidLcid(const uint16_t Lcid)
#endif // NO_RANDOM_EPID
-// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2035 overflow bug.
+// Unix time is seconds from 1970-01-01. Should be 64 bits to avoid Year 2038 overflow bug.
// FILETIME is 100 nanoseconds from 1601-01-01. Must be 64 bits.
void getUnixTimeAsFileTime(FILETIME *const ts)
{
int64_t unixtime = (int64_t)time(NULL);
int64_t *filetime = (int64_t*)ts;
- *filetime = LE64( (unixtime + 11644473600LL) * 10000000LL );
+ //*filetime = LE64((unixtime + 11644473600LL) * 10000000LL);
+ PUT_UA64LE(filetime, (unixtime + 11644473600LL) * 10000000LL);
}
__pure int64_t fileTimeToUnixTime(const FILETIME *const ts)
{
- return LE64( *((const int64_t *const)ts) ) / 10000000LL - 11644473600LL;
+ return GET_UA64LE(ts) / 10000000LL - 11644473600LL;
}
@@ -393,9 +399,9 @@ __pure int64_t fileTimeToUnixTime(const FILETIME *const ts)
* Get's a product name with a GUID in host-endian order.
* List can be any list defined above.
*/
-const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i)
+const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t maxList, ProdListIndex_t *const i)
{
- for (*i = 0; List[*i].name != NULL; (*i)++)
+ for (*i = 0; *i < maxList; (*i)++)
{
if (IsEqualGUID(guid, &List[*i].guid))
return List[*i].name;
@@ -408,15 +414,15 @@ const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List
/*
* same as getProductnameHE except GUID is in little-endian (network) order
*/
-const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i)
+const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t maxList, ProdListIndex_t *const i)
{
- #if __BYTE_ORDER != __LITTLE_ENDIAN
+#if __BYTE_ORDER != __LITTLE_ENDIAN
GUID HeGUID;
LEGUID(&HeGUID, guid);
- return getProductNameHE(&HeGUID, List, i);
- #else
- return getProductNameHE(guid, List, i);
- #endif
+ return getProductNameHE(&HeGUID, List, maxList, i);
+#else
+ return getProductNameHE(guid, List, maxList, i);
+#endif
}
@@ -426,7 +432,7 @@ static char* itoc(char *const c, const int i, uint_fast8_t digits)
{
char formatString[8];
if (digits > 9) digits = 0;
- strcpy(formatString,"%");
+ strcpy(formatString, "%");
if (digits)
{
@@ -442,22 +448,22 @@ static char* itoc(char *const c, const int i, uint_fast8_t digits)
static int getRandomServerType()
{
-# ifndef USE_MSRPC
- if (!UseRpcBTFN)
-# endif // USE_MSRPC
+# if defined(USE_MSRPC) || defined(SIMPLE_RPC)
+
+ return rand() % (int)_countof(HostOS);
+
+# else // !defined(USE_MSRPC) && !defined(SIMPLE_RPC)
+ if (!UseServerRpcBTFN)
{
// This isn't possible at all, e.g. KMS host on XP
return rand() % (int)_countof(HostOS);
}
-# ifndef USE_MSRPC
- else
- {
- // return 9200/9600 if NDR64 is in use, otherwise 6002/7601
- // return (rand() % 2) + (UseRpcNDR64 ? 2 : 0);
- if (UseRpcNDR64) return (rand() % 3) + 2;
- return (rand() % 2);
- }
-# endif // USE_MSRPC
+
+ // return 9200/9600/14393 if NDR64 is in use, otherwise 6002/7601
+ if (UseServerRpcNDR64) return (rand() % 3) + 2;
+ return (rand() % 2);
+
+# endif // !defined(USE_MSRPC) && !defined(SIMPLE_RPC)
}
@@ -476,7 +482,7 @@ static void generateRandomPid(int index, char *const szPid, int serverType, int1
strcpy(szPid, itoc(numberBuffer, HostOS[serverType].Type, 5));
strcat(szPid, "-");
- if (index > 3) index=0;
+ if (index > 3) index = 0;
strcat(szPid, itoc(numberBuffer, pkeyconfig[index].GroupID, 5));
strcat(szPid, "-");
@@ -525,7 +531,7 @@ void randomPidInit()
ProdListIndex_t i;
int serverType = getRandomServerType();
- int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)];
+ int16_t lang = Lcid ? Lcid : LcidList[rand() % _countof(LcidList)];
for (i = 0; i < MAX_KMSAPPS; i++)
{
@@ -538,9 +544,9 @@ void randomPidInit()
strcpy((char*)KmsResponseParameters[i].Epid, Epid);
- #ifndef NO_LOG
+#ifndef NO_LOG
KmsResponseParameters[i].EpidSource = "randomized at program start";
- #endif // NO_LOG
+#endif // NO_LOG
}
}
@@ -557,19 +563,19 @@ static void logRequest(const REQUEST *const baseRequest)
char clientname[64];
ProdListIndex_t index;
- #ifndef NO_EXTENDED_PRODUCT_LIST
- productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, &index);
- if (++index >= (int)_countof(ExtendedProductList))
- #endif // NO_EXTENDED_PRODUCT_LIST
+#ifndef NO_EXTENDED_PRODUCT_LIST
+ productName = getProductNameLE(&baseRequest->ActID, ExtendedProductList, _countof(ExtendedProductList), &index);
+ if (index >= (int)_countof(ExtendedProductList))
+#endif // NO_EXTENDED_PRODUCT_LIST
{
- productName = getProductNameLE(&baseRequest->KMSID, ProductList, &index);
- if (++index >= (int)_countof(ProductList))
+ productName = getProductNameLE(&baseRequest->KMSID, ProductList, _countof(ProductList), &index);
+ if (index >= (int)_countof(ProductList))
{
- productName = getProductNameLE(&baseRequest->AppID, AppList, &index);
+ productName = getProductNameLE(&baseRequest->AppID, AppList, _countof(AppList), &index);
}
}
- #ifndef NO_VERBOSE_LOG
+#ifndef NO_VERBOSE_LOG
if (logverbose)
{
logger("<<< Incoming KMS request\n");
@@ -577,12 +583,12 @@ static void logRequest(const REQUEST *const baseRequest)
}
else
{
- #endif // NO_VERBOSE_LOG
+#endif // NO_VERBOSE_LOG
ucs2_to_utf8(baseRequest->WorkstationName, clientname, 64, 64);
logger("KMS v%i.%i request from %s for %s\n", LE16(baseRequest->MajorVer), LE16(baseRequest->MinorVer), clientname, productName);
- #ifndef NO_VERBOSE_LOG
+#ifndef NO_VERBOSE_LOG
}
- #endif // NO_VERBOSE_LOG
+#endif // NO_VERBOSE_LOG
}
#endif // NO_LOG
@@ -606,38 +612,38 @@ static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const
const char* pid;
if (KmsResponseParameters[index].Epid == NULL)
{
- #ifndef NO_RANDOM_EPID
+#ifndef NO_RANDOM_EPID
if (RandomizationLevel == 2)
{
char szPid[PID_BUFFER_SIZE];
generateRandomPid(index, szPid, -1, Lcid ? Lcid : -1);
pid = szPid;
- #ifndef NO_LOG
+#ifndef NO_LOG
*EpidSource = "randomized on every request";
- #endif // NO_LOG
+#endif // NO_LOG
}
else
- #endif // NO_RANDOM_EPID
+#endif // NO_RANDOM_EPID
{
- switch(index)
+ switch (index)
{
- case EPID_INDEX_OFFICE2016:
- pid = EPID_OFFICE2016;
- break;
- case EPID_INDEX_OFFICE2013:
- pid = EPID_OFFICE2013;
- break;
- case EPID_INDEX_OFFICE2010:
- pid = EPID_OFFICE2010;
- break;
- default:
- pid = EPID_WINDOWS;
- break;
+ case EPID_INDEX_OFFICE2016:
+ pid = EPID_OFFICE2016;
+ break;
+ case EPID_INDEX_OFFICE2013:
+ pid = EPID_OFFICE2013;
+ break;
+ case EPID_INDEX_OFFICE2010:
+ pid = EPID_OFFICE2010;
+ break;
+ default:
+ pid = EPID_WINDOWS;
+ break;
}
- #ifndef NO_LOG
+#ifndef NO_LOG
*EpidSource = "vlmcsd default";
- #endif // NO_LOG
+#endif // NO_LOG
}
}
else
@@ -647,9 +653,9 @@ static void getEpid(RESPONSE *const baseResponse, const char** EpidSource, const
if (HwId && KmsResponseParameters[index].HwId != NULL)
memcpy(HwId, KmsResponseParameters[index].HwId, sizeof(((RESPONSE_V6 *)0)->HwId));
- #ifndef NO_LOG
+#ifndef NO_LOG
*EpidSource = KmsResponseParameters[index].EpidSource;
- #endif // NO_LOG
+#endif // NO_LOG
}
getEpidFromString(baseResponse, pid);
}
@@ -678,7 +684,7 @@ static void CheckRequest(const REQUEST *const Request)
if (LE32(Request->IsClientVM) > 1)
logger("Warning: Virtual Machine field in request must be 0 or 1 but is %u\n", LE32(Request->IsClientVM));
- if (LE32(Request->LicenseStatus) > 6 )
+ if (LE32(Request->LicenseStatus) > 6)
logger("Warning: License status must be between 0 and 6 but is %u\n", LE32(Request->LicenseStatus));
}
#endif // !defined(NO_LOG) && defined(_PEDANTIC)
@@ -693,62 +699,120 @@ static void logResponse(const RESPONSE *const baseResponse, const BYTE *const hw
char utf8pid[PID_BUFFER_SIZE * 3];
ucs2_to_utf8(baseResponse->KmsPID, utf8pid, PID_BUFFER_SIZE, PID_BUFFER_SIZE * 3);
- #ifndef NO_VERBOSE_LOG
+#ifndef NO_VERBOSE_LOG
if (!logverbose)
{
- #endif // NO_VERBOSE_LOG
+#endif // NO_VERBOSE_LOG
logger("Sending ePID (%s): %s\n", EpidSource, utf8pid);
- #ifndef NO_VERBOSE_LOG
+#ifndef NO_VERBOSE_LOG
}
else
{
logger(">>> Sending response, ePID source = %s\n", EpidSource);
logResponseVerbose(utf8pid, hwId, baseResponse, &logger);
}
- #endif // NO_VERBOSE_LOG
+#endif // NO_VERBOSE_LOG
}
#endif
+#if __UCLIBC__ && !defined(NO_STRICT_MODES)
+long long int llabs(long long int j);
+#endif
+
+
/*
* Creates the unencrypted base response
*/
#ifndef IS_LIBRARY
-static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr)
+static HRESULT __stdcall CreateResponseBaseCallback(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr)
{
const char* EpidSource;
- #ifndef NO_LOG
+#ifndef NO_LOG
logRequest(baseRequest);
- #ifdef _PEDANTIC
+#ifdef _PEDANTIC
CheckRequest(baseRequest);
- #endif // _PEDANTIC
- #endif // NO_LOG
+#endif // _PEDANTIC
+#endif // NO_LOG
ProdListIndex_t index;
+ getProductNameLE(&baseRequest->KMSID, ProductList, _countof(ProductList), &index);
+
+# ifndef NO_STRICT_MODES
+ if (CheckClientTime)
+ {
+ time_t requestTime = (time_t)fileTimeToUnixTime(&baseRequest->ClientTime);
+
+ if (llabs(requestTime - time(NULL)) > 60 * 60 * 4)
+ {
+# ifndef NO_LOG
+ logger("Client time differs more than 4 hours from system time.\n");
+# endif // !NO_LOG
+
+ return 0xC004F06C;
+ }
+ }
+
+ if (WhitelistingLevel & 2)
+ {
+ uint_fast8_t i;
+ for (i = 0; i < _countof(RetailAndBetaProducts); i++)
+ {
+ if (IsEqualGuidLE(&ProductList[RetailAndBetaProducts[i]].guid, &baseRequest->KMSID))
+ {
+# ifndef NO_LOG
+ logger("Refusing retail or beta product\n");
+# endif // !NO_LOG
+
+ return 0xC004F042;
+ }
+ }
+ }
- getProductNameLE(&baseRequest->KMSID, ProductList, &index);
+ if ((WhitelistingLevel & 1) && index >= _countof(ProductList))
+ {
+# ifndef NO_LOG
+ logger("Refusing unknown product\n");
+# endif // !NO_LOG
+
+ return 0xC004F042;
+ }
+# endif // !NO_STRICT_MODES
- switch(index)
+
+ switch (index)
{
- case KMS_ID_OFFICE2016:
- index = EPID_INDEX_OFFICE2016;
- break;
-
- case KMS_ID_OFFICE2013:
- case KMS_ID_OFFICE2013_BETA:
- index = EPID_INDEX_OFFICE2013;
- break;
-
- case KMS_ID_OFFICE2010:
- index = EPID_INDEX_OFFICE2010;
- break;
-
- default:
- index = EPID_INDEX_WINDOWS;
- break;
+ case KMS_ID_OFFICE2016:
+ index = EPID_INDEX_OFFICE2016;
+ break;
+
+ case KMS_ID_OFFICE2013:
+ case KMS_ID_OFFICE2013_BETA:
+ index = EPID_INDEX_OFFICE2013;
+ break;
+
+ case KMS_ID_OFFICE2010:
+ index = EPID_INDEX_OFFICE2010;
+ break;
+
+ default:
+ index = EPID_INDEX_WINDOWS;
+ break;
}
+# if !defined(NO_STRICT_MODES)
+ ProdListIndex_t appIndex = index >= _countof(AppList) ? _countof(AppList) - 1 : index;
+
+ if ((WhitelistingLevel & 1) && !IsEqualGuidLE(&AppList[appIndex].guid, &baseRequest->AppID))
+ {
+# ifndef NO_LOG
+ logger("Refusing product with incorrect Application ID\n");
+# endif // NO_LOG
+ return 0xC004F042;
+ }
+# endif // !defined(NO_STRICT_MODES)
+
getEpid(baseResponse, &EpidSource, index, hwId);
baseResponse->Version = baseRequest->Version;
@@ -756,17 +820,20 @@ static BOOL __stdcall CreateResponseBaseCallback(const REQUEST *const baseReques
memcpy(&baseResponse->CMID, &baseRequest->CMID, sizeof(GUID));
memcpy(&baseResponse->ClientTime, &baseRequest->ClientTime, sizeof(FILETIME));
- baseResponse->Count = index > 0 && index < 4 ? LE32(10) : LE32(50);
- baseResponse->VLActivationInterval = LE32(VLActivationInterval);
- baseResponse->VLRenewalInterval = LE32(VLRenewalInterval);
+ DWORD required_clients = LE32(baseRequest->N_Policy) << 1;
+ DWORD minimum_answer_clients = index > 0 && index < 4 ? 10 : 50;
+
+ baseResponse->Count = LE32(required_clients > minimum_answer_clients ? required_clients : minimum_answer_clients);
+ baseResponse->VLActivationInterval = LE32(VLActivationInterval);
+ baseResponse->VLRenewalInterval = LE32(VLRenewalInterval);
if (LE32(baseRequest->N_Policy) > LE32(baseResponse->Count)) baseResponse->Count = LE32(LE32(baseRequest->N_Policy) << 1);
- #ifndef NO_LOG
+#ifndef NO_LOG
logResponse(baseResponse, hwId, EpidSource);
- #endif // NO_LOG
+#endif // NO_LOG
- return !0;
+ return S_OK;
}
RequestCallback_t CreateResponseBase = &CreateResponseBaseCallback;
@@ -792,10 +859,11 @@ size_t CreateResponseV4(REQUEST_V4 *const request_v4, BYTE *const responseBuffer
{
RESPONSE_V4* Response = (RESPONSE_V4*)responseBuffer;
- if ( !CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr) ) return 0;
+ HRESULT hResult;
+ if (FAILED(hResult = CreateResponseBase(&request_v4->RequestBase, &Response->ResponseBase, NULL, ipstr))) return hResult;
DWORD pidSize = LE32(Response->ResponseBase.PIDSize);
- BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize;
+ BYTE* postEpidPtr = responseBuffer + V4_PRE_EPID_SIZE + pidSize;
memmove(postEpidPtr, &Response->ResponseBase.CMID, V4_POST_EPID_SIZE);
size_t encryptSize = V4_PRE_EPID_SIZE + V4_POST_EPID_SIZE + pidSize;
@@ -833,10 +901,10 @@ static int_fast8_t CreateV6Hmac(BYTE *const encrypt_start, const size_t encryptS
// When generating a response tolerance must be 0.
// If verifying the hash, try tolerance -1, 0 and +1. One of them must match.
- timeSlot = LE64( (GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1) );
+ timeSlot = LE64((GET_UA64LE(ft) / TIME_C1 * TIME_C2 + TIME_C3) + (tolerance * TIME_C1));
// The time slot is hashed with SHA256 so it is not so obvious that it is time
- Sha256((BYTE*) &timeSlot, sizeof(timeSlot), hash);
+ Sha256((BYTE*)&timeSlot, sizeof(timeSlot), hash);
// The last 16 bytes of the hashed time slot are the actual HMAC key
if (!Sha256Hmac
@@ -871,10 +939,10 @@ size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuf
RESPONSE_V6* Response = (RESPONSE_V6*)responseBuffer;
RESPONSE* baseResponse = &Response->ResponseBase;
- #ifdef _DEBUG
+#ifdef _DEBUG
// ReSharper disable once CppEntityNeverUsed
RESPONSE_V6_DEBUG* xxx = (RESPONSE_V6_DEBUG*)responseBuffer;
- #endif
+#endif
static const BYTE DefaultHwid[8] = { HWID };
int_fast8_t v6 = LE16(request_v6->MajorVer) > 5;
@@ -896,8 +964,8 @@ size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuf
// pre-fill with default HwId (not required for v5)
memcpy(Response->HwId, DefaultHwid, sizeof(Response->HwId));
- // Just copy decrypted request IV (using Null IV) here. Note this is identical
- // to XORing non-decrypted request and reponse IVs
+ // Just copy decrypted request IV (using Null IV) here. Note this is identical
+ // to XORing non-decrypted request and reponse IVs
memcpy(Response->XoredIVs, request_v6->IV, sizeof(Response->XoredIVs));
}
else // V5 specific stuff
@@ -911,11 +979,12 @@ size_t CreateResponseV6(REQUEST_V6 *restrict request_v6, BYTE *const responseBuf
XorBlock(request_v6->IV, Response->RandomXoredIVs);
// Get the base response
- if ( !CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr) ) return 0;
+ HRESULT hResult;
+ if (FAILED(hResult = CreateResponseBase(&request_v6->RequestBase, baseResponse, Response->HwId, ipstr))) return hResult;
// Convert the fixed sized struct into variable sized
DWORD pidSize = LE32(baseResponse->PIDSize);
- BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize;
+ BYTE* postEpidPtr = responseBuffer + V6_PRE_EPID_SIZE + pidSize;
size_t post_epid_size = v6 ? V6_POST_EPID_SIZE : V5_POST_EPID_SIZE;
memmove(postEpidPtr, &baseResponse->CMID, post_epid_size);
@@ -1015,8 +1084,8 @@ RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSi
int copySize =
V4_PRE_EPID_SIZE +
(LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) <= PID_BUFFER_SIZE << 1 ?
- LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) :
- PID_BUFFER_SIZE << 1);
+ LE32(((RESPONSE_V4*)rawResponse)->ResponseBase.PIDSize) :
+ PID_BUFFER_SIZE << 1);
int messageSize = copySize + V4_POST_EPID_SIZE;
@@ -1024,7 +1093,7 @@ RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSi
memcpy(&response_v4->ResponseBase.CMID, rawResponse + copySize, responseSize - copySize);
// ensure PID is null terminated
- response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE-1] = 0;
+ response_v4->ResponseBase.KmsPID[PID_BUFFER_SIZE - 1] = 0;
uint8_t* mac = rawResponse + messageSize;
AesCmacV4(rawResponse, messageSize, mac);
@@ -1032,20 +1101,20 @@ RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* response_v4, const int responseSi
REQUEST_V4* request_v4 = (REQUEST_V4*)rawRequest;
RESPONSE_RESULT result;
- result.mask = (DWORD)~0;
- result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse);
- result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version;
- result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC));
- result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME));
- result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID));
+ result.mask = (DWORD)~0;
+ result.PidLengthOK = checkPidLength((RESPONSE*)rawResponse);
+ result.VersionOK = response_v4->ResponseBase.Version == request_v4->RequestBase.Version;
+ result.HashOK = !memcmp(&response_v4->MAC, mac, sizeof(response_v4->MAC));
+ result.TimeStampOK = !memcmp(&response_v4->ResponseBase.ClientTime, &request_v4->RequestBase.ClientTime, sizeof(FILETIME));
+ result.ClientMachineIDOK = !memcmp(&response_v4->ResponseBase.CMID, &request_v4->RequestBase.CMID, sizeof(GUID));
result.effectiveResponseSize = responseSize;
- result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize);
+ result.correctResponseSize = sizeof(RESPONSE_V4) - sizeof(response_v4->ResponseBase.KmsPID) + LE32(response_v4->ResponseBase.PIDSize);
return result;
}
-static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse)
+static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ctx, RESPONSE_V6* response_v6, REQUEST_V6* request_v6, BYTE* const rawResponse)
{
// Check IVs
result.IVsOK = !memcmp // In V6 the XoredIV is actually the request IV
@@ -1103,7 +1172,7 @@ static RESPONSE_RESULT VerifyResponseV6(RESPONSE_RESULT result, const AesCtx* Ct
static RESPONSE_RESULT VerifyResponseV5(RESPONSE_RESULT result, REQUEST_V5* request_v5, RESPONSE_V5* response_v5)
{
// Check IVs: in V5 (and only v5) request and response IVs must match
- result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV));
+ result.IVsOK = !memcmp(request_v5->IV, response_v5->IV, sizeof(request_v5->IV));
// V5 has no Hmac, always set to TRUE
result.HmacSha256OK = TRUE;
@@ -1147,19 +1216,19 @@ RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BY
// Check if pad bytes are all the same
BYTE* padByte;
for (padByte = lastPadByte - *lastPadByte + 1; padByte < lastPadByte; padByte++)
- if (*padByte != *lastPadByte)
- {
- result.DecryptSuccess = FALSE;
- return result;
- }
+ if (*padByte != *lastPadByte)
+ {
+ result.DecryptSuccess = FALSE;
+ return result;
+ }
// Add size of Version, KmsPIDLen and variable size PID
- DWORD pidSize = LE32(((RESPONSE_V6*) response)->ResponseBase.PIDSize);
+ DWORD pidSize = LE32(((RESPONSE_V6*)response)->ResponseBase.PIDSize);
copySize1 +=
- V6_UNENCRYPTED_SIZE +
+ V6_UNENCRYPTED_SIZE +
sizeof(response_v6->ResponseBase.PIDSize) +
- (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1);
+ (pidSize <= PID_BUFFER_SIZE << 1 ? pidSize : PID_BUFFER_SIZE << 1);
// Copy part 1 of response up to variable sized PID
memcpy(response_v6, response, copySize1);
@@ -1175,7 +1244,7 @@ RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BY
// A basic client doesn't need the stuff below this comment but we want to use vlmcs
// as a debug tool for KMS emulators.
- REQUEST_V6* request_v6 = (REQUEST_V6*) rawRequest;
+ REQUEST_V6* request_v6 = (REQUEST_V6*)rawRequest;
DWORD decryptSize = sizeof(request_v6->IV) + sizeof(request_v6->RequestBase) + sizeof(request_v6->Pad);
AesDecryptCbc(&Ctx, NULL, request_v6->IV, decryptSize);
@@ -1187,9 +1256,9 @@ RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* response_v6, int responseSize, BY
request_v6->Version == request_v6->RequestBase.Version;
// Check Base Request
- result.PidLengthOK = checkPidLength(&((RESPONSE_V6*) response)->ResponseBase);
- result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME));
- result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID);
+ result.PidLengthOK = checkPidLength(&((RESPONSE_V6*)response)->ResponseBase);
+ result.TimeStampOK = !memcmp(&response_v6->ResponseBase.ClientTime, &request_v6->RequestBase.ClientTime, sizeof(FILETIME));
+ result.ClientMachineIDOK = IsEqualGUID(&response_v6->ResponseBase.CMID, &request_v6->RequestBase.CMID);
// Rebuild Random Key and Sha256 Hash
BYTE HashVerify[sizeof(response_v6->Hash)];
diff --git a/src/kms.h b/src/kms.h
index 96bbc8cf..97251ea5 100644
--- a/src/kms.h
+++ b/src/kms.h
@@ -270,7 +270,7 @@ typedef struct
#define POFFICE2010GUID &AppList[APP_ID_OFFICE2010].guid
#define POFFICE2013GUID &AppList[APP_ID_OFFICE2013].guid
-typedef BOOL(__stdcall *RequestCallback_t)(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr);
+typedef HRESULT(__stdcall *RequestCallback_t)(const REQUEST *const baseRequest, RESPONSE *const baseResponse, BYTE *const hwId, const char* const ipstr);
size_t CreateResponseV4(REQUEST_V4 *const Request, BYTE *const response_data, const char* const ipstr);
size_t CreateResponseV6(REQUEST_V6 *restrict Request, BYTE *const response_data, const char* const ipstr);
@@ -282,10 +282,11 @@ RESPONSE_RESULT DecryptResponseV6(RESPONSE_V6* Response_v6, int responseSize, BY
RESPONSE_RESULT DecryptResponseV4(RESPONSE_V4* Response_v4, const int responseSize, BYTE* const response, const BYTE* const request);
void getUnixTimeAsFileTime(FILETIME *const ts);
__pure int64_t fileTimeToUnixTime(const FILETIME *const ts);
-const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i);
-const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t *const i);
+const char* getProductNameHE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t maxList, ProdListIndex_t *const i);
+const char* getProductNameLE(const GUID *const guid, const KmsIdList *const List, ProdListIndex_t maxList, ProdListIndex_t *const i);
__pure ProdListIndex_t getExtendedProductListSize();
__pure ProdListIndex_t getAppListSize(void);
+__pure ProdListIndex_t getProductListSize(void);
extern const KmsIdList ProductList[];
extern const KmsIdList AppList[];
diff --git a/src/libkms.c b/src/libkms.c
index bd503334..d4b8153f 100644
--- a/src/libkms.c
+++ b/src/libkms.c
@@ -13,7 +13,7 @@
#define EXTERNAL dllexport
-#define DLLVERSION 0x30002
+#define DLLVERSION 0x40000
#include "libkms.h"
#include "shared_globals.h"
@@ -51,7 +51,7 @@ EXTERNC __declspec(EXTERNAL) char* __cdecl GetErrorMessage()
return ErrorMessage;
}
-EXTERNC __declspec(EXTERNAL) SOCKET __cdecl ConnectToServer(const char* host, const char* port, const int addressFamily)
+EXTERNC __declspec(EXTERNAL)SOCKET __cdecl ConnectToServer(const char* host, const char* port, const int addressFamily)
{
SOCKET sock;
*ErrorMessage = 0;
@@ -74,11 +74,13 @@ EXTERNC __declspec(EXTERNAL) SOCKET __cdecl ConnectToServer(const char* host, co
return sock;
}
-EXTERNC __declspec(EXTERNAL) RpcStatus __cdecl BindRpc(const SOCKET sock, const int_fast8_t useMultiplexedRpc)
+EXTERNC __declspec(EXTERNAL)RpcStatus __cdecl BindRpc(const SOCKET sock, const int_fast8_t useMultiplexedRpc, const int_fast8_t useRpcNDR64, const int_fast8_t useRpcBTFN, PRpcDiag_t rpcDiag)
{
*ErrorMessage = 0;
UseMultiplexedRpc = useMultiplexedRpc;
- return rpcBindClient(sock, FALSE);
+ UseClientRpcNDR64 = useRpcNDR64;
+ UseClientRpcBTFN = useRpcBTFN;
+ return rpcBindClient(sock, FALSE, rpcDiag);
}
EXTERNC __declspec(EXTERNAL) void __cdecl CloseConnection(const SOCKET sock)
@@ -87,24 +89,24 @@ EXTERNC __declspec(EXTERNAL) void __cdecl CloseConnection(const SOCKET sock)
}
-EXTERNC __declspec(EXTERNAL) DWORD __cdecl SendKMSRequest(const SOCKET sock, RESPONSE* baseResponse, REQUEST* baseRequest, RESPONSE_RESULT* result, BYTE *hwid)
+EXTERNC __declspec(EXTERNAL)DWORD __cdecl SendKMSRequest(const SOCKET sock, RESPONSE* baseResponse, REQUEST* baseRequest, RESPONSE_RESULT* result, BYTE *hwid)
{
*ErrorMessage = 0;
return SendActivationRequest(sock, baseResponse, baseRequest, result, hwid);
}
-EXTERNC __declspec(EXTERNAL) int_fast8_t __cdecl IsDisconnected(const SOCKET sock)
+EXTERNC __declspec(EXTERNAL)int_fast8_t __cdecl IsDisconnected(const SOCKET sock)
{
return isDisconnected(sock);
}
-EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, RequestCallback_t requestCallback)
+EXTERNC __declspec(EXTERNAL)DWORD __cdecl StartKmsServer(const int port, RequestCallback_t requestCallback)
{
#ifndef SIMPLE_SOCKETS
char listenAddress[64];
- if (IsServerStarted) return !0;
+ if (IsServerStarted) return SOCKET_EALREADY;
# ifdef _WIN32
int error = initializeWinSockets();
@@ -120,7 +122,7 @@ EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, Reques
if (checkProtocolStack(AF_INET)) { haveIPv4 = TRUE; maxsockets++; }
if (checkProtocolStack(AF_INET6)) { haveIPv6 = TRUE; maxsockets++; }
- if(!maxsockets) return !0;
+ if (!maxsockets) return SOCKET_EAFNOSUPPORT;
SocketList = (SOCKET*)vlmcsd_malloc(sizeof(SOCKET) * (size_t)maxsockets);
numsockets = 0;
@@ -140,7 +142,7 @@ EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, Reques
if (!numsockets)
{
free(SocketList);
- return !0;
+ return SOCKET_EADDRNOTAVAIL;
}
IsServerStarted = TRUE;
@@ -152,7 +154,7 @@ EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, Reques
# else // SIMPLE_SOCKETS
- if (IsServerStarted) return !0;
+ if (IsServerStarted) return SOCKET_EALREADY;
int error;
# ifdef _WIN32
@@ -165,6 +167,7 @@ EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, Reques
CreateResponseBase = requestCallback;
error = listenOnAllAddresses();
+ free(defaultport);
if (error) return error;
IsServerStarted = TRUE;
@@ -178,9 +181,9 @@ EXTERNC __declspec(EXTERNAL) DWORD __cdecl StartKmsServer(const int port, Reques
}
-EXTERNC __declspec(EXTERNAL) DWORD __cdecl StopKmsServer()
+EXTERNC __declspec(EXTERNAL)DWORD __cdecl StopKmsServer()
{
- if (!IsServerStarted) return !0;
+ if (!IsServerStarted) return VLMCSD_EPERM;
closeAllListeningSockets();
diff --git a/src/libkms.h b/src/libkms.h
index 6babaa79..ece9d1cd 100644
--- a/src/libkms.h
+++ b/src/libkms.h
@@ -26,7 +26,7 @@ EXTERNC __declspec(EXTERNAL) const char* const __cdecl GetEmulatorVersion();
EXTERNC __declspec(EXTERNAL) SOCKET __cdecl ConnectToServer(const char* host, const char* port, const int addressFamily);
EXTERNC __declspec(EXTERNAL) char* __cdecl GetErrorMessage();
EXTERNC __declspec(EXTERNAL) void __cdecl CloseConnection(const SOCKET sock);
-EXTERNC __declspec(EXTERNAL) RpcStatus __cdecl BindRpc(const SOCKET sock, const int_fast8_t useMultiplexedRpc);
+EXTERNC __declspec(EXTERNAL) RpcStatus __cdecl BindRpc(const SOCKET sock, const int_fast8_t useMultiplexedRpc, const int_fast8_t useRpcNDR64, const int_fast8_t useRpcBTFN, PRpcDiag_t rpcDiag);
EXTERNC __declspec(EXTERNAL) int_fast8_t __cdecl IsDisconnected(const SOCKET sock);
//EXTERN_C __declspec(EXTERNAL) unsigned int __cdecl GetRandom32();
diff --git a/src/msrpc-client.c b/src/msrpc-client.c
index bbabcc02..864874c6 100644
--- a/src/msrpc-client.c
+++ b/src/msrpc-client.c
@@ -90,7 +90,7 @@ RpcCtx connectToAddress(char *const addr, const int AddressFamily_unused, int_fa
/*
* Does not do RPC binding on the wire. Just initializes the interface
*/
-RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose)
+RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose, PRpcDiag_t rpcDiag)
{
RPC_STATUS status;
@@ -99,6 +99,7 @@ RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose)
errorout("\n%s\n", win_strerror(status));
}
+ rpcDiag->HasRpcDiag = FALSE;
return status;
}
diff --git a/src/msrpc-client.h b/src/msrpc-client.h
index fba073d5..603e3b89 100644
--- a/src/msrpc-client.h
+++ b/src/msrpc-client.h
@@ -7,6 +7,7 @@
#define MSRPC_CLIENT_H_
#include "types.h"
+#include "shared_globals.h"
#include
#include "output.h"
@@ -15,7 +16,7 @@ typedef RPC_STATUS RpcStatus;
RpcCtx connectToAddress(char *const addr, const int AddressFamily_unused, int_fast8_t showHostName);
int_fast8_t isDisconnected(const RpcCtx handle);
-RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose);
+RpcStatus rpcBindClient(const RpcCtx handle, const int_fast8_t verbose, PRpcDiag_t rpcDiag);
RpcStatus rpcSendRequest(const RpcCtx handle, BYTE* KmsRequest, size_t requestSize, BYTE **KmsResponse, size_t *responseSize);
RpcStatus closeRpc(RpcCtx s);
diff --git a/src/network.c b/src/network.c
index bb07ca4f..08d158e1 100644
--- a/src/network.c
+++ b/src/network.c
@@ -46,7 +46,7 @@
#include "rpc.h"
#ifndef _WIN32
-typedef ssize_t (*sendrecv_t)(int, void*, size_t, int);
+typedef ssize_t(*sendrecv_t)(int, void*, size_t, int);
#else
typedef int (WINAPI *sendrecv_t)(SOCKET, void*, int, int);
#endif
@@ -57,17 +57,16 @@ int_fast8_t sendrecv(SOCKET sock, BYTE *data, int len, int_fast8_t do_send)
{
int n;
sendrecv_t f = do_send
- ? (sendrecv_t) send
- : (sendrecv_t) recv;
+ ? (sendrecv_t)send
+ : (sendrecv_t)recv;
do
{
- n = f(sock, data, len, 0);
- }
- while (
- ( n < 0 && socket_errno == VLMCSD_EINTR ) || ( n > 0 && ( data += n, (len -= n) > 0 ) ));
+ n = f(sock, data, len, 0);
+ } while (
+ (n < 0 && socket_errno == SOCKET_EINTR) || (n > 0 && (data += n, (len -= n) > 0)));
- return ! len;
+ return !len;
}
@@ -78,15 +77,15 @@ static int_fast8_t ip2str(char *restrict result, const size_t resultLength, cons
char ipAddress[64], portNumber[8];
if (getnameinfo
- (
- socketAddress,
- socketLength,
- ipAddress,
- sizeof(ipAddress),
- portNumber,
- sizeof(portNumber),
- NI_NUMERICHOST | NI_NUMERICSERV
- ))
+ (
+ socketAddress,
+ socketLength,
+ ipAddress,
+ sizeof(ipAddress),
+ portNumber,
+ sizeof(portNumber),
+ NI_NUMERICHOST | NI_NUMERICSERV
+ ))
{
return FALSE;
}
@@ -133,12 +132,12 @@ static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking)
{
if (fd == INVALID_SOCKET) return FALSE;
- #ifdef _WIN32
+#ifdef _WIN32
unsigned long mode = blocking ? 0 : 1;
return (ioctlsocket(fd, FIONBIO, &mode) == 0) ? TRUE : FALSE;
- #else // POSIX
+#else // POSIX
int flags = fcntl(fd, F_GETFL, 0);
@@ -147,7 +146,7 @@ static int_fast8_t setBlockingEnabled(SOCKET fd, int_fast8_t blocking)
flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK);
return (fcntl(fd, F_SETFL, flags) == 0) ? TRUE : FALSE;
- #endif // POSIX
+#endif // POSIX
}
@@ -182,45 +181,45 @@ static int_fast8_t isPrivateIPAddress(struct sockaddr* addr, socklen_t* length)
switch (addr->sa_family)
{
- case AF_INET6:
- {
- union v6addr* ipv6addr = (union v6addr*)&((struct sockaddr_in6*)addr)->sin6_addr;
+ case AF_INET6:
+ {
+ union v6addr* ipv6addr = (union v6addr*)&((struct sockaddr_in6*)addr)->sin6_addr;
- if
+ if
(
- (ipv6addr->qwords[0] != 0 || BE64(ipv6addr->qwords[1]) != 1) && // ::1 IPv6 localhost
- (BE16(ipv6addr->words[0]) & 0xe000) == 0x2000 // !2000::/3
- )
- {
- return FALSE;
- }
-
- if (length) *length = sizeof(struct sockaddr_in6);
- break;
+ (ipv6addr->qwords[0] != 0 || BE64(ipv6addr->qwords[1]) != 1) && // ::1 IPv6 localhost
+ (BE16(ipv6addr->words[0]) & 0xe000) == 0x2000 // !2000::/3
+ )
+ {
+ return FALSE;
}
- case AF_INET:
- {
- uint32_t ipv4addr = BE32(((struct sockaddr_in*)addr)->sin_addr.s_addr);
+ if (length) *length = sizeof(struct sockaddr_in6);
+ break;
+ }
+
+ case AF_INET:
+ {
+ uint32_t ipv4addr = BE32(((struct sockaddr_in*)addr)->sin_addr.s_addr);
- if
+ if
(
- (ipv4addr & 0xff000000) != 0x7f000000 && // 127.x.x.x localhost
+ (ipv4addr & 0xff000000) != 0x7f000000 && // 127.x.x.x localhost
(ipv4addr & 0xffff0000) != 0xc0a80000 && // 192.168.x.x private routeable
(ipv4addr & 0xffff0000) != 0xa9fe0000 && // 169.254.x.x link local
(ipv4addr & 0xff000000) != 0x0a000000 && // 10.x.x.x private routeable
(ipv4addr & 0xfff00000) != 0xac100000 // 172.16-31.x.x private routeable
- )
- {
- return FALSE;
- }
-
- if (length) *length = sizeof(struct sockaddr_in);
- break;
+ )
+ {
+ return FALSE;
}
- default:
- return FALSE;
+ if (length) *length = sizeof(struct sockaddr_in);
+ break;
+ }
+
+ default:
+ return FALSE;
}
return TRUE;
@@ -278,7 +277,7 @@ SOCKET connectToAddress(const char *const addr, const int AddressFamily, int_fas
break;
}
- printerrorf("%s: %s\n", szAddr, socket_errno == VLMCSD_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno));
+ printerrorf("%s: %s\n", szAddr, socket_errno == SOCKET_EINPROGRESS ? "Timed out" : vlmcsd_strerror(socket_errno));
socketclose(s);
s = INVALID_SOCKET;
@@ -323,47 +322,52 @@ int listenOnAllAddresses()
if (!stringToInt(defaultport, 1, 65535, &port_listen))
{
printerrorf("Fatal: Port must be numeric between 1 and 65535.\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
+# if defined(AF_INET6) && defined(IPV6_V6ONLY)
+
struct sockaddr_in6 addr;
memset(&addr, 0, sizeof(addr));
addr.sin6_family = AF_INET6;
addr.sin6_port = BE16((uint16_t)port_listen);
addr.sin6_addr = in6addr_any;
BOOL v6only = FALSE;
-
s_server = socket(AF_INET6, SOCK_STREAM, 0);
if (s_server == INVALID_SOCKET
- || allowSocketReuse(s_server)
- || setsockopt(s_server, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&v6only, sizeof(v6only))
- || bind(s_server, (struct sockaddr *)&addr, sizeof(addr))
- || listen(s_server, SOMAXCONN) )
+ || allowSocketReuse(s_server)
+ || setsockopt(s_server, IPPROTO_IPV6, IPV6_V6ONLY, (sockopt_t)&v6only, sizeof(v6only))
+ || bind(s_server, (struct sockaddr *)&addr, sizeof(addr))
+ || listen(s_server, SOMAXCONN))
{
socketclose(s_server);
- struct sockaddr_in addr = {
+# endif // defined(AF_INET6) && defined(IPV6_V6ONLY)
+ struct sockaddr_in addr4 = {
.sin_family = AF_INET,
- .sin_port = BE16((uint16_t)port_listen),
+ .sin_port = BE16((uint16_t)port_listen),
+ .sin_addr.s_addr = BE32(INADDR_ANY)
};
- addr.sin_addr.s_addr = BE32(INADDR_ANY);
s_server = socket(AF_INET, SOCK_STREAM, 0);
- if ( s_server == INVALID_SOCKET
- || allowSocketReuse(s_server)
- || bind(s_server, (struct sockaddr *)&addr, sizeof(addr))
- || listen(s_server, SOMAXCONN) )
+ if (s_server == INVALID_SOCKET
+ || allowSocketReuse(s_server)
+ || bind(s_server, (struct sockaddr *)&addr4, sizeof(addr4))
+ || listen(s_server, SOMAXCONN))
{
int error = socket_errno;
printerrorf("Fatal: Cannot bind to TCP port %u: %s\n", port_listen, vlmcsd_strerror(error));
return error;
}
+
+# if defined(AF_INET6) && defined(IPV6_V6ONLY)
}
+# endif // defined(AF_INET6) && defined(IPV6_V6ONLY)
- #ifndef NO_LOG
+#ifndef NO_LOG
logger("Listening on TCP port %u\n", port_listen);
- #endif // NO_LOG
+#endif // NO_LOG
return 0;
}
@@ -380,18 +384,18 @@ void getPrivateIPAddresses(int* numAddresses, char*** ipAddresses)
PIP_ADAPTER_ADDRESSES firstAdapter, currentAdapter;
- DWORD dwRetVal;
- ULONG outBufLen = 16384;
- ULONG flags = GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_DNS_SERVER | GAA_FLAG_SKIP_FRIENDLY_NAME;
+ DWORD dwRetVal;
+ ULONG outBufLen = 16384;
+ ULONG flags = GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_DNS_SERVER | GAA_FLAG_SKIP_FRIENDLY_NAME;
- firstAdapter = (PIP_ADAPTER_ADDRESSES)vlmcsd_malloc(outBufLen);
+ firstAdapter = (PIP_ADAPTER_ADDRESSES)vlmcsd_malloc(outBufLen);
- if ((dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, firstAdapter, &outBufLen)) == ERROR_BUFFER_OVERFLOW)
- {
- free(firstAdapter);
- firstAdapter = (PIP_ADAPTER_ADDRESSES)vlmcsd_malloc(outBufLen);
- dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, firstAdapter, &outBufLen);
- }
+ if ((dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, firstAdapter, &outBufLen)) == ERROR_BUFFER_OVERFLOW)
+ {
+ free(firstAdapter);
+ firstAdapter = (PIP_ADAPTER_ADDRESSES)vlmcsd_malloc(outBufLen);
+ dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, firstAdapter, &outBufLen);
+ }
if (dwRetVal != NO_ERROR)
{
@@ -478,12 +482,12 @@ void getPrivateIPAddresses(int* numAddresses, char*** ipAddresses)
size_t adrlen = strlen(ipAddress);
if
- (
- addr->ifa_addr->sa_family == AF_INET6 &&
- adrlen > 5 &&
- !strchr(ipAddress, '%') &&
- (BE16(*(uint16_t*)&((struct sockaddr_in6*)addr->ifa_addr)->sin6_addr) & 0xffc0) == 0xfe80
- )
+ (
+ addr->ifa_addr->sa_family == AF_INET6 &&
+ adrlen > 5 &&
+ !strchr(ipAddress, '%') &&
+ (BE16(*(uint16_t*)&((struct sockaddr_in6*)addr->ifa_addr)->sin6_addr) & 0xffc0) == 0xfe80
+ )
{
size_t ifnamelen = strlen(addr->ifa_name);
char* workaroundIpAddress = (char*)vlmcsd_malloc(adrlen + ifnamelen + 2);
@@ -556,10 +560,10 @@ static int listenOnAddress(const struct addrinfo *const ai, SOCKET *s)
{
# ifdef _PEDANTIC
# if defined(_WIN32) || defined(__CYGWIN__)
-// if (IsWindowsVistaOrGreater()) //Doesn't work with older version of MingW32-w64 toolchain
- if ((GetVersion() & 0xff) > 5)
+ // if (IsWindowsVistaOrGreater()) //Doesn't work with older version of MingW32-w64 toolchain
+ if ((GetVersion() & 0xff) > 5)
# endif // _WIN32
- printerrorf("Warning: %s does not support socket option IPV6_V6ONLY: %s\n", ipstr, vlmcsd_strerror(socket_errno));
+ printerrorf("Warning: %s does not support socket option IPV6_V6ONLY: %s\n", ipstr, vlmcsd_strerror(socket_errno));
# endif // _PEDANTIC
}
# endif
@@ -645,9 +649,9 @@ BOOL addListeningSocket(const char *const addr)
if (numsockets >= FD_SETSIZE)
{
- #ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low
+#ifdef _PEDANTIC // Do not report this error in normal builds to keep file size low
printerrorf("Warning: Cannot listen on %s. Your OS only supports %u listening sockets in an FD_SET.\n", addr, FD_SETSIZE);
- #endif
+#endif
break;
}
@@ -680,39 +684,39 @@ __pure int_fast8_t checkProtocolStack(const int addressfamily)
// Build an fd_set of all listening socket then use select to wait for an incoming connection
static SOCKET network_accept_any()
{
- fd_set ListeningSocketsList;
- SOCKET maxSocket, sock;
- int i;
- int status;
-
- FD_ZERO(&ListeningSocketsList);
- maxSocket = 0;
-
- for (i = 0; i < numsockets; i++)
- {
- FD_SET(SocketList[i], &ListeningSocketsList);
- if (SocketList[i] > maxSocket) maxSocket = SocketList[i];
- }
-
- status = select((int)maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL);
-
- if (status < 0) return INVALID_SOCKET;
-
- sock = INVALID_SOCKET;
-
- for (i = 0; i < numsockets; i++)
- {
- if (FD_ISSET(SocketList[i], &ListeningSocketsList))
- {
- sock = SocketList[i];
- break;
- }
- }
-
- if (sock == INVALID_SOCKET)
- return INVALID_SOCKET;
- else
- return accept(sock, NULL, NULL);
+ fd_set ListeningSocketsList;
+ SOCKET maxSocket, sock;
+ int i;
+ int status;
+
+ FD_ZERO(&ListeningSocketsList);
+ maxSocket = 0;
+
+ for (i = 0; i < numsockets; i++)
+ {
+ FD_SET(SocketList[i], &ListeningSocketsList);
+ if (SocketList[i] > maxSocket) maxSocket = SocketList[i];
+ }
+
+ status = select((int)maxSocket + 1, &ListeningSocketsList, NULL, NULL, NULL);
+
+ if (status < 0) return INVALID_SOCKET;
+
+ sock = INVALID_SOCKET;
+
+ for (i = 0; i < numsockets; i++)
+ {
+ if (FD_ISSET(SocketList[i], &ListeningSocketsList))
+ {
+ sock = SocketList[i];
+ break;
+ }
+ }
+
+ if (sock == INVALID_SOCKET)
+ return INVALID_SOCKET;
+ else
+ return accept(sock, NULL, NULL);
}
#endif // !SIMPLE_SOCKETS
@@ -734,7 +738,7 @@ void closeAllListeningSockets()
socketclose(SocketList[i]);
}
- #endif // !SIMPLE_SOCKETS
+#endif // !SIMPLE_SOCKETS
}
#endif // NO_SOCKETS
@@ -749,7 +753,7 @@ static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup)
to.tv_sec = ServerTimeout;
to.tv_usec = 0;
- #else // Windows requires a DWORD with milliseconds
+#else // Windows requires a DWORD with milliseconds
DWORD to = ServerTimeout * 1000;
@@ -761,11 +765,11 @@ static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup)
setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to)) ||
setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to));
- if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno));
+ if (result) logger("Warning: Set timeout failed: %s\n", vlmcsd_strerror(socket_errno));
# else // !(!defined(NO_LOG) && defined(_PEDANTIC))
- setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to));
+ setsockopt(s_client, SOL_SOCKET, SO_RCVTIMEO, (sockopt_t)&to, sizeof(to));
setsockopt(s_client, SOL_SOCKET, SO_SNDTIMEO, (sockopt_t)&to, sizeof(to));
# endif // !(!defined(NO_LOG) && defined(_PEDANTIC))
@@ -796,7 +800,7 @@ static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup)
static const char *const fIP = "%s connection %s: %s.\n";
logger(fIP, connection_type, cAccepted, ipstr);
- #endif // NO_LOG
+#endif // NO_LOG
# if !defined(NO_PRIVATE_IP_DETECT)
@@ -828,23 +832,23 @@ static void serveClient(const SOCKET s_client, const DWORD RpcAssocGroup)
#ifndef NO_SOCKETS
static void post_sem(void)
{
- #if !defined(NO_LIMIT) && !__minix__
+#if !defined(NO_LIMIT) && !__minix__
if (!InetdMode && MaxTasks != SEM_VALUE_MAX)
{
semaphore_post(Semaphore);
}
- #endif // !defined(NO_LIMIT) && !__minix__
+#endif // !defined(NO_LIMIT) && !__minix__
}
static void wait_sem(void)
{
- #if !defined(NO_LIMIT) && !__minix__
+#if !defined(NO_LIMIT) && !__minix__
if (!InetdMode && MaxTasks != SEM_VALUE_MAX)
{
semaphore_wait(Semaphore);
}
- #endif // !defined(NO_LIMIT) && !__minix__
+#endif // !defined(NO_LIMIT) && !__minix__
}
#endif // NO_SOCKETS
@@ -853,7 +857,7 @@ static void wait_sem(void)
#if defined(_WIN32) || defined(__CYGWIN__) // Win32 Threads
static DWORD WINAPI serveClientThreadProc(PCLDATA clData)
#else // Posix threads
-static void *serveClientThreadProc (PCLDATA clData)
+static void *serveClientThreadProc(PCLDATA clData)
#endif // Thread proc is identical in WIN32 and Posix threads
{
serveClient(clData->socket, clData->RpcAssocGroup);
@@ -896,18 +900,19 @@ static int ServeClientAsyncPosixThreads(const PCLDATA thr_CLData)
{
pthread_t p_thr;
pthread_attr_t attr;
+ int error;
wait_sem();
// Must set detached state to avoid memory leak
- if (pthread_attr_init(&attr) ||
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) ||
- pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData))
+ if ((error = pthread_attr_init(&attr)) ||
+ (error = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) ||
+ (error = pthread_create(&p_thr, &attr, (void * (*)(void *))serveClientThreadProc, thr_CLData)))
{
socketclose(thr_CLData->socket);
free(thr_CLData);
post_sem();
- return !0;
+ return error;
}
return 0;
@@ -921,11 +926,11 @@ static void ChildSignalHandler(const int signal)
post_sem();
- #ifndef NO_LOG
+#ifndef NO_LOG
logger("Warning: Child killed/crashed by %s\n", strsignal(signal));
- #endif // NO_LOG
+#endif // NO_LOG
- exit(!0);
+ exit(ECHILD);
}
static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup)
@@ -937,7 +942,7 @@ static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup
{
return errno;
}
- else if ( pid )
+ else if (pid)
{
// Parent process
socketclose(s_client);
@@ -950,7 +955,7 @@ static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup
// Setup a Child Handler for most common termination signals
struct sigaction sa;
- sa.sa_flags = 0;
+ sa.sa_flags = 0;
sa.sa_handler = ChildSignalHandler;
static int signallist[] = { SIGHUP, SIGINT, SIGTERM, SIGSEGV, SIGILL, SIGFPE, SIGBUS };
@@ -975,27 +980,27 @@ static int ServeClientAsyncFork(const SOCKET s_client, const DWORD RpcAssocGroup
int serveClientAsync(const SOCKET s_client, const DWORD RpcAssocGroup)
{
- #ifndef USE_THREADS // fork() implementation
+#ifndef USE_THREADS // fork() implementation
return ServeClientAsyncFork(s_client, RpcAssocGroup);
- #else // threads implementation
+#else // threads implementation
PCLDATA thr_CLData = (PCLDATA)vlmcsd_malloc(sizeof(CLDATA));
thr_CLData->socket = s_client;
thr_CLData->RpcAssocGroup = RpcAssocGroup;
- #if defined(_WIN32) || defined (__CYGWIN__) // Windows threads
+#if defined(_WIN32) || defined (__CYGWIN__) // Windows threads
return serveClientAsyncWinThreads(thr_CLData);
- #else // Posix Threads
+#else // Posix Threads
return ServeClientAsyncPosixThreads(thr_CLData);
- #endif // Posix Threads
+#endif // Posix Threads
- #endif // USE_THREADS
+#endif // USE_THREADS
}
#endif // NO_SOCKETS
@@ -1006,11 +1011,11 @@ int runServer()
DWORD RpcAssocGroup = rand32();
// If compiled for inetd-only mode just serve the stdin socket
- #ifdef NO_SOCKETS
+#ifdef NO_SOCKETS
serveClient(STDIN_FILENO, RpcAssocGroup);
return 0;
- #else
- // In inetd mode just handle the stdin socket
+#else
+// In inetd mode just handle the stdin socket
if (InetdMode)
{
serveClient(STDIN_FILENO, RpcAssocGroup);
@@ -1022,31 +1027,42 @@ int runServer()
int error;
SOCKET s_client;
- #ifdef SIMPLE_SOCKETS
- if ( (s_client = accept(s_server, NULL, NULL)) == INVALID_SOCKET )
- #else // Standalone mode fully featured sockets
- if ( (s_client = network_accept_any()) == INVALID_SOCKET )
- #endif // Standalone mode fully featured sockets
+# ifdef SIMPLE_SOCKETS
+ if ((s_client = accept(s_server, NULL, NULL)) == INVALID_SOCKET)
+# else // Standalone mode fully featured sockets
+ if ((s_client = network_accept_any()) == INVALID_SOCKET)
+# endif // Standalone mode fully featured sockets
{
error = socket_errno;
+ if (error == SOCKET_EINTR || error == SOCKET_ECONNABORTED) continue;
- if (error == VLMCSD_EINTR || error == VLMCSD_ECONNABORTED) continue;
-
- #ifdef _NTSERVICE
+# ifdef _NTSERVICE
if (ServiceShutdown) return 0;
- #endif
+# endif
- #ifndef NO_LOG
- logger("Fatal: %s\n",vlmcsd_strerror(error));
- #endif
+# ifndef NO_LOG
+ logger("Fatal: %s\n", vlmcsd_strerror(error));
+# endif
return error;
}
RpcAssocGroup++;
+
+# if !defined(NO_LOG) && defined(_PEDANTIC)
+ if ((error = serveClientAsync(s_client, RpcAssocGroup)))
+ {
+# ifdef USE_THREADS
+ logger("Warning: Could not create client thread: %s\n", vlmcsd_strerror(error));
+# else // !USE_THREADS
+ logger("Warning: Could not fork client: %s\n", vlmcsd_strerror(error));
+# endif // !USE_THREADS
+ }
+# else // NO_LOG || !_PEDANTIC
serveClientAsync(s_client, RpcAssocGroup);
+# endif // NO_LOG || !_PEDANTIC
}
- #endif // NO_SOCKETS
+# endif // NO_SOCKETS
}
#endif // USE_MSRPC
diff --git a/src/output.c b/src/output.c
index 03c6247e..0050fb5d 100644
--- a/src/output.c
+++ b/src/output.c
@@ -154,12 +154,12 @@ int errorout(const char* fmt, ...)
}
-#ifndef NO_VERBOSE_LOG
+#if !defined(NO_VERBOSE_LOG) && !defined(NO_LOG)
static const char *LicenseStatusText[] =
{
"Unlicensed", "Licensed", "OOB grace", "OOT grace", "Non-Genuine", "Notification", "Extended grace"
};
-#endif // NO_VERBOSE_LOG
+#endif // !defined(NO_VERBOSE_LOG) && !defined(NO_LOG)
void uuid2StringLE(const GUID *const guid, char *const string)
@@ -192,13 +192,13 @@ void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p)
p("Remaining time (0 = forever) : %i minutes\n", (uint32_t)LE32(Request->BindingExpiration));
uuid2StringLE(&Request->AppID, guidBuffer);
- productName = getProductNameLE(&Request->AppID, AppList, &index);
+ productName = getProductNameLE(&Request->AppID, AppList, getAppListSize(), &index);
p("Application ID : %s (%s)\n", guidBuffer, productName);
uuid2StringLE(&Request->ActID, guidBuffer);
# ifndef NO_EXTENDED_PRODUCT_LIST
- productName = getProductNameLE(&Request->ActID, ExtendedProductList, &index);
+ productName = getProductNameLE(&Request->ActID, ExtendedProductList, getExtendedProductListSize(), &index);
# else
productName = "Unknown";
# endif
@@ -206,7 +206,7 @@ void logRequestVerbose(const REQUEST *const Request, const PRINTFUNC p)
p("SKU ID (aka Activation ID) : %s (%s)\n", guidBuffer, productName);
uuid2StringLE(&Request->KMSID, guidBuffer);
- productName = getProductNameLE(&Request->KMSID, ProductList, &index);
+ productName = getProductNameLE(&Request->KMSID, ProductList, getProductListSize(), &index);
p("KMS ID (aka KMS counted ID) : %s (%s)\n", guidBuffer, productName);
uuid2StringLE(&Request->CMID, guidBuffer);
@@ -578,6 +578,10 @@ void printServerFlags()
" NO_HELP"
# endif // NO_HELP
+# ifdef NO_STRICT_MODES
+ " NO_STRICT_MODES"
+# endif // NO_STRICT_MODES
+
# ifdef NO_CUSTOM_INTERVALS
" NO_CUSTOM_INTERVALS"
# endif // NO_CUSTOM_INTERVALS
@@ -618,6 +622,14 @@ void printServerFlags()
" SIMPLE_SOCKETS"
# endif // !defined(NO_SOCKETS) && defined(SIMPLE_SOCKETS)
+# ifdef SIMPLE_RPC
+ " SIMPLE_RPC"
+# endif // SIMPLE_RPC
+
+# ifdef NO_STRICT_MODES
+ " NO_STRICT_MODES"
+# endif // NO_STRICT_MODES
+
# if (_WIN32 || __CYGWIN__) && (!defined(USE_MSRPC) || defined(SUPPORT_WINE))
" SUPPORT_WINE"
# endif // (_WIN32 || __CYGWIN__) && (!defined(USE_MSRPC) || defined(SUPPORT_WINE))
diff --git a/src/rpc.c b/src/rpc.c
index 3f481a46..71ee4734 100644
--- a/src/rpc.c
+++ b/src/rpc.c
@@ -43,6 +43,7 @@ static const BYTE InterfaceUuid[] = {
0x75, 0x21, 0xc8, 0x51, 0x4e, 0x84, 0x50, 0x47, 0xB0, 0xD8, 0xEC, 0x25, 0x55, 0x55, 0xBC, 0x06
};
+//#ifndef SIMPLE_RPC
static const BYTE TransferSyntaxNDR64[] = {
0x33, 0x05, 0x71, 0x71, 0xba, 0xbe, 0x37, 0x49, 0x83, 0x19, 0xb5, 0xdb, 0xef, 0x9c, 0xcc, 0x36
};
@@ -50,7 +51,7 @@ static const BYTE TransferSyntaxNDR64[] = {
static const BYTE BindTimeFeatureNegotiation[] = {
0x2c, 0x1c, 0xb7, 0x6c, 0x12, 0x98, 0x40, 0x45, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
-
+//#endif // SIMPLE_RPC
//
// Dispatch RPC payload to kms.c
@@ -181,6 +182,8 @@ static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, cons
uint16_t majorIndex, minor;
DWORD version;
+# ifndef SIMPLE_RPC
+
if (Ctx != *Ndr64Ctx)
{
version = LE32(*(DWORD*)Request->Ndr.Data);
@@ -190,6 +193,12 @@ static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, cons
version = LE32(*(DWORD*)Request->Ndr64.Data);
}
+# else // SIMPLE_RPC
+
+ version = LE32(*(DWORD*)Request->Ndr.Data);
+
+# endif // SIMPLE_RPC
+
majorIndex = (uint16_t)(version >> 16) - 4;
minor = (uint16_t)(version & 0xffff);
@@ -218,12 +227,15 @@ static unsigned int checkRpcRequestSize(const RPC_REQUEST64 *const Request, cons
static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const Response, const DWORD RpcAssocGroup_unused, const SOCKET sock_unused, WORD* NdrCtx, WORD* Ndr64Ctx, BYTE isValid, const char* const ipstr)
{
int ResponseSize; // <0 = Errorcode (HRESULT)
- WORD Ctx = LE16(Request->ContextId);
BYTE* requestData;
BYTE* responseData;
BYTE* pRpcReturnCode;
int len;
+# ifndef SIMPLE_RPC
+
+ WORD Ctx = LE16(Request->ContextId);
+
if (Ctx != *Ndr64Ctx)
{
requestData = (BYTE*)&Request->Ndr.Data;
@@ -235,6 +247,13 @@ static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const
responseData = (BYTE*)&Response->Ndr64.Data;
}
+# else // SIMPLE_RPC
+
+ requestData = (BYTE*)&Request->Ndr.Data;
+ responseData = (BYTE*)&Response->Ndr.Data;
+
+# endif // SIMPLE_RPC
+
ResponseSize = 0x8007000D; // Invalid Data
if (isValid)
@@ -243,8 +262,12 @@ static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const
if (!((ResponseSize = _Versions[majorIndex].CreateResponse(requestData, responseData, ipstr)))) ResponseSize = 0x8007000D;
}
+# ifndef SIMPLE_RPC
+
if (Ctx != *Ndr64Ctx)
{
+
+# endif // !SIMPLE_RPC
if (ResponseSize < 0)
{
Response->Ndr.DataSizeMax = Response->Ndr.DataLength = 0;
@@ -256,6 +279,9 @@ static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const
Response->Ndr.DataLength = Response->Ndr.DataSizeIs = LE32(ResponseSize);
len = ResponseSize + sizeof(Response->Ndr);
}
+
+# ifndef SIMPLE_RPC
+
}
else
{
@@ -272,6 +298,8 @@ static int rpcRequest(const RPC_REQUEST64 *const Request, RPC_RESPONSE64 *const
}
}
+# endif // !SIMPLE_RPC
+
pRpcReturnCode = ((BYTE*)&Response->Ndr) + len;
UA32(pRpcReturnCode) = ResponseSize < 0 ? LE32(ResponseSize) : 0;
len += sizeof(DWORD);
@@ -417,7 +445,9 @@ static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Res
Response->NumResults = Request->NumCtxItems;
- if (UseRpcNDR64)
+# ifndef SIMPLE_RPC
+
+ if (UseServerRpcNDR64)
{
for (i = 0; i < numCtxItems; i++)
{
@@ -437,6 +467,8 @@ static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Res
}
}
+# endif // !SIMPLE_RPC
+
for (i = 0; i < numCtxItems; i++)
{
memset(&Response->Results[i].TransferSyntax, 0, sizeof(GUID));
@@ -450,6 +482,9 @@ static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Res
_st = TRUE;
}
+
+# ifndef SIMPLE_RPC
+
else if (IsNDR64possible && IsEqualGUID((GUID*)TransferSyntaxNDR64, &Request->CtxItems[i].TransferSyntax))
{
Response->Results[i].SyntaxVersion = LE32(1);
@@ -459,7 +494,7 @@ static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Res
_st = TRUE;
}
- else if (UseRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8))
+ else if (UseServerRpcBTFN && !memcmp(BindTimeFeatureNegotiation, (BYTE*)(&Request->CtxItems[i].TransferSyntax), 8))
{
Response->Results[i].SyntaxVersion = 0;
Response->Results[i].AckResult = RPC_BIND_ACK;
@@ -469,6 +504,9 @@ static int rpcBind(const RPC_BIND_REQUEST *const Request, RPC_BIND_RESPONSE* Res
((WORD*)(&Request->CtxItems[i].TransferSyntax))[4] &
(RPC_BTFN_SEC_CONTEXT_MULTIPLEX | RPC_BTFN_KEEP_ORPHAN);
}
+
+# endif // !SIMPLE_RPC
+
else
{
Response->Results[i].SyntaxVersion = 0;
@@ -705,7 +743,7 @@ RpcStatus rpcSendRequest(const RpcCtx sock, const BYTE *const KmsRequest, const
RPC_REQUEST64 *RpcRequest;
RPC_RESPONSE64 _Response;
int status;
- int_fast8_t useNdr64 = UseRpcNDR64 && firstPacketSent;
+ int_fast8_t useNdr64 = UseClientRpcNDR64 && firstPacketSent;
size_t size = sizeof(RPC_HEADER) + (useNdr64 ? sizeof(RPC_REQUEST64) : sizeof(RPC_REQUEST)) + requestSize;
size_t responseSize2;
@@ -901,7 +939,7 @@ RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const
RPC_BIND_REQUEST *bindRequest;
RPC_BIND_RESPONSE *bindResponse;
int status;
- WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseRpcNDR64 + UseRpcBTFN : 0);
+ WORD ctxItems = 1 + (packetType == RPC_PT_BIND_REQ ? UseClientRpcNDR64 + UseClientRpcBTFN : 0);
size_t rpcBindSize = (sizeof(RPC_HEADER) + sizeof(RPC_BIND_REQUEST) + (ctxItems - 1) * sizeof(bindRequest->CtxItems[0]));
WORD ctxIndex = 0;
WORD i;
@@ -932,13 +970,13 @@ RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const
memcpy(&bindRequest->CtxItems[0].TransferSyntax, TransferSyntaxNDR32, sizeof(GUID));
- if (UseRpcNDR64 && packetType == RPC_PT_BIND_REQ)
+ if (UseClientRpcNDR64 && packetType == RPC_PT_BIND_REQ)
{
memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, TransferSyntaxNDR64, sizeof(GUID));
CtxNDR64 = ctxIndex;
}
- if (UseRpcBTFN && packetType == RPC_PT_BIND_REQ)
+ if (UseClientRpcBTFN && packetType == RPC_PT_BIND_REQ)
{
memcpy(&bindRequest->CtxItems[++ctxIndex].TransferSyntax, BindTimeFeatureNegotiation, sizeof(GUID));
CtxBTFN = ctxIndex;
@@ -1124,7 +1162,7 @@ RpcStatus rpcBindOrAlterClientContext(const RpcCtx sock, BYTE packetType, const
return status;
}
-RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose)
+RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose, PRpcDiag_t rpcDiag)
{
firstPacketSent = FALSE;
RpcFlags.mask = 0;
@@ -1132,11 +1170,15 @@ RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose)
RpcStatus status =
rpcBindOrAlterClientContext(sock, RPC_PT_BIND_REQ, verbose);
- if (status) return status;
+ if (status) goto end;
if (!RpcFlags.HasNDR32)
status = rpcBindOrAlterClientContext(sock, RPC_PT_ALTERCONTEXT_REQ, verbose);
+end:
+ rpcDiag->HasRpcDiag = TRUE;
+ rpcDiag->HasNDR64 = !!RpcFlags.HasNDR64;
+ rpcDiag->HasBTFN = !!RpcFlags.HasBTFN;
return status;
}
diff --git a/src/rpc.h b/src/rpc.h
index 301e560e..544b8c2c 100644
--- a/src/rpc.h
+++ b/src/rpc.h
@@ -7,6 +7,7 @@
#include CONFIG
#include "types.h"
+#include "shared_globals.h"
#if !defined(_WIN32) && !defined(__CYGWIN__)
#define RPC_S_OK 0
@@ -306,7 +307,7 @@ typedef union _RPC_FLAGS
extern RPC_FLAGS RpcFlags;
void rpcServer(const SOCKET sock, const DWORD RpcAssocGroup, const char* const ipstr);
-RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose);
+RpcStatus rpcBindClient(const RpcCtx sock, const int_fast8_t verbose, PRpcDiag_t rpcDiag);
RpcStatus rpcSendRequest(const RpcCtx socket, const BYTE *const KmsRequest, const size_t requestSize, BYTE **KmsResponse, size_t *const responseSize);
#endif // __rpc_h
diff --git a/src/shared_globals.c b/src/shared_globals.c
index 04877914..615c1de0 100644
--- a/src/shared_globals.c
+++ b/src/shared_globals.c
@@ -18,14 +18,23 @@ const char *const cIPv6 = "IPv6";
char ErrorMessage[MESSAGE_BUFFER_SIZE];
#endif // IS_LIBRARY
+#ifndef NO_STRICT_MODES
+uint32_t WhitelistingLevel = 0;
+int_fast8_t CheckClientTime = FALSE;
+#endif // !NO_STRICT_MODES
+
#ifndef USE_MSRPC
int_fast8_t UseMultiplexedRpc = TRUE;
-int_fast8_t UseRpcNDR64 = TRUE;
-int_fast8_t UseRpcBTFN = TRUE;
+#ifndef SIMPLE_RPC
+int_fast8_t UseServerRpcNDR64 = TRUE;
+int_fast8_t UseServerRpcBTFN = TRUE;
+#endif // !SIMPLE_RPC
+int_fast8_t UseClientRpcNDR64 = TRUE;
+int_fast8_t UseClientRpcBTFN = TRUE;
#endif // USE_MSRPC
#ifndef NO_SOCKETS
-const char *defaultport = "1688";
+char *defaultport = "1688";
#endif // NO_SOCKETS
#if !defined(NO_PRIVATE_IP_DETECT)
diff --git a/src/shared_globals.h b/src/shared_globals.h
index 72b00932..4f1709c5 100644
--- a/src/shared_globals.h
+++ b/src/shared_globals.h
@@ -57,6 +57,13 @@ typedef struct
#endif // NO_LOG
} KmsResponseParam_t, *PKmsResponseParam_t;
+typedef struct
+{
+ int8_t HasRpcDiag;
+ int8_t HasBTFN;
+ int8_t HasNDR64;
+} RpcDiag_t, *PRpcDiag_t;
+
#if !defined(NO_LIMIT) && !__minix__
#ifndef SEM_VALUE_MAX // Android does not define this
#ifdef __ANDROID__
@@ -94,14 +101,24 @@ extern const char *const cIPv4;
extern const char *const cIPv6;
extern int_fast8_t InetdMode;
+#ifndef NO_STRICT_MODES
+extern uint32_t WhitelistingLevel;
+extern int_fast8_t CheckClientTime;
+#endif // !NO_STRICT_MODES
+
+
#ifndef USE_MSRPC
extern int_fast8_t UseMultiplexedRpc;
-extern int_fast8_t UseRpcNDR64;
-extern int_fast8_t UseRpcBTFN;
+#ifndef SIMPLE_RPC
+extern int_fast8_t UseServerRpcNDR64;
+extern int_fast8_t UseServerRpcBTFN;
+#endif // !SIMPLE_RPC
+extern int_fast8_t UseClientRpcNDR64;
+extern int_fast8_t UseClientRpcBTFN;
#endif // USE_MSRPC
#ifndef NO_SOCKETS
-extern const char *defaultport;
+extern char *defaultport;
#endif // NO_SOCKETS
#if !defined(NO_PRIVATE_IP_DETECT)
diff --git a/src/types.h b/src/types.h
index fb92b518..46ec2d61 100644
--- a/src/types.h
+++ b/src/types.h
@@ -61,7 +61,11 @@
#if !defined(NO_GETIFADDRS) && !defined(USE_MSRPC) && !defined(SIMPLE_SOCKETS) && !defined(NO_SOCKETS) && !defined(NO_PRIVATE_IP_DETECT)
#define HAVE_GETIFADDR 1
-#endif
+#endif
+
+#if !defined(NO_STRICT_MODES) && defined(NO_BASIC_PRODUCT_LIST)
+#define NO_STRICT_MODES
+#endif // !defined(NO_STRICT_MODES) && defined(NO_BASIC_PRODUCT_LIST)
#ifndef alloca
#ifdef __GNUC__
@@ -213,17 +217,27 @@ typedef uint8_t ProdListIndex_t;
//#include
typedef char* sockopt_t;
-// Map VLMCSD error codes to WSAGetLastError() codes
+/* Unknown Winsock error codes */
+#define WSAENODEV -1
+
+// Map VLMCSD error codes to WSAGetLastError() and GetLastError() codes
// Add more if you need them
-#define VLMCSD_EADDRINUSE WSAEADDRINUSE
-#define VLMCSD_ENODEV WSAENODEV
-#define VLMCSD_EADDRNOTAVAIL WSAEADDRNOTAVAIL
-#define VLMCSD_EACCES WSAEACCES
-#define VLMCSD_EINVAL WSAEINVAL
-#define VLMCSD_ENOTSOCK WSAENOTSOCK
-#define VLMCSD_EINTR WSAEINTR
-#define VLMCSD_EINPROGRESS WSAEINPROGRESS
-#define VLMCSD_ECONNABORTED WSAECONNABORTED
+#define SOCKET_EADDRINUSE WSAEADDRINUSE
+#define SOCKET_ENODEV WSAENODEV
+#define SOCKET_EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define SOCKET_EACCES WSAEACCES
+#define SOCKET_EINVAL WSAEINVAL
+#define SOCKET_ENOTSOCK WSAENOTSOCK
+#define SOCKET_EINTR WSAEINTR
+#define SOCKET_EINPROGRESS WSAEINPROGRESS
+#define SOCKET_ECONNABORTED WSAECONNABORTED
+#define SOCKET_EALREADY WSAEALREADY
+
+#define VLMCSD_EACCES ERROR_ACCESS_DENIED
+#define VLMCSD_EINVAL ERROR_INVALID_PARAMETER
+#define VLMCSD_ENOMEM ERROR_OUTOFMEMORY
+#define VLMCSD_EPERM ERROR_CAN_NOT_COMPLETE
+
#define socket_errno WSAGetLastError()
#define socketclose(x) (closesocket(x))
@@ -232,9 +246,6 @@ typedef char* sockopt_t;
#define VLMCSD_SHUT_WR SD_SEND
#define VLMCSD_SHUT_RDWR SD_BOTH
-/* Unknown Winsock error codes */
-#define WSAENODEV -1
-
#elif defined(__CYGWIN__)
#include
@@ -250,7 +261,12 @@ typedef uint32_t DWORD;
typedef uint16_t WORD;
typedef uint8_t BYTE;
typedef uint16_t WCHAR;
-typedef int BOOL;
+typedef int32_t BOOL;
+typedef int32_t HRESULT;
+#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
+#define FAILED(hr) (((HRESULT)(hr)) < 0)
+#define S_OK ((HRESULT)0)
+
#define FALSE 0
#define TRUE !0
@@ -272,15 +288,22 @@ typedef struct {
#ifndef _WIN32
// Map VLMCSD error codes to POSIX codes
// Add more if you need them
-#define VLMCSD_EADDRINUSE EADDRINUSE
-#define VLMCSD_ENODEV ENODEV
-#define VLMCSD_EADDRNOTAVAIL EADDRNOTAVAIL
+#define SOCKET_EADDRINUSE EADDRINUSE
+#define SOCKET_ENODEV ENODEV
+#define SOCKET_EADDRNOTAVAIL EADDRNOTAVAIL
+#define SOCKET_EACCES EACCES
+#define SOCKET_EINVAL EINVAL
+#define SOCKET_ENOTSOCK ENOTSOCK
+#define SOCKET_EINTR EINTR
+#define SOCKET_EINPROGRESS EINPROGRESS
+#define SOCKET_ECONNABORTED ECONNABORTED
+#define SOCKET_EALREADY EALREADY
+
#define VLMCSD_EACCES EACCES
#define VLMCSD_EINVAL EINVAL
-#define VLMCSD_ENOTSOCK ENOTSOCK
#define VLMCSD_EINTR EINTR
-#define VLMCSD_EINPROGRESS EINPROGRESS
-#define VLMCSD_ECONNABORTED ECONNABORTED
+#define VLMCSD_ENOMEM ENOMEM
+#define VLMCSD_EPERM EPERM
typedef void* sockopt_t;
#define _countof(x) ( sizeof(x) / sizeof(x[0]) )
diff --git a/vlmcs-linux-remote.vcxproj b/src/vlmcs-linux-remote.vcxproj
similarity index 75%
rename from vlmcs-linux-remote.vcxproj
rename to src/vlmcs-linux-remote.vcxproj
index 77804fff..73f7b7f1 100644
--- a/vlmcs-linux-remote.vcxproj
+++ b/src/vlmcs-linux-remote.vcxproj
@@ -29,39 +29,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {1ED83566-8AE1-4EE8-9B62-37188A7AC7CA}
@@ -104,39 +104,37 @@
gcc
- $(ProjectDir)VisualStudio-Linux-Remote\bin\$(Platform)\$(Configuration)\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcs\obj\$(Platform)\$(Configuration)\gcc
- $(IncludePath);$(ISenseIncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(IncludePath);$(ISenseIncludePath);$(ProjectDir)VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(ProjectDir)vlmcs\obj\$(Platform)\$(Configuration)\vlmcs-x64-glibcgcc
- $(IncludePath);$(ISenseIncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
- $(ProjectDir)bin\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcs\obj\$(Platform)\$(Configuration)\
+ $(IncludePath);$(ISenseIncludePath);$(ProjectDir)VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(SolutionDir)bin\gcc
+ $(ProjectDir)vlmcs\obj\$(Platform)\$(Configuration)\
- $(IncludePath);$(ISenseIncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(IncludePath);$(ISenseIncludePath);$(ProjectDir)VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\includevlmcsgcc
- $(ProjectDir)VisualStudio-Linux-Remote\bin\$(Platform)\$(Configuration)\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcs\obj\$(Platform)\$(Configuration)\gcc
+ $(ProjectDir)vlmcs\obj\$(Platform)\$(Configuration)\vlmcs-x86-glibcgcc
- $(IncludePath);$(ISenseIncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
- $(ProjectDir)bin\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcs\obj\$(Platform)\$(Configuration)\
+ $(IncludePath);$(ISenseIncludePath);$(ProjectDir)VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(SolutionDir)bin\gcc
+ $(ProjectDir)vlmcs\obj\$(Platform)\$(Configuration)\
@@ -176,6 +174,7 @@
c99c++98-Wno-sign-conversion -Wno-conversion -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants -ffunction-sections -fdata-sections -pipe -std=gnu89 -m64 %(AdditionalOptions)
+ Noneresolv;pthread;%(LibraryDependencies)
@@ -223,6 +222,7 @@
c99c++98-Wno-sign-conversion -Wno-conversion -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants -ffunction-sections -fdata-sections -pipe -std=gnu89 -m32 %(AdditionalOptions)
+ Noneresolv;pthread;%(LibraryDependencies)
diff --git a/vlmcs-linux-remote.vcxproj.filters b/src/vlmcs-linux-remote.vcxproj.filters
similarity index 60%
rename from vlmcs-linux-remote.vcxproj.filters
rename to src/vlmcs-linux-remote.vcxproj.filters
index c4a0706a..e9f1543c 100644
--- a/vlmcs-linux-remote.vcxproj.filters
+++ b/src/vlmcs-linux-remote.vcxproj.filters
@@ -9,99 +9,99 @@
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
diff --git a/src/vlmcs.c b/src/vlmcs.c
index 2db1082d..963a02a3 100644
--- a/src/vlmcs.c
+++ b/src/vlmcs.c
@@ -165,7 +165,7 @@ static void string2UuidOrExit(const char *const restrict input, GUID *const rest
if (strlen(input) != GUID_STRING_LENGTH || !string2Uuid(input, guid))
{
errorout("Fatal: Command line contains an invalid GUID.\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
}
@@ -236,7 +236,7 @@ __noreturn static void clientUsage(const char* const programName)
Version, programName, programName
);
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
__pure static int getLineWidth(void)
@@ -316,7 +316,8 @@ __noreturn static void showProducts(PRINTFUNC p)
p("You may also use these product names or numbers:\n\n");
- for (currentProduct = ExtendedProductList; currentProduct->name; currentProduct++)
+
+ for (currentProduct = ExtendedProductList; currentProduct - ExtendedProductList < getExtendedProductListSize() - 1; currentProduct++)
{
uint_fast8_t len = (uint_fast8_t)strlen(currentProduct->name);
@@ -387,7 +388,7 @@ static void parseProtocolVersion(void)
if (!period)
{
errorout("Fatal: Protocol version must be in the format #.#\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
long major = strtol(optarg, &endptr_major, 10);
@@ -396,13 +397,13 @@ static void parseProtocolVersion(void)
if ((*endptr_major && *endptr_major != '.') || *endptr_minor || *optarg == '.' || !period[1])
{
errorout("Fatal: Protocol version must be in the format #.#\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
if (major < 0 || major > 0xffff || minor < 0 || minor > 0xffff)
{
errorout("Fatal: Major and minor protocol version number must be between 0 and 65535\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
ActiveLicensePack.kmsVersionMajor = (int)major;
@@ -416,7 +417,7 @@ static void parseProtocolVersion(void)
__noreturn static void clientUsage(const char* const programName)
{
errorout("Incorrect parameter specified.\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
@@ -546,11 +547,11 @@ static void parseCommandLinePass2(const char *const programName, const int argc,
# ifndef USE_MSRPC
case 'N':
- if (!getArgumentBool(&UseRpcNDR64, optarg)) clientUsage(programName);
+ if (!getArgumentBool(&UseClientRpcNDR64, optarg)) clientUsage(programName);
break;
case 'B':
- if (!getArgumentBool(&UseRpcBTFN, optarg)) clientUsage(programName);
+ if (!getArgumentBool(&UseClientRpcBTFN, optarg)) clientUsage(programName);
break;
case 'i':
@@ -565,7 +566,7 @@ static void parseCommandLinePass2(const char *const programName, const int argc,
break;
default:
errorout("IPv5 does not exist.\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
break;
}
@@ -731,11 +732,11 @@ static void checkRpcLevel(const REQUEST* request, RESPONSE* response)
if (!RpcFlags.HasNDR32)
errorout("\nWARNING: Server's RPC protocol does not support NDR32.\n");
- if (UseRpcBTFN && UseRpcNDR64 && RpcFlags.HasNDR64 && !RpcFlags.HasBTFN)
+ if (UseClientRpcBTFN && UseClientRpcNDR64 && RpcFlags.HasNDR64 && !RpcFlags.HasBTFN)
errorout("\nWARNING: Server's RPC protocol has NDR64 but no BTFN.\n");
# ifndef NO_BASIC_PRODUCT_LIST
- if (!IsEqualGuidLEHE(&request->KMSID, &ProductList[15].guid) && UseRpcBTFN && !RpcFlags.HasBTFN)
+ if (!IsEqualGuidLEHE(&request->KMSID, &ProductList[15].guid) && UseClientRpcBTFN && !RpcFlags.HasBTFN)
errorout("\nWARNING: A server with pre-Vista RPC activated a product other than Office 2010.\n");
# endif // NO_BASIC_PRODUCT_LIST
}
@@ -788,10 +789,10 @@ static void displayResponse(const RESPONSE_RESULT result, const REQUEST* request
# else // _WIN32
printf(" (%016I64X)", (unsigned long long)BE64(*(uint64_t*)hwid));
# endif // _WIN32
- }
+ }
printf("\n");
- }
+}
# ifndef NO_VERBOSE_LOG
else
{
@@ -811,20 +812,23 @@ static void connectRpc(RpcCtx *s)
{
# ifdef NO_DNS
+ RpcDiag_t rpcDiag;
+
*s = connectToAddress(RemoteAddr, AddressFamily, FALSE);
if (*s == INVALID_RPCCTX)
{
errorout("Fatal: Could not connect to %s\n", RemoteAddr);
- exit(!0);
+ exit(SOCKET_ECONNABORTED);
}
if (verbose)
printf("\nPerforming RPC bind ...\n");
- if (rpcBindClient(*s, verbose))
+ RpcStatus status;
+ if ((status = rpcBindClient(*s, verbose, &rpcDiag)))
{
errorout("Fatal: Could not bind RPC\n");
- exit(!0);
+ exit(status);
}
if (verbose) printf("... successful\n");
@@ -844,7 +848,7 @@ static void connectRpc(RpcCtx *s)
if (numServers < 1)
{
errorout("Fatal: No KMS servers found\n");
- exit(!0);
+ exit(SOCKET_ECONNABORTED);
}
if (!NoSrvRecordPriority) sortSrvRecords(serverlist, numServers);
@@ -884,13 +888,14 @@ static void connectRpc(RpcCtx *s)
*s = connectToAddress(serverlist[i]->serverName, AddressFamily, (*RemoteAddr == '.' || *RemoteAddr == '-'));
if (*s == INVALID_RPCCTX) continue;
+ RpcDiag_t rpcDiag;
# ifndef NO_VERBOSE_LOG
if (verbose) printf("\nPerforming RPC bind ...\n");
- if (rpcBindClient(*s, verbose))
+ if (rpcBindClient(*s, verbose, &rpcDiag))
# else
- if (rpcBindClient(*s, FALSE))
+ if (rpcBindClient(*s, FALSE, &rpcDiag))
# endif
{
errorout("Warning: Could not bind RPC\n");
@@ -905,7 +910,7 @@ static void connectRpc(RpcCtx *s)
}
errorout("Fatal: Could not connect to any KMS server\n");
- exit(!0);
+ exit(SOCKET_ECONNABORTED);
# endif // DNS
}
@@ -1010,15 +1015,17 @@ static void newIniBackupFile(const char* const restrict fname)
if (!f)
{
- errorout("Fatal: Cannot create %s: %s\n", fname, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot create %s: %s\n", fname, strerror(error));
+ exit(error);
}
if (fclose(f))
{
- errorout("Fatal: Cannot write to %s: %s\n", fname, strerror(errno));
+ int error = errno;
+ errorout("Fatal: Cannot write to %s: %s\n", fname, strerror(error));
vlmcsd_unlink(fname);
- exit(!0);
+ exit(error);
}
}
@@ -1051,8 +1058,9 @@ static void updateIniFile(iniFileEpidLines* const restrict lines)
{
if (errno != ENOENT)
{
- errorout("Fatal: %s: %s\n", fn_ini_client, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: %s: %s\n", fn_ini_client, strerror(error));
+ exit(error);
}
else
{
@@ -1066,8 +1074,9 @@ static void updateIniFile(iniFileEpidLines* const restrict lines)
vlmcsd_unlink(fn_bak); // Required for Windows. Most Unix systems don't need it.
if (rename(fn_ini_client, fn_bak))
{
- errorout("Fatal: Cannot create %s: %s\n", fn_bak, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot create %s: %s\n", fn_bak, strerror(error));
+ exit(error);
}
}
@@ -1079,16 +1088,18 @@ static void updateIniFile(iniFileEpidLines* const restrict lines)
if (!in)
{
- errorout("Fatal: Cannot open %s: %s\n", fn_bak, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot open %s: %s\n", fn_bak, strerror(error));
+ exit(error);
}
out = fopen(fn_ini_client, "wb");
if (!out)
{
- errorout("Fatal: Cannot create %s: %s\n", fn_ini_client, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot create %s: %s\n", fn_ini_client, strerror(error));
+ exit(error);
}
char sourceLine[256];
@@ -1116,8 +1127,9 @@ static void updateIniFile(iniFileEpidLines* const restrict lines)
if (ferror(in))
{
- errorout("Fatal: Cannot read from %s: %s\n", fn_bak, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot read from %s: %s\n", fn_bak, strerror(error));
+ exit(error);
}
fclose(in);
@@ -1133,8 +1145,9 @@ static void updateIniFile(iniFileEpidLines* const restrict lines)
if (fclose(out))
{
- errorout("Fatal: Cannot write to %s: %s\n", fn_ini_client, strerror(errno));
- exit(!0);
+ int error = errno;
+ errorout("Fatal: Cannot write to %s: %s\n", fn_ini_client, strerror(error));
+ exit(error);
}
if (!iniFileExistedBefore) vlmcsd_unlink(fn_bak);
diff --git a/vlmcsd-linux-remote.vcxproj b/src/vlmcsd-linux-remote.vcxproj
similarity index 77%
rename from vlmcsd-linux-remote.vcxproj
rename to src/vlmcsd-linux-remote.vcxproj
index 78f45454..a70ec1a4 100644
--- a/vlmcsd-linux-remote.vcxproj
+++ b/src/vlmcsd-linux-remote.vcxproj
@@ -29,34 +29,34 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {cc2fbe0b-b9df-4306-88a1-20706bbd2b0c}
@@ -99,39 +99,37 @@
gcc
- $(ProjectDir)VisualStudio-Linux-Remote\bin\$(Platform)\$(Configuration)\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcsd\obj\$(Platform)\$(Configuration)\gcc
- $(IncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(IncludePath);$(SolutionDir)..\src\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(ProjectDir)vlmcsd\obj\$(Platform)\$(Configuration)\vlmcsd-x64-glibcgcc
- $(IncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
- $(ProjectDir)bin\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcsd\obj\$(Platform)\$(Configuration)\
+ $(IncludePath);$(SolutionDir)..\src\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(SolutionDir)bin\gcc
+ $(ProjectDir)vlmcsd\obj\$(Platform)\$(Configuration)\
- $(IncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(IncludePath);$(SolutionDir)..\src\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\includevlmcsdgcc
- $(ProjectDir)VisualStudio-Linux-Remote\bin\$(Platform)\$(Configuration)\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcsd\obj\$(Platform)\$(Configuration)\gcc
+ $(ProjectDir)vlmcsd\obj\$(Platform)\$(Configuration)\vlmcsd-x86-glibcgcc
- $(IncludePath);$(SolutionDir)..\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
- $(ProjectDir)bin\
- $(ProjectDir)VisualStudio-Linux-Remote\vlmcsd\obj\$(Platform)\$(Configuration)\
+ $(IncludePath);$(SolutionDir)..\src\VisualStudio-Linux-Remote\toolchains\gcc5-x86_64-linux-gnu\usr\include
+ $(SolutionDir)bin\gcc
+ $(ProjectDir)vlmcsd\obj\$(Platform)\$(Configuration)\
@@ -171,6 +169,7 @@
c99c++98-Wno-sign-conversion -Wno-conversion -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants -ffunction-sections -fdata-sections -pipe -std=gnu89 -m64 %(AdditionalOptions)
+ Nonepthread;%(LibraryDependencies)
@@ -218,6 +217,7 @@
c99c++98-Wno-sign-conversion -Wno-conversion -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants -ffunction-sections -fdata-sections -pipe -std=gnu89 -m32 %(AdditionalOptions)
+ Nonepthread;%(LibraryDependencies)
diff --git a/vlmcsd-linux-remote.vcxproj.filters b/src/vlmcsd-linux-remote.vcxproj.filters
similarity index 61%
rename from vlmcsd-linux-remote.vcxproj.filters
rename to src/vlmcsd-linux-remote.vcxproj.filters
index da0872b5..d45d2305 100644
--- a/vlmcsd-linux-remote.vcxproj.filters
+++ b/src/vlmcsd-linux-remote.vcxproj.filters
@@ -9,84 +9,84 @@
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Source Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
-
+ Header Files
diff --git a/src/vlmcsd.c b/src/vlmcsd.c
index cc092302..47d5df2d 100644
--- a/src/vlmcsd.c
+++ b/src/vlmcsd.c
@@ -80,7 +80,7 @@
#include "ntservice.h"
#include "helpers.h"
-static const char* const optstring = "N:B:m:t:w:0:3:6:H:A:R:u:g:L:p:i:P:l:r:U:W:C:F:o:T:SseDdVvqkZ";
+static const char* const optstring = "N:B:m:t:w:0:3:6:H:A:R:u:g:L:p:i:P:l:r:U:W:C:c:F:o:T:K:SseDdVvqkZ";
#if !defined(NO_SOCKETS) && !defined(USE_MSRPC) && !defined(SIMPLE_SOCKETS)
@@ -116,6 +116,10 @@ static IniFileParameter_t IniFileParameterList[] =
{ "Office2010", INI_PARAM_OFFICE2010 },
{ "Office2013", INI_PARAM_OFFICE2013 },
{ "Office2016", INI_PARAM_OFFICE2016 },
+# ifndef NO_STRICT_MODES
+ { "WhiteListingLevel", INI_PARAM_WHITELISTING_LEVEL },
+ { "CheckClientTime", INI_PARAM_CHECK_CLIENT_TIME },
+# endif // NO_STRICT_MODES
# ifndef NO_RANDOM_EPID
{ "RandomizationLevel", INI_PARAM_RANDOMIZATION_LEVEL },
{ "LCID", INI_PARAM_LCID },
@@ -139,8 +143,10 @@ static IniFileParameter_t IniFileParameterList[] =
# endif // !defined(NO_TIMEOUT) && !__minix__ && !defined(USE_MSRPC) & !defined(USE_MSRPC)
# ifndef USE_MSRPC
{ "DisconnectClientsImmediately", INI_PARAM_DISCONNECT_IMMEDIATELY },
+# ifndef SIMPLE_RPC
{ "UseNDR64", INI_PARAM_RPC_NDR64 },
{ "UseBTFN", INI_PARAM_RPC_BTFN },
+# endif // !SIMPLE_RPC
# endif // USE_MSRPC
# ifndef NO_PID_FILE
{ "PIDFile", INI_PARAM_PID_FILE },
@@ -263,7 +269,7 @@ static char GetUid()
static __noreturn void usage()
{
printerrorf("Incorrect parameters\n\n");
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
#else // HELP
@@ -274,101 +280,107 @@ static __noreturn void usage()
"\nUsage:\n"
" %s [ options ]\n\n"
"Where:\n"
-#ifndef NO_CL_PIDS
+# ifndef NO_CL_PIDS
" -w always use for Windows\n"
" -0 always use for Office2010\n"
" -3 always use for Office2013\n"
" -6 always use for Office2016\n"
" -H always use hardware Id \n"
-#endif // NO_CL_PIDS
-#if !defined(_WIN32) && !defined(NO_USER_SWITCH)
+# endif // NO_CL_PIDS
+# if !defined(_WIN32) && !defined(NO_USER_SWITCH)
" -u set uid to \n"
" -g set gid to \n"
-#endif // !defined(_WIN32) && !defined(NO_USER_SWITCH)
-#ifndef NO_RANDOM_EPID
+# endif // !defined(_WIN32) && !defined(NO_USER_SWITCH)
+# ifndef NO_RANDOM_EPID
" -r 0|1|2\t\tset ePID randomization level (default 1)\n"
" -C \t\tuse fixed in random ePIDs\n"
-#endif // NO_RANDOM_EPID
-#if !defined(NO_PRIVATE_IP_DETECT)
-#if HAVE_GETIFADDR
+# endif // NO_RANDOM_EPID
+# if !defined(NO_PRIVATE_IP_DETECT)
+# if HAVE_GETIFADDR
" -o 0|1|2|3\t\tset protection level against clients with public IP addresses (default 0)\n"
-#else // !HAVE_GETIFADDR
-#ifndef USE_MSRPC
+# else // !HAVE_GETIFADDR
+# ifndef USE_MSRPC
" -o 0|2\t\tset protection level against clients with public IP addresses (default 0)\n"
-#else // USE_MSRPC
+# else // USE_MSRPC
" -o 0|2\t\tset protection level against clients with public IP addresses (default 0). Limited use with MS RPC\n"
-#endif // USE_MSRPC
-#endif // !HAVE_GETIFADDR
-#endif // !defined(NO_PRIVATE_IP_DETECT)
-#ifndef NO_SOCKETS
-#if !defined(USE_MSRPC) && !defined(SIMPLE_SOCKETS)
+# endif // USE_MSRPC
+# endif // !HAVE_GETIFADDR
+# endif // !defined(NO_PRIVATE_IP_DETECT)
+# ifndef NO_SOCKETS
+# if !defined(USE_MSRPC) && !defined(SIMPLE_SOCKETS)
" -L [:]\tlisten on IP address with optional \n"
" -P \t\tset TCP port for subsequent -L statements (default 1688)\n"
-#if HAVE_FREEBIND
+# if HAVE_FREEBIND
" -F0, -F1\t\tdisable/enable binding to foreign IP addresses\n"
-#endif // HAVE_FREEBIND
-#else // defined(USE_MSRPC) || defined(SIMPLE_SOCKETS)
+# endif // HAVE_FREEBIND
+# else // defined(USE_MSRPC) || defined(SIMPLE_SOCKETS)
" -P \t\tuse TCP port (default 1688)\n"
-#endif // defined(USE_MSRPC) || defined(SIMPLE_SOCKETS)
-#if !defined(NO_LIMIT) && !__minix__
+# endif // defined(USE_MSRPC) || defined(SIMPLE_SOCKETS)
+# if !defined(NO_LIMIT) && !__minix__
" -m \t\tHandle max. simultaneously (default no limit)\n"
-#endif // !defined(NO_LIMIT) && !__minix__
-#ifdef _NTSERVICE
+# endif // !defined(NO_LIMIT) && !__minix__
+# ifdef _NTSERVICE
" -s install vlmcsd as an NT service. Ignores -e"
-#ifndef _WIN32
+# ifndef _WIN32
", -f and -D"
-#endif // _WIN32
+# endif // _WIN32
"\n"
" -S remove vlmcsd service. Ignores all other options\n"
" -U run NT service as . Must be used with -s\n"
" -W optional for -U. Must be used with -s\n"
-#endif // _NTSERVICE
-#ifndef NO_LOG
+# endif // _NTSERVICE
+# ifndef NO_LOG
" -e log to stdout\n"
-#endif // NO_LOG
-#ifndef _WIN32 //
+# endif // NO_LOG
+# ifndef _WIN32 //
" -D run in foreground\n"
-#else // _WIN32
+# else // _WIN32
" -D does nothing. Provided for compatibility with POSIX versions only\n"
-#endif // _WIN32
-#endif // NO_SOCKETS
-#ifndef USE_MSRPC
-#if !defined(NO_TIMEOUT) && !__minix__
+# endif // _WIN32
+# endif // NO_SOCKETS
+# ifndef NO_STRICT_MODES
+ " -K 0|1|2|3\t\tset whitelisting level for KMS IDs (default -K0)\n"
+ " -c0, -c1\t\tdisable/enable client time checking (default -c0)\n"
+# endif // !NO_STRICT_MODES
+# ifndef USE_MSRPC
+# if !defined(NO_TIMEOUT) && !__minix__
" -t \t\tdisconnect clients after of inactivity (default 30)\n"
-#endif // !defined(NO_TIMEOUT) && !__minix__
+# endif // !defined(NO_TIMEOUT) && !__minix__
" -d\t\t\tdisconnect clients after each request\n"
" -k\t\t\tdon't disconnect clients after each request (default)\n"
+# ifndef SIMPLE_RPC
" -N0, -N1\t\tdisable/enable NDR64\n"
" -B0, -B1\t\tdisable/enable bind time feature negotiation\n"
-#endif // USE_MSRPC
-#ifndef NO_PID_FILE
+# endif // !SIMPLE_RPC
+# endif // USE_MSRPC
+# ifndef NO_PID_FILE
" -p write pid to \n"
-#endif // NO_PID_FILE
-#ifndef NO_INI_FILE
+# endif // NO_PID_FILE
+# ifndef NO_INI_FILE
" -i \t\tuse config file \n"
-#endif // NO_INI_FILE
-#ifndef NO_CUSTOM_INTERVALS
+# endif // NO_INI_FILE
+# ifndef NO_CUSTOM_INTERVALS
" -R renew activation every (default 1w)\n"
" -A retry activation every (default 2h)\n"
-#endif // NO_CUSTOM_INTERVALS
-#ifndef NO_LOG
-#ifndef _WIN32
+# endif // NO_CUSTOM_INTERVALS
+# ifndef NO_LOG
+# ifndef _WIN32
" -l syslog log to syslog\n"
-#endif // _WIN32
+# endif // _WIN32
" -l log to \n"
" -T0, -T1\t\tdisable/enable logging with time and date (default -T1)\n"
-#ifndef NO_VERBOSE_LOG
+# ifndef NO_VERBOSE_LOG
" -v\t\t\tlog verbose\n"
" -q\t\t\tdon't log verbose (default)\n"
-#endif // NO_VERBOSE_LOG
-#endif // NO_LOG
-#ifndef NO_VERSION_INFORMATION
+# endif // NO_VERBOSE_LOG
+# endif // NO_LOG
+# ifndef NO_VERSION_INFORMATION
" -V display version information and exit\n"
-#endif // NO_VERSION_INFORMATION
+# endif // NO_VERSION_INFORMATION
,
Version, global_argv[0]);
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
#endif // HELP
@@ -433,7 +445,7 @@ __pure static DWORD getTimeSpanFromCommandLine(const char *const restrict optarg
if (!val)
{
printerrorf("Fatal: No valid time span specified in option -%c.\n", optchar);
- exit(!0);
+ exit(VLMCSD_EINVAL);
}
return (DWORD)val;
@@ -493,9 +505,9 @@ static char* allocateStringArgument(const char *const argument)
static __pure int isControlCharOrSlash(const char c)
{
- if ((unsigned char)c < '!') return !0;
- if (c == '/') return !0;
- return 0;
+ if ((unsigned char)c < '!') return TRUE;
+ if (c == '/') return TRUE;
+ return FALSE;
}
@@ -645,11 +657,11 @@ static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg)
# if !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__
case INI_PARAM_MAX_WORKERS:
-# ifdef USE_MSRPC
+# ifdef USE_MSRPC
success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT);
-# else // !USE_MSRPC
+# else // !USE_MSRPC
success = getIniFileArgumentInt(&MaxTasks, iniarg, 1, SEM_VALUE_MAX);
-# endif // !USE_MSRPC
+# endif // !USE_MSRPC
break;
# endif // !defined(NO_LIMIT) && !defined(NO_SOCKETS) && !__minix__
@@ -662,6 +674,19 @@ static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg)
# endif // NO_PID_FILE
+#ifndef NO_STRICT_MODES
+
+ case INI_PARAM_WHITELISTING_LEVEL:
+ success = getIniFileArgumentInt(&WhitelistingLevel, iniarg, 0, 3);
+ break;
+
+ case INI_PARAM_CHECK_CLIENT_TIME:
+ success = getIniFileArgumentBool(&CheckClientTime, iniarg);
+ break;
+
+#endif // !NO_STRICT_MODES
+
+
# ifndef NO_LOG
case INI_PARAM_LOG_FILE:
@@ -708,11 +733,11 @@ static BOOL setIniFileParameter(uint_fast8_t id, const char *const iniarg)
break;
case INI_PARAM_RPC_NDR64:
- success = getIniFileArgumentBool(&UseRpcNDR64, iniarg);
+ success = getIniFileArgumentBool(&UseServerRpcNDR64, iniarg);
break;
case INI_PARAM_RPC_BTFN:
- success = getIniFileArgumentBool(&UseRpcBTFN, iniarg);
+ success = getIniFileArgumentBool(&UseServerRpcBTFN, iniarg);
break;
# endif // USE_MSRPC
@@ -1249,6 +1274,20 @@ static void parseGeneralArguments() {
break;
# endif // _NTSERVICE
+# ifndef NO_STRICT_MODES
+
+ case 'K':
+ WhitelistingLevel = (int_fast8_t)getOptionArgumentInt((char)o, 0, 3);
+ ignoreIniFileParameter(INI_PARAM_WHITELISTING_LEVEL);
+ break;
+
+ case 'c':
+ if (!getArgumentBool(&CheckClientTime, optarg)) usage();
+ ignoreIniFileParameter(INI_PARAM_CHECK_CLIENT_TIME);
+ break;
+
+# endif // !NO_STRICT_MODES
+
case 'D':
# ifndef _WIN32
nodaemon = 1;
@@ -1336,15 +1375,17 @@ static void parseGeneralArguments() {
ignoreIniFileParameter(INI_PARAM_DISCONNECT_IMMEDIATELY);
break;
+# ifndef SIMPLE_RPC
case 'N':
- if (!getArgumentBool(&UseRpcNDR64, optarg)) usage();
+ if (!getArgumentBool(&UseServerRpcNDR64, optarg)) usage();
ignoreIniFileParameter(INI_PARAM_RPC_NDR64);
break;
case 'B':
- if (!getArgumentBool(&UseRpcBTFN, optarg)) usage();
+ if (!getArgumentBool(&UseServerRpcBTFN, optarg)) usage();
ignoreIniFileParameter(INI_PARAM_RPC_BTFN);
break;
+# endif // !SIMPLE_RPC
# endif // !USE_MSRPC
# ifndef NO_VERSION_INFORMATION
diff --git a/src/vlmcsd.h b/src/vlmcsd.h
index 089ccffa..f2a09c8a 100644
--- a/src/vlmcsd.h
+++ b/src/vlmcsd.h
@@ -52,6 +52,8 @@ int server_main(int argc, CARGV argv);
#define INI_PARAM_OFFICE2010 21
#define INI_PARAM_OFFICE2013 22
#define INI_PARAM_OFFICE2016 23
+#define INI_PARAM_WHITELISTING_LEVEL 24
+#define INI_PARAM_CHECK_CLIENT_TIME 25
#define INI_FILE_PASS_1 1
#define INI_FILE_PASS_2 2
diff --git a/src/vlmcsdmulti.c b/src/vlmcsdmulti.c
index 8e94efb8..9b26f18a 100644
--- a/src/vlmcsdmulti.c
+++ b/src/vlmcsdmulti.c
@@ -95,5 +95,5 @@ int main(int argc, CARGV argv)
Version, *argv, *argv
);
- return !0;
+ return VLMCSD_EINVAL;
}