diff --git a/node_modules/lpad-align/cli.js b/node_modules/lpad-align/cli.js
new file mode 100644
index 0000000..dc990af
--- /dev/null
+++ b/node_modules/lpad-align/cli.js
@@ -0,0 +1,30 @@
+#!/usr/bin/env node
+'use strict';
+var getStdin = require('get-stdin');
+var meow = require('meow');
+var lpadAlign = require('./');
+
+var cli = meow({
+	help: [
+		'Usage',
+		'  $ cat <file> | lpad-align',
+		'',
+		'Example',
+		'  $ cat unicorn.txt | lpad-align',
+		'        foo',
+		'     foobar',
+		'  foobarcat'
+	]
+}, {
+	default: {
+		indent: 4
+	}
+});
+
+getStdin(function (data) {
+	var arr = data.split(/\r?\n/);
+
+	arr.forEach(function (el) {
+		console.log(lpadAlign(el, arr, cli.flags.indent));
+	});
+});
diff --git a/node_modules/lpad-align/index.js b/node_modules/lpad-align/index.js
new file mode 100644
index 0000000..8973d02
--- /dev/null
+++ b/node_modules/lpad-align/index.js
@@ -0,0 +1,17 @@
+'use strict';
+var indentString = require('indent-string');
+var longest = require('longest');
+
+module.exports = function (str, arr, indent) {
+	var pad = typeof indent === 'number' ? indent : 0;
+
+	if (typeof str !== 'string') {
+		throw new TypeError('Expected a `string`, got `' + typeof str + '`');
+	}
+
+	if (!Array.isArray(arr)) {
+		throw new TypeError('Expected an `Array`, got `' + typeof arr + '`');
+	}
+
+	return indentString(str, ' ', pad + longest(arr).length - str.length);
+};
diff --git a/node_modules/lpad-align/license b/node_modules/lpad-align/license
new file mode 100644
index 0000000..a8ecbbe
--- /dev/null
+++ b/node_modules/lpad-align/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.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/lpad-align/package.json b/node_modules/lpad-align/package.json
new file mode 100644
index 0000000..3ebfc3c
--- /dev/null
+++ b/node_modules/lpad-align/package.json
@@ -0,0 +1,72 @@
+{
+  "_from": "lpad-align@^1.0.1",
+  "_id": "lpad-align@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=",
+  "_location": "/lpad-align",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "lpad-align@^1.0.1",
+    "name": "lpad-align",
+    "escapedName": "lpad-align",
+    "rawSpec": "^1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.1"
+  },
+  "_requiredBy": [
+    "/squeak"
+  ],
+  "_resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
+  "_shasum": "21f600ac1c3095c3c6e497ee67271ee08481fe9e",
+  "_spec": "lpad-align@^1.0.1",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\squeak",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "https://github.com/kevva"
+  },
+  "bin": {
+    "lpad-align": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/kevva/lpad-align/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "get-stdin": "^4.0.1",
+    "indent-string": "^2.1.0",
+    "longest": "^1.0.0",
+    "meow": "^3.3.0"
+  },
+  "deprecated": false,
+  "description": "Left pad a string to align with the longest string in an array",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "cli.js",
+    "index.js"
+  ],
+  "homepage": "https://github.com/kevva/lpad-align#readme",
+  "keywords": [
+    "align",
+    "indent",
+    "lpad"
+  ],
+  "license": "MIT",
+  "name": "lpad-align",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevva/lpad-align.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.1.2"
+}
diff --git a/node_modules/lpad-align/readme.md b/node_modules/lpad-align/readme.md
new file mode 100644
index 0000000..104918b
--- /dev/null
+++ b/node_modules/lpad-align/readme.md
@@ -0,0 +1,80 @@
+# lpad-align [![Build Status](https://travis-ci.org/kevva/lpad-align.svg?branch=master)](https://travis-ci.org/kevva/lpad-align)
+
+> Left pad a string to align with the longest string in an array
+
+
+## Install
+
+```
+$ npm install --save lpad-align
+```
+
+
+## Usage
+
+```js
+const lpadAlign = require('lpad-align');
+
+const words = [
+	'foo',
+	'foobar',
+	'foobarcat'
+];
+
+for (const x of words) {
+	console.log(lpadAlign(x, words, 4));
+}
+
+/*
+		  foo
+	   foobar
+	foobarcat
+ */
+```
+
+
+## API
+
+### lpadAlign(string, array, pad)
+
+#### string
+
+Type: `string`
+
+String that will be padded.
+
+#### array
+
+Type: `Array`
+
+Array to align against.
+
+#### pad
+
+Type: `number`<br>
+Default: `4`
+
+Indentation to prepend the string with.
+
+
+## CLI
+
+```
+$ npm install --global lpad-align
+```
+
+```
+  Usage
+    $ cat <file> | lpad-align
+
+  Example
+    $ cat unicorn.txt | lpad-align
+          foo
+       foobar
+    foobarcat
+```
+
+
+## License
+
+MIT © [Kevin Mårtensson](https://github.com/kevva)
