~afontaine/home unlisted

e9c8c65f029fb35915df900243a2b9af31457117 — Andrew Fontaine a month ago 052eb12
Drop SCSS Support

I don't need it, so let's focus on just using tailwind. This means we
don't need to build libsass either.
M apps/home_web/assets/.eslintrc.yml => apps/home_web/assets/.eslintrc.yml +2 -2
@@ 2,8 2,8 @@ env:
  browser: true
  es2021: true
extends:
  - "eslint:recommended"
  - "prettier"
  - 'eslint:recommended'
  - 'prettier'
parserOptions:
  ecmaVersion: 12
  sourceType: module

R apps/home_web/assets/css/app.scss => apps/home_web/assets/css/app.css +0 -0
M apps/home_web/assets/css/phoenix.css => apps/home_web/assets/css/phoenix.css +545 -13
@@ 6,23 6,554 @@
 * Copyright (c) 2017 CJ Patoilo Licensed under the MIT license
 */

*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="%23d1d1d1" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="%230069d9" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}
*,
*:after,
*:before {
  box-sizing: inherit;
}
html {
  box-sizing: border-box;
  font-size: 62.5%;
}
body {
  color: #000000;
  font-family: 'Helvetica', 'Arial', sans-serif;
  font-size: 1.6em;
  font-weight: 300;
  line-height: 1.6;
}
blockquote {
  border-left: 0.3rem solid #d1d1d1;
  margin-left: 0;
  margin-right: 0;
  padding: 1rem 1.5rem;
}
blockquote *:last-child {
  margin-bottom: 0;
}
.button,
button,
input[type='button'],
input[type='reset'],
input[type='submit'] {
  background-color: #0069d9;
  border: 0.1rem solid #0069d9;
  border-radius: 0.4rem;
  color: #fff;
  cursor: pointer;
  display: inline-block;
  font-size: 1.1rem;
  font-weight: 700;
  height: 3.8rem;
  letter-spacing: 0.1rem;
  line-height: 3.8rem;
  padding: 0 3rem;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
}
.button:focus,
.button:hover,
button:focus,
button:hover,
input[type='button']:focus,
input[type='button']:hover,
input[type='reset']:focus,
input[type='reset']:hover,
input[type='submit']:focus,
input[type='submit']:hover {
  background-color: #606c76;
  border-color: #606c76;
  color: #fff;
  outline: 0;
}
.button[disabled],
button[disabled],
input[type='button'][disabled],
input[type='reset'][disabled],
input[type='submit'][disabled] {
  cursor: default;
  opacity: 0.5;
}
.button[disabled]:focus,
.button[disabled]:hover,
button[disabled]:focus,
button[disabled]:hover,
input[type='button'][disabled]:focus,
input[type='button'][disabled]:hover,
input[type='reset'][disabled]:focus,
input[type='reset'][disabled]:hover,
input[type='submit'][disabled]:focus,
input[type='submit'][disabled]:hover {
  background-color: #0069d9;
  border-color: #0069d9;
}
.button.button-outline,
button.button-outline,
input[type='button'].button-outline,
input[type='reset'].button-outline,
input[type='submit'].button-outline {
  background-color: transparent;
  color: #0069d9;
}
.button.button-outline:focus,
.button.button-outline:hover,
button.button-outline:focus,
button.button-outline:hover,
input[type='button'].button-outline:focus,
input[type='button'].button-outline:hover,
input[type='reset'].button-outline:focus,
input[type='reset'].button-outline:hover,
input[type='submit'].button-outline:focus,
input[type='submit'].button-outline:hover {
  background-color: transparent;
  border-color: #606c76;
  color: #606c76;
}
.button.button-outline[disabled]:focus,
.button.button-outline[disabled]:hover,
button.button-outline[disabled]:focus,
button.button-outline[disabled]:hover,
input[type='button'].button-outline[disabled]:focus,
input[type='button'].button-outline[disabled]:hover,
input[type='reset'].button-outline[disabled]:focus,
input[type='reset'].button-outline[disabled]:hover,
input[type='submit'].button-outline[disabled]:focus,
input[type='submit'].button-outline[disabled]:hover {
  border-color: inherit;
  color: #0069d9;
}
.button.button-clear,
button.button-clear,
input[type='button'].button-clear,
input[type='reset'].button-clear,
input[type='submit'].button-clear {
  background-color: transparent;
  border-color: transparent;
  color: #0069d9;
}
.button.button-clear:focus,
.button.button-clear:hover,
button.button-clear:focus,
button.button-clear:hover,
input[type='button'].button-clear:focus,
input[type='button'].button-clear:hover,
input[type='reset'].button-clear:focus,
input[type='reset'].button-clear:hover,
input[type='submit'].button-clear:focus,
input[type='submit'].button-clear:hover {
  background-color: transparent;
  border-color: transparent;
  color: #606c76;
}
.button.button-clear[disabled]:focus,
.button.button-clear[disabled]:hover,
button.button-clear[disabled]:focus,
button.button-clear[disabled]:hover,
input[type='button'].button-clear[disabled]:focus,
input[type='button'].button-clear[disabled]:hover,
input[type='reset'].button-clear[disabled]:focus,
input[type='reset'].button-clear[disabled]:hover,
input[type='submit'].button-clear[disabled]:focus,
input[type='submit'].button-clear[disabled]:hover {
  color: #0069d9;
}
code {
  background: #f4f5f6;
  border-radius: 0.4rem;
  font-size: 86%;
  margin: 0 0.2rem;
  padding: 0.2rem 0.5rem;
  white-space: nowrap;
}
pre {
  background: #f4f5f6;
  border-left: 0.3rem solid #0069d9;
  overflow-y: hidden;
}
pre > code {
  border-radius: 0;
  display: block;
  padding: 1rem 1.5rem;
  white-space: pre;
}
hr {
  border: 0;
  border-top: 0.1rem solid #f4f5f6;
  margin: 3rem 0;
}
input[type='email'],
input[type='number'],
input[type='password'],
input[type='search'],
input[type='tel'],
input[type='text'],
input[type='url'],
textarea,
select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: transparent;
  border: 0.1rem solid #d1d1d1;
  border-radius: 0.4rem;
  box-shadow: none;
  box-sizing: inherit;
  height: 3.8rem;
  padding: 0.6rem 1rem;
  width: 100%;
}
input[type='email']:focus,
input[type='number']:focus,
input[type='password']:focus,
input[type='search']:focus,
input[type='tel']:focus,
input[type='text']:focus,
input[type='url']:focus,
textarea:focus,
select:focus {
  border-color: #0069d9;
  outline: 0;
}
select {
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="%23d1d1d1" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>')
    center right no-repeat;
  padding-right: 3rem;
}
select:focus {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="%230069d9" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>');
}
textarea {
  min-height: 6.5rem;
}
label,
legend {
  display: block;
  font-size: 1.6rem;
  font-weight: 700;
  margin-bottom: 0.5rem;
}
fieldset {
  border-width: 0;
  padding: 0;
}
input[type='checkbox'],
input[type='radio'] {
  display: inline;
}
.label-inline {
  display: inline-block;
  font-weight: normal;
  margin-left: 0.5rem;
}
.row {
  display: flex;
  flex-direction: column;
  padding: 0;
  width: 100%;
}
.row.row-no-padding {
  padding: 0;
}
.row.row-no-padding > .column {
  padding: 0;
}
.row.row-wrap {
  flex-wrap: wrap;
}
.row.row-top {
  align-items: flex-start;
}
.row.row-bottom {
  align-items: flex-end;
}
.row.row-center {
  align-items: center;
}
.row.row-stretch {
  align-items: stretch;
}
.row.row-baseline {
  align-items: baseline;
}
.row .column {
  display: block;
  flex: 1 1 auto;
  margin-left: 0;
  max-width: 100%;
  width: 100%;
}
.row .column.column-offset-10 {
  margin-left: 10%;
}
.row .column.column-offset-20 {
  margin-left: 20%;
}
.row .column.column-offset-25 {
  margin-left: 25%;
}
.row .column.column-offset-33,
.row .column.column-offset-34 {
  margin-left: 33.3333%;
}
.row .column.column-offset-50 {
  margin-left: 50%;
}
.row .column.column-offset-66,
.row .column.column-offset-67 {
  margin-left: 66.6666%;
}
.row .column.column-offset-75 {
  margin-left: 75%;
}
.row .column.column-offset-80 {
  margin-left: 80%;
}
.row .column.column-offset-90 {
  margin-left: 90%;
}
.row .column.column-10 {
  flex: 0 0 10%;
  max-width: 10%;
}
.row .column.column-20 {
  flex: 0 0 20%;
  max-width: 20%;
}
.row .column.column-25 {
  flex: 0 0 25%;
  max-width: 25%;
}
.row .column.column-33,
.row .column.column-34 {
  flex: 0 0 33.3333%;
  max-width: 33.3333%;
}
.row .column.column-40 {
  flex: 0 0 40%;
  max-width: 40%;
}
.row .column.column-50 {
  flex: 0 0 50%;
  max-width: 50%;
}
.row .column.column-60 {
  flex: 0 0 60%;
  max-width: 60%;
}
.row .column.column-66,
.row .column.column-67 {
  flex: 0 0 66.6666%;
  max-width: 66.6666%;
}
.row .column.column-75 {
  flex: 0 0 75%;
  max-width: 75%;
}
.row .column.column-80 {
  flex: 0 0 80%;
  max-width: 80%;
}
.row .column.column-90 {
  flex: 0 0 90%;
  max-width: 90%;
}
.row .column .column-top {
  align-self: flex-start;
}
.row .column .column-bottom {
  align-self: flex-end;
}
.row .column .column-center {
  -ms-grid-row-align: center;
  align-self: center;
}
@media (min-width: 40rem) {
  .row {
    flex-direction: row;
    margin-left: -1rem;
    width: calc(100% + 2rem);
  }
  .row .column {
    margin-bottom: inherit;
    padding: 0 1rem;
  }
}
a {
  color: #0069d9;
  text-decoration: none;
}
a:focus,
a:hover {
  color: #606c76;
}
dl,
ol,
ul {
  list-style: none;
  margin-top: 0;
  padding-left: 0;
}
dl dl,
dl ol,
dl ul,
ol dl,
ol ol,
ol ul,
ul dl,
ul ol,
ul ul {
  font-size: 90%;
  margin: 1.5rem 0 1.5rem 3rem;
}
ol {
  list-style: decimal inside;
}
ul {
  list-style: circle inside;
}
.button,
button,
dd,
dt,
li {
  margin-bottom: 1rem;
}
fieldset,
input,
select,
textarea {
  margin-bottom: 1.5rem;
}
blockquote,
dl,
figure,
form,
ol,
p,
pre,
table,
ul {
  margin-bottom: 2.5rem;
}
table {
  border-spacing: 0;
  width: 100%;
}
td,
th {
  border-bottom: 0.1rem solid #e1e1e1;
  padding: 1.2rem 1.5rem;
  text-align: left;
}
td:first-child,
th:first-child {
  padding-left: 0;
}
td:last-child,
th:last-child {
  padding-right: 0;
}
b,
strong {
  font-weight: bold;
}
p {
  margin-top: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 300;
  letter-spacing: -0.1rem;
  margin-bottom: 2rem;
  margin-top: 0;
}
h1 {
  font-size: 4.6rem;
  line-height: 1.2;
}
h2 {
  font-size: 3.6rem;
  line-height: 1.25;
}
h3 {
  font-size: 2.8rem;
  line-height: 1.3;
}
h4 {
  font-size: 2.2rem;
  letter-spacing: -0.08rem;
  line-height: 1.35;
}
h5 {
  font-size: 1.8rem;
  letter-spacing: -0.05rem;
  line-height: 1.5;
}
h6 {
  font-size: 1.6rem;
  letter-spacing: 0;
  line-height: 1.4;
}
img {
  max-width: 100%;
}
.clearfix:after {
  clear: both;
  content: ' ';
  display: table;
}
.float-left {
  float: left;
}
.float-right {
  float: right;
}

/* General style */
h1{font-size: 3.6rem; line-height: 1.25}
h2{font-size: 2.8rem; line-height: 1.3}
h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35}
h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5}
h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4}
h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2}
pre{padding: 1em;}
h1 {
  font-size: 3.6rem;
  line-height: 1.25;
}
h2 {
  font-size: 2.8rem;
  line-height: 1.3;
}
h3 {
  font-size: 2.2rem;
  letter-spacing: -0.08rem;
  line-height: 1.35;
}
h4 {
  font-size: 1.8rem;
  letter-spacing: -0.05rem;
  line-height: 1.5;
}
h5 {
  font-size: 1.6rem;
  letter-spacing: 0;
  line-height: 1.4;
}
h6 {
  font-size: 1.4rem;
  letter-spacing: 0;
  line-height: 1.2;
}
pre {
  padding: 1em;
}

.container{
.container {
  margin: 0 auto;
  max-width: 80.0rem;
  padding: 0 2.0rem;
  max-width: 80rem;
  padding: 0 2rem;
  position: relative;
  width: 100%
  width: 100%;
}
select {
  width: auto;


@@ 87,7 618,8 @@ header nav a {
  display: block;
}

@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */
@media (min-width: 40rem) {
  /* Small devices (landscape phones, 576px and up) */
  header section {
    flex-direction: row;
  }

M apps/home_web/assets/js/app.js => apps/home_web/assets/js/app.js +1 -1
@@ 1,7 1,7 @@
// We need to import the CSS so that webpack will load it.
// The MiniCssExtractPlugin is used to separate it out into
// its own CSS file.
import '../css/app.scss';
import '../css/app.css';

// webpack automatically bundles all modules in your
// entry points. Those entry points can be configured

M apps/home_web/assets/node-env.nix => apps/home_web/assets/node-env.nix +186 -172
@@ 1,15 1,15 @@
# This file originates from node2nix

{ lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile }:
{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile}:

let
  # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
  utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;

  python = python2;
  python = if nodejs ? python then nodejs.python else python2;

  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
  tarWrapper = runCommand "tarWrapper" { } ''
  tarWrapper = runCommand "tarWrapper" {} ''
    mkdir -p $out/bin

    cat > $out/bin/tar <<EOF


@@ 21,7 21,8 @@ let
  '';

  # Function that generates a TGZ file from a NPM project
  buildNodeSourceDist = { name, version, src, ... }:
  buildNodeSourceDist =
    { name, version, src, ... }:

    stdenv.mkDerivation {
      name = "node-tarball-${name}-${version}";


@@ 39,24 40,26 @@ let
      '';
    };

  includeDependencies = { dependencies }:
    lib.optionalString (dependencies != [ ]) (lib.concatMapStrings
      (dependency: ''
        # Bundle the dependencies of the package
        mkdir -p node_modules
        cd node_modules
  includeDependencies = {dependencies}:
    lib.optionalString (dependencies != [])
      (lib.concatMapStrings (dependency:
        ''
          # Bundle the dependencies of the package
          mkdir -p node_modules
          cd node_modules

        # Only include dependencies if they don't exist. They may also be bundled in the package.
        if [ ! -e "${dependency.name}" ]
        then
            ${composePackage dependency}
        fi
          # Only include dependencies if they don't exist. They may also be bundled in the package.
          if [ ! -e "${dependency.name}" ]
          then
              ${composePackage dependency}
          fi

        cd ..
      '') dependencies);
          cd ..
        ''
      ) dependencies);

  # Recursively composes the dependencies of a package
  composePackage = { name, packageName, src, dependencies ? [ ], ... }@args:
  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
      DIR=$(pwd)
      cd $TMPDIR


@@ 103,7 106,7 @@ let
      ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
    '';

  pinpointDependencies = { dependencies, production }:
  pinpointDependencies = {dependencies, production}:
    let
      pinpointDependenciesFromPackageJSON = writeTextFile {
        name = "pinpointDependencies.js";


@@ 157,46 160,39 @@ let
          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
        '';
      };
    in ''
      node ${pinpointDependenciesFromPackageJSON} ${
        if production then "production" else "development"
      }
    in
    ''
      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}

      ${lib.optionalString (dependencies != [ ]) ''
        if [ -d node_modules ]
        then
            cd node_modules
            ${
              lib.concatMapStrings
              (dependency: pinpointDependenciesOfPackage dependency)
              dependencies
            }
            cd ..
        fi
      ''}
      ${lib.optionalString (dependencies != [])
        ''
          if [ -d node_modules ]
          then
              cd node_modules
              ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
              cd ..
          fi
        ''}
    '';

  # Recursively traverses all dependencies of a package and pinpoints all
  # dependencies in the package.json file to the versions that are actually
  # being used.

  pinpointDependenciesOfPackage =
    { packageName, dependencies ? [ ], production ? true, ... }@args: ''
  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
    ''
      if [ -d "${packageName}" ]
      then
          cd "${packageName}"
          ${pinpointDependencies { inherit dependencies production; }}
          cd ..
          ${
            lib.optionalString (builtins.substring 0 1 packageName == "@")
            "cd .."
          }
          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
      fi
    '';

  # Extract the Node.js source code which is used to compile packages with
  # native bindings
  nodeSources = runCommand "node-sources" { } ''
  nodeSources = runCommand "node-sources" {} ''
    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
    mv node-* $out
  '';


@@ 324,96 320,92 @@ let
    '';
  };

  prepareAndInvokeNPM =
    { packageName, bypassCache, reconstructLock, npmFlags, production }:
  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
    let
      forceOfflineFlag = if bypassCache then
        "--offline"
      else
        "--registry http://www.example.com";
    in ''
      # Pinpoint the versions of all dependencies to the ones that are actually being used
      echo "pinpointing versions of dependencies..."
      source $pinpointDependenciesScriptPath

      # Patch the shebangs of the bundled modules to prevent them from
      # calling executables outside the Nix store as much as possible
      patchShebangs .

      # Deploy the Node.js package by running npm install. Since the
      # dependencies have been provided already by ourselves, it should not
      # attempt to install them again, which is good, because we want to make
      # it Nix's responsibility. If it needs to install any dependencies
      # anyway (e.g. because the dependency parameters are
      # incomplete/incorrect), it fails.
      #
      # The other responsibilities of NPM are kept -- version checks, build
      # steps, postprocessing etc.

      export HOME=$TMPDIR
      cd "${packageName}"
      runHook preRebuild

      ${lib.optionalString bypassCache ''
        ${lib.optionalString reconstructLock ''
          if [ -f package-lock.json ]
          then
              echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
              echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
              rm package-lock.json
          else
              echo "No package-lock.json file found, reconstructing..."
          fi
      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
    in
    ''
        # Pinpoint the versions of all dependencies to the ones that are actually being used
        echo "pinpointing versions of dependencies..."
        source $pinpointDependenciesScriptPath

        # Patch the shebangs of the bundled modules to prevent them from
        # calling executables outside the Nix store as much as possible
        patchShebangs .

        # Deploy the Node.js package by running npm install. Since the
        # dependencies have been provided already by ourselves, it should not
        # attempt to install them again, which is good, because we want to make
        # it Nix's responsibility. If it needs to install any dependencies
        # anyway (e.g. because the dependency parameters are
        # incomplete/incorrect), it fails.
        #
        # The other responsibilities of NPM are kept -- version checks, build
        # steps, postprocessing etc.

          node ${reconstructPackageLock}
        ''}
        export HOME=$TMPDIR
        cd "${packageName}"
        runHook preRebuild

        node ${addIntegrityFieldsScript}
      ''}
        ${lib.optionalString bypassCache ''
          ${lib.optionalString reconstructLock ''
            if [ -f package-lock.json ]
            then
                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
                rm package-lock.json
            else
                echo "No package-lock.json file found, reconstructing..."
            fi

            node ${reconstructPackageLock}
          ''}

          node ${addIntegrityFieldsScript}
        ''}

      npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${
        lib.optionalString production "--production"
      } rebuild
        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild

      if [ "''${dontNpmInstall-}" != "1" ]
      then
          # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
          rm -f npm-shrinkwrap.json
        if [ "''${dontNpmInstall-}" != "1" ]
        then
            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
            rm -f npm-shrinkwrap.json

          npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${
            lib.optionalString production "--production"
          } install
      fi
            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
        fi
    '';

  # Builds and composes an NPM package including all its dependencies
  buildNodePackage = { name, packageName, version, dependencies ? [ ]
    , buildInputs ? [ ], production ? true, npmFlags ? ""
    , dontNpmInstall ? false, bypassCache ? false, reconstructLock ? false
    , preRebuild ? "", dontStrip ? true, unpackPhase ? "true"
    , buildPhase ? "true", ... }@args:
  buildNodePackage =
    { name
    , packageName
    , version
    , dependencies ? []
    , buildInputs ? []
    , production ? true
    , npmFlags ? ""
    , dontNpmInstall ? false
    , bypassCache ? false
    , reconstructLock ? false
    , preRebuild ? ""
    , dontStrip ? true
    , unpackPhase ? "true"
    , buildPhase ? "true"
    , ... }@args:

    let
      extraArgs = removeAttrs args [
        "name"
        "dependencies"
        "buildInputs"
        "dontStrip"
        "dontNpmInstall"
        "preRebuild"
        "unpackPhase"
        "buildPhase"
      ];
    in stdenv.mkDerivation ({
      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
    in
    stdenv.mkDerivation ({
      name = "node_${name}-${version}";
      buildInputs = [ tarWrapper python nodejs ]
        ++ lib.optional (stdenv.isLinux) utillinux
        ++ lib.optional (stdenv.isDarwin) libtool ++ buildInputs;
        ++ lib.optional (stdenv.isDarwin) libtool
        ++ buildInputs;

      inherit nodejs;

      inherit
        dontStrip; # Stripping may fail a build for some package deployments
      inherit dontStrip; # Stripping may fail a build for some package deployments
      inherit dontNpmInstall preRebuild unpackPhase buildPhase;

      compositionScript = composePackage args;


@@ 429,9 421,7 @@ let
        # Compose the package and all its dependencies
        source $compositionScriptPath

        ${prepareAndInvokeNPM {
          inherit packageName bypassCache reconstructLock npmFlags production;
        }}
        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}

        # Create symlink to the deployed executable folder, if applicable
        if [ -d "$out/lib/node_modules/.bin" ]


@@ 459,75 449,98 @@ let
    } // extraArgs);

  # Builds a node environment (a node_modules folder and a set of binaries)
  buildNodeDependencies = { name, packageName, version, src, dependencies ? [ ]
    , buildInputs ? [ ], production ? true, npmFlags ? ""
    , dontNpmInstall ? false, bypassCache ? false, reconstructLock ? false
    , dontStrip ? true, unpackPhase ? "true", buildPhase ? "true", ... }@args:
  buildNodeDependencies =
    { name
    , packageName
    , version
    , src
    , dependencies ? []
    , buildInputs ? []
    , production ? true
    , npmFlags ? ""
    , dontNpmInstall ? false
    , bypassCache ? false
    , reconstructLock ? false
    , dontStrip ? true
    , unpackPhase ? "true"
    , buildPhase ? "true"
    , ... }@args:

    let extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
    in stdenv.mkDerivation ({
      name = "node-dependencies-${name}-${version}";
    let
      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
    in
      stdenv.mkDerivation ({
        name = "node-dependencies-${name}-${version}";

      buildInputs = [ tarWrapper python nodejs ]
        ++ lib.optional (stdenv.isLinux) utillinux
        ++ lib.optional (stdenv.isDarwin) libtool ++ buildInputs;
        buildInputs = [ tarWrapper python nodejs ]
          ++ lib.optional (stdenv.isLinux) utillinux
          ++ lib.optional (stdenv.isDarwin) libtool
          ++ buildInputs;

      inherit
        dontStrip; # Stripping may fail a build for some package deployments
      inherit dontNpmInstall unpackPhase buildPhase;
        inherit dontStrip; # Stripping may fail a build for some package deployments
        inherit dontNpmInstall unpackPhase buildPhase;

      includeScript = includeDependencies { inherit dependencies; };
      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
        includeScript = includeDependencies { inherit dependencies; };
        pinpointDependenciesScript = pinpointDependenciesOfPackage args;

      passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];

      installPhase = ''
        mkdir -p $out/${packageName}
        cd $out/${packageName}
        installPhase = ''
          mkdir -p $out/${packageName}
          cd $out/${packageName}

        source $includeScriptPath
          source $includeScriptPath

        # Create fake package.json to make the npm commands work properly
        cp ${src}/package.json .
        chmod 644 package.json
        ${lib.optionalString bypassCache ''
          if [ -f ${src}/package-lock.json ]
          then
              cp ${src}/package-lock.json .
          fi
        ''}
          # Create fake package.json to make the npm commands work properly
          cp ${src}/package.json .
          chmod 644 package.json
          ${lib.optionalString bypassCache ''
            if [ -f ${src}/package-lock.json ]
            then
                cp ${src}/package-lock.json .
            fi
          ''}

        # Go to the parent folder to make sure that all packages are pinpointed
        cd ..
        ${lib.optionalString (builtins.substring 0 1 packageName == "@")
        "cd .."}
          # Go to the parent folder to make sure that all packages are pinpointed
          cd ..
          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}

        ${prepareAndInvokeNPM {
          inherit packageName bypassCache reconstructLock npmFlags production;
        }}
          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}

        # Expose the executables that were installed
        cd ..
        ${lib.optionalString (builtins.substring 0 1 packageName == "@")
        "cd .."}
          # Expose the executables that were installed
          cd ..
          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}

        mv ${packageName} lib
        ln -s $out/lib/node_modules/.bin $out/bin
      '';
    } // extraArgs);
          mv ${packageName} lib
          ln -s $out/lib/node_modules/.bin $out/bin
        '';
      } // extraArgs);

  # Builds a development shell
  buildNodeShell = { name, packageName, version, src, dependencies ? [ ]
    , buildInputs ? [ ], production ? true, npmFlags ? ""
    , dontNpmInstall ? false, bypassCache ? false, reconstructLock ? false
    , dontStrip ? true, unpackPhase ? "true", buildPhase ? "true", ... }@args:
  buildNodeShell =
    { name
    , packageName
    , version
    , src
    , dependencies ? []
    , buildInputs ? []
    , production ? true
    , npmFlags ? ""
    , dontNpmInstall ? false
    , bypassCache ? false
    , reconstructLock ? false
    , dontStrip ? true
    , unpackPhase ? "true"
    , buildPhase ? "true"
    , ... }@args:

    let nodeDependencies = buildNodeDependencies args;
    in stdenv.mkDerivation {
    let
      nodeDependencies = buildNodeDependencies args;
    in
    stdenv.mkDerivation {
      name = "node-shell-${name}-${version}";

      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux
        ++ buildInputs;
      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
      buildCommand = ''
        mkdir -p $out/bin
        cat > $out/bin/shell <<EOF


@@ 540,12 553,13 @@ let

      # Provide the dependencies in a development shell through the NODE_PATH environment variable
      inherit nodeDependencies;
      shellHook = lib.optionalString (dependencies != [ ]) ''
      shellHook = lib.optionalString (dependencies != []) ''
        export NODE_PATH=${nodeDependencies}/lib/node_modules
        export PATH="${nodeDependencies}/bin:$PATH"
      '';
    };
in {
in
{
  buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
  buildNodePackage = lib.makeOverridable buildNodePackage;
  buildNodeDependencies = lib.makeOverridable buildNodeDependencies;

M apps/home_web/assets/node-packages.nix => apps/home_web/assets/node-packages.nix +6 -1603
@@ 985,15 985,6 @@ let
        sha512 = "cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==";
      };
    };
    "@types/json5-0.0.29" = {
      name = "_at_types_slash_json5";
      packageName = "@types/json5";
      version = "0.0.29";
      src = fetchurl {
        url = "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz";
        sha1 = "ee28707ae94e11d2b827bcbe5270bcea7f3e71ee";
      };
    };
    "@types/node-14.14.37" = {
      name = "_at_types_slash_node";
      packageName = "@types/node";


@@ 1201,15 1192,6 @@ let
        sha512 = "NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==";
      };
    };
    "abbrev-1.1.1" = {
      name = "abbrev";
      packageName = "abbrev";
      version = "1.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
      };
    };
    "acorn-7.4.1" = {
      name = "acorn";
      packageName = "acorn";


@@ 1309,15 1291,6 @@ let
        sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
      };
    };
    "amdefine-1.0.1" = {
      name = "amdefine";
      packageName = "amdefine";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
        sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
      };
    };
    "ansi-colors-3.2.4" = {
      name = "ansi-colors";
      packageName = "ansi-colors";


@@ 1336,24 1309,6 @@ let
        sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
      };
    };
    "ansi-regex-2.1.1" = {
      name = "ansi-regex";
      packageName = "ansi-regex";
      version = "2.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
      };
    };
    "ansi-regex-4.1.0" = {
      name = "ansi-regex";
      packageName = "ansi-regex";
      version = "4.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
        sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
      };
    };
    "ansi-regex-5.0.0" = {
      name = "ansi-regex";
      packageName = "ansi-regex";


@@ 1363,15 1318,6 @@ let
        sha512 = "bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==";
      };
    };
    "ansi-styles-2.2.1" = {
      name = "ansi-styles";
      packageName = "ansi-styles";
      version = "2.2.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
      };
    };
    "ansi-styles-3.2.1" = {
      name = "ansi-styles";
      packageName = "ansi-styles";


@@ 1408,15 1354,6 @@ let
        sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
      };
    };
    "are-we-there-yet-1.1.5" = {
      name = "are-we-there-yet";
      packageName = "are-we-there-yet";
      version = "1.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
        sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
      };
    };
    "argparse-1.0.10" = {
      name = "argparse";
      packageName = "argparse";


@@ 1426,24 1363,6 @@ let
        sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
      };
    };
    "array-find-index-1.0.2" = {
      name = "array-find-index";
      packageName = "array-find-index";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz";
        sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
      };
    };
    "array-includes-3.1.3" = {
      name = "array-includes";
      packageName = "array-includes";
      version = "3.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz";
        sha512 = "gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==";
      };
    };
    "array-union-1.0.2" = {
      name = "array-union";
      packageName = "array-union";


@@ 1462,33 1381,6 @@ let
        sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
      };
    };
    "array.prototype.flat-1.2.4" = {
      name = "array.prototype.flat";
      packageName = "array.prototype.flat";
      version = "1.2.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz";
        sha512 = "4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==";
      };
    };
    "asn1-0.2.4" = {
      name = "asn1";
      packageName = "asn1";
      version = "0.2.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
        sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
      };
    };
    "assert-plus-1.0.0" = {
      name = "assert-plus";
      packageName = "assert-plus";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
      };
    };
    "astral-regex-2.0.0" = {
      name = "astral-regex";
      packageName = "astral-regex";


@@ 1498,24 1390,6 @@ let
        sha512 = "Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==";
      };
    };
    "async-foreach-0.1.3" = {
      name = "async-foreach";
      packageName = "async-foreach";
      version = "0.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz";
        sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
      };
    };
    "asynckit-0.4.0" = {
      name = "asynckit";
      packageName = "asynckit";
      version = "0.4.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
      };
    };
    "at-least-node-1.0.0" = {
      name = "at-least-node";
      packageName = "at-least-node";


@@ 1543,24 1417,6 @@ let
        sha512 = "XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==";
      };
    };
    "aws-sign2-0.7.0" = {
      name = "aws-sign2";
      packageName = "aws-sign2";
      version = "0.7.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
      };
    };
    "aws4-1.11.0" = {
      name = "aws4";
      packageName = "aws4";
      version = "1.11.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
        sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
      };
    };
    "babel-loader-8.2.2" = {
      name = "babel-loader";
      packageName = "babel-loader";


@@ 1624,15 1480,6 @@ let
        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
      };
    };
    "bcrypt-pbkdf-1.0.2" = {
      name = "bcrypt-pbkdf";
      packageName = "bcrypt-pbkdf";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
      };
    };
    "big.js-5.2.2" = {
      name = "big.js";
      packageName = "big.js";


@@ 1651,15 1498,6 @@ let
        sha512 = "jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==";
      };
    };
    "block-stream-0.0.9" = {
      name = "block-stream";
      packageName = "block-stream";
      version = "0.0.9";
      src = fetchurl {
        url = "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz";
        sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
      };
    };
    "bluebird-3.7.2" = {
      name = "bluebird";
      packageName = "bluebird";


@@ 1795,15 1633,6 @@ let
        sha512 = "P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==";
      };
    };
    "camelcase-2.1.1" = {
      name = "camelcase";
      packageName = "camelcase";
      version = "2.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz";
        sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
      };
    };
    "camelcase-5.3.1" = {
      name = "camelcase";
      packageName = "camelcase";


@@ 1822,15 1651,6 @@ let
        sha512 = "QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==";
      };
    };
    "camelcase-keys-2.1.0" = {
      name = "camelcase-keys";
      packageName = "camelcase-keys";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
        sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
      };
    };
    "caniuse-api-3.0.0" = {
      name = "caniuse-api";
      packageName = "caniuse-api";


@@ 1849,24 1669,6 @@ let
        sha512 = "UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==";
      };
    };
    "caseless-0.12.0" = {
      name = "caseless";
      packageName = "caseless";
      version = "0.12.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
        sha1 = "1b681c21ff84033c826543090689420d187151dc";
      };
    };
    "chalk-1.1.3" = {
      name = "chalk";
      packageName = "chalk";
      version = "1.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
      };
    };
    "chalk-2.4.2" = {
      name = "chalk";
      packageName = "chalk";


@@ 1939,15 1741,6 @@ let
        sha512 = "Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==";
      };
    };
    "cliui-5.0.0" = {
      name = "cliui";
      packageName = "cliui";
      version = "5.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz";
        sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==";
      };
    };
    "clone-deep-4.0.1" = {
      name = "clone-deep";
      packageName = "clone-deep";


@@ 1966,15 1759,6 @@ let
        sha512 = "q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==";
      };
    };
    "code-point-at-1.1.0" = {
      name = "code-point-at";
      packageName = "code-point-at";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
        sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
      };
    };
    "color-3.1.3" = {
      name = "color";
      packageName = "color";


@@ 2038,15 1822,6 @@ let
        sha512 = "MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==";
      };
    };
    "combined-stream-1.0.8" = {
      name = "combined-stream";
      packageName = "combined-stream";
      version = "1.0.8";
      src = fetchurl {
        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
      };
    };
    "commander-2.20.3" = {
      name = "commander";
      packageName = "commander";


@@ 2110,24 1885,6 @@ let
        sha512 = "gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==";
      };
    };
    "console-control-strings-1.1.0" = {
      name = "console-control-strings";
      packageName = "console-control-strings";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
        sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
      };
    };
    "contains-path-0.1.0" = {
      name = "contains-path";
      packageName = "contains-path";
      version = "0.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz";
        sha1 = "fe8cf184ff6670b6baef01a9d4861a5cbec4120a";
      };
    };
    "convert-source-map-1.7.0" = {
      name = "convert-source-map";
      packageName = "convert-source-map";


@@ 2191,15 1948,6 @@ let
        sha512 = "pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==";
      };
    };
    "cross-spawn-3.0.1" = {
      name = "cross-spawn";
      packageName = "cross-spawn";
      version = "3.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz";
        sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
      };
    };
    "cross-spawn-7.0.3" = {
      name = "cross-spawn";
      packageName = "cross-spawn";


@@ 2416,15 2164,6 @@ let
        sha512 = "wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==";
      };
    };
    "currently-unhandled-0.4.1" = {
      name = "currently-unhandled";
      packageName = "currently-unhandled";
      version = "0.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
        sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
      };
    };
    "cyclist-1.0.1" = {
      name = "cyclist";
      packageName = "cyclist";


@@ 2434,24 2173,6 @@ let
        sha1 = "596e9698fd0c80e12038c2b82d6eb1b35b6224d9";
      };
    };
    "dashdash-1.14.1" = {
      name = "dashdash";
      packageName = "dashdash";
      version = "1.14.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
      };
    };
    "debug-2.6.9" = {
      name = "debug";
      packageName = "debug";
      version = "2.6.9";
      src = fetchurl {
        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
      };
    };
    "debug-4.3.1" = {
      name = "debug";
      packageName = "debug";


@@ 2461,15 2182,6 @@ let
        sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==";
      };
    };
    "decamelize-1.2.0" = {
      name = "decamelize";
      packageName = "decamelize";
      version = "1.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
      };
    };
    "deep-is-0.1.3" = {
      name = "deep-is";
      packageName = "deep-is";


@@ 2497,15 2209,6 @@ let
        sha1 = "c98d9bcef75674188e110969151199e39b1fa693";
      };
    };
    "delayed-stream-1.0.0" = {
      name = "delayed-stream";
      packageName = "delayed-stream";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
      };
    };
    "delegate-3.2.0" = {
      name = "delegate";
      packageName = "delegate";


@@ 2515,15 2218,6 @@ let
        sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==";
      };
    };
    "delegates-1.0.0" = {
      name = "delegates";
      packageName = "delegates";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
        sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
      };
    };
    "detect-indent-5.0.0" = {
      name = "detect-indent";
      packageName = "detect-indent";


@@ 2569,15 2263,6 @@ let
        sha512 = "+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==";
      };
    };
    "doctrine-1.5.0" = {
      name = "doctrine";
      packageName = "doctrine";
      version = "1.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz";
        sha1 = "379dce730f6166f76cefa4e6707a159b02c5a6fa";
      };
    };
    "doctrine-3.0.0" = {
      name = "doctrine";
      packageName = "doctrine";


@@ 2641,15 2326,6 @@ let
        sha512 = "07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==";
      };
    };
    "ecc-jsbn-0.1.2" = {
      name = "ecc-jsbn";
      packageName = "ecc-jsbn";
      version = "0.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
      };
    };
    "electron-to-chromium-1.3.708" = {
      name = "electron-to-chromium";
      packageName = "electron-to-chromium";


@@ 2659,15 2335,6 @@ let
        sha512 = "+A8ggYZ5riOLMcVAuzHx6bforaPzaiLnW1QOMD2SlMYQVi7QQTyQ/WrlZoebIH9ikmgr+tLJGpNITFFCUiQcPw==";
      };
    };
    "emoji-regex-7.0.3" = {
      name = "emoji-regex";
      packageName = "emoji-regex";
      version = "7.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
        sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
      };
    };
    "emoji-regex-8.0.0" = {
      name = "emoji-regex";
      packageName = "emoji-regex";


@@ 2812,33 2479,6 @@ let
        sha512 = "oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==";
      };
    };
    "eslint-import-resolver-node-0.3.4" = {
      name = "eslint-import-resolver-node";
      packageName = "eslint-import-resolver-node";
      version = "0.3.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz";
        sha512 = "ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==";
      };
    };
    "eslint-module-utils-2.6.0" = {
      name = "eslint-module-utils";
      packageName = "eslint-module-utils";
      version = "2.6.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz";
        sha512 = "6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==";
      };
    };
    "eslint-plugin-import-2.22.1" = {
      name = "eslint-plugin-import";
      packageName = "eslint-plugin-import";
      version = "2.22.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz";
        sha512 = "8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==";
      };
    };
    "eslint-scope-5.1.1" = {
      name = "eslint-scope";
      packageName = "eslint-scope";


@@ 2956,24 2596,6 @@ let
        sha512 = "ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==";
      };
    };
    "extend-3.0.2" = {
      name = "extend";
      packageName = "extend";
      version = "3.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
      };
    };
    "extsprintf-1.3.0" = {
      name = "extsprintf";
      packageName = "extsprintf";
      version = "1.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
      };
    };
    "fast-deep-equal-3.1.3" = {
      name = "fast-deep-equal";
      packageName = "fast-deep-equal";


@@ 3073,24 2695,6 @@ let
        sha512 = "t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==";
      };
    };
    "find-up-1.1.2" = {
      name = "find-up";
      packageName = "find-up";
      version = "1.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz";
        sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
      };
    };
    "find-up-2.1.0" = {
      name = "find-up";
      packageName = "find-up";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz";
        sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
      };
    };
    "find-up-3.0.0" = {
      name = "find-up";
      packageName = "find-up";


@@ 3145,24 2749,6 @@ let
        sha512 = "3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==";
      };
    };
    "forever-agent-0.6.1" = {
      name = "forever-agent";
      packageName = "forever-agent";
      version = "0.6.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
      };
    };
    "form-data-2.3.3" = {
      name = "form-data";
      packageName = "form-data";
      version = "2.3.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
      };
    };
    "fraction.js-4.0.13" = {
      name = "fraction.js";
      packageName = "fraction.js";


@@ 3226,15 2812,6 @@ let
        sha512 = "xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==";
      };
    };
    "fstream-1.0.12" = {
      name = "fstream";
      packageName = "fstream";
      version = "1.0.12";
      src = fetchurl {
        url = "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz";
        sha512 = "WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==";
      };
    };
    "function-bind-1.1.1" = {
      name = "function-bind";
      packageName = "function-bind";


@@ 3253,24 2830,6 @@ let
        sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
      };
    };
    "gauge-2.7.4" = {
      name = "gauge";
      packageName = "gauge";
      version = "2.7.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
        sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
      };
    };
    "gaze-1.1.3" = {
      name = "gaze";
      packageName = "gaze";
      version = "1.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz";
        sha512 = "BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==";
      };
    };
    "gensync-1.0.0-beta.2" = {
      name = "gensync";
      packageName = "gensync";


@@ 3280,15 2839,6 @@ let
        sha512 = "3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==";
      };
    };
    "get-caller-file-2.0.5" = {
      name = "get-caller-file";
      packageName = "get-caller-file";
      version = "2.0.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
        sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
      };
    };
    "get-intrinsic-1.1.1" = {
      name = "get-intrinsic";
      packageName = "get-intrinsic";


@@ 3298,15 2848,6 @@ let
        sha512 = "kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==";
      };
    };
    "get-stdin-4.0.1" = {
      name = "get-stdin";
      packageName = "get-stdin";
      version = "4.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz";
        sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
      };
    };
    "get-stream-6.0.0" = {
      name = "get-stream";
      packageName = "get-stream";


@@ 3316,15 2857,6 @@ let
        sha512 = "A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==";
      };
    };
    "getpass-0.1.7" = {
      name = "getpass";
      packageName = "getpass";
      version = "0.1.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
      };
    };
    "glob-7.1.6" = {
      name = "glob";
      packageName = "glob";


@@ 3415,15 2947,6 @@ let
        sha1 = "fb2ccff9401f8600945dfada97440cca972b8680";
      };
    };
    "globule-1.3.2" = {
      name = "globule";
      packageName = "globule";
      version = "1.3.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz";
        sha512 = "7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==";
      };
    };
    "good-listener-1.2.2" = {
      name = "good-listener";
      packageName = "good-listener";


@@ 3442,24 2965,6 @@ let
        sha512 = "nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==";
      };
    };
    "har-schema-2.0.0" = {
      name = "har-schema";
      packageName = "har-schema";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
      };
    };
    "har-validator-5.1.5" = {
      name = "har-validator";
      packageName = "har-validator";
      version = "5.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
        sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
      };
    };
    "hard-source-webpack-plugin-0.13.1" = {
      name = "hard-source-webpack-plugin";
      packageName = "hard-source-webpack-plugin";


@@ 3478,15 2983,6 @@ let
        sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
      };
    };
    "has-ansi-2.0.0" = {
      name = "has-ansi";
      packageName = "has-ansi";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
      };
    };
    "has-bigints-1.0.1" = {
      name = "has-bigints";
      packageName = "has-bigints";


@@ 3523,15 3019,6 @@ let
        sha512 = "chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==";
      };
    };
    "has-unicode-2.0.1" = {
      name = "has-unicode";
      packageName = "has-unicode";
      version = "2.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
        sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
      };
    };
    "hex-color-regex-1.1.0" = {
      name = "hex-color-regex";
      packageName = "hex-color-regex";


@@ 3541,15 3028,6 @@ let
        sha512 = "l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==";
      };
    };
    "hosted-git-info-2.8.8" = {
      name = "hosted-git-info";
      packageName = "hosted-git-info";
      version = "2.8.8";
      src = fetchurl {
        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
        sha512 = "f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==";
      };
    };
    "hsl-regex-1.0.0" = {
      name = "hsl-regex";
      packageName = "hsl-regex";


@@ 3586,15 3064,6 @@ let
        sha512 = "1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==";
      };
    };
    "http-signature-1.2.0" = {
      name = "http-signature";
      packageName = "http-signature";
      version = "1.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
      };
    };
    "human-signals-2.1.0" = {
      name = "human-signals";
      packageName = "human-signals";


@@ 3676,24 3145,6 @@ let
        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
      };
    };
    "in-publish-2.0.1" = {
      name = "in-publish";
      packageName = "in-publish";
      version = "2.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz";
        sha512 = "oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==";
      };
    };
    "indent-string-2.1.0" = {
      name = "indent-string";
      packageName = "indent-string";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz";
        sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
      };
    };
    "indent-string-4.0.0" = {
      name = "indent-string";
      packageName = "indent-string";


@@ 3874,33 3325,6 @@ let
        sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
      };
    };
    "is-finite-1.1.0" = {
      name = "is-finite";
      packageName = "is-finite";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz";
        sha512 = "cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==";
      };
    };
    "is-fullwidth-code-point-1.0.0" = {
      name = "is-fullwidth-code-point";
      packageName = "is-fullwidth-code-point";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
      };
    };
    "is-fullwidth-code-point-2.0.0" = {
      name = "is-fullwidth-code-point";
      packageName = "is-fullwidth-code-point";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
      };
    };
    "is-fullwidth-code-point-3.0.0" = {
      name = "is-fullwidth-code-point";
      packageName = "is-fullwidth-code-point";


@@ 4045,24 3469,6 @@ let
        sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==";
      };
    };
    "is-typedarray-1.0.0" = {
      name = "is-typedarray";
      packageName = "is-typedarray";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
      };
    };
    "is-utf8-0.2.1" = {
      name = "is-utf8";
      packageName = "is-utf8";
      version = "0.2.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz";
        sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
      };
    };
    "isarray-1.0.0" = {
      name = "isarray";
      packageName = "isarray";


@@ 4090,15 3496,6 @@ let
        sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
      };
    };
    "isstream-0.1.2" = {
      name = "isstream";
      packageName = "isstream";
      version = "0.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
      };
    };
    "jest-worker-25.5.0" = {
      name = "jest-worker";
      packageName = "jest-worker";


@@ 4117,15 3514,6 @@ let
        sha512 = "KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==";
      };
    };
    "js-base64-2.6.4" = {
      name = "js-base64";
      packageName = "js-base64";
      version = "2.6.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz";
        sha512 = "pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==";
      };
    };
    "js-tokens-4.0.0" = {
      name = "js-tokens";
      packageName = "js-tokens";


@@ 4144,15 3532,6 @@ let
        sha512 = "okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==";
      };
    };
    "jsbn-0.1.1" = {
      name = "jsbn";
      packageName = "jsbn";
      version = "0.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
      };
    };
    "jsesc-0.5.0" = {
      name = "jsesc";
      packageName = "jsesc";


@@ 4189,15 3568,6 @@ let
        sha512 = "xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==";
      };
    };
    "json-schema-0.2.3" = {
      name = "json-schema";
      packageName = "json-schema";
      version = "0.2.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
      };
    };
    "json-schema-traverse-0.4.1" = {
      name = "json-schema-traverse";
      packageName = "json-schema-traverse";


@@ 4225,15 3595,6 @@ let
        sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
      };
    };
    "json-stringify-safe-5.0.1" = {
      name = "json-stringify-safe";
      packageName = "json-stringify-safe";
      version = "5.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
      };
    };
    "json5-1.0.1" = {
      name = "json5";
      packageName = "json5";


@@ 4261,15 3622,6 @@ let
        sha512 = "5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==";
      };
    };
    "jsprim-1.4.1" = {
      name = "jsprim";
      packageName = "jsprim";
      version = "1.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
      };
    };
    "kind-of-6.0.3" = {
      name = "kind-of";
      packageName = "kind-of";


@@ 4306,24 3658,6 @@ let
        sha1 = "1c00c743b433cd0a4e80758f7b64a57440d9ff00";
      };
    };
    "load-json-file-1.1.0" = {
      name = "load-json-file";
      packageName = "load-json-file";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz";
        sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
      };
    };
    "load-json-file-2.0.0" = {
      name = "load-json-file";
      packageName = "load-json-file";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz";
        sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
      };
    };
    "loader-runner-4.2.0" = {
      name = "loader-runner";
      packageName = "loader-runner";


@@ 4351,15 3685,6 @@ let
        sha512 = "rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==";
      };
    };
    "locate-path-2.0.0" = {
      name = "locate-path";
      packageName = "locate-path";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz";
        sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
      };
    };
    "locate-path-3.0.0" = {
      name = "locate-path";
      packageName = "locate-path";


@@ 4513,24 3838,6 @@ let
        sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
      };
    };
    "loud-rejection-1.6.0" = {
      name = "loud-rejection";
      packageName = "loud-rejection";
      version = "1.6.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz";
        sha1 = "5b46f80147edee578870f086d04821cf998e551f";
      };
    };
    "lru-cache-4.1.5" = {
      name = "lru-cache";
      packageName = "lru-cache";
      version = "4.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
        sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
      };
    };
    "lru-cache-5.1.1" = {
      name = "lru-cache";
      packageName = "lru-cache";


@@ 4576,15 3883,6 @@ let
        sha512 = "g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==";
      };
    };
    "map-obj-1.0.1" = {
      name = "map-obj";
      packageName = "map-obj";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz";
        sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
      };
    };
    "mdn-data-2.0.14" = {
      name = "mdn-data";
      packageName = "mdn-data";


@@ 4603,15 3901,6 @@ let
        sha512 = "iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==";
      };
    };
    "meow-3.7.0" = {
      name = "meow";
      packageName = "meow";
      version = "3.7.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz";
        sha1 = "72cb668b425228290abbfa856892587308a801fb";
      };
    };
    "merge-stream-2.0.0" = {
      name = "merge-stream";
      packageName = "merge-stream";


@@ 4783,15 4072,6 @@ let
        sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
      };
    };
    "ms-2.0.0" = {
      name = "ms";
      packageName = "ms";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
      };
    };
    "ms-2.1.2" = {
      name = "ms";
      packageName = "ms";


@@ 4801,15 4081,6 @@ let
        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
      };
    };
    "nan-2.14.2" = {
      name = "nan";
      packageName = "nan";
      version = "2.14.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz";
        sha512 = "M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==";
      };
    };
    "nanoid-3.1.22" = {
      name = "nanoid";
      packageName = "nanoid";


@@ 4846,15 4117,6 @@ let
        sha512 = "Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==";
      };
    };
    "node-gyp-3.8.0" = {
      name = "node-gyp";
      packageName = "node-gyp";
      version = "3.8.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz";
        sha512 = "3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==";
      };
    };
    "node-object-hash-1.4.2" = {
      name = "node-object-hash";
      packageName = "node-object-hash";


@@ 4873,33 4135,6 @@ let
        sha512 = "zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==";
      };
    };
    "node-sass-4.14.1" = {
      name = "node-sass";
      packageName = "node-sass";
      version = "4.14.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz";
        sha512 = "sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==";
      };
    };
    "nopt-3.0.6" = {
      name = "nopt";
      packageName = "nopt";
      version = "3.0.6";
      src = fetchurl {
        url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
        sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
      };
    };
    "normalize-package-data-2.5.0" = {
      name = "normalize-package-data";
      packageName = "normalize-package-data";
      version = "2.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
        sha512 = "/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==";
      };
    };
    "normalize-path-3.0.0" = {
      name = "normalize-path";
      packageName = "normalize-path";


@@ 4936,15 4171,6 @@ let
        sha512 = "S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==";
      };
    };
    "npmlog-4.1.2" = {
      name = "npmlog";
      packageName = "npmlog";
      version = "4.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
        sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
      };
    };
    "nth-check-1.0.2" = {
      name = "nth-check";
      packageName = "nth-check";


@@ 4963,24 4189,6 @@ let
        sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
      };
    };
    "number-is-nan-1.0.1" = {
      name = "number-is-nan";
      packageName = "number-is-nan";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
        sha1 = "097b602b53422a522c1afb8790318336941a011d";
      };
    };
    "oauth-sign-0.9.0" = {
      name = "oauth-sign";
      packageName = "oauth-sign";
      version = "0.9.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
      };
    };
    "object-assign-4.1.1" = {
      name = "object-assign";
      packageName = "object-assign";


@@ 5080,42 4288,6 @@ let
        sha512 = "74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==";
      };
    };
    "os-homedir-1.0.2" = {
      name = "os-homedir";
      packageName = "os-homedir";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
        sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
      };
    };
    "os-tmpdir-1.0.2" = {
      name = "os-tmpdir";
      packageName = "os-tmpdir";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
        sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
      };
    };
    "osenv-0.1.5" = {
      name = "osenv";
      packageName = "osenv";
      version = "0.1.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
        sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
      };
    };
    "p-limit-1.3.0" = {
      name = "p-limit";
      packageName = "p-limit";
      version = "1.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz";
        sha512 = "vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==";
      };
    };
    "p-limit-2.3.0" = {
      name = "p-limit";
      packageName = "p-limit";


@@ 5134,15 4306,6 @@ let
        sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==";
      };
    };
    "p-locate-2.0.0" = {
      name = "p-locate";
      packageName = "p-locate";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz";
        sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
      };
    };
    "p-locate-3.0.0" = {
      name = "p-locate";
      packageName = "p-locate";


@@ 5179,15 4342,6 @@ let
        sha512 = "/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==";
      };
    };
    "p-try-1.0.0" = {
      name = "p-try";
      packageName = "p-try";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz";
        sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
      };
    };
    "p-try-2.2.0" = {
      name = "p-try";
      packageName = "p-try";


@@ 5224,15 4378,6 @@ let
        sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
      };
    };
    "parse-json-2.2.0" = {
      name = "parse-json";
      packageName = "parse-json";
      version = "2.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz";
        sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
      };
    };
    "parse-json-4.0.0" = {
      name = "parse-json";
      packageName = "parse-json";


@@ 5260,15 4405,6 @@ let
        sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
      };
    };
    "path-exists-2.1.0" = {
      name = "path-exists";
      packageName = "path-exists";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz";
        sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
      };
    };
    "path-exists-3.0.0" = {
      name = "path-exists";
      packageName = "path-exists";


@@ 5314,24 4450,6 @@ let
        sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==";
      };
    };
    "path-type-1.1.0" = {
      name = "path-type";
      packageName = "path-type";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz";
        sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
      };
    };
    "path-type-2.0.0" = {
      name = "path-type";
      packageName = "path-type";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz";
        sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
      };
    };
    "path-type-3.0.0" = {
      name = "path-type";
      packageName = "path-type";


@@ 5350,15 4468,6 @@ let
        sha512 = "gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==";
      };
    };
    "performance-now-2.1.0" = {
      name = "performance-now";
      packageName = "performance-now";
      version = "2.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
      };
    };
    "picomatch-2.2.2" = {
      name = "picomatch";
      packageName = "picomatch";


@@ 5368,15 4477,6 @@ let
        sha512 = "q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==";
      };
    };
    "pify-2.3.0" = {
      name = "pify";
      packageName = "pify";
      version = "2.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
        sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
      };
    };
    "pify-3.0.0" = {
      name = "pify";
      packageName = "pify";


@@ 5395,33 4495,6 @@ let
        sha512 = "uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==";
      };
    };
    "pinkie-2.0.4" = {
      name = "pinkie";
      packageName = "pinkie";
      version = "2.0.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
        sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
      };
    };
    "pinkie-promise-2.0.1" = {
      name = "pinkie-promise";
      packageName = "pinkie-promise";
      version = "2.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
        sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
      };
    };
    "pkg-dir-2.0.0" = {
      name = "pkg-dir";
      packageName = "pkg-dir";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz";
        sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
      };
    };
    "pkg-dir-3.0.0" = {
      name = "pkg-dir";
      packageName = "pkg-dir";


@@ 6151,31 5224,13 @@ let
        sha512 = "7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==";
      };
    };
    "promise-inflight-1.0.1" = {
      name = "promise-inflight";
      packageName = "promise-inflight";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz";
        sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
      };
    };
    "pseudomap-1.0.2" = {
      name = "pseudomap";
      packageName = "pseudomap";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
      };
    };
    "psl-1.8.0" = {
      name = "psl";
      packageName = "psl";
      version = "1.8.0";
    "promise-inflight-1.0.1" = {
      name = "promise-inflight";
      packageName = "promise-inflight";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
        sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
        url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz";
        sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
      };
    };
    "pump-2.0.1" = {


@@ 6232,15 5287,6 @@ let
        sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
      };
    };
    "qs-6.5.2" = {
      name = "qs";
      packageName = "qs";
      version = "6.5.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
      };
    };
    "queue-microtask-1.2.3" = {
      name = "queue-microtask";
      packageName = "queue-microtask";


@@ 6268,42 5314,6 @@ let
        sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
      };
    };
    "read-pkg-1.1.0" = {
      name = "read-pkg";
      packageName = "read-pkg";
      version = "1.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz";
        sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
      };
    };
    "read-pkg-2.0.0" = {
      name = "read-pkg";
      packageName = "read-pkg";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz";
        sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
      };
    };
    "read-pkg-up-1.0.1" = {
      name = "read-pkg-up";
      packageName = "read-pkg-up";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
        sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
      };
    };
    "read-pkg-up-2.0.0" = {
      name = "read-pkg-up";
      packageName = "read-pkg-up";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
        sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
      };
    };
    "readable-stream-2.3.7" = {
      name = "readable-stream";
      packageName = "readable-stream";


@@ 6331,15 5341,6 @@ let
        sha512 = "ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==";
      };
    };
    "redent-1.0.0" = {
      name = "redent";
      packageName = "redent";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz";
        sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
      };
    };
    "reduce-css-calc-2.1.8" = {
      name = "reduce-css-calc";
      packageName = "reduce-css-calc";


@@ 6421,33 5422,6 @@ let
        sha512 = "ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==";
      };
    };
    "repeating-2.0.1" = {
      name = "repeating";
      packageName = "repeating";
      version = "2.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz";
        sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
      };
    };
    "request-2.88.2" = {
      name = "request";
      packageName = "request";
      version = "2.88.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
        sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
      };
    };
    "require-directory-2.1.1" = {
      name = "require-directory";
      packageName = "require-directory";
      version = "2.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
      };
    };
    "require-from-string-2.0.2" = {
      name = "require-from-string";
      packageName = "require-from-string";


@@ 6457,15 5431,6 @@ let
        sha512 = "Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==";
      };
    };
    "require-main-filename-2.0.0" = {
      name = "require-main-filename";
      packageName = "require-main-filename";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz";
        sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==";
      };
    };
    "resolve-1.20.0" = {
      name = "resolve";
      packageName = "resolve";


@@ 6583,33 5548,6 @@ let
        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
      };
    };
    "safer-buffer-2.1.2" = {
      name = "safer-buffer";
      packageName = "safer-buffer";
      version = "2.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
      };
    };
    "sass-graph-2.2.5" = {
      name = "sass-graph";
      packageName = "sass-graph";
      version = "2.2.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz";
        sha512 = "VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==";
      };
    };
    "sass-loader-8.0.2" = {
      name = "sass-loader";
      packageName = "sass-loader";
      version = "8.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz";
        sha512 = "7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==";
      };
    };
    "sax-1.2.4" = {
      name = "sax";
      packageName = "sax";


@@ 6646,15 5584,6 @@ let
        sha512 = "6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==";
      };
    };
    "scss-tokenizer-0.2.3" = {
      name = "scss-tokenizer";
      packageName = "scss-tokenizer";
      version = "0.2.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
        sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
      };
    };
    "select-1.1.2" = {
      name = "select";
      packageName = "select";


@@ 6664,15 5593,6 @@ let
        sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
      };
    };
    "semver-5.3.0" = {
      name = "semver";
      packageName = "semver";
      version = "5.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
        sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
      };
    };
    "semver-5.7.1" = {
      name = "semver";
      packageName = "semver";


@@ 6727,15 5647,6 @@ let
        sha512 = "SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==";
      };
    };
    "set-blocking-2.0.0" = {
      name = "set-blocking";
      packageName = "set-blocking";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
        sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
      };
    };
    "shallow-clone-3.0.1" = {
      name = "shallow-clone";
      packageName = "shallow-clone";


@@ 6817,15 5728,6 @@ let
        sha512 = "qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==";
      };
    };
    "source-map-0.4.4" = {
      name = "source-map";
      packageName = "source-map";
      version = "0.4.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz";
        sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
      };
    };
    "source-map-0.5.7" = {
      name = "source-map";
      packageName = "source-map";


@@ 6862,42 5764,6 @@ let
        sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
      };
    };
    "spdx-correct-3.1.1" = {
      name = "spdx-correct";
      packageName = "spdx-correct";
      version = "3.1.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz";
        sha512 = "cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==";
      };
    };
    "spdx-exceptions-2.3.0" = {
      name = "spdx-exceptions";
      packageName = "spdx-exceptions";
      version = "2.3.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz";
        sha512 = "/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==";
      };
    };
    "spdx-expression-parse-3.0.1" = {
      name = "spdx-expression-parse";
      packageName = "spdx-expression-parse";
      version = "3.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz";
        sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==";
      };
    };
    "spdx-license-ids-3.0.7" = {
      name = "spdx-license-ids";
      packageName = "spdx-license-ids";
      version = "3.0.7";
      src = fetchurl {
        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz";
        sha512 = "U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==";
      };
    };
    "sprintf-js-1.0.3" = {
      name = "sprintf-js";
      packageName = "sprintf-js";


@@ 6907,15 5773,6 @@ let
        sha1 = "04e6926f662895354f3dd015203633b857297e2c";
      };
    };
    "sshpk-1.16.1" = {
      name = "sshpk";
      packageName = "sshpk";
      version = "1.16.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
      };
    };
    "ssri-6.0.1" = {
      name = "ssri";
      packageName = "ssri";


@@ 6952,15 5809,6 @@ let
        sha512 = "ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==";
      };
    };
    "stdout-stream-1.4.1" = {
      name = "stdout-stream";
      packageName = "stdout-stream";
      version = "1.4.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz";
        sha512 = "j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==";
      };
    };
    "stream-each-1.2.3" = {
      name = "stream-each";
      packageName = "stream-each";


@@ 6979,24 5827,6 @@ let
        sha512 = "AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==";
      };
    };
    "string-width-1.0.2" = {
      name = "string-width";
      packageName = "string-width";
      version = "1.0.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
      };
    };
    "string-width-3.1.0" = {
      name = "string-width";
      packageName = "string-width";
      version = "3.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
        sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
      };
    };
    "string-width-4.2.2" = {
      name = "string-width";
      packageName = "string-width";


@@ 7033,24 5863,6 @@ let
        sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
      };
    };
    "strip-ansi-3.0.1" = {
      name = "strip-ansi";
      packageName = "strip-ansi";
      version = "3.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
      };
    };
    "strip-ansi-5.2.0" = {
      name = "strip-ansi";
      packageName = "strip-ansi";
      version = "5.2.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
        sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
      };
    };
    "strip-ansi-6.0.0" = {
      name = "strip-ansi";
      packageName = "strip-ansi";


@@ 7060,24 5872,6 @@ let
        sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
      };
    };
    "strip-bom-2.0.0" = {
      name = "strip-bom";
      packageName = "strip-bom";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz";
        sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
      };
    };
    "strip-bom-3.0.0" = {
      name = "strip-bom";
      packageName = "strip-bom";
      version = "3.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz";
        sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
      };
    };
    "strip-final-newline-2.0.0" = {
      name = "strip-final-newline";
      packageName = "strip-final-newline";


@@ 7087,15 5881,6 @@ let
        sha512 = "BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==";
      };
    };
    "strip-indent-1.0.1" = {
      name = "strip-indent";
      packageName = "strip-indent";
      version = "1.0.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz";
        sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
      };
    };
    "strip-json-comments-3.1.1" = {
      name = "strip-json-comments";
      packageName = "strip-json-comments";


@@ 7114,15 5899,6 @@ let
        sha512 = "7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==";
      };
    };
    "supports-color-2.0.0" = {
      name = "supports-color";
      packageName = "supports-color";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
      };
    };
    "supports-color-5.5.0" = {
      name = "supports-color";
      packageName = "supports-color";


@@ 7195,15 5971,6 @@ let
        sha512 = "FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==";
      };
    };
    "tar-2.2.2" = {
      name = "tar";
      packageName = "tar";
      version = "2.2.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz";
        sha512 = "FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==";
      };
    };
    "tar-6.1.0" = {
      name = "tar";
      packageName = "tar";


@@ 7303,42 6070,6 @@ let
        sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
      };
    };
    "tough-cookie-2.5.0" = {
      name = "tough-cookie";
      packageName = "tough-cookie";
      version = "2.5.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
      };
    };
    "trim-newlines-1.0.0" = {
      name = "trim-newlines";
      packageName = "trim-newlines";
      version = "1.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz";
        sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
      };
    };
    "true-case-path-1.0.3" = {
      name = "true-case-path";
      packageName = "true-case-path";
      version = "1.0.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz";
        sha512 = "m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==";
      };
    };
    "tsconfig-paths-3.9.0" = {
      name = "tsconfig-paths";
      packageName = "tsconfig-paths";
      version = "3.9.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz";
        sha512 = "dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==";
      };
    };
    "tslib-1.14.1" = {
      name = "tslib";
      packageName = "tslib";


@@ 7348,24 6079,6 @@ let
        sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==";
      };
    };
    "tunnel-agent-0.6.0" = {
      name = "tunnel-agent";
      packageName = "tunnel-agent";
      version = "0.6.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
      };
    };
    "tweetnacl-0.14.5" = {
      name = "tweetnacl";
      packageName = "tweetnacl";
      version = "0.14.5";
      src = fetchurl {
        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
      };
    };
    "type-check-0.4.0" = {
      name = "type-check";
      packageName = "type-check";


@@ 7546,15 6259,6 @@ let
        sha512 = "l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==";
      };
    };
    "validate-npm-package-license-3.0.4" = {
      name = "validate-npm-package-license";
      packageName = "validate-npm-package-license";
      version = "3.0.4";
      src = fetchurl {
        url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
        sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==";
      };
    };
    "vendors-1.0.4" = {
      name = "vendors";
      packageName = "vendors";


@@ 7564,15 6268,6 @@ let
        sha512 = "/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==";
      };
    };
    "verror-1.10.0" = {
      name = "verror";
      packageName = "verror";
      version = "1.10.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
      };
    };
    "watchpack-2.1.1" = {
      name = "watchpack";
      packageName = "watchpack";


@@ 7636,15 6331,6 @@ let
        sha512 = "bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==";
      };
    };
    "which-1.3.1" = {
      name = "which";
      packageName = "which";
      version = "1.3.1";
      src = fetchurl {
        url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
        sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
      };
    };
    "which-2.0.2" = {
      name = "which";
      packageName = "which";


@@ 7663,24 6349,6 @@ let
        sha512 = "bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==";
      };
    };
    "which-module-2.0.0" = {
      name = "which-module";
      packageName = "which-module";
      version = "2.0.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz";
        sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
      };
    };
    "wide-align-1.1.3" = {
      name = "wide-align";
      packageName = "wide-align";
      version = "1.1.3";
      src = fetchurl {
        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
      };
    };
    "wildcard-2.0.0" = {
      name = "wildcard";
      packageName = "wildcard";


@@ 7699,15 6367,6 @@ let
        sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
      };
    };
    "wrap-ansi-5.1.0" = {
      name = "wrap-ansi";
      packageName = "wrap-ansi";
      version = "5.1.0";
      src = fetchurl {
        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
        sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==";
      };
    };
    "wrappy-1.0.2" = {
      name = "wrappy";
      packageName = "wrappy";


@@ 7753,15 6412,6 @@ let
        sha512 = "wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==";
      };
    };
    "yallist-2.1.2" = {
      name = "yallist";
      packageName = "yallist";
      version = "2.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
        sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
      };
    };
    "yallist-3.1.1" = {
      name = "yallist";
      packageName = "yallist";


@@ 7789,24 6439,6 @@ let
        sha512 = "r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==";
      };
    };
    "yargs-13.3.2" = {
      name = "yargs";
      packageName = "yargs";
      version = "13.3.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz";
        sha512 = "AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==";
      };
    };
    "yargs-parser-13.1.2" = {
      name = "yargs-parser";
      packageName = "yargs-parser";
      version = "13.1.2";
      src = fetchurl {
        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz";
        sha512 = "3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==";
      };
    };
    "yocto-queue-0.1.0" = {
      name = "yocto-queue";
      packageName = "yocto-queue";


@@ 7943,7 6575,6 @@ let
      sources."@types/eslint-scope-3.7.0"
      sources."@types/estree-0.0.46"
      sources."@types/json-schema-7.0.7"
      sources."@types/json5-0.0.29"
      sources."@types/node-14.14.37"
      sources."@types/parse-json-4.0.0"
      sources."@types/q-1.5.4"


@@ 7967,7 6598,6 @@ let
      sources."@webpack-cli/serve-1.3.1"
      sources."@xtuc/ieee754-1.2.0"
      sources."@xtuc/long-4.2.2"
      sources."abbrev-1.1.1"
      sources."acorn-7.4.1"
      sources."acorn-jsx-5.3.1"
      sources."acorn-node-1.8.2"


@@ 7981,28 6611,16 @@ let
      sources."ajv-errors-1.0.1"
      sources."ajv-keywords-3.5.2"
      sources."alphanum-sort-1.0.2"
      sources."amdefine-1.0.1"
      sources."ansi-colors-4.1.1"
      sources."ansi-regex-2.1.1"
      sources."ansi-styles-3.2.1"
      sources."anymatch-3.1.1"
      sources."aproba-1.2.0"
      sources."are-we-there-yet-1.1.5"
      sources."argparse-1.0.10"
      sources."array-find-index-1.0.2"
      sources."array-includes-3.1.3"
      sources."array-union-1.0.2"
      sources."array-uniq-1.0.3"
      sources."array.prototype.flat-1.2.4"
      sources."asn1-0.2.4"
      sources."assert-plus-1.0.0"
      sources."astral-regex-2.0.0"
      sources."async-foreach-0.1.3"
      sources."asynckit-0.4.0"
      sources."at-least-node-1.0.0"
      sources."autoprefixer-10.2.5"
      sources."aws-sign2-0.7.0"
      sources."aws4-1.11.0"
      sources."babel-loader-8.2.2"
      sources."babel-plugin-dynamic-import-node-2.3.3"
      sources."babel-plugin-polyfill-corejs2-0.1.10"


@@ 8010,10 6628,8 @@ let
      sources."babel-plugin-polyfill-regenerator-0.1.6"
      sources."babel-plugin-prismjs-2.0.1"
      sources."balanced-match-1.0.0"
      sources."bcrypt-pbkdf-1.0.2"
      sources."big.js-5.2.2"
      sources."binary-extensions-2.2.0"
      sources."block-stream-0.0.9"
      sources."bluebird-3.7.2"
      sources."boolbase-1.0.0"
      sources."brace-expansion-1.1.11"


@@ 8028,14 6644,8 @@ let
      sources."callsites-2.0.0"
      sources."camelcase-5.3.1"
      sources."camelcase-css-2.0.1"
      (sources."camelcase-keys-2.1.0" // {
        dependencies = [
          sources."camelcase-2.1.1"
        ];
      })
      sources."caniuse-api-3.0.0"
      sources."caniuse-lite-1.0.30001207"
      sources."caseless-0.12.0"
      sources."chalk-2.4.2"
      (sources."chokidar-3.5.1" // {
        dependencies = [


@@ 8046,30 6656,18 @@ let
      sources."chrome-trace-event-1.0.2"
      sources."clean-stack-2.2.0"
      sources."clipboard-2.0.8"
      (sources."cliui-5.0.0" // {
        dependencies = [
          sources."ansi-regex-4.1.0"
          sources."is-fullwidth-code-point-2.0.0"
          sources."string-width-3.1.0"
          sources."strip-ansi-5.2.0"
        ];
      })
      sources."clone-deep-4.0.1"
      sources."coa-2.0.2"
      sources."code-point-at-1.1.0"
      sources."color-3.1.3"
      sources."color-convert-1.9.3"
      sources."color-name-1.1.3"
      sources."color-string-1.5.5"
      sources."colorette-1.2.2"
      sources."combined-stream-1.0.8"
      sources."commander-6.2.1"
      sources."commondir-1.0.1"
      sources."concat-map-0.0.1"
      sources."concat-stream-1.6.2"
      sources."confusing-browser-globals-1.0.10"
      sources."console-control-strings-1.1.0"
      sources."contains-path-0.1.0"
      sources."convert-source-map-1.7.0"
      sources."copy-concurrently-1.0.5"
      (sources."copy-webpack-plugin-5.1.2" // {


@@ 8093,12 6691,6 @@ let
      })
      sources."core-util-is-1.0.2"
      sources."cosmiconfig-5.2.1"
      (sources."cross-spawn-3.0.1" // {
        dependencies = [
          sources."lru-cache-4.1.5"
          sources."yallist-2.1.2"
        ];
      })
      (sources."css-blank-pseudo-0.1.4" // {
        dependencies = [
          sources."postcss-7.0.35"


@@ 8195,17 6787,12 @@ let
          sources."source-map-0.6.1"
        ];
      })
      sources."currently-unhandled-0.4.1"
      sources."cyclist-1.0.1"
      sources."dashdash-1.14.1"
      sources."debug-4.3.1"
      sources."decamelize-1.2.0"
      sources."deep-is-0.1.3"
      sources."define-properties-1.1.3"
      sources."defined-1.0.0"
      sources."delayed-stream-1.0.0"
      sources."delegate-3.2.0"
      sources."delegates-1.0.0"
      sources."detect-indent-5.0.0"
      sources."detective-5.2.0"
      sources."didyoumean-1.2.1"


@@ 8221,9 6808,7 @@ let
      sources."domutils-1.7.0"
      sources."dot-prop-5.3.0"
      sources."duplexify-3.7.1"
      sources."ecc-jsbn-0.1.2"
      sources."electron-to-chromium-1.3.708"
      sources."emoji-regex-7.0.3"
      sources."emojis-list-3.0.0"
      sources."end-of-stream-1.4.4"
      (sources."enhanced-resolve-5.7.0" // {


@@ 8266,45 6851,6 @@ let
      })
      sources."eslint-config-airbnb-base-14.2.1"
      sources."eslint-config-prettier-8.1.0"
      (sources."eslint-import-resolver-node-0.3.4" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."ms-2.0.0"
        ];
      })
      (sources."eslint-module-utils-2.6.0" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."find-up-2.1.0"
          sources."locate-path-2.0.0"
          sources."ms-2.0.0"
          sources."p-limit-1.3.0"
          sources."p-locate-2.0.0"
          sources."p-try-1.0.0"
          sources."path-exists-3.0.0"
          sources."pkg-dir-2.0.0"
        ];
      })
      (sources."eslint-plugin-import-2.22.1" // {
        dependencies = [
          sources."debug-2.6.9"
          sources."doctrine-1.5.0"
          sources."find-up-2.1.0"
          sources."load-json-file-2.0.0"
          sources."locate-path-2.0.0"
          sources."ms-2.0.0"
          sources."p-limit-1.3.0"
          sources."p-locate-2.0.0"
          sources."p-try-1.0.0"
          sources."parse-json-2.2.0"
          sources."path-exists-3.0.0"
          sources."path-type-2.0.0"
          sources."pify-2.3.0"
          sources."read-pkg-2.0.0"
          sources."read-pkg-up-2.0.0"
          sources."strip-bom-3.0.0"
        ];
      })
      sources."eslint-scope-5.1.1"
      (sources."eslint-utils-2.1.0" // {
        dependencies = [


@@ 8337,8 6883,6 @@ let
          sources."which-2.0.2"
        ];
      })
      sources."extend-3.0.2"
      sources."extsprintf-1.3.0"
      sources."fast-deep-equal-3.1.3"
      (sources."fast-glob-3.2.5" // {
        dependencies = [


@@ 8362,8 6906,6 @@ let
      sources."flatted-3.1.1"
      sources."flatten-1.0.3"
      sources."flush-write-stream-1.1.1"
      sources."forever-agent-0.6.1"
      sources."form-data-2.3.3"
      sources."fraction.js-4.0.13"
      sources."from2-2.3.0"
      sources."fs-extra-9.1.0"


@@ 8371,17 6913,11 @@ let
      sources."fs-write-stream-atomic-1.0.10"
      sources."fs.realpath-1.0.0"
      sources."fsevents-2.3.2"
      sources."fstream-1.0.12"
      sources."function-bind-1.1.1"
      sources."functional-red-black-tree-1.0.1"
      sources."gauge-2.7.4"
      sources."gaze-1.1.3"
      sources."gensync-1.0.0-beta.2"
      sources."get-caller-file-2.0.5"
      sources."get-intrinsic-1.1.1"
      sources."get-stdin-4.0.1"
      sources."get-stream-6.0.0"
      sources."getpass-0.1.7"
      sources."glob-7.1.6"
      (sources."glob-base-0.3.0" // {
        dependencies = [


@@ 8398,11 6934,8 @@ let
      sources."glob-to-regexp-0.4.1"
      sources."globals-11.12.0"
      sources."globby-7.1.1"
      sources."globule-1.3.2"
      sources."good-listener-1.2.2"
      sources."graceful-fs-4.2.6"
      sources."har-schema-2.0.0"
      sources."har-validator-5.1.5"
      (sources."hard-source-webpack-plugin-0.13.1" // {
        dependencies = [
          sources."find-cache-dir-2.1.0"


@@ 8417,18 6950,14 @@ let
        ];
      })
      sources."has-1.0.3"
      sources."has-ansi-2.0.0"
      sources."has-bigints-1.0.1"
      sources."has-flag-3.0.0"
      sources."has-symbols-1.0.2"
      sources."has-unicode-2.0.1"
      sources."hex-color-regex-1.1.0"
      sources."hosted-git-info-2.8.8"
      sources."hsl-regex-1.0.0"
      sources."hsla-regex-1.0.0"
      sources."html-comment-regex-1.1.2"
      sources."html-tags-3.1.0"
      sources."http-signature-1.2.0"
      sources."human-signals-2.1.0"
      (sources."icss-utils-4.1.1" // {
        dependencies = [


@@ 8442,8 6971,6 @@ let
      sources."import-fresh-2.0.0"
      sources."import-local-3.0.2"
      sources."imurmurhash-0.1.4"
      sources."in-publish-2.0.1"
      sources."indent-string-2.1.0"
      sources."indexes-of-1.0.1"
      sources."infer-owner-1.0.4"
      sources."inflight-1.0.6"


@@ 8461,8 6988,6 @@ let
      sources."is-directory-0.3.1"
      sources."is-dotfile-1.0.3"
      sources."is-extglob-2.1.1"
      sources."is-finite-1.1.0"
      sources."is-fullwidth-code-point-1.0.0"
      sources."is-glob-4.0.1"
      sources."is-negative-zero-2.0.1"
      sources."is-number-7.0.0"


@@ 8476,42 7001,28 @@ let
      sources."is-string-1.0.5"
      sources."is-svg-3.0.0"
      sources."is-symbol-1.0.3"
      sources."is-typedarray-1.0.0"
      sources."is-utf8-0.2.1"
      sources."isarray-1.0.0"
      sources."isexe-2.0.0"
      sources."isobject-3.0.1"
      sources."isstream-0.1.2"
      (sources."jest-worker-26.6.2" // {
        dependencies = [
          sources."has-flag-4.0.0"
          sources."supports-color-7.2.0"
        ];
      })
      sources."js-base64-2.6.4"
      sources."js-tokens-4.0.0"
      sources."js-yaml-3.14.1"
      sources."jsbn-0.1.1"
      sources."jsesc-2.5.2"
      sources."json-parse-better-errors-1.0.2"
      sources."json-parse-even-better-errors-2.3.1"
      sources."json-schema-0.2.3"
      sources."json-schema-traverse-0.4.1"
      sources."json-stable-stringify-without-jsonify-1.0.1"
      sources."json-stringify-safe-5.0.1"
      sources."json5-2.2.0"
      sources."jsonfile-6.1.0"
      sources."jsprim-1.4.1"
      sources."kind-of-6.0.3"
      sources."klona-2.0.4"
      sources."levn-0.4.1"
      sources."lines-and-columns-1.1.6"
      (sources."load-json-file-1.1.0" // {
        dependencies = [
          sources."parse-json-2.2.0"
          sources."pify-2.3.0"
        ];
      })
      sources."loader-runner-4.2.0"
      (sources."loader-utils-1.4.0" // {
        dependencies = [


@@ 8534,12 7045,9 @@ let
      sources."lodash.topath-4.5.2"
      sources."lodash.truncate-4.4.2"
      sources."lodash.uniq-4.5.0"
      sources."loud-rejection-1.6.0"
      sources."lru-cache-5.1.1"
      sources."make-dir-3.1.0"
      sources."map-obj-1.0.1"
      sources."mdn-data-2.0.4"
      sources."meow-3.7.0"
      sources."merge-stream-2.0.0"
      sources."merge2-1.4.1"
      sources."micromatch-4.0.2"


@@ 8572,40 7080,18 @@ let
      sources."modern-normalize-1.0.0"
      sources."move-concurrently-1.0.1"
      sources."ms-2.1.2"
      sources."nan-2.14.2"
      sources."nanoid-3.1.22"
      sources."natural-compare-1.4.0"
      sources."neo-async-2.6.2"
      sources."node-emoji-1.10.0"
      (sources."node-gyp-3.8.0" // {
        dependencies = [
          sources."semver-5.3.0"
        ];
      })
      sources."node-object-hash-1.4.2"
      sources."node-releases-1.1.71"
      (sources."node-sass-4.14.1" // {
        dependencies = [
          sources."ansi-styles-2.2.1"
          sources."chalk-1.1.3"
          sources."supports-color-2.0.0"
        ];
      })
      sources."nopt-3.0.6"
      (sources."normalize-package-data-2.5.0" // {
        dependencies = [
          sources."semver-5.7.1"
        ];
      })
      sources."normalize-path-3.0.0"
      sources."normalize-range-0.1.2"
      sources."normalize-url-3.3.0"
      sources."npm-run-path-4.0.1"
      sources."npmlog-4.1.2"
      sources."nth-check-1.0.2"
      sources."num2fraction-1.2.2"
      sources."number-is-nan-1.0.1"
      sources."oauth-sign-0.9.0"
      sources."object-assign-4.1.1"
      sources."object-hash-2.1.1"
      sources."object-inspect-1.9.0"


@@ 8617,9 7103,6 @@ let
      sources."once-1.4.0"
      sources."onetime-5.1.2"
      sources."optionator-0.9.1"
      sources."os-homedir-1.0.2"
      sources."os-tmpdir-1.0.2"
      sources."osenv-0.1.5"
      sources."p-limit-2.3.0"
      sources."p-locate-4.1.0"
      sources."p-map-4.0.0"


@@ 8643,11 7126,8 @@ let
      sources."path-key-3.1.1"
      sources."path-parse-1.0.6"
      sources."path-type-3.0.0"
      sources."performance-now-2.1.0"
      sources."picomatch-2.2.2"
      sources."pify-3.0.0"
      sources."pinkie-2.0.4"
      sources."pinkie-promise-2.0.1"
      sources."pkg-dir-4.2.0"
      (sources."postcss-8.2.9" // {
        dependencies = [


@@ 9139,8 7619,6 @@ let
      sources."process-nextick-args-2.0.1"
      sources."progress-2.0.3"
      sources."promise-inflight-1.0.1"
      sources."pseudomap-1.0.2"
      sources."psl-1.8.0"
      sources."pump-3.0.0"
      (sources."pumpify-1.5.1" // {
        dependencies = [


@@ 9150,26 7628,12 @@ let
      sources."punycode-2.1.1"
      sources."purgecss-3.1.3"
      sources."q-1.5.1"
      sources."qs-6.5.2"
      sources."queue-microtask-1.2.3"
      sources."quick-lru-5.1.1"
      sources."randombytes-2.1.0"
      (sources."read-pkg-1.1.0" // {
        dependencies = [
          sources."path-type-1.1.0"
          sources."pify-2.3.0"
        ];
      })
      (sources."read-pkg-up-1.0.1" // {
        dependencies = [
          sources."find-up-1.1.2"
          sources."path-exists-2.1.0"
        ];
      })
      sources."readable-stream-2.3.7"
      sources."readdirp-3.5.0"
      sources."rechoir-0.7.0"
      sources."redent-1.0.0"
      (sources."reduce-css-calc-2.1.8" // {
        dependencies = [
          sources."postcss-value-parser-3.3.1"


@@ 9187,11 7651,7 @@ let
          sources."jsesc-0.5.0"
        ];
      })
      sources."repeating-2.0.1"
      sources."request-2.88.2"
      sources."require-directory-2.1.1"
      sources."require-from-string-2.0.2"
      sources."require-main-filename-2.0.0"
      sources."resolve-1.20.0"
      (sources."resolve-cwd-3.0.0" // {
        dependencies = [


@@ 9206,20 7666,11 @@ let
      sources."run-parallel-1.2.0"
      sources."run-queue-1.0.3"
      sources."safe-buffer-5.1.2"
      sources."safer-buffer-2.1.2"
      sources."sass-graph-2.2.5"
      sources."sass-loader-8.0.2"
      sources."sax-1.2.4"
      sources."schema-utils-2.7.1"
      (sources."scss-tokenizer-0.2.3" // {
        dependencies = [
          sources."source-map-0.4.4"
        ];
      })
      sources."select-1.1.2"
      sources."semver-6.3.0"
      sources."serialize-javascript-4.0.0"
      sources."set-blocking-2.0.0"
      sources."shallow-clone-3.0.1"
      sources."shebang-command-2.0.0"
      sources."shebang-regex-3.0.0"


@@ 9246,25 7697,15 @@ let
          sources."source-map-0.6.1"
        ];
      })
      sources."spdx-correct-3.1.1"
      sources."spdx-exceptions-2.3.0"
      sources."spdx-expression-parse-3.0.1"
      sources."spdx-license-ids-3.0.7"
      sources."sprintf-js-1.0.3"
      sources."sshpk-1.16.1"
      sources."ssri-6.0.1"
      sources."stable-0.1.8"
      sources."stdout-stream-1.4.1"
      sources."stream-each-1.2.3"
      sources."stream-shift-1.0.1"
      sources."string-width-1.0.2"
      sources."string.prototype.trimend-1.0.4"
      sources."string.prototype.trimstart-1.0.4"
      sources."string_decoder-1.1.1"
      sources."strip-ansi-3.0.1"
      sources."strip-bom-2.0.0"
      sources."strip-final-newline-2.0.0"
      sources."strip-indent-1.0.1"
      sources."strip-json-comments-3.1.1"
      (sources."stylehacks-4.0.3" // {
        dependencies = [


@@ 9298,7 7739,6 @@ let
        ];
      })
      sources."tapable-1.1.3"
      sources."tar-2.2.2"
      (sources."terser-4.8.0" // {
        dependencies = [
          sources."commander-2.20.3"


@@ 9322,18 7762,7 @@ let
      sources."tiny-emitter-2.1.0"
      sources."to-fast-properties-2.0.0"
      sources."to-regex-range-5.0.1"
      sources."tough-cookie-2.5.0"
      sources."trim-newlines-1.0.0"
      sources."true-case-path-1.0.3"
      (sources."tsconfig-paths-3.9.0" // {
        dependencies = [
          sources."json5-1.0.1"
          sources."strip-bom-3.0.0"
        ];
      })
      sources."tslib-1.14.1"
      sources."tunnel-agent-0.6.0"
      sources."tweetnacl-0.14.5"
      sources."type-check-0.4.0"
      sources."type-fest-0.8.1"
      sources."typedarray-0.0.6"


@@ 9353,9 7782,7 @@ let
      sources."util.promisify-1.0.1"
      sources."uuid-3.4.0"
      sources."v8-compile-cache-2.3.0"
      sources."validate-npm-package-license-3.0.4"
      sources."vendors-1.0.4"
      sources."verror-1.10.0"
      sources."watchpack-2.1.1"
      (sources."webpack-5.30.0" // {
        dependencies = [


@@ 9391,20 7818,9 @@ let
          sources."source-map-0.6.1"
        ];
      })
      sources."which-1.3.1"
      sources."which-boxed-primitive-1.0.2"
      sources."which-module-2.0.0"
      sources."wide-align-1.1.3"
      sources."wildcard-2.0.0"
      sources."word-wrap-1.2.3"
      (sources."wrap-ansi-5.1.0" // {
        dependencies = [
          sources."ansi-regex-4.1.0"
          sources."is-fullwidth-code-point-2.0.0"
          sources."string-width-3.1.0"
          sources."strip-ansi-5.2.0"
        ];
      })
      sources."wrappy-1.0.2"
      sources."write-file-atomic-2.4.3"
      (sources."write-json-file-2.3.0" // {


@@ 9416,19 7832,6 @@ let
      sources."y18n-4.0.1"
      sources."yallist-3.1.1"
      sources."yaml-1.10.2"
      (sources."yargs-13.3.2" // {
        dependencies = [
          sources."ansi-regex-4.1.0"
          sources."find-up-3.0.0"
          sources."is-fullwidth-code-point-2.0.0"
          sources."locate-path-3.0.0"
          sources."p-locate-3.0.0"
          sources."path-exists-3.0.0"
          sources."string-width-3.1.0"
          sources."strip-ansi-5.2.0"
        ];
      })
      sources."yargs-parser-13.1.2"
      sources."yocto-queue-0.1.0"
    ];
    buildInputs = globalBuildInputs;

M apps/home_web/assets/package-lock.json => apps/home_web/assets/package-lock.json +23 -15734
@@ 1,14071 1,8 @@
{
  "name": "home-web-assets",
  "version": "0.1.0",
  "lockfileVersion": 2,
  "lockfileVersion": 1,
  "requires": true,
  "packages": {
    "": {
      "name": "home-web-assets",
      "version": "0.1.0",
      "license": "MIT",
      "devDependencies": {
        "@babel/core": "^7.0.0",
        "@babel/preset-env": "^7.0.0",
        "@ljharb/eslint-config": "^17.5.1",
        "@tailwindcss/typography": "^0.4.0",
        "autoprefixer": "^10.2.5",
        "babel-loader": "^8.2.2",
        "babel-plugin-prismjs": "^2.0.1",
        "copy-webpack-plugin": "^5.1.1",
        "css-loader": "^3.4.2",
        "css-minimizer-webpack-plugin": "^1.3.0",
        "eslint": "^7.23.0",
        "eslint-config-airbnb-base": "^14.2.1",
        "eslint-config-prettier": "^8.1.0",
        "hard-source-webpack-plugin": "^0.13.1",
        "mini-css-extract-plugin": "^1.4.0",
        "node-sass": "^4.13.1",
        "postcss": "^8.2.8",
        "postcss-loader": "4.2",
        "postcss-preset-env": "^6.7.0",
        "prismjs": "^1.23.0",
        "sass-loader": "^8.0.2",
        "tailwindcss": "^2.1.0",
        "terser-webpack-plugin": "^2.3.2",
        "webpack": "^5.30.0",
        "webpack-cli": "^4.6.0"
      }
    },
    "node_modules/@babel/code-frame": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
      "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
      "dev": true,
      "dependencies": {
        "@babel/highlight": "^7.12.13"
      }
    },
    "node_modules/@babel/compat-data": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz",
      "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==",
      "dev": true
    },
    "node_modules/@babel/core": {
      "version": "7.13.14",
      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
      "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
      "dev": true,
      "dependencies": {
        "@babel/code-frame": "^7.12.13",
        "@babel/generator": "^7.13.9",
        "@babel/helper-compilation-targets": "^7.13.13",
        "@babel/helper-module-transforms": "^7.13.14",
        "@babel/helpers": "^7.13.10",
        "@babel/parser": "^7.13.13",
        "@babel/template": "^7.12.13",
        "@babel/traverse": "^7.13.13",
        "@babel/types": "^7.13.14",
        "convert-source-map": "^1.7.0",
        "debug": "^4.1.0",
        "gensync": "^1.0.0-beta.2",
        "json5": "^2.1.2",
        "semver": "^6.3.0",
        "source-map": "^0.5.0"
      },
      "engines": {
        "node": ">=6.9.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/babel"
      }
    },
    "node_modules/@babel/generator": {
      "version": "7.13.9",
      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz",
      "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.13.0",
        "jsesc": "^2.5.1",
        "source-map": "^0.5.0"
      }
    },
    "node_modules/@babel/helper-annotate-as-pure": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz",
      "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz",
      "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-explode-assignable-expression": "^7.12.13",
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-compilation-targets": {
      "version": "7.13.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz",
      "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==",
      "dev": true,
      "dependencies": {
        "@babel/compat-data": "^7.13.12",
        "@babel/helper-validator-option": "^7.12.17",
        "browserslist": "^4.14.5",
        "semver": "^6.3.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0"
      }
    },
    "node_modules/@babel/helper-create-class-features-plugin": {
      "version": "7.13.11",
      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz",
      "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==",
      "dev": true,
      "dependencies": {
        "@babel/helper-function-name": "^7.12.13",
        "@babel/helper-member-expression-to-functions": "^7.13.0",
        "@babel/helper-optimise-call-expression": "^7.12.13",
        "@babel/helper-replace-supers": "^7.13.0",
        "@babel/helper-split-export-declaration": "^7.12.13"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0"
      }
    },
    "node_modules/@babel/helper-create-regexp-features-plugin": {
      "version": "7.12.17",
      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz",
      "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-annotate-as-pure": "^7.12.13",
        "regexpu-core": "^4.7.1"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0"
      }
    },
    "node_modules/@babel/helper-define-polyfill-provider": {
      "version": "0.1.5",
      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz",
      "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-compilation-targets": "^7.13.0",
        "@babel/helper-module-imports": "^7.12.13",
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/traverse": "^7.13.0",
        "debug": "^4.1.1",
        "lodash.debounce": "^4.0.8",
        "resolve": "^1.14.2",
        "semver": "^6.1.2"
      },
      "peerDependencies": {
        "@babel/core": "^7.4.0-0"
      }
    },
    "node_modules/@babel/helper-explode-assignable-expression": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz",
      "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.13.0"
      }
    },
    "node_modules/@babel/helper-function-name": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz",
      "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-get-function-arity": "^7.12.13",
        "@babel/template": "^7.12.13",
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-get-function-arity": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz",
      "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-hoist-variables": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz",
      "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==",
      "dev": true,
      "dependencies": {
        "@babel/traverse": "^7.13.0",
        "@babel/types": "^7.13.0"
      }
    },
    "node_modules/@babel/helper-member-expression-to-functions": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz",
      "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.13.12"
      }
    },
    "node_modules/@babel/helper-module-imports": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz",
      "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.13.12"
      }
    },
    "node_modules/@babel/helper-module-transforms": {
      "version": "7.13.14",
      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz",
      "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==",
      "dev": true,
      "dependencies": {
        "@babel/helper-module-imports": "^7.13.12",
        "@babel/helper-replace-supers": "^7.13.12",
        "@babel/helper-simple-access": "^7.13.12",
        "@babel/helper-split-export-declaration": "^7.12.13",
        "@babel/helper-validator-identifier": "^7.12.11",
        "@babel/template": "^7.12.13",
        "@babel/traverse": "^7.13.13",
        "@babel/types": "^7.13.14"
      }
    },
    "node_modules/@babel/helper-optimise-call-expression": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz",
      "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-plugin-utils": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz",
      "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==",
      "dev": true
    },
    "node_modules/@babel/helper-remap-async-to-generator": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz",
      "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-annotate-as-pure": "^7.12.13",
        "@babel/helper-wrap-function": "^7.13.0",
        "@babel/types": "^7.13.0"
      }
    },
    "node_modules/@babel/helper-replace-supers": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz",
      "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==",
      "dev": true,
      "dependencies": {
        "@babel/helper-member-expression-to-functions": "^7.13.12",
        "@babel/helper-optimise-call-expression": "^7.12.13",
        "@babel/traverse": "^7.13.0",
        "@babel/types": "^7.13.12"
      }
    },
    "node_modules/@babel/helper-simple-access": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz",
      "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.13.12"
      }
    },
    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
      "version": "7.12.1",
      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
      "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.12.1"
      }
    },
    "node_modules/@babel/helper-split-export-declaration": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz",
      "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==",
      "dev": true,
      "dependencies": {
        "@babel/types": "^7.12.13"
      }
    },
    "node_modules/@babel/helper-validator-identifier": {
      "version": "7.12.11",
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
      "dev": true
    },
    "node_modules/@babel/helper-validator-option": {
      "version": "7.12.17",
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz",
      "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==",
      "dev": true
    },
    "node_modules/@babel/helper-wrap-function": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz",
      "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-function-name": "^7.12.13",
        "@babel/template": "^7.12.13",
        "@babel/traverse": "^7.13.0",
        "@babel/types": "^7.13.0"
      }
    },
    "node_modules/@babel/helpers": {
      "version": "7.13.10",
      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz",
      "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==",
      "dev": true,
      "dependencies": {
        "@babel/template": "^7.12.13",
        "@babel/traverse": "^7.13.0",
        "@babel/types": "^7.13.0"
      }
    },
    "node_modules/@babel/highlight": {
      "version": "7.13.10",
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
      "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-validator-identifier": "^7.12.11",
        "chalk": "^2.0.0",
        "js-tokens": "^4.0.0"
      }
    },
    "node_modules/@babel/parser": {
      "version": "7.13.13",
      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
      "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
      "dev": true,
      "bin": {
        "parser": "bin/babel-parser.js"
      },
      "engines": {
        "node": ">=6.0.0"
      }
    },
    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz",
      "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
        "@babel/plugin-proposal-optional-chaining": "^7.13.12"
      },
      "peerDependencies": {
        "@babel/core": "^7.13.0"
      }
    },
    "node_modules/@babel/plugin-proposal-async-generator-functions": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz",
      "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/helper-remap-async-to-generator": "^7.13.0",
        "@babel/plugin-syntax-async-generators": "^7.8.4"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-class-properties": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz",
      "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-create-class-features-plugin": "^7.13.0",
        "@babel/helper-plugin-utils": "^7.13.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-dynamic-import": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz",
      "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-export-namespace-from": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz",
      "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.12.13",
        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-json-strings": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz",
      "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-json-strings": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz",
      "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz",
      "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-numeric-separator": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz",
      "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.12.13",
        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-object-rest-spread": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz",
      "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==",
      "dev": true,
      "dependencies": {
        "@babel/compat-data": "^7.13.8",
        "@babel/helper-compilation-targets": "^7.13.8",
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
        "@babel/plugin-transform-parameters": "^7.13.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
      "version": "7.13.8",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz",
      "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-optional-chaining": {
      "version": "7.13.12",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz",
      "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.13.0",
        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-private-methods": {
      "version": "7.13.0",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz",
      "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==",
      "dev": true,
      "dependencies": {
        "@babel/helper-create-class-features-plugin": "^7.13.0",
        "@babel/helper-plugin-utils": "^7.13.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz",
      "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==",
      "dev": true,
      "dependencies": {
        "@babel/helper-create-regexp-features-plugin": "^7.12.13",
        "@babel/helper-plugin-utils": "^7.12.13"
      },
      "engines": {
        "node": ">=4"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-async-generators": {
      "version": "7.8.4",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.8.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-class-properties": {
      "version": "7.12.13",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.12.13"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-dynamic-import": {
      "version": "7.8.3",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.8.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-export-namespace-from": {
      "version": "7.8.3",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.8.3"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-json-strings": {
      "version": "7.8.3",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.8.0"
      },
      "peerDependencies": {
        "@babel/core": "^7.0.0-0"
      }
    },
    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
      "version": "7.10.4",
      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
      "dev": true,
      "dependencies": {
        "@babel/helper-plugin-utils": "^7.10.4"
      },