diff --git a/jenkins/create_build.sh b/jenkins/create_build.sh
index a6695c4..4633879 100755
--- a/jenkins/create_build.sh
+++ b/jenkins/create_build.sh
@@ -120,8 +120,8 @@ function deploy_client() {
     end_task "${project_name}_package" "Client successfully deployed!"
 }
 
-#install_npm
-#compile_scripts
-compile_native
+install_npm
+compile_scripts
+#compile_native
 package_client
-deploy_client
+#deploy_client
diff --git a/modules/core/url-preview/html/navigation.ts b/modules/core/url-preview/html/navigation.ts
index d05644c..0bf4179 100644
--- a/modules/core/url-preview/html/navigation.ts
+++ b/modules/core/url-preview/html/navigation.ts
@@ -294,7 +294,7 @@ function Navigation(options) {
     //
     this._addEvents = function (sessionID, options) {
         let currtab = $('.nav-tabs-tab[data-session="' + sessionID + '"]');
-        let webview = $('.nav-views-view[data-session="' + sessionID + '"]') as JQuery<WebviewTag>;
+        let webview = $('.nav-views-view[data-session="' + sessionID + '"]');
 
         webview.on('dom-ready', function () {
             if (options.contextMenu) {
@@ -776,4 +776,4 @@ Navigation.prototype.goToTabByWebviewId = function(id){
 /**
  * MODULE EXPORTS
  */
-export = Navigation;
\ No newline at end of file
+export = Navigation;
diff --git a/modules/core/windows/app-loader/renderer/index.css b/modules/core/windows/app-loader/renderer/index.css
new file mode 100644
index 0000000..f98ec17
--- /dev/null
+++ b/modules/core/windows/app-loader/renderer/index.css
@@ -0,0 +1,80 @@
+html, body {
+  background: #18BC9C;
+  user-select: none;
+  -webkit-app-region: drag;
+}
+
+body {
+  text-align: center;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+  margin-left: 18px;
+  margin-right: 18px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  -ms-overflow-style: none;
+}
+
+img {
+  position: absolute;
+  display: block;
+  width: 200px;
+  height: 200px;
+}
+
+.smoke {
+  z-index: 2;
+}
+
+.logo {
+  z-index: 1;
+}
+
+.container-logo {
+  align-self: center;
+  position: relative;
+  display: inline-block;
+  width: 200px;
+  height: 200px;
+}
+
+.container-info a {
+  display: inline-block;
+  color: #FFFFFF;
+  font-family: "Arial", serif;
+  font-size: 20px;
+}
+
+.container-bar {
+  position: relative;
+  margin-top: 5px;
+  border: white solid 2px;
+  height: 18px;
+}
+
+.container-bar .bar {
+  z-index: 1;
+  position: absolute;
+  display: block;
+  background: whitesmoke;
+  border: none;
+  width: 0;
+  height: 100%;
+}
+
+#current-status {
+  margin-top: 3px;
+  font-size: 18px;
+  max-width: 100%;
+  width: 100%;
+  text-align: left;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+}
+
+/*# sourceMappingURL=index.css.map */
diff --git a/modules/core/windows/app-loader/renderer/index.css.map b/modules/core/windows/app-loader/renderer/index.css.map
new file mode 100644
index 0000000..c6dde92
--- /dev/null
+++ b/modules/core/windows/app-loader/renderer/index.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["index.scss"],"names":[],"mappings":"AAAA;EACI;EACA;EAEA;;;AAGJ;EACI;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EAEA;;;AAGJ;EACI;EACA;EAEA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EAEA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA","file":"index.css"}
\ No newline at end of file
diff --git a/modules/core/windows/client-updater/renderer/index.css b/modules/core/windows/client-updater/renderer/index.css
new file mode 100644
index 0000000..170c912
--- /dev/null
+++ b/modules/core/windows/client-updater/renderer/index.css
@@ -0,0 +1,325 @@
+html:root {
+  --progress-bar-background: #242527;
+  --progress-bar-filler-normal: #4370a299;
+  --progress-bar-filler-error: #a1000099;
+  --progress-bar-filler-success: #2b854199;
+}
+
+* {
+  box-sizing: border-box;
+  outline: none;
+}
+
+html {
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  user-select: none;
+  background: #2f2f35;
+  font-size: 12px;
+  width: 100vw;
+  height: 100vh;
+  position: relative;
+}
+
+body {
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  margin: 0;
+  position: absolute;
+  top: 1em;
+  right: 1em;
+  left: 1em;
+  bottom: 1.75em;
+  font-family: Roboto, Helvetica, Arial, sans-serif;
+  line-height: 1.6em;
+  -webkit-app-region: drag;
+}
+
+.loading-dots {
+  width: 2em;
+}
+
+.container {
+  display: flex;
+  flex-direction: column;
+  justify-content: stretch;
+}
+
+.logo {
+  align-self: center;
+  width: 30em;
+  margin-left: -1em;
+  margin-right: -1em;
+}
+.logo img {
+  height: 100%;
+  width: 100%;
+}
+
+.body {
+  flex-grow: 1;
+  flex-shrink: 1;
+  min-height: 6em;
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  -webkit-app-region: no-drag;
+}
+.body .buttons {
+  margin-top: auto;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.body .buttons.btn-green {
+  margin-left: auto;
+}
+
+.container-loading, .container-executing {
+  margin-top: 2em;
+  flex-grow: 1;
+  flex-shrink: 1;
+  min-height: 6em;
+  display: none;
+  flex-direction: column;
+  justify-content: stretch;
+}
+.container-loading.shown, .container-executing.shown {
+  display: flex;
+}
+
+.section.remote {
+  margin-top: 2em;
+}
+.section.remote .title {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  margin-right: -0.4em;
+}
+.section.remote .title select {
+  margin-bottom: 0.1em;
+}
+.section .title {
+  font-size: 1.2em;
+  color: #557edc;
+  text-transform: uppercase;
+  align-self: center;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.section .content {
+  color: #999;
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+}
+.section .content .row {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+
+.update-availability-status {
+  position: relative;
+  display: flex;
+  flex-grow: 1;
+}
+.update-availability-status .content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  opacity: 0;
+  pointer-events: none;
+}
+.update-availability-status .content.shown {
+  pointer-events: all;
+  opacity: 1;
+}
+.update-availability-status .content img {
+  width: 5em;
+  height: 5em;
+  margin-right: 1em;
+  align-self: center;
+}
+.update-availability-status .content > div {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+}
+.update-availability-status .content > div * {
+  margin: 0;
+}
+.update-availability-status .content h2 {
+  color: #999;
+}
+.update-availability-status .content h3 {
+  margin-top: 0.1em;
+  color: #999;
+}
+.update-availability-status .content.available h2 {
+  color: #1ca037;
+}
+.update-availability-status .content.available > img {
+  margin-top: -0.5em;
+}
+.update-availability-status .content.loading h2 {
+  display: flex;
+  flex-direction: row;
+  font-weight: normal;
+  align-self: center;
+}
+.update-availability-status .content.unavailable h2 {
+  color: #c90709;
+}
+
+.update-progress {
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+}
+.update-progress .info {
+  color: #999;
+  font-size: 1.2em;
+  margin-bottom: 0.2em;
+}
+.update-progress .bar-container {
+  position: relative;
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  height: 1.4em;
+  border-radius: 0.2em;
+  overflow: hidden;
+  background-color: var(--progress-bar-background);
+  -webkit-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+  -moz-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+  box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+}
+.update-progress .bar-container .filler {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  transition: 0.3s ease-in-out;
+}
+.update-progress .bar-container .text {
+  color: #999;
+  align-self: center;
+  z-index: 1;
+}
+.update-progress .bar-container.type-normal .filler {
+  background-color: var(--progress-bar-filler-normal);
+}
+.update-progress .bar-container.type-error .filler {
+  background-color: var(--progress-bar-filler-error);
+}
+.update-progress .bar-container.type-success .filler {
+  background-color: var(--progress-bar-filler-success);
+}
+
+.update-log {
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  padding: 0.25em 0.5em;
+  border-radius: 0.2em;
+  flex-grow: 1;
+  flex-shrink: 1;
+  min-height: 2em;
+  margin-top: 1em;
+  margin-bottom: 1em;
+  overflow-x: hidden;
+  overflow-y: auto;
+  background-color: var(--progress-bar-background);
+  -webkit-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+  -moz-box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+  box-shadow: inset 0 0 2px 0 rgba(0, 0, 0, 0.75);
+  color: #999;
+  user-select: text;
+  /* Scroll bar */
+  /* End scroll bar */
+}
+.update-log::-webkit-scrollbar-track {
+  border-radius: 0.25em;
+  background-color: transparent;
+  cursor: pointer;
+}
+.update-log::-webkit-scrollbar {
+  width: 0.5em;
+  height: 0.5em;
+  background-color: transparent;
+  cursor: pointer;
+}
+.update-log::-webkit-scrollbar-thumb {
+  border-radius: 0.25em;
+  background-color: #555;
+}
+.update-log::-webkit-scrollbar-corner {
+  background-color: transparent;
+}
+.update-log .filler {
+  margin-top: auto;
+}
+.update-log .message {
+  display: inline-block;
+  word-break: break-all;
+}
+.update-log .message.error {
+  color: #c90709;
+}
+.update-log .message.centered {
+  align-self: center;
+}
+
+/* button look */
+.btn {
+  cursor: pointer;
+  background-color: rgba(0, 0, 0, 0.5);
+  border-width: 0;
+  border-radius: 0.2em;
+  border-style: solid;
+  color: #7c7c7c;
+  padding: 0.25em 1em;
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  transition: background-color 0.3s ease-in-out;
+}
+.btn:hover {
+  background-color: #0a0a0a;
+}
+.btn:disabled {
+  box-shadow: none;
+  background-color: rgba(0, 0, 0, 0.27);
+}
+.btn:disabled:hover {
+  background-color: rgba(0, 0, 0, 0.27);
+}
+.btn.btn-success, .btn.btn-green {
+  border-bottom-width: 2px;
+  border-bottom-color: #389738;
+}
+.btn.btn-info, .btn.btn-blue {
+  border-bottom-width: 2px;
+  border-bottom-color: #386896;
+}
+.btn.btn-red {
+  border-bottom-width: 2px;
+  border-bottom-color: #973838;
+}
+
+select {
+  outline: none;
+  background: transparent;
+  border: none;
+  color: #999;
+}
+
+/*# sourceMappingURL=index.css.map */
diff --git a/modules/core/windows/client-updater/renderer/index.css.map b/modules/core/windows/client-updater/renderer/index.css.map
new file mode 100644
index 0000000..9add42e
--- /dev/null
+++ b/modules/core/windows/client-updater/renderer/index.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["index.scss"],"names":[],"mappings":"AAAA;EACC;EAEA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;;;AAID;EACC;EACA;EACA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EAEA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;EAEA;EACA;EACA;EAEA;;AAEA;EACC;EAEA;EACA;EACA;;AAEA;EACC;;;AAKH;EACC;EAEA;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACC;;;AAKD;EACC;;AAEA;EACC;EACA;EACA;EAMA;;AAJA;EACC;;AAOH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;;AAEA;EACC;EACA;EACA;;;AAKH;EACC;EAEA;EACA;;AAEA;EACC;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;;AAIA;EAAK;;AACL;EAAQ;;AAIR;EACC;EACA;EAEA;EACA;;AAKD;EAAK;;;AAKR;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EAEA;EACA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EACA;EACA;;AAEA;EACC;EAEA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAIA;EACC;;AAKD;EACC;;AAKD;EACC;;;AAMJ;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;AAEA;AAyBA;;AAxBA;EACC;EACA;EACA;;AAGD;EACC;EACA;EAEA;EACA;;AAGD;EACC;EACA;;AAGD;EAEC;;AAKD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;;AAKH;AACA;EACC;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EA8BA;;AA5BA;EACC;;AAGD;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;;AAMF;EACC;EACA;EACA;EACA","file":"index.css"}
\ No newline at end of file
diff --git a/native/dns/src/response.h b/native/dns/src/response.h
index dda0e0e..a1b6b38 100644
--- a/native/dns/src/response.h
+++ b/native/dns/src/response.h
@@ -3,6 +3,7 @@
 #include <memory>
 #include <string>
 #include <cstdint>
+#include <stdexcept>
 #ifdef WIN32
     #include <WinSock2.h>
     #include <Windows.h>
@@ -182,4 +183,4 @@ namespace tc::dns {
 			define_parser(CNAME, named_base);
 		};
 	}
-}
\ No newline at end of file
+}
diff --git a/native/ppt/src/KeyboardHook.h b/native/ppt/src/KeyboardHook.h
index 39691b6..00464f0 100644
--- a/native/ppt/src/KeyboardHook.h
+++ b/native/ppt/src/KeyboardHook.h
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <string>
 #include <functional>
 #include <thread>
 #include <map>
@@ -60,4 +61,4 @@ class KeyboardHook {
 		std::map<KeyType, KeyID> map_special;
 
 		bool attached_ = false;
-};
\ No newline at end of file
+};
diff --git a/native/serverconnection/CMakeLists.txt b/native/serverconnection/CMakeLists.txt
index a39b882..a76e014 100644
--- a/native/serverconnection/CMakeLists.txt
+++ b/native/serverconnection/CMakeLists.txt
@@ -120,13 +120,13 @@ if (WIN32)
     add_definitions(-D_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING) # For the FMT library
 endif ()
 
-find_package(soxr REQUIRED)
+find_package(Soxr REQUIRED)
 include_directories(${soxr_INCLUDE_DIR})
 
 find_package(fvad REQUIRED)
 include_directories(${fvad_INCLUDE_DIR})
 
-find_package(opus REQUIRED)
+find_package(Opus REQUIRED)
 include_directories(${opus_INCLUDE_DIR})
 
 find_package(spdlog REQUIRED)
diff --git a/native/serverconnection/src/audio/AudioGain.cpp b/native/serverconnection/src/audio/AudioGain.cpp
index a9ecb3f..1d45c94 100644
--- a/native/serverconnection/src/audio/AudioGain.cpp
+++ b/native/serverconnection/src/audio/AudioGain.cpp
@@ -19,10 +19,10 @@ bool tc::audio::apply_gain(void *vp_buffer, size_t channel_count, size_t sample_
 
         if(value > 1.f) {
             log_debug(category::audio, tr("Audio gain apply clipped: {}"), (float) value);
-            value = isinf(value) ? 0 : 1.f;
+            value = std::isinf(value) ? 0 : 1.f;
             audio_clipped = true;
         }
     }
 
     return audio_clipped;
-}
\ No newline at end of file
+}
diff --git a/native/serverconnection/src/audio/AudioSamples.cpp b/native/serverconnection/src/audio/AudioSamples.cpp
index d2364cc..b3a0efe 100644
--- a/native/serverconnection/src/audio/AudioSamples.cpp
+++ b/native/serverconnection/src/audio/AudioSamples.cpp
@@ -1,4 +1,5 @@
 #include "AudioSamples.h"
+#include <cstdlib>
 
 using namespace std;
 using namespace tc;
@@ -12,4 +13,4 @@ std::shared_ptr<SampleBuffer> SampleBuffer::allocate(uint8_t channels, uint16_t
 	_buffer->sample_size = samples;
 	_buffer->sample_index = 0;
 	return shared_ptr<SampleBuffer>(_buffer, ::free);
-}
\ No newline at end of file
+}
diff --git a/package-lock.json b/package-lock.json
index 57b22ef..246fc2c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -298,12 +298,6 @@
         "@types/request": "*"
       }
     },
-    "@types/sizzle": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz",
-      "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==",
-      "dev": true
-    },
     "@types/ssh2": {
       "version": "0.5.46",
       "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.46.tgz",
@@ -540,6 +534,11 @@
       "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
       "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
     },
+    "async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+    },
     "async-each": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
@@ -661,7 +660,6 @@
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
       "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
-      "dev": true,
       "requires": {
         "buffers": "~0.1.1",
         "chainsaw": "~0.1.0"
@@ -859,8 +857,7 @@
     "buffers": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
-      "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
-      "dev": true
+      "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
     },
     "cache-base": {
       "version": "1.0.1",
@@ -939,7 +936,6 @@
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
       "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
-      "dev": true,
       "requires": {
         "traverse": ">=0.3.0 <0.4"
       }
@@ -1070,8 +1066,7 @@
     "chromium-pickle-js": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
-      "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
-      "dev": true
+      "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU="
     },
     "ci-info": {
       "version": "1.6.0",
@@ -1169,7 +1164,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
       "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-      "dev": true,
       "requires": {
         "string-width": "^2.1.1",
         "strip-ansi": "^4.0.0",
@@ -1179,20 +1173,17 @@
         "ansi-regex": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
         },
         "is-fullwidth-code-point": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-          "dev": true
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
         },
         "string-width": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
           "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
           "requires": {
             "is-fullwidth-code-point": "^2.0.0",
             "strip-ansi": "^4.0.0"
@@ -1202,7 +1193,6 @@
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
           "requires": {
             "ansi-regex": "^3.0.0"
           }
@@ -1391,8 +1381,7 @@
     "commander": {
       "version": "2.20.3",
       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
     },
     "compare-version": {
       "version": "0.1.2",
@@ -1486,7 +1475,6 @@
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
       "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-      "dev": true,
       "requires": {
         "lru-cache": "^4.0.1",
         "shebang-command": "^1.2.0",
@@ -1497,7 +1485,6 @@
       "version": "0.10.2",
       "resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.2.tgz",
       "integrity": "sha512-74PXJf6DYaab2klRS+D+9qxKJL1Weo3/ao9OPoH6NFzxtINSa/HE2mcyAPu1fpEmRTPD4Gdmpg3xEXQSgI8lpg==",
-      "dev": true,
       "requires": {
         "cross-spawn": "^5.1.0"
       }
@@ -1517,8 +1504,7 @@
     "cuint": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
-      "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
-      "dev": true
+      "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs="
     },
     "currently-unhandled": {
       "version": "0.4.1",
@@ -1568,7 +1554,6 @@
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.2.tgz",
       "integrity": "sha512-Ab1QY4LrWMrUuo53lLnmGOby7v8ryqxJ+bKibKSiPisx+25mhut1dScVBXAYx14i/PqSrFZvR2FRRazhLbvL+g==",
-      "dev": true,
       "requires": {
         "binary": "^0.3.0",
         "graceful-fs": "^4.1.3",
@@ -1582,14 +1567,12 @@
         "isarray": {
           "version": "0.0.1",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
         },
         "nopt": {
           "version": "3.0.6",
           "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
           "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-          "dev": true,
           "requires": {
             "abbrev": "1"
           }
@@ -1598,7 +1581,6 @@
           "version": "1.1.14",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-          "dev": true,
           "requires": {
             "core-util-is": "~1.0.0",
             "inherits": "~2.0.1",
@@ -1609,8 +1591,7 @@
         "string_decoder": {
           "version": "0.10.31",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
         }
       }
     },
@@ -1843,6 +1824,219 @@
         }
       }
     },
+    "electron-installer-debian": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-0.8.1.tgz",
+      "integrity": "sha512-UkEk7d1L8gwaRnZMF1AcEb3WH5OStmUgv1AQUmTbKjvzGnAU9IZAZuDgFK/8hFClRJvhlWC6Xykv7WggC8jSxQ==",
+      "requires": {
+        "asar": "^0.14.0",
+        "cross-spawn-promise": "^0.10.1",
+        "debug": "^3.1.0",
+        "fs-extra": "^4.0.2",
+        "get-folder-size": "^1.0.0",
+        "glob": "^7.1.2",
+        "lodash": "^4.17.4",
+        "mkdirp": "^0.5.1",
+        "nodeify": "^1.0.1",
+        "pify": "^3.0.0",
+        "semver": "^5.4.1",
+        "temp": "^0.8.3",
+        "word-wrap": "^1.2.3",
+        "yargs": "^10.0.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+        },
+        "asar": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz",
+          "integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==",
+          "requires": {
+            "chromium-pickle-js": "^0.2.0",
+            "commander": "^2.9.0",
+            "cuint": "^0.2.1",
+            "glob": "^6.0.4",
+            "minimatch": "^3.0.3",
+            "mkdirp": "^0.5.0",
+            "mksnapshot": "^0.3.4",
+            "tmp": "0.0.28"
+          },
+          "dependencies": {
+            "glob": {
+              "version": "6.0.4",
+              "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+              "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+              "requires": {
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "2 || 3",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            }
+          }
+        },
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+        },
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "fs-extra": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+          "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "mem": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+        },
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+          "requires": {
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "tmp": {
+          "version": "0.0.28",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
+          "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
+          "requires": {
+            "os-tmpdir": "~1.0.1"
+          }
+        },
+        "y18n": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+          "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
+        },
+        "yargs": {
+          "version": "10.1.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz",
+          "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==",
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^8.1.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
+          "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
     "electron-installer-windows": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/electron-installer-windows/-/electron-installer-windows-1.1.1.tgz",
@@ -2445,7 +2639,6 @@
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
       "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
-      "dev": true,
       "requires": {
         "cross-spawn": "^5.0.1",
         "get-stream": "^3.0.0",
@@ -2459,8 +2652,7 @@
         "get-stream": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
-          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
-          "dev": true
+          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
         }
       }
     },
@@ -3361,6 +3553,11 @@
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
+    "gar": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz",
+      "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w=="
+    },
     "gauge": {
       "version": "2.7.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
@@ -3379,8 +3576,16 @@
     "get-caller-file": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-      "dev": true
+      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+    },
+    "get-folder-size": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-1.0.1.tgz",
+      "integrity": "sha1-gC+kIIQ03nEgUYKxWrfxNSCI5YA=",
+      "requires": {
+        "async": "^1.4.2",
+        "gar": "^1.0.2"
+      }
     },
     "get-package-info": {
       "version": "1.0.0",
@@ -3838,8 +4043,7 @@
     "invert-kv": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-      "dev": true
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
     },
     "ip-regex": {
       "version": "4.1.0",
@@ -4054,8 +4258,7 @@
     "is-promise": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
-      "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=",
-      "dev": true
+      "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU="
     },
     "is-redirect": {
       "version": "1.0.0",
@@ -4080,8 +4283,7 @@
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-      "dev": true
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
     },
     "is-symbol": {
       "version": "1.0.3",
@@ -4259,7 +4461,6 @@
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
       "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
-      "dev": true,
       "requires": {
         "graceful-fs": "^4.1.9"
       }
@@ -4277,7 +4478,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
       "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "dev": true,
       "requires": {
         "invert-kv": "^1.0.0"
       }
@@ -4411,7 +4611,6 @@
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
       "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
       "requires": {
         "pseudomap": "^1.0.2",
         "yallist": "^2.1.2"
@@ -4420,8 +4619,7 @@
         "yallist": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-          "dev": true
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
         }
       }
     },
@@ -4657,14 +4855,12 @@
     "mkpath": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
-      "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
-      "dev": true
+      "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE="
     },
     "mksnapshot": {
       "version": "0.3.5",
       "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz",
       "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==",
-      "dev": true,
       "requires": {
         "decompress-zip": "0.3.x",
         "fs-extra": "0.26.7",
@@ -4675,7 +4871,6 @@
           "version": "0.26.7",
           "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
           "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
-          "dev": true,
           "requires": {
             "graceful-fs": "^4.1.2",
             "jsonfile": "^2.1.0",
@@ -4688,7 +4883,6 @@
           "version": "2.4.0",
           "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
           "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-          "dev": true,
           "requires": {
             "graceful-fs": "^4.1.6"
           }
@@ -4795,7 +4989,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz",
       "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=",
-      "dev": true,
       "requires": {
         "is-promise": "~1.0.0",
         "promise": "~1.3.0"
@@ -4928,7 +5121,6 @@
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
       "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-      "dev": true,
       "requires": {
         "path-key": "^2.0.0"
       }
@@ -5174,8 +5366,7 @@
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
     },
     "p-is-promise": {
       "version": "2.1.0",
@@ -5460,7 +5651,6 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz",
       "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=",
-      "dev": true,
       "requires": {
         "is-promise": "~1"
       }
@@ -5474,8 +5664,7 @@
     "pseudomap": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
     },
     "psl": {
       "version": "1.8.0",
@@ -5518,8 +5707,7 @@
     "q": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-      "dev": true
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
     },
     "qs": {
       "version": "6.5.2",
@@ -5795,8 +5983,7 @@
     "require-main-filename": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-      "dev": true
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
     },
     "resolve": {
       "version": "1.15.1",
@@ -6476,8 +6663,7 @@
     "strip-eof": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
-      "dev": true
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
     },
     "strip-indent": {
       "version": "1.0.1",
@@ -6552,7 +6738,6 @@
       "version": "0.8.4",
       "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
       "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
-      "dev": true,
       "requires": {
         "rimraf": "~2.6.2"
       },
@@ -6561,7 +6746,6 @@
           "version": "2.6.3",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
           "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
           "requires": {
             "glob": "^7.1.3"
           }
@@ -6700,7 +6884,6 @@
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
       "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
-      "dev": true,
       "requires": {
         "nopt": "~1.0.10"
       },
@@ -6709,7 +6892,6 @@
           "version": "1.0.10",
           "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
           "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
-          "dev": true,
           "requires": {
             "abbrev": "1"
           }
@@ -6779,8 +6961,7 @@
     "traverse": {
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
-      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
-      "dev": true
+      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="
     },
     "trim-newlines": {
       "version": "1.0.0",
@@ -7460,11 +7641,15 @@
       "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
       "dev": true
     },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+    },
     "wrap-ansi": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
       "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
       "requires": {
         "string-width": "^1.0.1",
         "strip-ansi": "^3.0.1"
diff --git a/package.json b/package.json
index c0fc458..b9d2e00 100644
--- a/package.json
+++ b/package.json
@@ -62,6 +62,7 @@
     "color.js": "^0.1.3",
     "electron": "8.0.0",
     "electron-context-menu": "^2.4.0",
+    "electron-installer-debian": "^0.8.1",
     "electron-rebuild": "^1.11.0",
     "extend": "^3.0.2",
     "extsprintf": "^1.4.0",