diff --git a/node_modules/bin-version-check/index.js b/node_modules/bin-version-check/index.js
new file mode 100644
index 0000000..5d3ae82
--- /dev/null
+++ b/node_modules/bin-version-check/index.js
@@ -0,0 +1,22 @@
+'use strict';
+const semver = require('semver');
+const binVersion = require('bin-version');
+const semverTruncate = require('semver-truncate');
+
+module.exports = (binary, semverRange, options) => {
+	if (typeof binary !== 'string' || typeof semverRange !== 'string') {
+		return Promise.reject(new Error('`binary` and `semverRange` arguments required'));
+	}
+
+	if (!semver.validRange(semverRange)) {
+		return Promise.reject(new Error('Invalid version range'));
+	}
+
+	return binVersion(binary, options).then(binaryVersion => {
+		if (!semver.satisfies(semverTruncate(binaryVersion, 'patch'), semverRange)) {
+			const error = new Error(`${binary} ${binaryVersion} doesn't satisfy the version requirement of ${semverRange}`);
+			error.name = 'InvalidBinaryVersion';
+			throw error;
+		}
+	});
+};
diff --git a/node_modules/bin-version-check/license b/node_modules/bin-version-check/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/bin-version-check/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/bin-version-check/package.json b/node_modules/bin-version-check/package.json
new file mode 100644
index 0000000..8685bf9
--- /dev/null
+++ b/node_modules/bin-version-check/package.json
@@ -0,0 +1,75 @@
+{
+  "_from": "bin-version-check@^4.0.0",
+  "_id": "bin-version-check@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==",
+  "_location": "/bin-version-check",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "bin-version-check@^4.0.0",
+    "name": "bin-version-check",
+    "escapedName": "bin-version-check",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/bin-wrapper"
+  ],
+  "_resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz",
+  "_shasum": "7d819c62496991f80d893e6e02a3032361608f71",
+  "_spec": "bin-version-check@^4.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\bin-wrapper",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/bin-version-check/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "bin-version": "^3.0.0",
+    "semver": "^5.6.0",
+    "semver-truncate": "^1.1.2"
+  },
+  "deprecated": false,
+  "description": "Check whether a binary version satisfies a semver range",
+  "devDependencies": {
+    "ava": "^1.0.0-rc.1",
+    "xo": "^0.23.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/bin-version-check#readme",
+  "keywords": [
+    "cli",
+    "bin",
+    "binary",
+    "executable",
+    "version",
+    "semver",
+    "semantic",
+    "range",
+    "satisfy",
+    "check",
+    "validate"
+  ],
+  "license": "MIT",
+  "name": "bin-version-check",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/bin-version-check.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "4.0.0"
+}
diff --git a/node_modules/bin-version-check/readme.md b/node_modules/bin-version-check/readme.md
new file mode 100644
index 0000000..6c48c92
--- /dev/null
+++ b/node_modules/bin-version-check/readme.md
@@ -0,0 +1,71 @@
+# bin-version-check [![Build Status](https://travis-ci.org/sindresorhus/bin-version-check.svg?branch=master)](https://travis-ci.org/sindresorhus/bin-version-check)
+
+> Check whether a binary version satisfies a [semver range](https://github.com/npm/node-semver#ranges)
+
+Useful when you have a thing that only works with specific versions of a binary.
+
+
+## Install
+
+```
+$ npm install bin-version-check
+```
+
+
+## Usage
+
+```
+$ curl --version
+curl 7.30.0 (x86_64-apple-darwin13.0)
+```
+
+```js
+const binVersionCheck = require('bin-version-check');
+
+(async () => {
+	try {
+		await binVersionCheck('curl', '>=8');
+	} catch (error) {
+		console.log(error);
+		//=> 'InvalidBinVersion: curl 7.30.0 doesn't satisfy the version requirement of >=8'
+	}
+})();
+```
+
+
+## API
+
+### binVersionCheck(binary, semverRange, [options])
+
+#### binary
+
+Type: `string`
+
+Name or path of the binary to check.
+
+#### semverRange
+
+Type: `string`
+
+[Semver range](https://github.com/npm/node-semver#ranges) to check against.
+
+#### options
+
+Type: `Object`
+
+##### args
+
+Type: `string[]`
+Default: `['--version']`
+
+CLI arguments used to get the binary version.
+
+
+## Related
+
+- [bin-version-check-cli](https://github.com/sindresorhus/bin-version-check-cli) - CLI for this module
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
