clean up and add affiliates

Amolith created

Change summary

affiliates.md        |   37 
app.js               |  108 -
assets/svgs/logo.svg |   70 
dat.json             |    4 
logo.png             |    0 
openpgp.js           | 3308 ----------------------------------------------
scripts.js           |  537 -------
7 files changed, 83 insertions(+), 3,981 deletions(-)

Detailed changes

affiliates.md 🔗

@@ -0,0 +1,37 @@
+---
+layout: page
+title: Affiliates
+subtitle: Support NixNet by making purchases and using these links
+description: Support NixNet by making purchases with affiliate links and vouchers
+---
+One of the easiest ways to support NixNet is to purchase products on these websites using the provided affiliate links.
+
+# netcup
+[netcup](https://netcup.eu) is currently where the most services are running. They have fantastic offerings at most price points and incredible deals. I've been very happy with their service and *highly* recommend them.
+
+## Voucher codes
+These are single-use vouchers for various products. When you use one, please [send me a message](/contact) so I can generate a new one.
+
+### 5€ for anything except domains
+* [36nc15758387844](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=36nc15758387844)
+* [36nc15758387843](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=36nc15758387843)
+* [36nc15758387842](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=36nc15758387842)
+* [36nc15758387841](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=36nc15758387841)
+* [36nc15758387840](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=36nc15758387840)
+
+### 10% off the 200 G8
+* [2052nc15758390090](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2052nc15758390090)
+* [2052nc15758390091](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2052nc15758390091)
+
+### 10% off the 500 G8
+* [2053nc15758393980](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2053nc15758393980)
+* [2053nc15758393981](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2053nc15758393981)
+
+### 10% off the 1000 G8
+* [2054nc15758394201](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2054nc15758394201)
+* [2054nc15758394200](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2054nc15758394200)
+
+### 10% off the 2000 G8
+* [2056nc15758394800](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2056nc15758394800)
+* [2056nc15758394801](https://www.netcup.eu/bestellen/gutschein_einloesen.php?gutschein=2056nc15758394801)
+

app.js 🔗

@@ -1,108 +0,0 @@
-
-$(function(){
-
-    var model = {
-        // renomear
-        dat: [
-        ],
-        read_json: function() {
-            $.ajax({
-                url: "/cards.json",
-                dataType: 'json',
-                async: false,
-                success: function(data) {
-                    $(data["cards"]).each(function(){
-                        var card_info = $(this)[0];
-                        model.set_data(card_info);
-                    });
-                }
-            });
-        },
-        set_data: function(d) {
-            model.dat.push(d);
-        },
-        get_data: function() {
-            return model.dat;
-        },
-        filter_data: function(conteudo) {
-            var $d = model.dat;
-            var $filter = [];
-            var $c = conteudo.toLowerCase();
-            $($d).each(function(i){
-                if(
-                    $d[i].name.toLowerCase().indexOf($c) >= 0 ||
-                    $d[i].description.toLowerCase().indexOf($c) >= 0 ||
-                    $d[i].button_text.toLowerCase().indexOf($c) >= 0
-                ) {
-                    $filter.push($d[i]);
-                }
-            });
-            return $filter;
-        },
-        init: function() {
-            model.read_json();
-        }
-    };
-    var octopus = {
-        init: function() {
-            model.init();
-            view.init();
-            octopus.create_card(model.get_data());
-        },
-        create_card: function(d) {
-            $.each(d, function(i){
-                view.create_card(d[i].name, d[i].description, d[i].button_text, d[i].link, d[i].tor);
-            });
-        },
-        filter_data: function(c) {
-            var d = model.filter_data(c);
-            $.each(d, function(i){
-                view.create_card(d[i].name, d[i].description, d[i].button_text, d[i].link, d[i].tor);
-            });
-        },
-        recreate_cards: function() {
-            octopus.create_card(model.get_data());
-        }
-    };
-
-    // Renomear
-    var view = {
-        init: function() {
-            this.container = $(".flex-cards");
-            this.search_field = $("#search_field");
-            view.events();
-        },
-        events: function(){
-            this.search_field.on('input',function(){
-                var $conteudo = $(this).val();
-                view.clean_cards();
-                if($conteudo.length == 0){
-                    octopus.recreate_cards();
-                }else {
-                    octopus.filter_data($conteudo);
-                }
-            });
-        },
-        create_card: function(name, desc, bt_txt, link, tor){
-            var $card = $("<div>").addClass("card");
-            var $h1 = $("<h1>").text(name);
-            var $desc = $("<p>").text(desc);
-            var $button = $("<button>").addClass("button").text(bt_txt);
-            var $icon = $("<button>").addClass("tor").text("Tor");
-            var $a = $("<a>").attr("href", link);
-            var $tor = $("<a>").attr("href", tor);
-            $a.append($button);
-            $tor.append($icon);
-            if (tor == "#") {
-                $card.append($h1).append($desc).append($a);
-            } else {
-            $card.append($h1).append($desc).append($a).append($tor); 
-            }
-            this.container.append($card);
-        },
-        clean_cards: function() {
-            this.container.empty();
-        }
-    };
-    octopus.init();
-});

assets/svgs/logo.svg 🔗

@@ -9,14 +9,14 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="158.75mm"
-   height="83.34375mm"
-   viewBox="0 0 158.75 83.34375"
+   width="315"
+   height="315"
+   viewBox="0 0 83.343752 83.343752"
    version="1.1"
    id="svg8"
-   inkscape:export-filename="/home/amolith/repos/nixnet/logo.png"
-   inkscape:export-xdpi="96"
-   inkscape:export-ydpi="96"
+   inkscape:export-filename="/tmp/sticker.png"
+   inkscape:export-xdpi="152.38"
+   inkscape:export-ydpi="152.38"
    inkscape:version="0.92.4 5da689c313, 2019-01-14"
    sodipodi:docname="logo.svg">
   <defs
@@ -28,10 +28,10 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="339.47007"
-     inkscape:cy="163.84677"
-     inkscape:document-units="mm"
+     inkscape:zoom="0.70710678"
+     inkscape:cx="54.864303"
+     inkscape:cy="98.02578"
+     inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      showborder="false"
@@ -40,11 +40,22 @@
      fit-margin-left="0"
      fit-margin-right="0"
      fit-margin-bottom="0"
-     inkscape:window-width="1366"
-     inkscape:window-height="768"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1336"
+     inkscape:window-height="698"
+     inkscape:window-x="15"
+     inkscape:window-y="35"
+     inkscape:window-maximized="0"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true" />
   <metadata
      id="metadata5">
     <rdf:RDF>
@@ -61,17 +72,15 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
      id="layer1"
-     transform="translate(-128.38222,22.853529)">
-    <rect
-       style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.31644166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect95912"
-       width="158.75"
-       height="83.34375"
-       x="128.38222"
-       y="-22.853529" />
+     transform="translate(-128.38222,22.853531)">
+    <path
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:1.8438884;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 211.72597,18.818345 A 41.671876,41.671872 0 0 1 170.0541,60.490217 41.671876,41.671872 0 0 1 128.38222,18.818345 41.671876,41.671872 0 0 1 170.0541,-22.853527 41.671876,41.671872 0 0 1 211.72597,18.818345 Z"
+       id="path96013"
+       inkscape:connector-curvature="0" />
     <g
        id="g95919"
-       transform="matrix(0.84116788,0,0,0.84116788,14.976495,1.9821852)">
+       transform="matrix(0.78478307,0,0,0.78478307,-9.8042309,3.1107386)">
       <path
          inkscape:connector-curvature="0"
          id="rect819"
@@ -102,5 +111,18 @@
          d="m 229.04267,-5.1482062 c 2.02111,0 3.64822,1.6165249 3.64822,3.6244951 V 41.226748 c 0,2.00797 -1.62711,3.624495 -3.64822,3.624495 -2.02112,0 -3.64823,-1.616525 -3.64823,-3.624495 V -1.5237111 c 0,-2.0079702 1.62711,-3.6244951 3.64823,-3.6244951 z"
          style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:0.01318607;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
     </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.58333397px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458335"
+       x="-198.78204"
+       y="80.002522"
+       id="text96064"><tspan
+         sodipodi:role="line"
+         id="tspan96062">hello world</tspan></text>
+    <path
+       style="fill:none;stroke:#333333;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 136.67061,43.760032 c 0,0 31.75567,37.773979 66.76697,0"
+       id="path96072"
+       inkscape:connector-curvature="0" />
   </g>
 </svg>

dat.json 🔗

@@ -1,4 +0,0 @@
-{
-  "title": "NixNet",
-  "description": "NixNet.xyz is a network of websites and services hosted by the pseudonymous Amolith (me). It's also a blog!"
-}

openpgp.js 🔗

@@ -1,42864 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.openpgp = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-(function (global){
-"use strict";
-
-!function (e, t) {
-  "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = e || self).WebStreamsPolyfill = {});
-}(undefined, function (e) {
-  "use strict";
-  const t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? Symbol : e => `Symbol(${e})`;const r = "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : void 0,
-        o = Number.isNaN || function (e) {
-    return e != e;
-  };function n(e) {
-    return "object" == typeof e && null !== e || "function" == typeof e;
-  }function i(e, t, r) {
-    Object.defineProperty(e, t, { value: r, writable: !0, enumerable: !0, configurable: !0 });
-  }function a(e) {
-    return e.slice();
-  }function s(e, t, r, o, n) {
-    new Uint8Array(e).set(new Uint8Array(r, o, n), t);
-  }function l(e) {
-    return !1 !== function (e) {
-      if ("number" != typeof e) return !1;if (o(e)) return !1;if (e < 0) return !1;return !0;
-    }(e) && e !== 1 / 0;
-  }function c(e, t, r) {
-    if ("function" != typeof e) throw new TypeError("Argument is not a function");return Function.prototype.apply.call(e, t, r);
-  }function u(e, t, r, o) {
-    const n = e[t];if (void 0 !== n) {
-      if ("function" != typeof n) throw new TypeError(`${n} is not a method`);switch (r) {case 0:
-          return () => f(n, e, o);case 1:
-          return t => {
-            const r = [t].concat(o);return f(n, e, r);
-          };}
-    }return () => Promise.resolve();
-  }function d(e, t, r) {
-    const o = e[t];if (void 0 !== o) return c(o, e, r);
-  }function f(e, t, r) {
-    try {
-      return Promise.resolve(c(e, t, r));
-    } catch (e) {
-      return Promise.reject(e);
-    }
-  }function _(e) {
-    return e;
-  }function h(e) {
-    if (e = Number(e), o(e) || e < 0) throw new RangeError("highWaterMark property of a queuing strategy must be non-negative and non-NaN");return e;
-  }function b(e) {
-    if (void 0 === e) return () => 1;if ("function" != typeof e) throw new TypeError("size property of a queuing strategy must be a function");return t => e(t);
-  }function m(e, t, r) {
-    return Promise.prototype.then.call(e, t, r);
-  }function y(e, t, r) {
-    let o, n;const i = new Promise((e, t) => {
-      o = e, n = t;
-    });void 0 === r && (r = e => {
-      throw e;
-    });return function (e, t, r) {
-      let o = !1;const n = e => {
-        !1 === o && (o = !0, r(e));
-      };let i = 0,
-          a = 0;const s = e.length,
-            l = new Array(s);for (const r of e) {
-        const e = i;m(r, r => {
-          l[e] = r, ++a === s && t(l);
-        }, n), ++i;
-      }
-    }(e, e => {
-      try {
-        const r = t(e);o(r);
-      } catch (e) {
-        n(e);
-      }
-    }, e => {
-      try {
-        const t = r(e);o(t);
-      } catch (e) {
-        n(e);
-      }
-    }), i;
-  }function p(e) {}function w(e) {
-    e && e instanceof p.AssertionError && setTimeout(() => {
-      throw e;
-    }, 0);
-  }function g(e) {
-    const t = e._queue.shift();return e._queueTotalSize -= t.size, e._queueTotalSize < 0 && (e._queueTotalSize = 0), t.value;
-  }function S(e, t, r) {
-    if (!l(r = Number(r))) throw new RangeError("Size must be a finite, non-NaN, non-negative number.");e._queue.push({ value: t, size: r }), e._queueTotalSize += r;
-  }function v(e) {
-    e._queue = [], e._queueTotalSize = 0;
-  }p.AssertionError = function () {};const R = t("[[AbortSteps]]"),
-        P = t("[[ErrorSteps]]");class WritableStream {
-    constructor(e = {}, t = {}) {
-      q(this);const r = t.size;let o = t.highWaterMark;if (void 0 !== e.type) throw new RangeError("Invalid type is specified");const n = b(r);void 0 === o && (o = 1), function (e, t, r, o) {
-        const n = Object.create(WritableStreamDefaultController.prototype);const i = u(t, "write", 1, [n]),
-              a = u(t, "close", 0, []),
-              s = u(t, "abort", 1, []);$(e, n, function () {
-          return d(t, "start", [n]);
-        }, i, a, s, r, o);
-      }(this, e, o = h(o), n);
-    }get locked() {
-      if (!1 === E(this)) throw G("locked");return C(this);
-    }abort(e) {
-      return !1 === E(this) ? Promise.reject(G("abort")) : !0 === C(this) ? Promise.reject(new TypeError("Cannot abort a stream that already has a writer")) : j(this, e);
-    }getWriter() {
-      if (!1 === E(this)) throw G("getWriter");return T(this);
-    }
-  }function T(e) {
-    return new WritableStreamDefaultWriter(e);
-  }function q(e) {
-    e._state = "writable", e._storedError = void 0, e._writer = void 0, e._writableStreamController = void 0, e._writeRequests = [], e._inFlightWriteRequest = void 0, e._closeRequest = void 0, e._inFlightCloseRequest = void 0, e._pendingAbortRequest = void 0, e._backpressure = !1;
-  }function E(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_writableStreamController");
-  }function C(e) {
-    return void 0 !== e._writer;
-  }function j(e, t) {
-    const r = e._state;if ("closed" === r || "errored" === r) return Promise.resolve(void 0);if (void 0 !== e._pendingAbortRequest) return e._pendingAbortRequest._promise;let o = !1;"erroring" === r && (o = !0, t = void 0);const n = new Promise((r, n) => {
-      e._pendingAbortRequest = { _promise: void 0, _resolve: r, _reject: n, _reason: t, _wasAlreadyErroring: o };
-    });return e._pendingAbortRequest._promise = n, !1 === o && W(e, t), n;
-  }function A(e, t) {
-    "writable" !== e._state ? B(e) : W(e, t);
-  }function W(e, t) {
-    const r = e._writableStreamController;e._state = "erroring", e._storedError = t;const o = e._writer;void 0 !== o && D(o, t), !1 === function (e) {
-      if (void 0 === e._inFlightWriteRequest && void 0 === e._inFlightCloseRequest) return !1;return !0;
-    }(e) && !0 === r._started && B(e);
-  }function B(e) {
-    e._state = "errored", e._writableStreamController[P]();const t = e._storedError;for (const r of e._writeRequests) r._reject(t);if (e._writeRequests = [], void 0 === e._pendingAbortRequest) return void z(e);const r = e._pendingAbortRequest;if (e._pendingAbortRequest = void 0, !0 === r._wasAlreadyErroring) return r._reject(t), void z(e);e._writableStreamController[R](r._reason).then(() => {
-      r._resolve(), z(e);
-    }, t => {
-      r._reject(t), z(e);
-    });
-  }function O(e) {
-    return void 0 !== e._closeRequest || void 0 !== e._inFlightCloseRequest;
-  }function z(e) {
-    void 0 !== e._closeRequest && (e._closeRequest._reject(e._storedError), e._closeRequest = void 0);const t = e._writer;void 0 !== t && ee(t, e._storedError);
-  }function k(e, t) {
-    const r = e._writer;void 0 !== r && t !== e._backpressure && (!0 === t ? function (e) {
-      re(e);
-    }(r) : ae(r)), e._backpressure = t;
-  }class WritableStreamDefaultWriter {
-    constructor(e) {
-      if (!1 === E(e)) throw new TypeError("WritableStreamDefaultWriter can only be constructed with a WritableStream instance");if (!0 === C(e)) throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream = e, e._writer = this;const t = e._state;if ("writable" === t) !1 === O(e) && !0 === e._backpressure ? re(this) : ne(this), X(this);else if ("erroring" === t) oe(this, e._storedError), X(this);else if ("closed" === t) ne(this), function (e) {
-        X(e), te(e);
-      }(this);else {
-        const t = e._storedError;oe(this, t), Z(this, t);
-      }
-    }get closed() {
-      return !1 === F(this) ? Promise.reject(J("closed")) : this._closedPromise;
-    }get desiredSize() {
-      if (!1 === F(this)) throw J("desiredSize");if (void 0 === this._ownerWritableStream) throw K("desiredSize");return function (e) {
-        const t = e._ownerWritableStream,
-              r = t._state;if ("errored" === r || "erroring" === r) return null;if ("closed" === r) return 0;return Q(t._writableStreamController);
-      }(this);
-    }get ready() {
-      return !1 === F(this) ? Promise.reject(J("ready")) : this._readyPromise;
-    }abort(e) {
-      return !1 === F(this) ? Promise.reject(J("abort")) : void 0 === this._ownerWritableStream ? Promise.reject(K("abort")) : function (e, t) {
-        return j(e._ownerWritableStream, t);
-      }(this, e);
-    }close() {
-      if (!1 === F(this)) return Promise.reject(J("close"));const e = this._ownerWritableStream;return void 0 === e ? Promise.reject(K("close")) : !0 === O(e) ? Promise.reject(new TypeError("cannot close an already-closing stream")) : L(this);
-    }releaseLock() {
-      if (!1 === F(this)) throw J("releaseLock");void 0 !== this._ownerWritableStream && M(this);
-    }write(e) {
-      return !1 === F(this) ? Promise.reject(J("write")) : void 0 === this._ownerWritableStream ? Promise.reject(K("write to")) : Y(this, e);
-    }
-  }function F(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_ownerWritableStream");
-  }function L(e) {
-    const t = e._ownerWritableStream,
-          r = t._state;if ("closed" === r || "errored" === r) return Promise.reject(new TypeError(`The stream (in ${r} state) is not in the writable state and cannot be closed`));const o = new Promise((e, r) => {
-      const o = { _resolve: e, _reject: r };t._closeRequest = o;
-    });return !0 === t._backpressure && "writable" === r && ae(e), function (e) {
-      S(e, "close", 0), x(e);
-    }(t._writableStreamController), o;
-  }function I(e, t) {
-    "pending" === e._closedPromiseState ? ee(e, t) : function (e, t) {
-      Z(e, t);
-    }(e, t);
-  }function D(e, t) {
-    "pending" === e._readyPromiseState ? ie(e, t) : function (e, t) {
-      oe(e, t);
-    }(e, t);
-  }function M(e) {
-    const t = e._ownerWritableStream,
-          r = new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");D(e, r), I(e, r), t._writer = void 0, e._ownerWritableStream = void 0;
-  }function Y(e, t) {
-    const r = e._ownerWritableStream,
-          o = r._writableStreamController,
-          n = function (e, t) {
-      try {
-        return e._strategySizeAlgorithm(t);
-      } catch (t) {
-        return H(e, t), 1;
-      }
-    }(o, t);if (r !== e._ownerWritableStream) return Promise.reject(K("write to"));const i = r._state;if ("errored" === i) return Promise.reject(r._storedError);if (!0 === O(r) || "closed" === i) return Promise.reject(new TypeError("The stream is closing or closed and cannot be written to"));if ("erroring" === i) return Promise.reject(r._storedError);const a = function (e) {
-      return new Promise((t, r) => {
-        const o = { _resolve: t, _reject: r };e._writeRequests.push(o);
-      });
-    }(r);return function (e, t, r) {
-      const o = { chunk: t };try {
-        S(e, o, r);
-      } catch (t) {
-        return void H(e, t);
-      }const n = e._controlledWritableStream;if (!1 === O(n) && "writable" === n._state) {
-        const t = U(e);k(n, t);
-      }x(e);
-    }(o, t, n), a;
-  }class WritableStreamDefaultController {
-    constructor() {
-      throw new TypeError("WritableStreamDefaultController cannot be constructed explicitly");
-    }error(e) {
-      if (!1 === function (e) {
-        if (!n(e)) return !1;if (!Object.prototype.hasOwnProperty.call(e, "_controlledWritableStream")) return !1;return !0;
-      }(this)) throw new TypeError("WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController");"writable" === this._controlledWritableStream._state && V(this, e);
-    }[R](e) {
-      const t = this._abortAlgorithm(e);return N(this), t;
-    }[P]() {
-      v(this);
-    }
-  }function $(e, t, r, o, n, i, a, s) {
-    t._controlledWritableStream = e, e._writableStreamController = t, t._queue = void 0, t._queueTotalSize = void 0, v(t), t._started = !1, t._strategySizeAlgorithm = s, t._strategyHWM = a, t._writeAlgorithm = o, t._closeAlgorithm = n, t._abortAlgorithm = i;const l = U(t);k(e, l);const c = r();Promise.resolve(c).then(() => {
-      t._started = !0, x(t);
-    }, r => {
-      t._started = !0, A(e, r);
-    }).catch(w);
-  }function N(e) {
-    e._writeAlgorithm = void 0, e._closeAlgorithm = void 0, e._abortAlgorithm = void 0, e._strategySizeAlgorithm = void 0;
-  }function Q(e) {
-    return e._strategyHWM - e._queueTotalSize;
-  }function x(e) {
-    const t = e._controlledWritableStream;if (!1 === e._started) return;if (void 0 !== t._inFlightWriteRequest) return;const r = t._state;if ("closed" === r || "errored" === r) return;if ("erroring" === r) return void B(t);if (0 === e._queue.length) return;const o = function (e) {
-      return e._queue[0].value;
-    }(e);"close" === o ? function (e) {
-      const t = e._controlledWritableStream;(function (e) {
-        e._inFlightCloseRequest = e._closeRequest, e._closeRequest = void 0;
-      })(t), g(e);const r = e._closeAlgorithm();N(e), r.then(() => {
-        !function (e) {
-          e._inFlightCloseRequest._resolve(void 0), e._inFlightCloseRequest = void 0, "erroring" === e._state && (e._storedError = void 0, void 0 !== e._pendingAbortRequest && (e._pendingAbortRequest._resolve(), e._pendingAbortRequest = void 0)), e._state = "closed";const t = e._writer;void 0 !== t && te(t);
-        }(t);
-      }, e => {
-        !function (e, t) {
-          e._inFlightCloseRequest._reject(t), e._inFlightCloseRequest = void 0, void 0 !== e._pendingAbortRequest && (e._pendingAbortRequest._reject(t), e._pendingAbortRequest = void 0), A(e, t);
-        }(t, e);
-      }).catch(w);
-    }(e) : function (e, t) {
-      const r = e._controlledWritableStream;(function (e) {
-        e._inFlightWriteRequest = e._writeRequests.shift();
-      })(r), e._writeAlgorithm(t).then(() => {
-        !function (e) {
-          e._inFlightWriteRequest._resolve(void 0), e._inFlightWriteRequest = void 0;
-        }(r);const t = r._state;if (g(e), !1 === O(r) && "writable" === t) {
-          const t = U(e);k(r, t);
-        }x(e);
-      }, t => {
-        "writable" === r._state && N(e), function (e, t) {
-          e._inFlightWriteRequest._reject(t), e._inFlightWriteRequest = void 0, A(e, t);
-        }(r, t);
-      }).catch(w);
-    }(e, o.chunk);
-  }function H(e, t) {
-    "writable" === e._controlledWritableStream._state && V(e, t);
-  }function U(e) {
-    return Q(e) <= 0;
-  }function V(e, t) {
-    const r = e._controlledWritableStream;N(e), W(r, t);
-  }function G(e) {
-    return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`);
-  }function J(e) {
-    return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`);
-  }function K(e) {
-    return new TypeError("Cannot " + e + " a stream using a released writer");
-  }function X(e) {
-    e._closedPromise = new Promise((t, r) => {
-      e._closedPromise_resolve = t, e._closedPromise_reject = r, e._closedPromiseState = "pending";
-    });
-  }function Z(e, t) {
-    X(e), ee(e, t);
-  }function ee(e, t) {
-    e._closedPromise.catch(() => {}), e._closedPromise_reject(t), e._closedPromise_resolve = void 0, e._closedPromise_reject = void 0, e._closedPromiseState = "rejected";
-  }function te(e) {
-    e._closedPromise_resolve(void 0), e._closedPromise_resolve = void 0, e._closedPromise_reject = void 0, e._closedPromiseState = "resolved";
-  }function re(e) {
-    e._readyPromise = new Promise((t, r) => {
-      e._readyPromise_resolve = t, e._readyPromise_reject = r;
-    }), e._readyPromiseState = "pending";
-  }function oe(e, t) {
-    re(e), ie(e, t);
-  }function ne(e) {
-    re(e), ae(e);
-  }function ie(e, t) {
-    e._readyPromise.catch(() => {}), e._readyPromise_reject(t), e._readyPromise_resolve = void 0, e._readyPromise_reject = void 0, e._readyPromiseState = "rejected";
-  }function ae(e) {
-    e._readyPromise_resolve(void 0), e._readyPromise_resolve = void 0, e._readyPromise_reject = void 0, e._readyPromiseState = "fulfilled";
-  }const se = Number.isInteger || function (e) {
-    return "number" == typeof e && isFinite(e) && Math.floor(e) === e;
-  },
-        le = t("[[CancelSteps]]"),
-        ce = t("[[PullSteps]]");class ReadableStream {
-    constructor(e = {}, t = {}) {
-      fe(this);const r = t.size;let o = t.highWaterMark;const n = e.type;if ("bytes" === String(n)) {
-        if (void 0 !== r) throw new RangeError("The strategy for a byte stream cannot have a size function");void 0 === o && (o = 0), function (e, t, r) {
-          const o = Object.create(ReadableByteStreamController.prototype);const n = u(t, "pull", 0, [o]),
-                i = u(t, "cancel", 1, []);let a = t.autoAllocateChunkSize;if (void 0 !== a && (a = Number(a), !1 === se(a) || a <= 0)) throw new RangeError("autoAllocateChunkSize must be a positive integer");!function (e, t, r, o, n, i, a) {
-            t._controlledReadableByteStream = e, t._pullAgain = !1, t._pulling = !1, He(t), t._queue = t._queueTotalSize = void 0, v(t), t._closeRequested = !1, t._started = !1, t._strategyHWM = h(i), t._pullAlgorithm = o, t._cancelAlgorithm = n, t._autoAllocateChunkSize = a, t._pendingPullIntos = [], e._readableStreamController = t;const s = r();Promise.resolve(s).then(() => {
-              t._started = !0, xe(t);
-            }, e => {
-              nt(t, e);
-            }).catch(w);
-          }(e, o, function () {
-            return d(t, "start", [o]);
-          }, n, i, r, a);
-        }(this, e, o = h(o));
-      } else {
-        if (void 0 !== n) throw new RangeError("Invalid type is specified");{
-          const t = b(r);void 0 === o && (o = 1), function (e, t, r, o) {
-            const n = Object.create(ReadableStreamDefaultController.prototype);const i = u(t, "pull", 0, [n]),
-                  a = u(t, "cancel", 1, []);$e(e, n, function () {
-              return d(t, "start", [n]);
-            }, i, a, r, o);
-          }(this, e, o = h(o), t);
-        }
-      }
-    }get locked() {
-      if (!1 === _e(this)) throw st("locked");return he(this);
-    }cancel(e) {
-      return !1 === _e(this) ? Promise.reject(st("cancel")) : !0 === he(this) ? Promise.reject(new TypeError("Cannot cancel a stream that already has a reader")) : pe(this, e);
-    }getReader({ mode: e } = {}) {
-      if (!1 === _e(this)) throw st("getReader");if (void 0 === e) return ue(this);if ("byob" === (e = String(e))) return function (e) {
-        return new ReadableStreamBYOBReader(e);
-      }(this);throw new RangeError("Invalid mode is specified");
-    }pipeThrough({ writable: e, readable: t }, { preventClose: r, preventAbort: o, preventCancel: n, signal: i } = {}) {
-      if (!1 === _e(this)) throw st("pipeThrough");if (!1 === E(e)) throw new TypeError("writable argument to pipeThrough must be a WritableStream");if (!1 === _e(t)) throw new TypeError("readable argument to pipeThrough must be a ReadableStream");if (r = Boolean(r), o = Boolean(o), n = Boolean(n), void 0 !== i && !at(i)) throw new TypeError("ReadableStream.prototype.pipeThrough's signal option must be an AbortSignal");if (!0 === he(this)) throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if (!0 === C(e)) throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");return be(this, e, r, o, n, i).catch(() => {}), t;
-    }pipeTo(e, { preventClose: t, preventAbort: r, preventCancel: o, signal: n } = {}) {
-      return !1 === _e(this) ? Promise.reject(st("pipeTo")) : !1 === E(e) ? Promise.reject(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream")) : (t = Boolean(t), r = Boolean(r), o = Boolean(o), void 0 === n || at(n) ? !0 === he(this) ? Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")) : !0 === C(e) ? Promise.reject(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")) : be(this, e, t, r, o, n) : Promise.reject(new TypeError("ReadableStream.prototype.pipeTo's signal option must be an AbortSignal")));
-    }tee() {
-      if (!1 === _e(this)) throw st("tee");const e = function (e, t) {
-        const r = ue(e);let o,
-            n,
-            i,
-            s,
-            l,
-            c = !1,
-            u = !1,
-            d = !1;const f = new Promise(e => {
-          l = e;
-        });function _() {
-          return Be(r).then(e => {
-            const t = e.value,
-                  r = e.done;if (!0 === r && !1 === c && (!1 === u && Le(i._readableStreamController), !1 === d && Le(s._readableStreamController), c = !0), !0 === c) return;const o = t,
-                  n = t;!1 === u && Ie(i._readableStreamController, o), !1 === d && Ie(s._readableStreamController, n);
-          });
-        }function h() {}return i = de(h, _, function (t) {
-          if (u = !0, o = t, !0 === d) {
-            const t = a([o, n]),
-                  r = pe(e, t);l(r);
-          }return f;
-        }), s = de(h, _, function (t) {
-          if (d = !0, n = t, !0 === u) {
-            const t = a([o, n]),
-                  r = pe(e, t);l(r);
-          }return f;
-        }), r._closedPromise.catch(e => {
-          !0 !== c && (De(i._readableStreamController, e), De(s._readableStreamController, e), c = !0);
-        }), [i, s];
-      }(this);return a(e);
-    }
-  }function ue(e) {
-    return new ReadableStreamDefaultReader(e);
-  }function de(e, t, r, o = 1, n = () => 1) {
-    const i = Object.create(ReadableStream.prototype);return fe(i), $e(i, Object.create(ReadableStreamDefaultController.prototype), e, t, r, o, n), i;
-  }function fe(e) {
-    e._state = "readable", e._reader = void 0, e._storedError = void 0, e._disturbed = !1;
-  }function _e(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_readableStreamController");
-  }function he(e) {
-    return void 0 !== e._reader;
-  }function be(e, t, r, o, n, i) {
-    const a = ue(e),
-          s = T(t);let l = !1,
-        c = Promise.resolve();return new Promise((u, d) => {
-      let f;if (void 0 !== i) {
-        if (f = () => {
-          const r = new DOMException("Aborted", "AbortError"),
-                i = [];!1 === o && i.push(() => "writable" === t._state ? j(t, r) : Promise.resolve()), !1 === n && i.push(() => "readable" === e._state ? pe(e, r) : Promise.resolve()), b(() => y(i.map(e => e()), e => e), !0, r);
-        }, !0 === i.aborted) return void f();i.addEventListener("abort", f);
-      }if (h(e, a._closedPromise, e => {
-        !1 === o ? b(() => j(t, e), !0, e) : m(!0, e);
-      }), h(t, s._closedPromise, t => {
-        !1 === n ? b(() => pe(e, t), !0, t) : m(!0, t);
-      }), function (e, t, r) {
-        "closed" === e._state ? r() : t.then(r).catch(w);
-      }(e, a._closedPromise, () => {
-        !1 === r ? b(() => function (e) {
-          const t = e._ownerWritableStream,
-                r = t._state;return !0 === O(t) || "closed" === r ? Promise.resolve() : "errored" === r ? Promise.reject(t._storedError) : L(e);
-        }(s)) : m();
-      }), !0 === O(t) || "closed" === t._state) {
-        const t = new TypeError("the destination writable stream closed before all data could be piped to it");!1 === n ? b(() => pe(e, t), !0, t) : m(!0, t);
-      }function _() {
-        const e = c;return c.then(() => e !== c ? _() : void 0);
-      }function h(e, t, r) {
-        "errored" === e._state ? r(e._storedError) : t.catch(r).catch(w);
-      }function b(e, r, o) {
-        function n() {
-          e().then(() => p(r, o), e => p(!0, e)).catch(w);
-        }!0 !== l && (l = !0, "writable" === t._state && !1 === O(t) ? _().then(n) : n());
-      }function m(e, r) {
-        !0 !== l && (l = !0, "writable" === t._state && !1 === O(t) ? _().then(() => p(e, r)).catch(w) : p(e, r));
-      }function p(e, t) {
-        M(s), We(a), void 0 !== i && i.removeEventListener("abort", f), e ? d(t) : u(void 0);
-      }new Promise((e, t) => {
-        !function r(o) {
-          o ? e() : (!0 === l ? Promise.resolve(!0) : s._readyPromise.then(() => Be(a).then(({ value: e, done: t }) => !0 === t || (c = Y(s, e).catch(() => {}), !1)))).then(r, t);
-        }(!1);
-      }).catch(e => {
-        c = Promise.resolve(), w(e);
-      });
-    });
-  }function me(e, t) {
-    return new Promise((r, o) => {
-      const n = { _resolve: r, _reject: o, _forAuthorCode: t };e._reader._readIntoRequests.push(n);
-    });
-  }function ye(e, t) {
-    return new Promise((r, o) => {
-      const n = { _resolve: r, _reject: o, _forAuthorCode: t };e._reader._readRequests.push(n);
-    });
-  }function pe(e, t) {
-    if (e._disturbed = !0, "closed" === e._state) return Promise.resolve(void 0);if ("errored" === e._state) return Promise.reject(e._storedError);return we(e), e._readableStreamController[le](t).then(() => void 0);
-  }function we(e) {
-    e._state = "closed";const t = e._reader;if (void 0 !== t) {
-      if (Ce(t)) {
-        for (const _ref of t._readRequests) {
-          const e = _ref._resolve;
-          const r = _ref._forAuthorCode;
-          e(ge(void 0, !0, r));
-        }t._readRequests = [];
-      }_t(t);
-    }
-  }function ge(e, t, r) {
-    let o = null;!0 === r && (o = Object.prototype);const n = Object.create(o);return Object.defineProperty(n, "value", { value: e, enumerable: !0, writable: !0, configurable: !0 }), Object.defineProperty(n, "done", { value: t, enumerable: !0, writable: !0, configurable: !0 }), n;
-  }function Se(e, t) {
-    e._state = "errored", e._storedError = t;const r = e._reader;if (void 0 !== r) {
-      if (Ce(r)) {
-        for (const e of r._readRequests) e._reject(t);r._readRequests = [];
-      } else {
-        for (const e of r._readIntoRequests) e._reject(t);r._readIntoRequests = [];
-      }ft(r, t);
-    }
-  }function ve(e, t, r) {
-    const o = e._reader._readRequests.shift();o._resolve(ge(t, r, o._forAuthorCode));
-  }function Re(e) {
-    return e._reader._readIntoRequests.length;
-  }function Pe(e) {
-    return e._reader._readRequests.length;
-  }function Te(e) {
-    const t = e._reader;return void 0 !== t && !!Ee(t);
-  }function qe(e) {
-    const t = e._reader;return void 0 !== t && !!Ce(t);
-  }class ReadableStreamDefaultReader {
-    constructor(e) {
-      if (!1 === _e(e)) throw new TypeError("ReadableStreamDefaultReader can only be constructed with a ReadableStream instance");if (!0 === he(e)) throw new TypeError("This stream has already been locked for exclusive reading by another reader");je(this, e), this._readRequests = [];
-    }get closed() {
-      return Ce(this) ? this._closedPromise : Promise.reject(ct("closed"));
-    }cancel(e) {
-      return Ce(this) ? void 0 === this._ownerReadableStream ? Promise.reject(lt("cancel")) : Ae(this, e) : Promise.reject(ct("cancel"));
-    }read() {
-      return Ce(this) ? void 0 === this._ownerReadableStream ? Promise.reject(lt("read from")) : Be(this, !0) : Promise.reject(ct("read"));
-    }releaseLock() {
-      if (!Ce(this)) throw ct("releaseLock");if (void 0 !== this._ownerReadableStream) {
-        if (this._readRequests.length > 0) throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");We(this);
-      }
-    }
-  }class ReadableStreamBYOBReader {
-    constructor(e) {
-      if (!_e(e)) throw new TypeError("ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a byte source");if (!1 === Ne(e._readableStreamController)) throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");if (he(e)) throw new TypeError("This stream has already been locked for exclusive reading by another reader");je(this, e), this._readIntoRequests = [];
-    }get closed() {
-      return Ee(this) ? this._closedPromise : Promise.reject(ht("closed"));
-    }cancel(e) {
-      return Ee(this) ? void 0 === this._ownerReadableStream ? Promise.reject(lt("cancel")) : Ae(this, e) : Promise.reject(ht("cancel"));
-    }read(e) {
-      return Ee(this) ? void 0 === this._ownerReadableStream ? Promise.reject(lt("read from")) : ArrayBuffer.isView(e) ? (e.buffer, 0 === e.byteLength ? Promise.reject(new TypeError("view must have non-zero byteLength")) : function (e, t, r = !1) {
-        const o = e._ownerReadableStream;if (o._disturbed = !0, "errored" === o._state) return Promise.reject(o._storedError);return function (e, t, r) {
-          const o = e._controlledReadableByteStream;let n = 1;t.constructor !== DataView && (n = t.constructor.BYTES_PER_ELEMENT);const i = t.constructor,
-                a = { buffer: _(t.buffer), byteOffset: t.byteOffset, byteLength: t.byteLength, bytesFilled: 0, elementSize: n, ctor: i, readerType: "byob" };if (e._pendingPullIntos.length > 0) return e._pendingPullIntos.push(a), me(o, r);if ("closed" === o._state) {
-            const e = new i(a.buffer, a.byteOffset, 0);return Promise.resolve(ge(e, !0, r));
-          }if (e._queueTotalSize > 0) {
-            if (!0 === Je(e, a)) {
-              const t = Ve(a);return Xe(e), Promise.resolve(ge(t, !1, r));
-            }if (!0 === e._closeRequested) {
-              const t = new TypeError("Insufficient bytes to fill elements in the given buffer");return nt(e, t), Promise.reject(t);
-            }
-          }e._pendingPullIntos.push(a);const s = me(o, r);return xe(e), s;
-        }(o._readableStreamController, t, r);
-      }(this, e, !0)) : Promise.reject(new TypeError("view must be an array buffer view")) : Promise.reject(ht("read"));
-    }releaseLock() {
-      if (!Ee(this)) throw ht("releaseLock");if (void 0 !== this._ownerReadableStream) {
-        if (this._readIntoRequests.length > 0) throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");We(this);
-      }
-    }
-  }function Ee(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_readIntoRequests");
-  }function Ce(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_readRequests");
-  }function je(e, t) {
-    e._ownerReadableStream = t, t._reader = e, "readable" === t._state ? ut(e) : "closed" === t._state ? function (e) {
-      ut(e), _t(e);
-    }(e) : dt(e, t._storedError);
-  }function Ae(e, t) {
-    return pe(e._ownerReadableStream, t);
-  }function We(e) {
-    "readable" === e._ownerReadableStream._state ? ft(e, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")) : function (e, t) {
-      dt(e, t);
-    }(e, new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")), e._ownerReadableStream._reader = void 0, e._ownerReadableStream = void 0;
-  }function Be(e, t = !1) {
-    const r = e._ownerReadableStream;return r._disturbed = !0, "closed" === r._state ? Promise.resolve(ge(void 0, !0, t)) : "errored" === r._state ? Promise.reject(r._storedError) : r._readableStreamController[ce](t);
-  }class ReadableStreamDefaultController {
-    constructor() {
-      throw new TypeError();
-    }get desiredSize() {
-      if (!1 === Oe(this)) throw bt("desiredSize");return Me(this);
-    }close() {
-      if (!1 === Oe(this)) throw bt("close");if (!1 === Ye(this)) throw new TypeError("The stream is not in a state that permits close");Le(this);
-    }enqueue(e) {
-      if (!1 === Oe(this)) throw bt("enqueue");if (!1 === Ye(this)) throw new TypeError("The stream is not in a state that permits enqueue");return Ie(this, e);
-    }error(e) {
-      if (!1 === Oe(this)) throw bt("error");De(this, e);
-    }[le](e) {
-      v(this);const t = this._cancelAlgorithm(e);return Fe(this), t;
-    }[ce](e) {
-      const t = this._controlledReadableStream;if (this._queue.length > 0) {
-        const r = g(this);return !0 === this._closeRequested && 0 === this._queue.length ? (Fe(this), we(t)) : ze(this), Promise.resolve(ge(r, !1, e));
-      }const r = ye(t, e);return ze(this), r;
-    }
-  }function Oe(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_controlledReadableStream");
-  }function ze(e) {
-    !1 !== ke(e) && (!0 !== e._pulling ? (e._pulling = !0, e._pullAlgorithm().then(() => {
-      if (e._pulling = !1, !0 === e._pullAgain) return e._pullAgain = !1, ze(e);
-    }, t => {
-      De(e, t);
-    }).catch(w)) : e._pullAgain = !0);
-  }function ke(e) {
-    const t = e._controlledReadableStream;return !1 !== Ye(e) && !1 !== e._started && (!0 === he(t) && Pe(t) > 0 || Me(e) > 0);
-  }function Fe(e) {
-    e._pullAlgorithm = void 0, e._cancelAlgorithm = void 0, e._strategySizeAlgorithm = void 0;
-  }function Le(e) {
-    const t = e._controlledReadableStream;e._closeRequested = !0, 0 === e._queue.length && (Fe(e), we(t));
-  }function Ie(e, t) {
-    const r = e._controlledReadableStream;if (!0 === he(r) && Pe(r) > 0) ve(r, t, !1);else {
-      let r;try {
-        r = e._strategySizeAlgorithm(t);
-      } catch (t) {
-        throw De(e, t), t;
-      }try {
-        S(e, t, r);
-      } catch (t) {
-        throw De(e, t), t;
-      }
-    }ze(e);
-  }function De(e, t) {
-    const r = e._controlledReadableStream;"readable" === r._state && (v(e), Fe(e), Se(r, t));
-  }function Me(e) {
-    const t = e._controlledReadableStream._state;return "errored" === t ? null : "closed" === t ? 0 : e._strategyHWM - e._queueTotalSize;
-  }function Ye(e) {
-    const t = e._controlledReadableStream._state;return !1 === e._closeRequested && "readable" === t;
-  }function $e(e, t, r, o, n, i, a) {
-    t._controlledReadableStream = e, t._queue = void 0, t._queueTotalSize = void 0, v(t), t._started = !1, t._closeRequested = !1, t._pullAgain = !1, t._pulling = !1, t._strategySizeAlgorithm = a, t._strategyHWM = i, t._pullAlgorithm = o, t._cancelAlgorithm = n, e._readableStreamController = t;const s = r();Promise.resolve(s).then(() => {
-      t._started = !0, ze(t);
-    }, e => {
-      De(t, e);
-    }).catch(w);
-  }class ReadableStreamBYOBRequest {
-    constructor() {
-      throw new TypeError("ReadableStreamBYOBRequest cannot be used directly");
-    }get view() {
-      if (!1 === Qe(this)) throw mt("view");return this._view;
-    }respond(e) {
-      if (!1 === Qe(this)) throw mt("respond");if (void 0 === this._associatedReadableByteStreamController) throw new TypeError("This BYOB request has been invalidated");this._view.buffer, function (e, t) {
-        if (!1 === l(t = Number(t))) throw new RangeError("bytesWritten must be a finite");tt(e, t);
-      }(this._associatedReadableByteStreamController, e);
-    }respondWithNewView(e) {
-      if (!1 === Qe(this)) throw mt("respond");if (void 0 === this._associatedReadableByteStreamController) throw new TypeError("This BYOB request has been invalidated");if (!ArrayBuffer.isView(e)) throw new TypeError("You can only respond with array buffer views");e.buffer, function (e, t) {
-        const r = e._pendingPullIntos[0];if (r.byteOffset + r.bytesFilled !== t.byteOffset) throw new RangeError("The region specified by view does not match byobRequest");if (r.byteLength !== t.byteLength) throw new RangeError("The buffer of view has different capacity than byobRequest");r.buffer = t.buffer, tt(e, t.byteLength);
-      }(this._associatedReadableByteStreamController, e);
-    }
-  }class ReadableByteStreamController {
-    constructor() {
-      throw new TypeError("ReadableByteStreamController constructor cannot be used directly");
-    }get byobRequest() {
-      if (!1 === Ne(this)) throw yt("byobRequest");if (void 0 === this._byobRequest && this._pendingPullIntos.length > 0) {
-        const e = this._pendingPullIntos[0],
-              t = new Uint8Array(e.buffer, e.byteOffset + e.bytesFilled, e.byteLength - e.bytesFilled),
-              r = Object.create(ReadableStreamBYOBRequest.prototype);!function (e, t, r) {
-          e._associatedReadableByteStreamController = t, e._view = r;
-        }(r, this, t), this._byobRequest = r;
-      }return this._byobRequest;
-    }get desiredSize() {
-      if (!1 === Ne(this)) throw yt("desiredSize");return it(this);
-    }close() {
-      if (!1 === Ne(this)) throw yt("close");if (!0 === this._closeRequested) throw new TypeError("The stream has already been closed; do not close it again!");const e = this._controlledReadableByteStream._state;if ("readable" !== e) throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);!function (e) {
-        const t = e._controlledReadableByteStream;if (e._queueTotalSize > 0) return void (e._closeRequested = !0);if (e._pendingPullIntos.length > 0) {
-          const t = e._pendingPullIntos[0];if (t.bytesFilled > 0) {
-            const t = new TypeError("Insufficient bytes to fill elements in the given buffer");throw nt(e, t), t;
-          }
-        }ot(e), we(t);
-      }(this);
-    }enqueue(e) {
-      if (!1 === Ne(this)) throw yt("enqueue");if (!0 === this._closeRequested) throw new TypeError("stream is closed or draining");const t = this._controlledReadableByteStream._state;if ("readable" !== t) throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);if (!ArrayBuffer.isView(e)) throw new TypeError("You can only enqueue array buffer views when using a ReadableByteStreamController");e.buffer, function (e, t) {
-        const r = e._controlledReadableByteStream,
-              o = t.buffer,
-              n = t.byteOffset,
-              i = t.byteLength,
-              a = _(o);if (!0 === qe(r)) {
-          if (0 === Pe(r)) Ge(e, a, n, i);else {
-            const e = new Uint8Array(a, n, i);ve(r, e, !1);
-          }
-        } else !0 === Te(r) ? (Ge(e, a, n, i), et(e)) : Ge(e, a, n, i);xe(e);
-      }(this, e);
-    }error(e) {
-      if (!1 === Ne(this)) throw yt("error");nt(this, e);
-    }[le](e) {
-      if (this._pendingPullIntos.length > 0) {
-        this._pendingPullIntos[0].bytesFilled = 0;
-      }v(this);const t = this._cancelAlgorithm(e);return ot(this), t;
-    }[ce](e) {
-      const t = this._controlledReadableByteStream;if (this._queueTotalSize > 0) {
-        const t = this._queue.shift();let r;this._queueTotalSize -= t.byteLength, Xe(this);try {
-          r = new Uint8Array(t.buffer, t.byteOffset, t.byteLength);
-        } catch (e) {
-          return Promise.reject(e);
-        }return Promise.resolve(ge(r, !1, e));
-      }const r = this._autoAllocateChunkSize;if (void 0 !== r) {
-        let e;try {
-          e = new ArrayBuffer(r);
-        } catch (e) {
-          return Promise.reject(e);
-        }const t = { buffer: e, byteOffset: 0, byteLength: r, bytesFilled: 0, elementSize: 1, ctor: Uint8Array, readerType: "default" };this._pendingPullIntos.push(t);
-      }const o = ye(t, e);return xe(this), o;
-    }
-  }function Ne(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_controlledReadableByteStream");
-  }function Qe(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_associatedReadableByteStreamController");
-  }function xe(e) {
-    !1 !== function (e) {
-      const t = e._controlledReadableByteStream;if ("readable" !== t._state) return !1;if (!0 === e._closeRequested) return !1;if (!1 === e._started) return !1;if (!0 === qe(t) && Pe(t) > 0) return !0;if (!0 === Te(t) && Re(t) > 0) return !0;if (it(e) > 0) return !0;return !1;
-    }(e) && (!0 !== e._pulling ? (e._pulling = !0, e._pullAlgorithm().then(() => {
-      e._pulling = !1, !0 === e._pullAgain && (e._pullAgain = !1, xe(e));
-    }, t => {
-      nt(e, t);
-    }).catch(w)) : e._pullAgain = !0);
-  }function He(e) {
-    Ze(e), e._pendingPullIntos = [];
-  }function Ue(e, t) {
-    let r = !1;"closed" === e._state && (r = !0);const o = Ve(t);"default" === t.readerType ? ve(e, o, r) : function (e, t, r) {
-      const o = e._reader._readIntoRequests.shift();o._resolve(ge(t, r, o._forAuthorCode));
-    }(e, o, r);
-  }function Ve(e) {
-    const t = e.bytesFilled,
-          r = e.elementSize;return new e.ctor(e.buffer, e.byteOffset, t / r);
-  }function Ge(e, t, r, o) {
-    e._queue.push({ buffer: t, byteOffset: r, byteLength: o }), e._queueTotalSize += o;
-  }function Je(e, t) {
-    const r = t.elementSize,
-          o = t.bytesFilled - t.bytesFilled % r,
-          n = Math.min(e._queueTotalSize, t.byteLength - t.bytesFilled),
-          i = t.bytesFilled + n,
-          a = i - i % r;let l = n,
-        c = !1;a > o && (l = a - t.bytesFilled, c = !0);const u = e._queue;for (; l > 0;) {
-      const r = u[0],
-            o = Math.min(l, r.byteLength),
-            n = t.byteOffset + t.bytesFilled;s(t.buffer, n, r.buffer, r.byteOffset, o), r.byteLength === o ? u.shift() : (r.byteOffset += o, r.byteLength -= o), e._queueTotalSize -= o, Ke(e, o, t), l -= o;
-    }return c;
-  }function Ke(e, t, r) {
-    Ze(e), r.bytesFilled += t;
-  }function Xe(e) {
-    0 === e._queueTotalSize && !0 === e._closeRequested ? (ot(e), we(e._controlledReadableByteStream)) : xe(e);
-  }function Ze(e) {
-    void 0 !== e._byobRequest && (e._byobRequest._associatedReadableByteStreamController = void 0, e._byobRequest._view = void 0, e._byobRequest = void 0);
-  }function et(e) {
-    for (; e._pendingPullIntos.length > 0;) {
-      if (0 === e._queueTotalSize) return;const t = e._pendingPullIntos[0];!0 === Je(e, t) && (rt(e), Ue(e._controlledReadableByteStream, t));
-    }
-  }function tt(e, t) {
-    const r = e._pendingPullIntos[0];if ("closed" === e._controlledReadableByteStream._state) {
-      if (0 !== t) throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream");!function (e, t) {
-        t.buffer = _(t.buffer);const r = e._controlledReadableByteStream;if (!0 === Te(r)) for (; Re(r) > 0;) Ue(r, rt(e));
-      }(e, r);
-    } else !function (e, t, r) {
-      if (r.bytesFilled + t > r.byteLength) throw new RangeError("bytesWritten out of range");if (Ke(e, t, r), r.bytesFilled < r.elementSize) return;rt(e);const o = r.bytesFilled % r.elementSize;if (o > 0) {
-        const t = r.byteOffset + r.bytesFilled,
-              n = r.buffer.slice(t - o, t);Ge(e, n, 0, n.byteLength);
-      }r.buffer = _(r.buffer), r.bytesFilled -= o, Ue(e._controlledReadableByteStream, r), et(e);
-    }(e, t, r);xe(e);
-  }function rt(e) {
-    const t = e._pendingPullIntos.shift();return Ze(e), t;
-  }function ot(e) {
-    e._pullAlgorithm = void 0, e._cancelAlgorithm = void 0;
-  }function nt(e, t) {
-    const r = e._controlledReadableByteStream;"readable" === r._state && (He(e), v(e), ot(e), Se(r, t));
-  }function it(e) {
-    const t = e._controlledReadableByteStream._state;return "errored" === t ? null : "closed" === t ? 0 : e._strategyHWM - e._queueTotalSize;
-  }function at(e) {
-    if ("object" != typeof e || null === e) return !1;const t = Object.getOwnPropertyDescriptor(AbortSignal.prototype, "aborted").get;try {
-      return t.call(e), !0;
-    } catch (e) {
-      return !1;
-    }
-  }function st(e) {
-    return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`);
-  }function lt(e) {
-    return new TypeError("Cannot " + e + " a stream using a released reader");
-  }function ct(e) {
-    return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`);
-  }function ut(e) {
-    e._closedPromise = new Promise((t, r) => {
-      e._closedPromise_resolve = t, e._closedPromise_reject = r;
-    });
-  }function dt(e, t) {
-    ut(e), ft(e, t);
-  }function ft(e, t) {
-    e._closedPromise.catch(() => {}), e._closedPromise_reject(t), e._closedPromise_resolve = void 0, e._closedPromise_reject = void 0;
-  }function _t(e) {
-    e._closedPromise_resolve(void 0), e._closedPromise_resolve = void 0, e._closedPromise_reject = void 0;
-  }function ht(e) {
-    return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`);
-  }function bt(e) {
-    return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`);
-  }function mt(e) {
-    return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`);
-  }function yt(e) {
-    return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`);
-  }class ByteLengthQueuingStrategy {
-    constructor({ highWaterMark: e }) {
-      i(this, "highWaterMark", e);
-    }size(e) {
-      return e.byteLength;
-    }
-  }class CountQueuingStrategy {
-    constructor({ highWaterMark: e }) {
-      i(this, "highWaterMark", e);
-    }size() {
-      return 1;
-    }
-  }class TransformStream {
-    constructor(e = {}, t = {}, r = {}) {
-      const o = t.size;let n = t.highWaterMark;const i = r.size;let a = r.highWaterMark;if (void 0 !== e.writableType) throw new RangeError("Invalid writable type specified");const s = b(o);if (void 0 === n && (n = 1), n = h(n), void 0 !== e.readableType) throw new RangeError("Invalid readable type specified");const l = b(i);let c;void 0 === a && (a = 0), a = h(a), function (e, t, r, o, n, i) {
-        function a() {
-          return t;
-        }e._writable = function (e, t, r, o, n = 1, i = () => 1) {
-          const a = Object.create(WritableStream.prototype);return q(a), $(a, Object.create(WritableStreamDefaultController.prototype), e, t, r, o, n, i), a;
-        }(a, function (t) {
-          return function (e, t) {
-            const r = e._transformStreamController;if (!0 === e._backpressure) {
-              const o = e._backpressureChangePromise;return o.then(() => {
-                const o = e._writable,
-                      n = o._state;if ("erroring" === n) throw o._storedError;return Tt(r, t);
-              });
-            }return Tt(r, t);
-          }(e, t);
-        }, function () {
-          return function (e) {
-            const t = e._readable,
-                  r = e._transformStreamController,
-                  o = r._flushAlgorithm();return Rt(r), o.then(() => {
-              if ("errored" === t._state) throw t._storedError;const e = t._readableStreamController;!0 === Ye(e) && Le(e);
-            }).catch(r => {
-              throw wt(e, r), t._storedError;
-            });
-          }(e);
-        }, function (t) {
-          return function (e, t) {
-            return wt(e, t), Promise.resolve();
-          }(e, t);
-        }, r, o), e._readable = de(a, function () {
-          return function (e) {
-            return St(e, !1), e._backpressureChangePromise;
-          }(e);
-        }, function (t) {
-          return gt(e, t), Promise.resolve();
-        }, n, i), e._backpressure = void 0, e._backpressureChangePromise = void 0, e._backpressureChangePromise_resolve = void 0, St(e, !0), e._transformStreamController = void 0;
-      }(this, new Promise(e => {
-        c = e;
-      }), n, s, a, l), function (e, t) {
-        const r = Object.create(TransformStreamDefaultController.prototype);let o = e => {
-          try {
-            return Pt(r, e), Promise.resolve();
-          } catch (e) {
-            return Promise.reject(e);
-          }
-        };const n = t.transform;if (void 0 !== n) {
-          if ("function" != typeof n) throw new TypeError("transform is not a method");o = e => f(n, t, [e, r]);
-        }const i = u(t, "flush", 0, [r]);!function (e, t, r, o) {
-          t._controlledTransformStream = e, e._transformStreamController = t, t._transformAlgorithm = r, t._flushAlgorithm = o;
-        }(e, r, o, i);
-      }(this, e);const _ = d(e, "start", [this._transformStreamController]);c(_);
-    }get readable() {
-      if (!1 === pt(this)) throw Et("readable");return this._readable;
-    }get writable() {
-      if (!1 === pt(this)) throw Et("writable");return this._writable;
-    }
-  }function pt(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_transformStreamController");
-  }function wt(e, t) {
-    De(e._readable._readableStreamController, t), gt(e, t);
-  }function gt(e, t) {
-    Rt(e._transformStreamController), H(e._writable._writableStreamController, t), !0 === e._backpressure && St(e, !1);
-  }function St(e, t) {
-    void 0 !== e._backpressureChangePromise && e._backpressureChangePromise_resolve(), e._backpressureChangePromise = new Promise(t => {
-      e._backpressureChangePromise_resolve = t;
-    }), e._backpressure = t;
-  }class TransformStreamDefaultController {
-    constructor() {
-      throw new TypeError("TransformStreamDefaultController instances cannot be created directly");
-    }get desiredSize() {
-      if (!1 === vt(this)) throw qt("desiredSize");return Me(this._controlledTransformStream._readable._readableStreamController);
-    }enqueue(e) {
-      if (!1 === vt(this)) throw qt("enqueue");Pt(this, e);
-    }error(e) {
-      if (!1 === vt(this)) throw qt("error");!function (e, t) {
-        wt(e._controlledTransformStream, t);
-      }(this, e);
-    }terminate() {
-      if (!1 === vt(this)) throw qt("terminate");!function (e) {
-        const t = e._controlledTransformStream,
-              r = t._readable._readableStreamController;!0 === Ye(r) && Le(r);const o = new TypeError("TransformStream terminated");gt(t, o);
-      }(this);
-    }
-  }function vt(e) {
-    return !!n(e) && !!Object.prototype.hasOwnProperty.call(e, "_controlledTransformStream");
-  }function Rt(e) {
-    e._transformAlgorithm = void 0, e._flushAlgorithm = void 0;
-  }function Pt(e, t) {
-    const r = e._controlledTransformStream,
-          o = r._readable._readableStreamController;if (!1 === Ye(o)) throw new TypeError("Readable side is not in a state that permits enqueue");try {
-      Ie(o, t);
-    } catch (e) {
-      throw gt(r, e), r._readable._storedError;
-    }(function (e) {
-      return !0 !== ke(e);
-    })(o) !== r._backpressure && St(r, !0);
-  }function Tt(e, t) {
-    return e._transformAlgorithm(t).catch(t => {
-      throw wt(e._controlledTransformStream, t), t;
-    });
-  }function qt(e) {
-    return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`);
-  }function Et(e) {
-    return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`);
-  }const Ct = { ReadableStream: ReadableStream, WritableStream: WritableStream, ByteLengthQueuingStrategy: ByteLengthQueuingStrategy, CountQueuingStrategy: CountQueuingStrategy, TransformStream: TransformStream };void 0 !== r && Object.assign(r, Ct), e.ReadableStream = ReadableStream, e.WritableStream = WritableStream, e.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy, e.CountQueuingStrategy = CountQueuingStrategy, e.TransformStream = TransformStream, Object.defineProperty(e, "__esModule", { value: !0 });
-});
-
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],2:[function(require,module,exports){
-'use strict';
-
-const ea_lib = require('email-addresses');
-
-exports.parse = function parse(line, startAt) {
-    if (!line) throw 'Nothing to parse';
-
-    line = line.trim();
-
-    const addr = ea_lib({
-        input: line,
-        rfc6532: true, // unicode
-        partial: false, // return failed parses
-        simple: false, // simple AST
-        strict: false, // turn off obs- features in the rfc
-        rejectTLD: false, // domains require a "."
-        startAt: startAt || null
-    });
-
-    if (!addr) throw 'No results';
-
-    // console.log("Parsed to: ", require('util').inspect(addr, {depth: 10, colors: true}));
-
-    return addr.addresses.map(map_addresses);
-};
-
-function map_addresses(adr) {
-    if (adr.type === 'group') {
-        return new Group(adr.name, adr.addresses.map(map_addresses));
-    }
-    let comments;
-    if (adr.parts.comments) {
-        comments = adr.parts.comments.map(function (c) {
-            return c.tokens.trim();
-        }).join(' ').trim();
-        // if (comments.length) {
-        //     comments = '(' + comments + ')';
-        // }
-    }
-    let l = adr.local;
-    if (!adr.name && /:/.test(l)) l = '"' + l + '"';
-    return new Address(adr.name, l + '@' + adr.domain, comments);
-}
-
-exports.parseFrom = function (line) {
-    return exports.parse(line, 'from');
-};
-
-exports.parseSender = function (line) {
-    return exports.parse(line, 'sender');
-};
-
-exports.parseReplyTo = function (line) {
-    return exports.parse(line, 'reply-to');
-};
-
-class Group {
-    constructor(display_name, addresses) {
-        this.phrase = display_name;
-        this.addresses = addresses;
-    }
-
-    format() {
-        return this.phrase + ":" + this.addresses.map(function (a) {
-            return a.format();
-        }).join(',');
-    }
-
-    name() {
-        let phrase = this.phrase;
-
-        if (!(phrase && phrase.length)) {
-            phrase = this.comment;
-        }
-
-        const name = _extract_name(phrase);
-        return name;
-    }
-}
-
-class Address {
-    constructor(phrase, address, comment) {
-        this.phrase = phrase || '';
-        this.address = address || '';
-        this.comment = comment || '';
-    }
-
-    host() {
-        const match = /.*@(.*)$/.exec(this.address);
-        if (!match) return null;
-        return match[1];
-    }
-
-    user() {
-        const match = /^(.*)@/.exec(this.address);
-        if (!match) return null;
-        return match[1];
-    }
-
-    format() {
-        const phrase = this.phrase;
-        const email = this.address;
-        let comment = this.comment;
-
-        const addr = [];
-        const atext = new RegExp('^[\\-\\w !#$%&\'*+/=?^`{|}~]+$');
-
-        if (phrase && phrase.length) {
-            addr.push(atext.test(phrase.trim()) ? phrase : _quote_no_esc(phrase) ? phrase : '"' + phrase + '"');
-
-            if (email && email.length) {
-                addr.push("<" + email + ">");
-            }
-        } else if (email && email.length) {
-            addr.push(email);
-        }
-
-        if (comment && /\S/.test(comment)) {
-            comment = comment.replace(/^\s*\(?/, '(').replace(/\)?\s*$/, ')');
-        }
-
-        if (comment && comment.length) {
-            addr.push(comment);
-        }
-
-        return addr.join(' ');
-    }
-
-    name() {
-        let phrase = this.phrase;
-        const addr = this.address;
-
-        if (!(phrase && phrase.length)) {
-            phrase = this.comment;
-        }
-
-        let name = _extract_name(phrase);
-
-        // first.last@domain address
-        if (name === '') {
-            const match = /([^%.@_]+([._][^%.@_]+)+)[@%]/.exec(addr);
-            if (match) {
-                name = match[1].replace(/[._]+/g, ' ');
-                name = _extract_name(name);
-            }
-        }
-
-        if (name === '' && /\/g=/i.test(addr)) {
-            // X400 style address
-            let match = /\/g=([^/]*)/i.exec(addr);
-            const f = match[1];
-            match = /\/s=([^/]*)/i.exec(addr);
-            const l = match[1];
-            name = _extract_name(f + " " + l);
-        }
-
-        return name;
-    }
-}
-
-exports.Address = Address;
-
-// This is because JS regexps have no equivalent of
-// zero-width negative look-behind assertion for: /(?<!\\)"/
-function _quote_no_esc(str) {
-    if (/^"/.test(str)) return true;
-    let match;
-    while (match = /^[\s\S]*?([\s\S])"/.exec(str)) {
-        if (match[1] !== '\\') {
-            return true;
-        }
-        str = str.substr(match[0].length);
-    }
-    return false;
-}
-
-exports.isAllLower = function (string) {
-    return string === string.toLowerCase();
-};
-
-exports.isAllUpper = function (string) {
-    return string === string.toUpperCase();
-};
-
-exports.nameCase = function (string) {
-
-    return string.toLowerCase().replace(/\b(\w+)/g, function (_, d1) {
-        // Set the case of the name to first char upper rest lower
-        return d1.charAt(0).toUpperCase() + d1.slice(1);
-    }).replace(/\bMc(\w)/gi, function (_, d1) {
-        // Scottish names such as 'McLeod'
-        return 'Mc' + d1.toUpperCase();
-    }).replace(/\bo'(\w)/gi, function (_, d1) {
-        // Irish names such as 'O'Malley, O'Reilly'
-        return 'O\'' + d1.toUpperCase();
-    }).replace(/\b(x*(ix)?v*(iv)?i*)\b/ig, function (_, d1) {
-        // Roman numerals, eg 'Level III Support'
-        return d1.toUpperCase();
-    });
-};
-
-// given a comment, attempt to extract a person's name
-function _extract_name(name) {
-    // Using encodings, too hard. See Mail::Message::Field::Full.
-    if (/=?.*?\?=/.test(name)) return '';
-
-    // trim whitespace
-    name = name.trim();
-    name = name.replace(/\s+/, ' ');
-
-    // Disregard numeric names (e.g. 123456.1234@compuserve.com)
-    if (/^[\d ]+$/.test(name)) return '';
-
-    name = name.replace(/^\((.*)\)$/, '$1') // remove outermost parenthesis
-    .replace(/^"(.*)"$/, '$1') // remove outer quotation marks
-    .replace(/\(.*?\)/g, '') // remove minimal embedded comments
-    .replace(/\\/g, '') // remove all escapes
-    .replace(/^"(.*)"$/, '$1') // remove internal quotation marks
-    .replace(/^([^\s]+) ?, ?(.*)$/, '$2 $1') // reverse "Last, First M." if applicable
-    .replace(/,.*/, '');
-
-    // Change casing only when the name contains only upper or only
-    // lower cased characters.
-    if (exports.isAllUpper(name) || exports.isAllLower(name)) {
-        // console.log("Changing case of: " + name);
-        name = exports.nameCase(name);
-        // console.log("Now: " + name);
-    }
-
-    // some cleanup
-    name = name.replace(/\[[^\]]*\]/g, '').replace(/(^[\s'"]+|[\s'"]+$)/g, '').replace(/\s{2,}/g, ' ');
-
-    return name;
-}
-
-},{"email-addresses":34}],3:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-/**
- * @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.
- * @author Artem S Vybornov <vybornov@gmail.com>
- * @license MIT
- */
-var AES_asm = exports.AES_asm = function () {
-  "use strict";
-
-  /**
-   * Galois Field stuff init flag
-   */
-
-  var ginit_done = false;
-
-  /**
-   * Galois Field exponentiation and logarithm tables for 3 (the generator)
-   */
-  var gexp3, glog3;
-
-  /**
-   * Init Galois Field tables
-   */
-  function ginit() {
-    gexp3 = [], glog3 = [];
-
-    var a = 1,
-        c,
-        d;
-    for (c = 0; c < 255; c++) {
-      gexp3[c] = a;
-
-      // Multiply by three
-      d = a & 0x80, a <<= 1, a &= 255;
-      if (d === 0x80) a ^= 0x1b;
-      a ^= gexp3[c];
-
-      // Set the log table value
-      glog3[gexp3[c]] = c;
-    }
-    gexp3[255] = gexp3[0];
-    glog3[0] = 0;
-
-    ginit_done = true;
-  }
-
-  /**
-   * Galois Field multiplication
-   * @param {number} a
-   * @param {number} b
-   * @return {number}
-   */
-  function gmul(a, b) {
-    var c = gexp3[(glog3[a] + glog3[b]) % 255];
-    if (a === 0 || b === 0) c = 0;
-    return c;
-  }
-
-  /**
-   * Galois Field reciprocal
-   * @param {number} a
-   * @return {number}
-   */
-  function ginv(a) {
-    var i = gexp3[255 - glog3[a]];
-    if (a === 0) i = 0;
-    return i;
-  }
-
-  /**
-   * AES stuff init flag
-   */
-  var aes_init_done = false;
-
-  /**
-   * Encryption, Decryption, S-Box and KeyTransform tables
-   *
-   * @type {number[]}
-   */
-  var aes_sbox;
-
-  /**
-   * @type {number[]}
-   */
-  var aes_sinv;
-
-  /**
-   * @type {number[][]}
-   */
-  var aes_enc;
-
-  /**
-   * @type {number[][]}
-   */
-  var aes_dec;
-
-  /**
-   * Init AES tables
-   */
-  function aes_init() {
-    if (!ginit_done) ginit();
-
-    // Calculates AES S-Box value
-    function _s(a) {
-      var c, s, x;
-      s = x = ginv(a);
-      for (c = 0; c < 4; c++) {
-        s = (s << 1 | s >>> 7) & 255;
-        x ^= s;
-      }
-      x ^= 99;
-      return x;
-    }
-
-    // Tables
-    aes_sbox = [], aes_sinv = [], aes_enc = [[], [], [], []], aes_dec = [[], [], [], []];
-
-    for (var i = 0; i < 256; i++) {
-      var s = _s(i);
-
-      // S-Box and its inverse
-      aes_sbox[i] = s;
-      aes_sinv[s] = i;
-
-      // Ecryption and Decryption tables
-      aes_enc[0][i] = gmul(2, s) << 24 | s << 16 | s << 8 | gmul(3, s);
-      aes_dec[0][s] = gmul(14, i) << 24 | gmul(9, i) << 16 | gmul(13, i) << 8 | gmul(11, i);
-      // Rotate tables
-      for (var t = 1; t < 4; t++) {
-        aes_enc[t][i] = aes_enc[t - 1][i] >>> 8 | aes_enc[t - 1][i] << 24;
-        aes_dec[t][s] = aes_dec[t - 1][s] >>> 8 | aes_dec[t - 1][s] << 24;
-      }
-    }
-
-    aes_init_done = true;
-  }
-
-  /**
-   * Asm.js module constructor.
-   *
-   * <p>
-   * Heap buffer layout by offset:
-   * <pre>
-   * 0x0000   encryption key schedule
-   * 0x0400   decryption key schedule
-   * 0x0800   sbox
-   * 0x0c00   inv sbox
-   * 0x1000   encryption tables
-   * 0x2000   decryption tables
-   * 0x3000   reserved (future GCM multiplication lookup table)
-   * 0x4000   data
-   * </pre>
-   * Don't touch anything before <code>0x400</code>.
-   * </p>
-   *
-   * @alias AES_asm
-   * @class
-   * @param foreign - <i>ignored</i>
-   * @param buffer - heap buffer to link with
-   */
-  var wrapper = function wrapper(foreign, buffer) {
-    // Init AES stuff for the first time
-    if (!aes_init_done) aes_init();
-
-    // Fill up AES tables
-    var heap = new Uint32Array(buffer);
-    heap.set(aes_sbox, 0x0800 >> 2);
-    heap.set(aes_sinv, 0x0c00 >> 2);
-    for (var i = 0; i < 4; i++) {
-      heap.set(aes_enc[i], 0x1000 + 0x400 * i >> 2);
-      heap.set(aes_dec[i], 0x2000 + 0x400 * i >> 2);
-    }
-
-    /**
-     * Calculate AES key schedules.
-     * @instance
-     * @memberof AES_asm
-     * @param {number} ks - key size, 4/6/8 (for 128/192/256-bit key correspondingly)
-     * @param {number} k0 - key vector components
-     * @param {number} k1 - key vector components
-     * @param {number} k2 - key vector components
-     * @param {number} k3 - key vector components
-     * @param {number} k4 - key vector components
-     * @param {number} k5 - key vector components
-     * @param {number} k6 - key vector components
-     * @param {number} k7 - key vector components
-     */
-    function set_key(ks, k0, k1, k2, k3, k4, k5, k6, k7) {
-      var ekeys = heap.subarray(0x000, 60),
-          dkeys = heap.subarray(0x100, 0x100 + 60);
-
-      // Encryption key schedule
-      ekeys.set([k0, k1, k2, k3, k4, k5, k6, k7]);
-      for (var i = ks, rcon = 1; i < 4 * ks + 28; i++) {
-        var k = ekeys[i - 1];
-        if (i % ks === 0 || ks === 8 && i % ks === 4) {
-          k = aes_sbox[k >>> 24] << 24 ^ aes_sbox[k >>> 16 & 255] << 16 ^ aes_sbox[k >>> 8 & 255] << 8 ^ aes_sbox[k & 255];
-        }
-        if (i % ks === 0) {
-          k = k << 8 ^ k >>> 24 ^ rcon << 24;
-          rcon = rcon << 1 ^ (rcon & 0x80 ? 0x1b : 0);
-        }
-        ekeys[i] = ekeys[i - ks] ^ k;
-      }
-
-      // Decryption key schedule
-      for (var j = 0; j < i; j += 4) {
-        for (var jj = 0; jj < 4; jj++) {
-          var k = ekeys[i - (4 + j) + (4 - jj) % 4];
-          if (j < 4 || j >= i - 4) {
-            dkeys[j + jj] = k;
-          } else {
-            dkeys[j + jj] = aes_dec[0][aes_sbox[k >>> 24]] ^ aes_dec[1][aes_sbox[k >>> 16 & 255]] ^ aes_dec[2][aes_sbox[k >>> 8 & 255]] ^ aes_dec[3][aes_sbox[k & 255]];
-          }
-        }
-      }
-
-      // Set rounds number
-      asm.set_rounds(ks + 5);
-    }
-
-    // create library object with necessary properties
-    var stdlib = { Uint8Array: Uint8Array, Uint32Array: Uint32Array };
-
-    var asm = function (stdlib, foreign, buffer) {
-      "use asm";
-
-      var S0 = 0,
-          S1 = 0,
-          S2 = 0,
-          S3 = 0,
-          I0 = 0,
-          I1 = 0,
-          I2 = 0,
-          I3 = 0,
-          N0 = 0,
-          N1 = 0,
-          N2 = 0,
-          N3 = 0,
-          M0 = 0,
-          M1 = 0,
-          M2 = 0,
-          M3 = 0,
-          H0 = 0,
-          H1 = 0,
-          H2 = 0,
-          H3 = 0,
-          R = 0;
-
-      var HEAP = new stdlib.Uint32Array(buffer),
-          DATA = new stdlib.Uint8Array(buffer);
-
-      /**
-       * AES core
-       * @param {number} k - precomputed key schedule offset
-       * @param {number} s - precomputed sbox table offset
-       * @param {number} t - precomputed round table offset
-       * @param {number} r - number of inner rounds to perform
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _core(k, s, t, r, x0, x1, x2, x3) {
-        k = k | 0;
-        s = s | 0;
-        t = t | 0;
-        r = r | 0;
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        var t1 = 0,
-            t2 = 0,
-            t3 = 0,
-            y0 = 0,
-            y1 = 0,
-            y2 = 0,
-            y3 = 0,
-            i = 0;
-
-        t1 = t | 0x400, t2 = t | 0x800, t3 = t | 0xc00;
-
-        // round 0
-        x0 = x0 ^ HEAP[(k | 0) >> 2], x1 = x1 ^ HEAP[(k | 4) >> 2], x2 = x2 ^ HEAP[(k | 8) >> 2], x3 = x3 ^ HEAP[(k | 12) >> 2];
-
-        // round 1..r
-        for (i = 16; (i | 0) <= r << 4; i = i + 16 | 0) {
-          y0 = HEAP[(t | x0 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x1 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x2 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2], y1 = HEAP[(t | x1 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x2 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x3 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2], y2 = HEAP[(t | x2 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x3 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x0 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2], y3 = HEAP[(t | x3 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x0 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x1 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];
-          x0 = y0, x1 = y1, x2 = y2, x3 = y3;
-        }
-
-        // final round
-        S0 = HEAP[(s | x0 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x1 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x2 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2], S1 = HEAP[(s | x1 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x2 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x3 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2], S2 = HEAP[(s | x2 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x3 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x0 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2], S3 = HEAP[(s | x3 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x0 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x1 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];
-      }
-
-      /**
-       * ECB mode encryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _ecb_enc(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, x0, x1, x2, x3);
-      }
-
-      /**
-       * ECB mode decryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _ecb_dec(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        var t = 0;
-
-        _core(0x0400, 0x0c00, 0x2000, R, x0, x3, x2, x1);
-
-        t = S1, S1 = S3, S3 = t;
-      }
-
-      /**
-       * CBC mode encryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _cbc_enc(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, I0 ^ x0, I1 ^ x1, I2 ^ x2, I3 ^ x3);
-
-        I0 = S0, I1 = S1, I2 = S2, I3 = S3;
-      }
-
-      /**
-       * CBC mode decryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _cbc_dec(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        var t = 0;
-
-        _core(0x0400, 0x0c00, 0x2000, R, x0, x3, x2, x1);
-
-        t = S1, S1 = S3, S3 = t;
-
-        S0 = S0 ^ I0, S1 = S1 ^ I1, S2 = S2 ^ I2, S3 = S3 ^ I3;
-
-        I0 = x0, I1 = x1, I2 = x2, I3 = x3;
-      }
-
-      /**
-       * CFB mode encryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _cfb_enc(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, I0, I1, I2, I3);
-
-        I0 = S0 = S0 ^ x0, I1 = S1 = S1 ^ x1, I2 = S2 = S2 ^ x2, I3 = S3 = S3 ^ x3;
-      }
-
-      /**
-       * CFB mode decryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _cfb_dec(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, I0, I1, I2, I3);
-
-        S0 = S0 ^ x0, S1 = S1 ^ x1, S2 = S2 ^ x2, S3 = S3 ^ x3;
-
-        I0 = x0, I1 = x1, I2 = x2, I3 = x3;
-      }
-
-      /**
-       * OFB mode encryption / decryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _ofb(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, I0, I1, I2, I3);
-
-        I0 = S0, I1 = S1, I2 = S2, I3 = S3;
-
-        S0 = S0 ^ x0, S1 = S1 ^ x1, S2 = S2 ^ x2, S3 = S3 ^ x3;
-      }
-
-      /**
-       * CTR mode encryption / decryption
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _ctr(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        _core(0x0000, 0x0800, 0x1000, R, N0, N1, N2, N3);
-
-        N3 = ~M3 & N3 | M3 & N3 + 1;
-        N2 = ~M2 & N2 | M2 & N2 + ((N3 | 0) == 0);
-        N1 = ~M1 & N1 | M1 & N1 + ((N2 | 0) == 0);
-        N0 = ~M0 & N0 | M0 & N0 + ((N1 | 0) == 0);
-
-        S0 = S0 ^ x0;
-        S1 = S1 ^ x1;
-        S2 = S2 ^ x2;
-        S3 = S3 ^ x3;
-      }
-
-      /**
-       * GCM mode MAC calculation
-       * @param {number} x0 - 128-bit input block vector
-       * @param {number} x1 - 128-bit input block vector
-       * @param {number} x2 - 128-bit input block vector
-       * @param {number} x3 - 128-bit input block vector
-       */
-      function _gcm_mac(x0, x1, x2, x3) {
-        x0 = x0 | 0;
-        x1 = x1 | 0;
-        x2 = x2 | 0;
-        x3 = x3 | 0;
-
-        var y0 = 0,
-            y1 = 0,
-            y2 = 0,
-            y3 = 0,
-            z0 = 0,
-            z1 = 0,
-            z2 = 0,
-            z3 = 0,
-            i = 0,
-            c = 0;
-
-        x0 = x0 ^ I0, x1 = x1 ^ I1, x2 = x2 ^ I2, x3 = x3 ^ I3;
-
-        y0 = H0 | 0, y1 = H1 | 0, y2 = H2 | 0, y3 = H3 | 0;
-
-        for (; (i | 0) < 128; i = i + 1 | 0) {
-          if (y0 >>> 31) {
-            z0 = z0 ^ x0, z1 = z1 ^ x1, z2 = z2 ^ x2, z3 = z3 ^ x3;
-          }
-
-          y0 = y0 << 1 | y1 >>> 31, y1 = y1 << 1 | y2 >>> 31, y2 = y2 << 1 | y3 >>> 31, y3 = y3 << 1;
-
-          c = x3 & 1;
-
-          x3 = x3 >>> 1 | x2 << 31, x2 = x2 >>> 1 | x1 << 31, x1 = x1 >>> 1 | x0 << 31, x0 = x0 >>> 1;
-
-          if (c) x0 = x0 ^ 0xe1000000;
-        }
-
-        I0 = z0, I1 = z1, I2 = z2, I3 = z3;
-      }
-
-      /**
-       * Set the internal rounds number.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} r - number if inner AES rounds
-       */
-      function set_rounds(r) {
-        r = r | 0;
-        R = r;
-      }
-
-      /**
-       * Populate the internal state of the module.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} s0 - state vector
-       * @param {number} s1 - state vector
-       * @param {number} s2 - state vector
-       * @param {number} s3 - state vector
-       */
-      function set_state(s0, s1, s2, s3) {
-        s0 = s0 | 0;
-        s1 = s1 | 0;
-        s2 = s2 | 0;
-        s3 = s3 | 0;
-
-        S0 = s0, S1 = s1, S2 = s2, S3 = s3;
-      }
-
-      /**
-       * Populate the internal iv of the module.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} i0 - iv vector
-       * @param {number} i1 - iv vector
-       * @param {number} i2 - iv vector
-       * @param {number} i3 - iv vector
-       */
-      function set_iv(i0, i1, i2, i3) {
-        i0 = i0 | 0;
-        i1 = i1 | 0;
-        i2 = i2 | 0;
-        i3 = i3 | 0;
-
-        I0 = i0, I1 = i1, I2 = i2, I3 = i3;
-      }
-
-      /**
-       * Set nonce for CTR-family modes.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} n0 - nonce vector
-       * @param {number} n1 - nonce vector
-       * @param {number} n2 - nonce vector
-       * @param {number} n3 - nonce vector
-       */
-      function set_nonce(n0, n1, n2, n3) {
-        n0 = n0 | 0;
-        n1 = n1 | 0;
-        n2 = n2 | 0;
-        n3 = n3 | 0;
-
-        N0 = n0, N1 = n1, N2 = n2, N3 = n3;
-      }
-
-      /**
-       * Set counter mask for CTR-family modes.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} m0 - counter mask vector
-       * @param {number} m1 - counter mask vector
-       * @param {number} m2 - counter mask vector
-       * @param {number} m3 - counter mask vector
-       */
-      function set_mask(m0, m1, m2, m3) {
-        m0 = m0 | 0;
-        m1 = m1 | 0;
-        m2 = m2 | 0;
-        m3 = m3 | 0;
-
-        M0 = m0, M1 = m1, M2 = m2, M3 = m3;
-      }
-
-      /**
-       * Set counter for CTR-family modes.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} c0 - counter vector
-       * @param {number} c1 - counter vector
-       * @param {number} c2 - counter vector
-       * @param {number} c3 - counter vector
-       */
-      function set_counter(c0, c1, c2, c3) {
-        c0 = c0 | 0;
-        c1 = c1 | 0;
-        c2 = c2 | 0;
-        c3 = c3 | 0;
-
-        N3 = ~M3 & N3 | M3 & c3, N2 = ~M2 & N2 | M2 & c2, N1 = ~M1 & N1 | M1 & c1, N0 = ~M0 & N0 | M0 & c0;
-      }
-
-      /**
-       * Store the internal state vector into the heap.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} pos - offset where to put the data
-       * @return {number} The number of bytes have been written into the heap, always 16.
-       */
-      function get_state(pos) {
-        pos = pos | 0;
-
-        if (pos & 15) return -1;
-
-        DATA[pos | 0] = S0 >>> 24, DATA[pos | 1] = S0 >>> 16 & 255, DATA[pos | 2] = S0 >>> 8 & 255, DATA[pos | 3] = S0 & 255, DATA[pos | 4] = S1 >>> 24, DATA[pos | 5] = S1 >>> 16 & 255, DATA[pos | 6] = S1 >>> 8 & 255, DATA[pos | 7] = S1 & 255, DATA[pos | 8] = S2 >>> 24, DATA[pos | 9] = S2 >>> 16 & 255, DATA[pos | 10] = S2 >>> 8 & 255, DATA[pos | 11] = S2 & 255, DATA[pos | 12] = S3 >>> 24, DATA[pos | 13] = S3 >>> 16 & 255, DATA[pos | 14] = S3 >>> 8 & 255, DATA[pos | 15] = S3 & 255;
-
-        return 16;
-      }
-
-      /**
-       * Store the internal iv vector into the heap.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} pos - offset where to put the data
-       * @return {number} The number of bytes have been written into the heap, always 16.
-       */
-      function get_iv(pos) {
-        pos = pos | 0;
-
-        if (pos & 15) return -1;
-
-        DATA[pos | 0] = I0 >>> 24, DATA[pos | 1] = I0 >>> 16 & 255, DATA[pos | 2] = I0 >>> 8 & 255, DATA[pos | 3] = I0 & 255, DATA[pos | 4] = I1 >>> 24, DATA[pos | 5] = I1 >>> 16 & 255, DATA[pos | 6] = I1 >>> 8 & 255, DATA[pos | 7] = I1 & 255, DATA[pos | 8] = I2 >>> 24, DATA[pos | 9] = I2 >>> 16 & 255, DATA[pos | 10] = I2 >>> 8 & 255, DATA[pos | 11] = I2 & 255, DATA[pos | 12] = I3 >>> 24, DATA[pos | 13] = I3 >>> 16 & 255, DATA[pos | 14] = I3 >>> 8 & 255, DATA[pos | 15] = I3 & 255;
-
-        return 16;
-      }
-
-      /**
-       * GCM initialization.
-       * @instance
-       * @memberof AES_asm
-       */
-      function gcm_init() {
-        _ecb_enc(0, 0, 0, 0);
-        H0 = S0, H1 = S1, H2 = S2, H3 = S3;
-      }
-
-      /**
-       * Perform ciphering operation on the supplied data.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)
-       * @param {number} pos - offset of the data being processed
-       * @param {number} len - length of the data being processed
-       * @return {number} Actual amount of data have been processed.
-       */
-      function cipher(mode, pos, len) {
-        mode = mode | 0;
-        pos = pos | 0;
-        len = len | 0;
-
-        var ret = 0;
-
-        if (pos & 15) return -1;
-
-        while ((len | 0) >= 16) {
-          _cipher_modes[mode & 7](DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3], DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7], DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11], DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]);
-
-          DATA[pos | 0] = S0 >>> 24, DATA[pos | 1] = S0 >>> 16 & 255, DATA[pos | 2] = S0 >>> 8 & 255, DATA[pos | 3] = S0 & 255, DATA[pos | 4] = S1 >>> 24, DATA[pos | 5] = S1 >>> 16 & 255, DATA[pos | 6] = S1 >>> 8 & 255, DATA[pos | 7] = S1 & 255, DATA[pos | 8] = S2 >>> 24, DATA[pos | 9] = S2 >>> 16 & 255, DATA[pos | 10] = S2 >>> 8 & 255, DATA[pos | 11] = S2 & 255, DATA[pos | 12] = S3 >>> 24, DATA[pos | 13] = S3 >>> 16 & 255, DATA[pos | 14] = S3 >>> 8 & 255, DATA[pos | 15] = S3 & 255;
-
-          ret = ret + 16 | 0, pos = pos + 16 | 0, len = len - 16 | 0;
-        }
-
-        return ret | 0;
-      }
-
-      /**
-       * Calculates MAC of the supplied data.
-       * @instance
-       * @memberof AES_asm
-       * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)
-       * @param {number} pos - offset of the data being processed
-       * @param {number} len - length of the data being processed
-       * @return {number} Actual amount of data have been processed.
-       */
-      function mac(mode, pos, len) {
-        mode = mode | 0;
-        pos = pos | 0;
-        len = len | 0;
-
-        var ret = 0;
-
-        if (pos & 15) return -1;
-
-        while ((len | 0) >= 16) {
-          _mac_modes[mode & 1](DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3], DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7], DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11], DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]);
-
-          ret = ret + 16 | 0, pos = pos + 16 | 0, len = len - 16 | 0;
-        }
-
-        return ret | 0;
-      }
-
-      /**
-       * AES cipher modes table (virual methods)
-       */
-      var _cipher_modes = [_ecb_enc, _ecb_dec, _cbc_enc, _cbc_dec, _cfb_enc, _cfb_dec, _ofb, _ctr];
-
-      /**
-       * AES MAC modes table (virual methods)
-       */
-      var _mac_modes = [_cbc_enc, _gcm_mac];
-
-      /**
-       * Asm.js module exports
-       */
-      return {
-        set_rounds: set_rounds,
-        set_state: set_state,
-        set_iv: set_iv,
-        set_nonce: set_nonce,
-        set_mask: set_mask,
-        set_counter: set_counter,
-        get_state: get_state,
-        get_iv: get_iv,
-        gcm_init: gcm_init,
-        cipher: cipher,
-        mac: mac
-      };
-    }(stdlib, foreign, buffer);
-
-    asm.set_key = set_key;
-
-    return asm;
-  };
-
-  /**
-   * AES enciphering mode constants
-   * @enum {number}
-   * @const
-   */
-  wrapper.ENC = {
-    ECB: 0,
-    CBC: 2,
-    CFB: 4,
-    OFB: 6,
-    CTR: 7
-  },
-
-  /**
-   * AES deciphering mode constants
-   * @enum {number}
-   * @const
-   */
-  wrapper.DEC = {
-    ECB: 1,
-    CBC: 3,
-    CFB: 5,
-    OFB: 6,
-    CTR: 7
-  },
-
-  /**
-   * AES MAC mode constants
-   * @enum {number}
-   * @const
-   */
-  wrapper.MAC = {
-    CBC: 0,
-    GCM: 1
-  };
-
-  /**
-   * Heap data offset
-   * @type {number}
-   * @const
-   */
-  wrapper.HEAP_DATA = 0x4000;
-
-  return wrapper;
-}();
-
-},{}],4:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES = undefined;
-
-var _aes = require('./aes.asm');
-
-var _utils = require('../other/utils');
-
-var _errors = require('../other/errors');
-
-var heap_pool = [];
-var asm_pool = [];
-var AES = /** @class */function () {
-    function AES(key, iv, padding, mode) {
-        if (padding === void 0) {
-            padding = true;
-        }
-        this.pos = 0;
-        this.len = 0;
-        this.mode = mode;
-        // The AES object state
-        this.pos = 0;
-        this.len = 0;
-        this.key = key;
-        this.iv = iv;
-        this.padding = padding;
-        // The AES "worker"
-        this.acquire_asm();
-    }
-    AES.prototype.acquire_asm = function () {
-        if (this.heap === undefined && this.asm === undefined) {
-            this.heap = heap_pool.pop() || (0, _utils._heap_init)().subarray(_aes.AES_asm.HEAP_DATA);
-            this.asm = asm_pool.pop() || (0, _aes.AES_asm)(null, this.heap.buffer);
-            this.reset(this.key, this.iv);
-        }
-    };
-    AES.prototype.release_asm = function () {
-        heap_pool.push(this.heap);
-        ;
-        asm_pool.push(this.asm);
-        this.heap = undefined;
-        this.asm = undefined;
-    };
-    AES.prototype.reset = function (key, iv) {
-        // Key
-        var keylen = key.length;
-        if (keylen !== 16 && keylen !== 24 && keylen !== 32) throw new _errors.IllegalArgumentError('illegal key size');
-        var keyview = new DataView(key.buffer, key.byteOffset, key.byteLength);
-        this.asm.set_key(keylen >> 2, keyview.getUint32(0), keyview.getUint32(4), keyview.getUint32(8), keyview.getUint32(12), keylen > 16 ? keyview.getUint32(16) : 0, keylen > 16 ? keyview.getUint32(20) : 0, keylen > 24 ? keyview.getUint32(24) : 0, keylen > 24 ? keyview.getUint32(28) : 0);
-        // IV
-        if (iv !== undefined) {
-            if (iv.length !== 16) throw new _errors.IllegalArgumentError('illegal iv size');
-            var ivview = new DataView(iv.buffer, iv.byteOffset, iv.byteLength);
-            this.asm.set_iv(ivview.getUint32(0), ivview.getUint32(4), ivview.getUint32(8), ivview.getUint32(12));
-        } else {
-            this.asm.set_iv(0, 0, 0, 0);
-        }
-    };
-    AES.prototype.AES_Encrypt_process = function (data) {
-        if (!(0, _utils.is_bytes)(data)) throw new TypeError("data isn't of expected type");
-        this.acquire_asm();
-        var asm = this.asm;
-        var heap = this.heap;
-        var amode = _aes.AES_asm.ENC[this.mode];
-        var hpos = _aes.AES_asm.HEAP_DATA;
-        var pos = this.pos;
-        var len = this.len;
-        var dpos = 0;
-        var dlen = data.length || 0;
-        var rpos = 0;
-        var rlen = len + dlen & -16;
-        var wlen = 0;
-        var result = new Uint8Array(rlen);
-        while (dlen > 0) {
-            wlen = (0, _utils._heap_write)(heap, pos + len, data, dpos, dlen);
-            len += wlen;
-            dpos += wlen;
-            dlen -= wlen;
-            wlen = asm.cipher(amode, hpos + pos, len);
-            if (wlen) result.set(heap.subarray(pos, pos + wlen), rpos);
-            rpos += wlen;
-            if (wlen < len) {
-                pos += wlen;
-                len -= wlen;
-            } else {
-                pos = 0;
-                len = 0;
-            }
-        }
-        this.pos = pos;
-        this.len = len;
-        return result;
-    };
-    AES.prototype.AES_Encrypt_finish = function () {
-        this.acquire_asm();
-        var asm = this.asm;
-        var heap = this.heap;
-        var amode = _aes.AES_asm.ENC[this.mode];
-        var hpos = _aes.AES_asm.HEAP_DATA;
-        var pos = this.pos;
-        var len = this.len;
-        var plen = 16 - len % 16;
-        var rlen = len;
-        if (this.hasOwnProperty('padding')) {
-            if (this.padding) {
-                for (var p = 0; p < plen; ++p) {
-                    heap[pos + len + p] = plen;
-                }
-                len += plen;
-                rlen = len;
-            } else if (len % 16) {
-                throw new _errors.IllegalArgumentError('data length must be a multiple of the block size');
-            }
-        } else {
-            len += plen;
-        }
-        var result = new Uint8Array(rlen);
-        if (len) asm.cipher(amode, hpos + pos, len);
-        if (rlen) result.set(heap.subarray(pos, pos + rlen));
-        this.pos = 0;
-        this.len = 0;
-        this.release_asm();
-        return result;
-    };
-    AES.prototype.AES_Decrypt_process = function (data) {
-        if (!(0, _utils.is_bytes)(data)) throw new TypeError("data isn't of expected type");
-        this.acquire_asm();
-        var asm = this.asm;
-        var heap = this.heap;
-        var amode = _aes.AES_asm.DEC[this.mode];
-        var hpos = _aes.AES_asm.HEAP_DATA;
-        var pos = this.pos;
-        var len = this.len;
-        var dpos = 0;
-        var dlen = data.length || 0;
-        var rpos = 0;
-        var rlen = len + dlen & -16;
-        var plen = 0;
-        var wlen = 0;
-        if (this.padding) {
-            plen = len + dlen - rlen || 16;
-            rlen -= plen;
-        }
-        var result = new Uint8Array(rlen);
-        while (dlen > 0) {
-            wlen = (0, _utils._heap_write)(heap, pos + len, data, dpos, dlen);
-            len += wlen;
-            dpos += wlen;
-            dlen -= wlen;
-            wlen = asm.cipher(amode, hpos + pos, len - (!dlen ? plen : 0));
-            if (wlen) result.set(heap.subarray(pos, pos + wlen), rpos);
-            rpos += wlen;
-            if (wlen < len) {
-                pos += wlen;
-                len -= wlen;
-            } else {
-                pos = 0;
-                len = 0;
-            }
-        }
-        this.pos = pos;
-        this.len = len;
-        return result;
-    };
-    AES.prototype.AES_Decrypt_finish = function () {
-        this.acquire_asm();
-        var asm = this.asm;
-        var heap = this.heap;
-        var amode = _aes.AES_asm.DEC[this.mode];
-        var hpos = _aes.AES_asm.HEAP_DATA;
-        var pos = this.pos;
-        var len = this.len;
-        var rlen = len;
-        if (len > 0) {
-            if (len % 16) {
-                if (this.hasOwnProperty('padding')) {
-                    throw new _errors.IllegalArgumentError('data length must be a multiple of the block size');
-                } else {
-                    len += 16 - len % 16;
-                }
-            }
-            asm.cipher(amode, hpos + pos, len);
-            if (this.hasOwnProperty('padding') && this.padding) {
-                var pad = heap[pos + rlen - 1];
-                if (pad < 1 || pad > 16 || pad > rlen) throw new _errors.SecurityError('bad padding');
-                var pcheck = 0;
-                for (var i = pad; i > 1; i--) pcheck |= pad ^ heap[pos + rlen - i];
-                if (pcheck) throw new _errors.SecurityError('bad padding');
-                rlen -= pad;
-            }
-        }
-        var result = new Uint8Array(rlen);
-        if (rlen > 0) {
-            result.set(heap.subarray(pos, pos + rlen));
-        }
-        this.pos = 0;
-        this.len = 0;
-        this.release_asm();
-        return result;
-    };
-    return AES;
-}();
-exports.AES = AES;
-
-},{"../other/errors":15,"../other/utils":16,"./aes.asm":3}],5:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES_CBC = undefined;
-
-var _aes = require('./aes');
-
-var _utils = require('../other/utils');
-
-var __extends = undefined && undefined.__extends || function () {
-    var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
-        d.__proto__ = b;
-    } || function (d, b) {
-        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() {
-            this.constructor = d;
-        }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-}();
-
-var AES_CBC = /** @class */function (_super) {
-    __extends(AES_CBC, _super);
-    function AES_CBC(key, iv, padding) {
-        if (padding === void 0) {
-            padding = true;
-        }
-        return _super.call(this, key, iv, padding, 'CBC') || this;
-    }
-    AES_CBC.encrypt = function (data, key, padding, iv) {
-        if (padding === void 0) {
-            padding = true;
-        }
-        return new AES_CBC(key, iv, padding).encrypt(data);
-    };
-    AES_CBC.decrypt = function (data, key, padding, iv) {
-        if (padding === void 0) {
-            padding = true;
-        }
-        return new AES_CBC(key, iv, padding).decrypt(data);
-    };
-    AES_CBC.prototype.encrypt = function (data) {
-        var r1 = this.AES_Encrypt_process(data);
-        var r2 = this.AES_Encrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    AES_CBC.prototype.decrypt = function (data) {
-        var r1 = this.AES_Decrypt_process(data);
-        var r2 = this.AES_Decrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    return AES_CBC;
-}(_aes.AES);
-exports.AES_CBC = AES_CBC;
-
-},{"../other/utils":16,"./aes":4}],6:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES_CFB = undefined;
-
-var _aes = require('./aes');
-
-var _utils = require('../other/utils');
-
-var __extends = undefined && undefined.__extends || function () {
-    var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
-        d.__proto__ = b;
-    } || function (d, b) {
-        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() {
-            this.constructor = d;
-        }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-}();
-
-var AES_CFB = /** @class */function (_super) {
-    __extends(AES_CFB, _super);
-    function AES_CFB(key, iv) {
-        var _this = _super.call(this, key, iv, true, 'CFB') || this;
-        delete _this.padding;
-        return _this;
-    }
-    AES_CFB.encrypt = function (data, key, iv) {
-        return new AES_CFB(key, iv).encrypt(data);
-    };
-    AES_CFB.decrypt = function (data, key, iv) {
-        return new AES_CFB(key, iv).decrypt(data);
-    };
-    AES_CFB.prototype.encrypt = function (data) {
-        var r1 = this.AES_Encrypt_process(data);
-        var r2 = this.AES_Encrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    AES_CFB.prototype.decrypt = function (data) {
-        var r1 = this.AES_Decrypt_process(data);
-        var r2 = this.AES_Decrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    return AES_CFB;
-}(_aes.AES);
-exports.AES_CFB = AES_CFB;
-
-},{"../other/utils":16,"./aes":4}],7:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES_CTR = undefined;
-
-var _aes = require('./aes');
-
-var _errors = require('../other/errors');
-
-var _utils = require('../other/utils');
-
-var __extends = undefined && undefined.__extends || function () {
-    var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
-        d.__proto__ = b;
-    } || function (d, b) {
-        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() {
-            this.constructor = d;
-        }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-}();
-
-var AES_CTR = /** @class */function (_super) {
-    __extends(AES_CTR, _super);
-    function AES_CTR(key, nonce) {
-        var _this = _super.call(this, key, undefined, false, 'CTR') || this;
-        delete _this.padding;
-        _this.AES_CTR_set_options(nonce);
-        return _this;
-    }
-    AES_CTR.encrypt = function (data, key, nonce) {
-        return new AES_CTR(key, nonce).encrypt(data);
-    };
-    AES_CTR.decrypt = function (data, key, nonce) {
-        return new AES_CTR(key, nonce).encrypt(data);
-    };
-    AES_CTR.prototype.encrypt = function (data) {
-        var r1 = this.AES_Encrypt_process(data);
-        var r2 = this.AES_Encrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    AES_CTR.prototype.decrypt = function (data) {
-        var r1 = this.AES_Encrypt_process(data);
-        var r2 = this.AES_Encrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    AES_CTR.prototype.AES_CTR_set_options = function (nonce, counter, size) {
-        if (size !== undefined) {
-            if (size < 8 || size > 48) throw new _errors.IllegalArgumentError('illegal counter size');
-            var mask = Math.pow(2, size) - 1;
-            this.asm.set_mask(0, 0, mask / 0x100000000 | 0, mask | 0);
-        } else {
-            size = 48;
-            this.asm.set_mask(0, 0, 0xffff, 0xffffffff);
-        }
-        if (nonce !== undefined) {
-            var len = nonce.length;
-            if (!len || len > 16) throw new _errors.IllegalArgumentError('illegal nonce size');
-            var view = new DataView(new ArrayBuffer(16));
-            new Uint8Array(view.buffer).set(nonce);
-            this.asm.set_nonce(view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12));
-        } else {
-            throw new Error('nonce is required');
-        }
-        if (counter !== undefined) {
-            if (counter < 0 || counter >= Math.pow(2, size)) throw new _errors.IllegalArgumentError('illegal counter value');
-            this.asm.set_counter(0, 0, counter / 0x100000000 | 0, counter | 0);
-        }
-    };
-    return AES_CTR;
-}(_aes.AES);
-exports.AES_CTR = AES_CTR;
-
-},{"../other/errors":15,"../other/utils":16,"./aes":4}],8:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES_ECB = undefined;
-
-var _aes = require('./aes');
-
-var _utils = require('../other/utils');
-
-var __extends = undefined && undefined.__extends || function () {
-    var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
-        d.__proto__ = b;
-    } || function (d, b) {
-        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() {
-            this.constructor = d;
-        }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-}();
-
-var AES_ECB = /** @class */function (_super) {
-    __extends(AES_ECB, _super);
-    function AES_ECB(key, padding) {
-        if (padding === void 0) {
-            padding = false;
-        }
-        return _super.call(this, key, undefined, padding, 'ECB') || this;
-    }
-    AES_ECB.encrypt = function (data, key, padding) {
-        if (padding === void 0) {
-            padding = false;
-        }
-        return new AES_ECB(key, padding).encrypt(data);
-    };
-    AES_ECB.decrypt = function (data, key, padding) {
-        if (padding === void 0) {
-            padding = false;
-        }
-        return new AES_ECB(key, padding).decrypt(data);
-    };
-    AES_ECB.prototype.encrypt = function (data) {
-        var r1 = this.AES_Encrypt_process(data);
-        var r2 = this.AES_Encrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    AES_ECB.prototype.decrypt = function (data) {
-        var r1 = this.AES_Decrypt_process(data);
-        var r2 = this.AES_Decrypt_finish();
-        return (0, _utils.joinBytes)(r1, r2);
-    };
-    return AES_ECB;
-}(_aes.AES);
-exports.AES_ECB = AES_ECB;
-
-},{"../other/utils":16,"./aes":4}],9:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.AES_GCM = undefined;
-
-var _errors = require('../other/errors');
-
-var _utils = require('../other/utils');
-
-var _aes = require('./aes');
-
-var _aes2 = require('./aes.asm');
-
-var __extends = undefined && undefined.__extends || function () {
-    var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
-        d.__proto__ = b;
-    } || function (d, b) {
-        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
-    };
-    return function (d, b) {
-        extendStatics(d, b);
-        function __() {
-            this.constructor = d;
-        }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-}();
-
-var _AES_GCM_data_maxLength = 68719476704; // 2^36 - 2^5
-var AES_GCM = /** @class */function (_super) {
-    __extends(AES_GCM, _super);
-    function AES_GCM(key, nonce, adata, tagSize) {
-        if (tagSize === void 0) {
-            tagSize = 16;
-        }
-        var _this = _super.call(this, key, undefined, false, 'CTR') || this;
-        _this.tagSize = tagSize;
-        _this.gamma0 = 0;
-        _this.counter = 1;
-        // Init GCM
-        _this.asm.gcm_init();
-        // Tag size
-        if (_this.tagSize < 4 || _this.tagSize > 16) throw new _errors.IllegalArgumentError('illegal tagSize value');
-        // Nonce
-        var noncelen = nonce.length || 0;
-        var noncebuf = new Uint8Array(16);
-        if (noncelen !== 12) {
-            _this._gcm_mac_process(nonce);
-            _this.heap[0] = 0;
-            _this.heap[1] = 0;
-            _this.heap[2] = 0;
-            _this.heap[3] = 0;
-            _this.heap[4] = 0;
-            _this.heap[5] = 0;
-            _this.heap[6] = 0;
-            _this.heap[7] = 0;
-            _this.heap[8] = 0;
-            _this.heap[9] = 0;
-            _this.heap[10] = 0;
-            _this.heap[11] = noncelen >>> 29;
-            _this.heap[12] = noncelen >>> 21 & 255;
-            _this.heap[13] = noncelen >>> 13 & 255;
-            _this.heap[14] = noncelen >>> 5 & 255;
-            _this.heap[15] = noncelen << 3 & 255;
-            _this.asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA, 16);
-            _this.asm.get_iv(_aes2.AES_asm.HEAP_DATA);
-            _this.asm.set_iv(0, 0, 0, 0);
-            noncebuf.set(_this.heap.subarray(0, 16));
-        } else {
-            noncebuf.set(nonce);
-            noncebuf[15] = 1;
-        }
-        var nonceview = new DataView(noncebuf.buffer);
-        _this.gamma0 = nonceview.getUint32(12);
-        _this.asm.set_nonce(nonceview.getUint32(0), nonceview.getUint32(4), nonceview.getUint32(8), 0);
-        _this.asm.set_mask(0, 0, 0, 0xffffffff);
-        // Associated data
-        if (adata !== undefined) {
-            if (adata.length > _AES_GCM_data_maxLength) throw new _errors.IllegalArgumentError('illegal adata length');
-            if (adata.length) {
-                _this.adata = adata;
-                _this._gcm_mac_process(adata);
-            } else {
-                _this.adata = undefined;
-            }
-        } else {
-            _this.adata = undefined;
-        }
-        // Counter
-        if (_this.counter < 1 || _this.counter > 0xffffffff) throw new RangeError('counter must be a positive 32-bit integer');
-        _this.asm.set_counter(0, 0, 0, _this.gamma0 + _this.counter | 0);
-        return _this;
-    }
-    AES_GCM.encrypt = function (cleartext, key, nonce, adata, tagsize) {
-        return new AES_GCM(key, nonce, adata, tagsize).encrypt(cleartext);
-    };
-    AES_GCM.decrypt = function (ciphertext, key, nonce, adata, tagsize) {
-        return new AES_GCM(key, nonce, adata, tagsize).decrypt(ciphertext);
-    };
-    AES_GCM.prototype.encrypt = function (data) {
-        return this.AES_GCM_encrypt(data);
-    };
-    AES_GCM.prototype.decrypt = function (data) {
-        return this.AES_GCM_decrypt(data);
-    };
-    AES_GCM.prototype.AES_GCM_Encrypt_process = function (data) {
-        var dpos = 0;
-        var dlen = data.length || 0;
-        var asm = this.asm;
-        var heap = this.heap;
-        var counter = this.counter;
-        var pos = this.pos;
-        var len = this.len;
-        var rpos = 0;
-        var rlen = len + dlen & -16;
-        var wlen = 0;
-        if ((counter - 1 << 4) + len + dlen > _AES_GCM_data_maxLength) throw new RangeError('counter overflow');
-        var result = new Uint8Array(rlen);
-        while (dlen > 0) {
-            wlen = (0, _utils._heap_write)(heap, pos + len, data, dpos, dlen);
-            len += wlen;
-            dpos += wlen;
-            dlen -= wlen;
-            wlen = asm.cipher(_aes2.AES_asm.ENC.CTR, _aes2.AES_asm.HEAP_DATA + pos, len);
-            wlen = asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA + pos, wlen);
-            if (wlen) result.set(heap.subarray(pos, pos + wlen), rpos);
-            counter += wlen >>> 4;
-            rpos += wlen;
-            if (wlen < len) {
-                pos += wlen;
-                len -= wlen;
-            } else {
-                pos = 0;
-                len = 0;
-            }
-        }
-        this.counter = counter;
-        this.pos = pos;
-        this.len = len;
-        return result;
-    };
-    AES_GCM.prototype.AES_GCM_Encrypt_finish = function () {
-        var asm = this.asm;
-        var heap = this.heap;
-        var counter = this.counter;
-        var tagSize = this.tagSize;
-        var adata = this.adata;
-        var pos = this.pos;
-        var len = this.len;
-        var result = new Uint8Array(len + tagSize);
-        asm.cipher(_aes2.AES_asm.ENC.CTR, _aes2.AES_asm.HEAP_DATA + pos, len + 15 & -16);
-        if (len) result.set(heap.subarray(pos, pos + len));
-        var i = len;
-        for (; i & 15; i++) heap[pos + i] = 0;
-        asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA + pos, i);
-        var alen = adata !== undefined ? adata.length : 0;
-        var clen = (counter - 1 << 4) + len;
-        heap[0] = 0;
-        heap[1] = 0;
-        heap[2] = 0;
-        heap[3] = alen >>> 29;
-        heap[4] = alen >>> 21;
-        heap[5] = alen >>> 13 & 255;
-        heap[6] = alen >>> 5 & 255;
-        heap[7] = alen << 3 & 255;
-        heap[8] = heap[9] = heap[10] = 0;
-        heap[11] = clen >>> 29;
-        heap[12] = clen >>> 21 & 255;
-        heap[13] = clen >>> 13 & 255;
-        heap[14] = clen >>> 5 & 255;
-        heap[15] = clen << 3 & 255;
-        asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA, 16);
-        asm.get_iv(_aes2.AES_asm.HEAP_DATA);
-        asm.set_counter(0, 0, 0, this.gamma0);
-        asm.cipher(_aes2.AES_asm.ENC.CTR, _aes2.AES_asm.HEAP_DATA, 16);
-        result.set(heap.subarray(0, tagSize), len);
-        this.counter = 1;
-        this.pos = 0;
-        this.len = 0;
-        return result;
-    };
-    AES_GCM.prototype.AES_GCM_Decrypt_process = function (data) {
-        var dpos = 0;
-        var dlen = data.length || 0;
-        var asm = this.asm;
-        var heap = this.heap;
-        var counter = this.counter;
-        var tagSize = this.tagSize;
-        var pos = this.pos;
-        var len = this.len;
-        var rpos = 0;
-        var rlen = len + dlen > tagSize ? len + dlen - tagSize & -16 : 0;
-        var tlen = len + dlen - rlen;
-        var wlen = 0;
-        if ((counter - 1 << 4) + len + dlen > _AES_GCM_data_maxLength) throw new RangeError('counter overflow');
-        var result = new Uint8Array(rlen);
-        while (dlen > tlen) {
-            wlen = (0, _utils._heap_write)(heap, pos + len, data, dpos, dlen - tlen);
-            len += wlen;
-            dpos += wlen;
-            dlen -= wlen;
-            wlen = asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA + pos, wlen);
-            wlen = asm.cipher(_aes2.AES_asm.DEC.CTR, _aes2.AES_asm.HEAP_DATA + pos, wlen);
-            if (wlen) result.set(heap.subarray(pos, pos + wlen), rpos);
-            counter += wlen >>> 4;
-            rpos += wlen;
-            pos = 0;
-            len = 0;
-        }
-        if (dlen > 0) {
-            len += (0, _utils._heap_write)(heap, 0, data, dpos, dlen);
-        }
-        this.counter = counter;
-        this.pos = pos;
-        this.len = len;
-        return result;
-    };
-    AES_GCM.prototype.AES_GCM_Decrypt_finish = function () {
-        var asm = this.asm;
-        var heap = this.heap;
-        var tagSize = this.tagSize;
-        var adata = this.adata;
-        var counter = this.counter;
-        var pos = this.pos;
-        var len = this.len;
-        var rlen = len - tagSize;
-        if (len < tagSize) throw new _errors.IllegalStateError('authentication tag not found');
-        var result = new Uint8Array(rlen);
-        var atag = new Uint8Array(heap.subarray(pos + rlen, pos + len));
-        var i = rlen;
-        for (; i & 15; i++) heap[pos + i] = 0;
-        asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA + pos, i);
-        asm.cipher(_aes2.AES_asm.DEC.CTR, _aes2.AES_asm.HEAP_DATA + pos, i);
-        if (rlen) result.set(heap.subarray(pos, pos + rlen));
-        var alen = adata !== undefined ? adata.length : 0;
-        var clen = (counter - 1 << 4) + len - tagSize;
-        heap[0] = 0;
-        heap[1] = 0;
-        heap[2] = 0;
-        heap[3] = alen >>> 29;
-        heap[4] = alen >>> 21;
-        heap[5] = alen >>> 13 & 255;
-        heap[6] = alen >>> 5 & 255;
-        heap[7] = alen << 3 & 255;
-        heap[8] = heap[9] = heap[10] = 0;
-        heap[11] = clen >>> 29;
-        heap[12] = clen >>> 21 & 255;
-        heap[13] = clen >>> 13 & 255;
-        heap[14] = clen >>> 5 & 255;
-        heap[15] = clen << 3 & 255;
-        asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA, 16);
-        asm.get_iv(_aes2.AES_asm.HEAP_DATA);
-        asm.set_counter(0, 0, 0, this.gamma0);
-        asm.cipher(_aes2.AES_asm.ENC.CTR, _aes2.AES_asm.HEAP_DATA, 16);
-        var acheck = 0;
-        for (var i_1 = 0; i_1 < tagSize; ++i_1) acheck |= atag[i_1] ^ heap[i_1];
-        if (acheck) throw new _errors.SecurityError('data integrity check failed');
-        this.counter = 1;
-        this.pos = 0;
-        this.len = 0;
-        return result;
-    };
-    AES_GCM.prototype.AES_GCM_decrypt = function (data) {
-        var result1 = this.AES_GCM_Decrypt_process(data);
-        var result2 = this.AES_GCM_Decrypt_finish();
-        var result = new Uint8Array(result1.length + result2.length);
-        if (result1.length) result.set(result1);
-        if (result2.length) result.set(result2, result1.length);
-        return result;
-    };
-    AES_GCM.prototype.AES_GCM_encrypt = function (data) {
-        var result1 = this.AES_GCM_Encrypt_process(data);
-        var result2 = this.AES_GCM_Encrypt_finish();
-        var result = new Uint8Array(result1.length + result2.length);
-        if (result1.length) result.set(result1);
-        if (result2.length) result.set(result2, result1.length);
-        return result;
-    };
-    AES_GCM.prototype._gcm_mac_process = function (data) {
-        var heap = this.heap;
-        var asm = this.asm;
-        var dpos = 0;
-        var dlen = data.length || 0;
-        var wlen = 0;
-        while (dlen > 0) {
-            wlen = (0, _utils._heap_write)(heap, 0, data, dpos, dlen);
-            dpos += wlen;
-            dlen -= wlen;
-            while (wlen & 15) heap[wlen++] = 0;
-            asm.mac(_aes2.AES_asm.MAC.GCM, _aes2.AES_asm.HEAP_DATA, wlen);
-        }
-    };
-    return AES_GCM;
-}(_aes.AES);
-exports.AES_GCM = AES_GCM;
-
-},{"../other/errors":15,"../other/utils":16,"./aes":4,"./aes.asm":3}],10:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.Hash = undefined;
-
-var _utils = require('../other/utils');
-
-var _errors = require('../other/errors');
-
-var Hash = /** @class */function () {
-    function Hash() {
-        this.pos = 0;
-        this.len = 0;
-        this.acquire_asm();
-    }
-    Hash.prototype.acquire_asm = function () {
-        if (this.heap === undefined && this.asm === undefined) {
-            this.heap = this.constructor.heap_pool.pop() || (0, _utils._heap_init)();
-            this.asm = this.constructor.asm_pool.pop() || this.constructor.asm_function({ Uint8Array: Uint8Array }, null, this.heap.buffer);
-            this.reset();
-        }
-    };
-    Hash.prototype.release_asm = function () {
-        this.constructor.heap_pool.push(this.heap);
-        ;
-        this.constructor.asm_pool.push(this.asm);
-        this.heap = undefined;
-        this.asm = undefined;
-    };
-    Hash.prototype.reset = function () {
-        this.acquire_asm();
-        this.result = null;
-        this.pos = 0;
-        this.len = 0;
-        this.asm.reset();
-        return this;
-    };
-    Hash.prototype.process = function (data) {
-        if (this.result !== null) throw new _errors.IllegalStateError('state must be reset before processing new data');
-        this.acquire_asm();
-        var asm = this.asm;
-        var heap = this.heap;
-        var hpos = this.pos;
-        var hlen = this.len;
-        var dpos = 0;
-        var dlen = data.length;
-        var wlen = 0;
-        while (dlen > 0) {
-            wlen = (0, _utils._heap_write)(heap, hpos + hlen, data, dpos, dlen);
-            hlen += wlen;
-            dpos += wlen;
-            dlen -= wlen;
-            wlen = asm.process(hpos, hlen);
-            hpos += wlen;
-            hlen -= wlen;
-            if (!hlen) hpos = 0;
-        }
-        this.pos = hpos;
-        this.len = hlen;
-        return this;
-    };
-    Hash.prototype.finish = function () {
-        if (this.result !== null) throw new _errors.IllegalStateError('state must be reset before processing new data');
-        this.acquire_asm();
-        this.asm.finish(this.pos, this.len, 0);
-        this.result = new Uint8Array(this.HASH_SIZE);
-        this.result.set(this.heap.subarray(0, this.HASH_SIZE));
-        this.pos = 0;
-        this.len = 0;
-        this.release_asm();
-        return this;
-    };
-    return Hash;
-}();
-exports.Hash = Hash;
-
-},{"../other/errors":15,"../other/utils":16}],11:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-    value: true
-});
-exports.sha1_asm = sha1_asm;
-function sha1_asm(stdlib, foreign, buffer) {
-    "use asm";
-
-    // SHA256 state
-
-    var H0 = 0,
-        H1 = 0,
-        H2 = 0,
-        H3 = 0,
-        H4 = 0,
-        TOTAL0 = 0,
-        TOTAL1 = 0;
-
-    // HMAC state
-    var I0 = 0,
-        I1 = 0,
-        I2 = 0,
-        I3 = 0,
-        I4 = 0,
-        O0 = 0,
-        O1 = 0,
-        O2 = 0,
-        O3 = 0,
-        O4 = 0;
-
-    // I/O buffer
-    var HEAP = new stdlib.Uint8Array(buffer);
-
-    function _core(w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15) {
-        w0 = w0 | 0;
-        w1 = w1 | 0;
-        w2 = w2 | 0;
-        w3 = w3 | 0;
-        w4 = w4 | 0;
-        w5 = w5 | 0;
-        w6 = w6 | 0;
-        w7 = w7 | 0;
-        w8 = w8 | 0;
-        w9 = w9 | 0;
-        w10 = w10 | 0;
-        w11 = w11 | 0;
-        w12 = w12 | 0;
-        w13 = w13 | 0;
-        w14 = w14 | 0;
-        w15 = w15 | 0;
-
-        var a = 0,
-            b = 0,
-            c = 0,
-            d = 0,
-            e = 0,
-            n = 0,
-            t = 0,
-            w16 = 0,
-            w17 = 0,
-            w18 = 0,
-            w19 = 0,
-            w20 = 0,
-            w21 = 0,
-            w22 = 0,
-            w23 = 0,
-            w24 = 0,
-            w25 = 0,
-            w26 = 0,
-            w27 = 0,
-            w28 = 0,
-            w29 = 0,
-            w30 = 0,
-            w31 = 0,
-            w32 = 0,
-            w33 = 0,
-            w34 = 0,
-            w35 = 0,
-            w36 = 0,
-            w37 = 0,
-            w38 = 0,
-            w39 = 0,
-            w40 = 0,
-            w41 = 0,
-            w42 = 0,
-            w43 = 0,
-            w44 = 0,
-            w45 = 0,
-            w46 = 0,
-            w47 = 0,
-            w48 = 0,
-            w49 = 0,
-            w50 = 0,
-            w51 = 0,
-            w52 = 0,
-            w53 = 0,
-            w54 = 0,
-            w55 = 0,
-            w56 = 0,
-            w57 = 0,
-            w58 = 0,
-            w59 = 0,
-            w60 = 0,
-            w61 = 0,
-            w62 = 0,
-            w63 = 0,
-            w64 = 0,
-            w65 = 0,
-            w66 = 0,
-            w67 = 0,
-            w68 = 0,
-            w69 = 0,
-            w70 = 0,
-            w71 = 0,
-            w72 = 0,
-            w73 = 0,
-            w74 = 0,
-            w75 = 0,
-            w76 = 0,
-            w77 = 0,
-            w78 = 0,
-            w79 = 0;
-
-        a = H0;
-        b = H1;
-        c = H2;
-        d = H3;
-        e = H4;
-
-        // 0
-        t = w0 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 1
-        t = w1 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 2
-        t = w2 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 3
-        t = w3 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 4
-        t = w4 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 5
-        t = w5 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 6
-        t = w6 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 7
-        t = w7 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 8
-        t = w8 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 9
-        t = w9 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 10
-        t = w10 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 11
-        t = w11 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 12
-        t = w12 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 13
-        t = w13 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 14
-        t = w14 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 15
-        t = w15 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 16
-        n = w13 ^ w8 ^ w2 ^ w0;
-        w16 = n << 1 | n >>> 31;
-        t = w16 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 17
-        n = w14 ^ w9 ^ w3 ^ w1;
-        w17 = n << 1 | n >>> 31;
-        t = w17 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 18
-        n = w15 ^ w10 ^ w4 ^ w2;
-        w18 = n << 1 | n >>> 31;
-        t = w18 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 19
-        n = w16 ^ w11 ^ w5 ^ w3;
-        w19 = n << 1 | n >>> 31;
-        t = w19 + (a << 5 | a >>> 27) + e + (b & c | ~b & d) + 0x5a827999 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 20
-        n = w17 ^ w12 ^ w6 ^ w4;
-        w20 = n << 1 | n >>> 31;
-        t = w20 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 21
-        n = w18 ^ w13 ^ w7 ^ w5;
-        w21 = n << 1 | n >>> 31;
-        t = w21 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 22
-        n = w19 ^ w14 ^ w8 ^ w6;
-        w22 = n << 1 | n >>> 31;
-        t = w22 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 23
-        n = w20 ^ w15 ^ w9 ^ w7;
-        w23 = n << 1 | n >>> 31;
-        t = w23 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 24
-        n = w21 ^ w16 ^ w10 ^ w8;
-        w24 = n << 1 | n >>> 31;
-        t = w24 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 25
-        n = w22 ^ w17 ^ w11 ^ w9;
-        w25 = n << 1 | n >>> 31;
-        t = w25 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 26
-        n = w23 ^ w18 ^ w12 ^ w10;
-        w26 = n << 1 | n >>> 31;
-        t = w26 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 27
-        n = w24 ^ w19 ^ w13 ^ w11;
-        w27 = n << 1 | n >>> 31;
-        t = w27 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 28
-        n = w25 ^ w20 ^ w14 ^ w12;
-        w28 = n << 1 | n >>> 31;
-        t = w28 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 29
-        n = w26 ^ w21 ^ w15 ^ w13;
-        w29 = n << 1 | n >>> 31;
-        t = w29 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 30
-        n = w27 ^ w22 ^ w16 ^ w14;
-        w30 = n << 1 | n >>> 31;
-        t = w30 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 31
-        n = w28 ^ w23 ^ w17 ^ w15;
-        w31 = n << 1 | n >>> 31;
-        t = w31 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 32
-        n = w29 ^ w24 ^ w18 ^ w16;
-        w32 = n << 1 | n >>> 31;
-        t = w32 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 33
-        n = w30 ^ w25 ^ w19 ^ w17;
-        w33 = n << 1 | n >>> 31;
-        t = w33 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 34
-        n = w31 ^ w26 ^ w20 ^ w18;
-        w34 = n << 1 | n >>> 31;
-        t = w34 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 35
-        n = w32 ^ w27 ^ w21 ^ w19;
-        w35 = n << 1 | n >>> 31;
-        t = w35 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 36
-        n = w33 ^ w28 ^ w22 ^ w20;
-        w36 = n << 1 | n >>> 31;
-        t = w36 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 37
-        n = w34 ^ w29 ^ w23 ^ w21;
-        w37 = n << 1 | n >>> 31;
-        t = w37 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 38
-        n = w35 ^ w30 ^ w24 ^ w22;
-        w38 = n << 1 | n >>> 31;
-        t = w38 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 39
-        n = w36 ^ w31 ^ w25 ^ w23;
-        w39 = n << 1 | n >>> 31;
-        t = w39 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) + 0x6ed9eba1 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 40
-        n = w37 ^ w32 ^ w26 ^ w24;
-        w40 = n << 1 | n >>> 31;
-        t = w40 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 41
-        n = w38 ^ w33 ^ w27 ^ w25;
-        w41 = n << 1 | n >>> 31;
-        t = w41 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 42
-        n = w39 ^ w34 ^ w28 ^ w26;
-        w42 = n << 1 | n >>> 31;
-        t = w42 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 43
-        n = w40 ^ w35 ^ w29 ^ w27;
-        w43 = n << 1 | n >>> 31;
-        t = w43 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 44
-        n = w41 ^ w36 ^ w30 ^ w28;
-        w44 = n << 1 | n >>> 31;
-        t = w44 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 45
-        n = w42 ^ w37 ^ w31 ^ w29;
-        w45 = n << 1 | n >>> 31;
-        t = w45 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 46
-        n = w43 ^ w38 ^ w32 ^ w30;
-        w46 = n << 1 | n >>> 31;
-        t = w46 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 47
-        n = w44 ^ w39 ^ w33 ^ w31;
-        w47 = n << 1 | n >>> 31;
-        t = w47 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 48
-        n = w45 ^ w40 ^ w34 ^ w32;
-        w48 = n << 1 | n >>> 31;
-        t = w48 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 49
-        n = w46 ^ w41 ^ w35 ^ w33;
-        w49 = n << 1 | n >>> 31;
-        t = w49 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 50
-        n = w47 ^ w42 ^ w36 ^ w34;
-        w50 = n << 1 | n >>> 31;
-        t = w50 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 51
-        n = w48 ^ w43 ^ w37 ^ w35;
-        w51 = n << 1 | n >>> 31;
-        t = w51 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 52
-        n = w49 ^ w44 ^ w38 ^ w36;
-        w52 = n << 1 | n >>> 31;
-        t = w52 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 53
-        n = w50 ^ w45 ^ w39 ^ w37;
-        w53 = n << 1 | n >>> 31;
-        t = w53 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 54
-        n = w51 ^ w46 ^ w40 ^ w38;
-        w54 = n << 1 | n >>> 31;
-        t = w54 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 55
-        n = w52 ^ w47 ^ w41 ^ w39;
-        w55 = n << 1 | n >>> 31;
-        t = w55 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 56
-        n = w53 ^ w48 ^ w42 ^ w40;
-        w56 = n << 1 | n >>> 31;
-        t = w56 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 57
-        n = w54 ^ w49 ^ w43 ^ w41;
-        w57 = n << 1 | n >>> 31;
-        t = w57 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 58
-        n = w55 ^ w50 ^ w44 ^ w42;
-        w58 = n << 1 | n >>> 31;
-        t = w58 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 59
-        n = w56 ^ w51 ^ w45 ^ w43;
-        w59 = n << 1 | n >>> 31;
-        t = w59 + (a << 5 | a >>> 27) + e + (b & c | b & d | c & d) - 0x70e44324 | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 60
-        n = w57 ^ w52 ^ w46 ^ w44;
-        w60 = n << 1 | n >>> 31;
-        t = w60 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 61
-        n = w58 ^ w53 ^ w47 ^ w45;
-        w61 = n << 1 | n >>> 31;
-        t = w61 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 62
-        n = w59 ^ w54 ^ w48 ^ w46;
-        w62 = n << 1 | n >>> 31;
-        t = w62 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 63
-        n = w60 ^ w55 ^ w49 ^ w47;
-        w63 = n << 1 | n >>> 31;
-        t = w63 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 64
-        n = w61 ^ w56 ^ w50 ^ w48;
-        w64 = n << 1 | n >>> 31;
-        t = w64 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 65
-        n = w62 ^ w57 ^ w51 ^ w49;
-        w65 = n << 1 | n >>> 31;
-        t = w65 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 66
-        n = w63 ^ w58 ^ w52 ^ w50;
-        w66 = n << 1 | n >>> 31;
-        t = w66 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 67
-        n = w64 ^ w59 ^ w53 ^ w51;
-        w67 = n << 1 | n >>> 31;
-        t = w67 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 68
-        n = w65 ^ w60 ^ w54 ^ w52;
-        w68 = n << 1 | n >>> 31;
-        t = w68 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 69
-        n = w66 ^ w61 ^ w55 ^ w53;
-        w69 = n << 1 | n >>> 31;
-        t = w69 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 70
-        n = w67 ^ w62 ^ w56 ^ w54;
-        w70 = n << 1 | n >>> 31;
-        t = w70 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 71
-        n = w68 ^ w63 ^ w57 ^ w55;
-        w71 = n << 1 | n >>> 31;
-        t = w71 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 72
-        n = w69 ^ w64 ^ w58 ^ w56;
-        w72 = n << 1 | n >>> 31;
-        t = w72 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 73
-        n = w70 ^ w65 ^ w59 ^ w57;
-        w73 = n << 1 | n >>> 31;
-        t = w73 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 74
-        n = w71 ^ w66 ^ w60 ^ w58;
-        w74 = n << 1 | n >>> 31;
-        t = w74 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 75
-        n = w72 ^ w67 ^ w61 ^ w59;
-        w75 = n << 1 | n >>> 31;
-        t = w75 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 76
-        n = w73 ^ w68 ^ w62 ^ w60;
-        w76 = n << 1 | n >>> 31;
-        t = w76 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 77
-        n = w74 ^ w69 ^ w63 ^ w61;
-        w77 = n << 1 | n >>> 31;
-        t = w77 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 78
-        n = w75 ^ w70 ^ w64 ^ w62;
-        w78 = n << 1 | n >>> 31;
-        t = w78 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        // 79
-        n = w76 ^ w71 ^ w65 ^ w63;
-        w79 = n << 1 | n >>> 31;
-        t = w79 + (a << 5 | a >>> 27) + e + (b ^ c ^ d) - 0x359d3e2a | 0;
-        e = d;d = c;c = b << 30 | b >>> 2;b = a;a = t;
-
-        H0 = H0 + a | 0;
-        H1 = H1 + b | 0;
-        H2 = H2 + c | 0;
-        H3 = H3 + d | 0;
-        H4 = H4 + e | 0;
-    }
-
-    function _core_heap(offset) {
-        offset = offset | 0;
-

scripts.js 🔗

@@ -1,537 +0,0 @@
-System.register("local", [], function (exports_1, context_1) {
-    "use strict";
-    var __moduleName = context_1 && context_1.id;
-    function createElement(name, attributes, ...children) {
-        return {
-            name,
-            attributes: attributes || {},
-            children: Array.prototype.concat(...(children || []))
-        };
-    }
-    exports_1("createElement", createElement);
-    return {
-        setters: [],
-        execute: function () {
-        }
-    };
-});
-System.register("renderer", [], function (exports_2, context_2) {
-    "use strict";
-    var __moduleName = context_2 && context_2.id;
-    function render(element) {
-        if (element == null)
-            return '';
-        if (typeof element !== "object")
-            element = String(element);
-        if (typeof element === "string")
-            return element.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
-        //if (element instanceof Raw) return element.html;
-        console.assert(!!element.attributes, 'Element attributes must be defined:\n' + JSON.stringify(element));
-        const elementAttributes = element.attributes;
-        let attributes = Object.keys(elementAttributes).filter(key => {
-            const value = elementAttributes[key];
-            return value != null;
-        }).map(key => {
-            const value = elementAttributes[key];
-            if (value === true) {
-                return key;
-            }
-            return `${key}="${String(value).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;')}"`;
-        }).join(' ');
-        if (attributes.length > 0) {
-            attributes = ' ' + attributes;
-        }
-        const children = element.children.length > 0 ? `>${element.children.map(child => render(child)).join('')}` : '>';
-        return `<${element.name}${attributes}${children}</${element.name}>`;
-    }
-    exports_2("render", render);
-    return {
-        setters: [],
-        execute: function () {
-        }
-    };
-});
-/*
-    Copyright 2019 Wiktor Kwapisiewicz
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-       https://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-*/
-System.register("openpgp-key", ["local", "renderer"], function (exports_3, context_3) {
-    "use strict";
-    var local, renderer, proofs, dateFormat;
-    var __moduleName = context_3 && context_3.id;
-    function getLatestSignature(signatures, date = new Date()) {
-        let signature = signatures[0];
-        for (let i = 1; i < signatures.length; i++) {
-            if (signatures[i].created >= signature.created &&
-                (signatures[i].created <= date || date === null)) {
-                signature = signatures[i];
-            }
-        }
-        return signature;
-    }
-    function getVerifier(proofUrl, fingerprint) {
-        for (const proof of proofs) {
-            const matches = proofUrl.match(proof.matcher);
-            if (!matches)
-                continue;
-            const bound = Object.entries(proof.variables).map(([key, value]) => [key, matches[value || 0]]).reduce((previous, current) => { previous[current[0]] = current[1]; return previous; }, { FINGERPRINT: fingerprint });
-            const profile = proof.profile.replace(/\{([A-Z]+)\}/g, (_, name) => bound[name]);
-            const proofJson = proof.proof.replace(/\{([A-Z]+)\}/g, (_, name) => bound[name]);
-            const username = proof.username.replace(/\{([A-Z]+)\}/g, (_, name) => bound[name]);
-            return {
-                profile,
-                proofUrl,
-                proofJson,
-                username,
-                service: proof.service,
-                checks: (proof.checks || []).map((check) => ({
-                    relation: check.relation,
-                    proof: check.proof,
-                    claim: check.claim.replace(/\{([A-Z]+)\}/g, (_, name) => bound[name])
-                }))
-            };
-        }
-        return null;
-    }
-    async function verify(proofJson, checks) {
-        const response = await fetch(proofJson, {
-            headers: {
-                Accept: 'application/json'
-            },
-            credentials: 'omit'
-        });
-        if (!response.ok) {
-            throw new Error('Response failed: ' + response.status);
-        }
-        const json = await response.json();
-        for (const check of checks) {
-            const proofValue = check.proof.reduce((previous, current) => {
-                if (current == null || previous == null)
-                    return null;
-                if (Array.isArray(previous) && typeof current === 'string') {
-                    return previous.map(value => value[current]);
-                }
-                return previous[current];
-            }, json);
-            const claimValue = check.claim;
-            if (check.relation === 'eq') {
-                if (proofValue !== claimValue) {
-                    throw new Error(`Proof value ${proofValue} !== claim value ${claimValue}`);
-                }
-            }
-            else if (check.relation === 'contains') {
-                if (!proofValue || proofValue.indexOf(claimValue) === -1) {
-                    throw new Error(`Proof value ${proofValue} does not contain claim value ${claimValue}`);
-                }
-            }
-            else if (check.relation === 'oneOf') {
-                if (!proofValue || proofValue.indexOf(claimValue) === -1) {
-                    throw new Error(`Proof value ${proofValue} does not contain claim value ${claimValue}`);
-                }
-            }
-        }
-    }
-    function serviceToClassName(service) {
-        if (service === 'github') {
-            return 'fab fa-github';
-        }
-        else if (service === 'reddit') {
-            return 'fab fa-reddit';
-        }
-        else if (service === 'hackernews') {
-            return 'fab fa-hacker-news';
-        }
-        else if (service === 'mastodon') {
-            return 'fab fa-mastodon';
-        }
-        else if (service === 'dns') {
-            return 'fas fa-globe';
-        }
-        else {
-            return '';
-        }
-    }
-    async function lookupKey(query) {
-        const result = document.getElementById('result');
-        result.innerHTML = renderer.render(local.createElement("span", null,
-            "Looking up ",
-            query,
-            "..."));
-        let keys, keyUrl;
-        const keyLink = document.querySelector('[rel="pgpkey"]');
-        if (!keyLink) {
-            const keyserver = document.querySelector('meta[name="keyserver"]').content;
-            keyUrl = `https://${keyserver}/pks/lookup?op=get&options=mr&search=${query}`;
-            const response = await fetch(keyUrl);
-            const key = await response.text();
-            keys = (await openpgp.key.readArmored(key)).keys;
-        }
-        else {
-            keyUrl = keyLink.href;
-            const response = await fetch(keyUrl);
-            const key = await response.arrayBuffer();
-            keys = (await openpgp.key.read(new Uint8Array(key))).keys;
-        }
-        if (keys.length > 0) {
-            loadKeys(keyUrl, keys).catch(e => {
-                result.innerHTML = renderer.render(local.createElement("span", null,
-                    "Could not display this key: ",
-                    String(e)));
-            });
-        }
-        else {
-            result.innerHTML = renderer.render(local.createElement("span", null,
-                query,
-                ": not found"));
-        }
-    }
-    async function loadKeys(keyUrl, _keys) {
-        const key = _keys[0];
-        window.key = key;
-        const primaryUser = await key.getPrimaryUser();
-        for (var i = key.users.length - 1; i >= 0; i--) {
-            try {
-                if (await key.users[i].verify(key.primaryKey) === openpgp.enums.keyStatus.valid) {
-                    continue;
-                }
-            }
-            catch (e) {
-                console.error('User verification error:', e);
-            }
-            //key.users.splice(i, 1);
-        }
-        for (const user of key.users) {
-            user.revoked = await user.isRevoked();
-        }
-        const lastPrimarySig = primaryUser.selfCertification;
-        const keys = [{
-                fingerprint: key.primaryKey.getFingerprint(),
-                status: await key.verifyPrimaryKey(),
-                keyFlags: lastPrimarySig.keyFlags,
-                created: key.primaryKey.created,
-                algorithmInfo: key.primaryKey.getAlgorithmInfo(),
-                expirationTime: lastPrimarySig.getExpirationTime()
-            }];
-        //console.log(lastPrimarySig);
-        const proofs = (lastPrimarySig.notations || [])
-            .filter((notation) => notation[0] === 'proof@metacode.biz' && typeof notation[1] === 'string')
-            .map((notation) => notation[1])
-            .map((proofUrl) => getVerifier(proofUrl, key.primaryKey.getFingerprint()))
-            .filter((verifier) => !!verifier);
-        /*
-        proofs.push(getVerifier('https://www.reddit.com/user/wiktor-k/comments/bo5oih/test/', key.primaryKey.getFingerprint()));
-        proofs.push(getVerifier('https://news.ycombinator.com/user?id=wiktor-k', key.primaryKey.getFingerprint()));
-        proofs.push(getVerifier('https://gist.github.com/wiktor-k/389d589dd19250e1f9a42bc3d5d40c16', key.primaryKey.getFingerprint()));
-        proofs.push(getVerifier('https://metacode.biz/@wiktor', key.primaryKey.getFingerprint()));
-        proofs.push(getVerifier('dns:metacode.biz?type=TXT', key.primaryKey.getFingerprint()));
-        */
-        for (const subKey of key.subKeys) {
-            const lastSig = getLatestSignature(subKey.bindingSignatures);
-            let reasonForRevocation;
-            if (subKey.revocationSignatures.length > 0) {
-                reasonForRevocation = subKey.revocationSignatures[subKey.revocationSignatures.length - 1].reasonForRevocationString;
-            }
-            keys.push({
-                fingerprint: subKey.keyPacket.getFingerprint(),
-                status: await subKey.verify(key.primaryKey),
-                reasonForRevocation,
-                keyFlags: lastSig.keyFlags,
-                created: lastSig.created,
-                algorithmInfo: subKey.keyPacket.getAlgorithmInfo(),
-                expirationTime: await subKey.getExpirationTime()
-            });
-        }
-        //key.users.splice(primaryUser.index, 1);
-        const profileHash = await openpgp.crypto.hash.md5(openpgp.util.str_to_Uint8Array(primaryUser.user.userId.email)).then((u) => openpgp.util.str_to_hex(openpgp.util.Uint8Array_to_str(u)));
-        const now = new Date();
-        // there is index property on primaryUser
-        document.title = primaryUser.user.userId.name + ' - OpenPGP key';
-        const info = local.createElement("div", null,
-            local.createElement("div", { class: "wrapper" },
-                local.createElement("div", { class: "bio" },
-                    local.createElement("img", { class: "avatar", src: "https://seccdn.libravatar.org/avatar/" + profileHash + "?s=148&d=" + encodeURIComponent("https://www.gravatar.com/avatar/" + profileHash + "?s=148&d=mm") }),
-                    local.createElement("h2", null, primaryUser.user.userId.name)),
-                local.createElement("div", null,
-                    local.createElement("ul", { class: "props" },
-                        local.createElement("li", { title: key.primaryKey.getFingerprint() },
-                            local.createElement("a", { href: keyUrl, target: "_blank", rel: "nofollow noopener" },
-                                "\uD83D\uDD11\u00A0",
-                                local.createElement("code", null, key.primaryKey.getFingerprint()))),
-                        key.users.filter((user) => !user.revoked && user.userId).map((user) => user.userId.email).filter((email) => !!email).map((email) => local.createElement("li", null,
-                            local.createElement("a", { href: "mailto:" + email },
-                                "\uD83D\uDCE7 ",
-                                email
-                            //formatAttribute(user.userAttribute)
-                            ))),
-                        proofs.filter((proof) => !!proof).map((proof) => local.createElement("li", null,
-                            local.createElement("a", { rel: "me noopener nofollow", target: "_blank", href: proof.profile },
-                                local.createElement("i", { class: serviceToClassName(proof.service) }),
-                                proof.username),
-                            local.createElement("a", { rel: "noopener nofollow", target: "_blank", href: proof.proofUrl, class: "proof", "data-proof-json": proof.proofJson, "data-checks": JSON.stringify(proof.checks) },
-                                local.createElement("i", { class: "fas fa-certificate" }),
-                                "proof")))))),
-            local.createElement("details", null,
-                local.createElement("summary", null, "\uD83D\uDD12 Encrypt"),
-                local.createElement("textarea", { placeholder: "Message to encrypt...", id: "message" }),
-                local.createElement("input", { type: "button", value: "Encrypt", id: "encrypt" }),
-                ' ',
-                local.createElement("input", { type: "button", id: "send", "data-recipient": primaryUser.user.userId.email, value: "Send to " + primaryUser.user.userId.email })),
-            local.createElement("details", null,
-                local.createElement("summary", null, "\uD83D\uDD8B Verify"),
-                local.createElement("textarea", { placeholder: "Clearsigned message to verify...", id: "signed" }),
-                local.createElement("input", { type: "button", value: "Verify", id: "verify" })),
-            local.createElement("details", null,
-                local.createElement("summary", null, "\uD83D\uDD11 Key details"),
-                local.createElement("p", null, "Subkeys:"),
-                local.createElement("ul", null, keys.map((subKey) => local.createElement("li", null,
-                    local.createElement("div", null,
-                        getStatus(subKey.status, subKey.reasonForRevocation),
-                        " ",
-                        getIcon(subKey.keyFlags),
-                        " ",
-                        local.createElement("code", null, subKey.fingerprint.substring(24).match(/.{4}/g).join(" ")),
-                        " ",
-                        formatAlgorithm(subKey.algorithmInfo.algorithm),
-                        " (",
-                        subKey.algorithmInfo.bits,
-                        ")"),
-                    local.createElement("div", null,
-                        "created: ",
-                        formatDate(subKey.created),
-                        ", expire",
-                        now > subKey.expirationTime ? "d" : "s",
-                        ": ",
-                        formatDate(subKey.expirationTime)))))));
-        document.getElementById('result').innerHTML = renderer.render(info);
-        checkProofs();
-    }
-    async function checkProofs() {
-        const proofs = document.querySelectorAll('[data-checks]');
-        for (const proofLink of proofs) {
-            const checks = JSON.parse(proofLink.dataset.checks || '');
-            const url = proofLink.dataset.proofJson || '';
-            try {
-                await verify(url, checks);
-                proofLink.textContent = 'verified proof';
-                proofLink.classList.add('verified');
-            }
-            catch (e) {
-                console.error('Could not verify proof: ' + e);
-            }
-        }
-    }
-    async function verifyProof(e) {
-        const target = e.target;
-        if (target.id === 'encrypt') {
-            const text = document.getElementById('message');
-            openpgp.encrypt({
-                message: openpgp.message.fromText(text.value),
-                publicKeys: [window.key],
-                armor: true
-            }).then((cipherText) => {
-                text.value = cipherText.data;
-            }, (e) => alert(e));
-        }
-        else if (target.id === 'send') {
-            location.href = "mailto:" + target.dataset.recipient + "?subject=Encrypted%20message&body=" + encodeURIComponent(document.getElementById('message').value);
-        }
-        else if (target.id === 'verify') {
-            const text = document.getElementById('signed');
-            const message = await openpgp.cleartext.readArmored(text.value);
-            const verified = await openpgp.verify({
-                message,
-                publicKeys: [window.key]
-            });
-            console.log(verified);
-            alert('The signature is ' + (verified.signatures[0].valid ? '✅ correct.' : '❌ incorrect.'));
-        }
-    }
-    function formatAttribute(userAttribute) {
-        if (userAttribute.attributes[0][0] === String.fromCharCode(1)) {
-            return local.createElement("img", { src: "data:image/jpeg;base64," + btoa(userAttribute.attributes[0].substring(17)) });
-        }
-        if (userAttribute.attributes[0][0] === 'e') {
-            const url = userAttribute.attributes[0].substring(userAttribute.attributes[0].indexOf('@') + 1);
-            return local.createElement("a", { href: url, rel: "noopener nofollow" }, url);
-        }
-        return 'unknown attribute';
-    }
-    function formatAlgorithm(name) {
-        if (name === 'rsa_encrypt_sign')
-            return "RSA";
-        return name;
-    }
-    function formatDate(date) {
-        if (date === Infinity)
-            return "never";
-        if (typeof date === 'number')
-            return 'x';
-        return dateFormat.format(date);
-    }
-    function getStatus(status, details) {
-        if (status === openpgp.enums.keyStatus.invalid) {
-            return local.createElement("span", { title: "Invalid key" }, "\u274C");
-        }
-        if (status === openpgp.enums.keyStatus.expired) {
-            return local.createElement("span", { title: "Key expired" }, "\u23F0");
-        }
-        if (status === openpgp.enums.keyStatus.revoked) {
-            return local.createElement("span", { title: "Key revoked: " + details }, "\u274C");
-        }
-        if (status === openpgp.enums.keyStatus.valid) {
-            return local.createElement("span", { title: "Valid key" }, "\u2705");
-        }
-        if (status === openpgp.enums.keyStatus.no_self_cert) {
-            return local.createElement("span", { title: "Key not certified" }, "\u274C");
-        }
-        return "unknown:" + status;
-    }
-    function getIcon(keyFlags) {
-        if (!keyFlags || !keyFlags[0]) {
-            return "";
-        }
-        let flags = [];
-        if ((keyFlags[0] & openpgp.enums.keyFlags.certify_keys) !== 0) {
-            flags.push(local.createElement("span", { title: "Certyfing key" }, "\uD83C\uDFF5\uFE0F"));
-        }
-        if ((keyFlags[0] & openpgp.enums.keyFlags.sign_data) !== 0) {
-            flags.push(local.createElement("span", { title: 'Signing key' }, "\uD83D\uDD8B"));
-        }
-        if (((keyFlags[0] & openpgp.enums.keyFlags.encrypt_communication) !== 0) ||
-            ((keyFlags[0] & openpgp.enums.keyFlags.encrypt_storage) !== 0)) {
-            flags.push(local.createElement("span", { title: 'Encryption key' }, "\uD83D\uDD12"));
-        }
-        if ((keyFlags[0] & openpgp.enums.keyFlags.authentication) !== 0) {
-            flags.push(local.createElement("span", { title: 'Authentication key' }, "\uD83D\uDCB3"));
-        }
-        return flags;
-    }
-    return {
-        setters: [
-            function (local_1) {
-                local = local_1;
-            },
-            function (renderer_1) {
-                renderer = renderer_1;
-            }
-        ],
-        execute: function () {
-            openpgp.config.show_version = false;
-            openpgp.config.show_comment = false;
-            proofs = [
-                {
-                    matcher: /^https:\/\/gist\.github\.com\/([A-Za-z0-9_-]+)\/([0-9a-f]+)$/,
-                    variables: {
-                        USERNAME: 1,
-                        PROOFID: 2
-                    },
-                    profile: 'https://github.com/{USERNAME}',
-                    proof: 'https://api.github.com/gists/{PROOFID}',
-                    username: '{USERNAME}',
-                    service: 'github',
-                    checks: [{
-                            relation: 'eq',
-                            proof: ['owner', 'login'],
-                            claim: '{USERNAME}'
-                        }, {
-                            relation: 'eq',
-                            proof: ['owner', 'html_url'],
-                            claim: 'https://github.com/{USERNAME}'
-                        }, {
-                            relation: 'contains',
-                            proof: ['files', 'openpgp.md', 'content'],
-                            claim: '[Verifying my OpenPGP key: openpgp4fpr:{FINGERPRINT}]'
-                        }]
-                },
-                {
-                    matcher: /^https:\/\/news\.ycombinator\.com\/user\?id=([A-Za-z0-9-]+)$/,
-                    variables: {
-                        USERNAME: 1,
-                        PROFILE: 0
-                    },
-                    profile: '{PROFILE}',
-                    proof: 'https://hacker-news.firebaseio.com/v0/user/{USERNAME}.json',
-                    username: '{USERNAME}',
-                    service: 'hackernews',
-                    checks: [{
-                            relation: 'contains',
-                            proof: ['about'],
-                            claim: '[Verifying my OpenPGP key: openpgp4fpr:{FINGERPRINT}]'
-                        }]
-                },
-                {
-                    matcher: /^https:\/\/www\.reddit\.com\/user\/([^/]+)\/comments\/([^/]+)\/([^/]+\/)?$/,
-                    variables: {
-                        USERNAME: 1,
-                        PROOF: 2
-                    },
-                    profile: 'https://www.reddit.com/user/{USERNAME}',
-                    proof: 'https://www.reddit.com/user/{USERNAME}/comments/{PROOF}.json',
-                    username: '{USERNAME}',
-                    service: 'reddit',
-                    checks: [{
-                            relation: 'contains',
-                            proof: [0, 'data', 'children', 0, 'data', 'selftext'],
-                            claim: 'Verifying my OpenPGP key: openpgp4fpr:{FINGERPRINT}'
-                        }, {
-                            relation: 'eq',
-                            proof: [0, 'data', 'children', 0, 'data', 'author'],
-                            claim: '{USERNAME}'
-                        }]
-                },
-                {
-                    matcher: /^https:\/\/([^/]+)\/@([A-Za-z0-9_-]+)$/,
-                    variables: {
-                        INSTANCE: 1,
-                        USERNAME: 2,
-                        PROFILE: 0
-                    },
-                    profile: '{PROFILE}',
-                    proof: '{PROFILE}',
-                    username: '@{USERNAME}@{INSTANCE}',
-                    service: 'mastodon',
-                    checks: [{
-                            relation: 'oneOf',
-                            proof: ['attachment', 'value'],
-                            claim: '{FINGERPRINT}'
-                        }]
-                },
-                {
-                    matcher: /^dns:([^?]+)\?type=TXT$/,
-                    variables: {
-                        DOMAIN: 1
-                    },
-                    profile: 'https://{DOMAIN}',
-                    proof: 'https://dns.google.com/resolve?name={DOMAIN}&type=TXT',
-                    username: '{DOMAIN}',
-                    service: 'dns',
-                    checks: [{
-                            relation: 'oneOf',
-                            proof: ['Answer', 'data'],
-                            claim: '\"openpgp4fpr:{FINGERPRINT}\"'
-                        }]
-                }
-            ];
-            window.onload = window.onhashchange = function () {
-                lookupKey(location.hash.substring(1));
-            };
-            ;
-            document.addEventListener('click', verifyProof);
-            dateFormat = new Intl.DateTimeFormat(undefined, {
-                year: 'numeric', month: 'numeric', day: 'numeric',
-                hour: 'numeric', minute: 'numeric', second: 'numeric',
-            });
-        }
-    };
-});