~lindsay/Pastebin

c04c80e0e9dfbeadb6d66e14cf1dcf7b4b940a4a — Lindsay 6 months ago
Initial commit
A  => .gitignore +20 -0
@@ 1,20 @@
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
# vendor/

config.yaml

A  => README.md +5 -0
@@ 1,5 @@
# Pastebin

A simple pastebin written by Lindsay  

support pgp encrypt/decrypt with [openpgpjs](https://openpgpjs.org/)
\ No newline at end of file

A  => config.yaml.example +12 -0
@@ 1,12 @@
# Postgresql Config
db: 
  host: localhost
  port: 5432
  db_name: pastebin
  user: pastebin
  password: "secret_password"

listen: "127.0.0.1:8080"
https: true
max_size: 1024  # max file size to upload, kilobyte
default_expire_day: 30

A  => go.mod +8 -0
@@ 1,8 @@
module git.sr.ht/~lindsay/Pastebin

go 1.17

require (
	github.com/lib/pq v1.10.4
	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
)

A  => go.sum +6 -0
@@ 1,6 @@
github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk=
github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

A  => src/main.go +47 -0
@@ 1,47 @@
package main

import (
	"embed"
	"flag"
	"log"
	"net/http"
	"os"

	"git.sr.ht/~lindsay/Pastebin/src/modules"
	"git.sr.ht/~lindsay/Pastebin/src/server"
	"gopkg.in/yaml.v3"
)

var cfg modules.Config
var config_path = flag.String("config", "./config.yaml", "Location for Sqlite db file")

//go:embed static/*
var staticData embed.FS

func main() {
	flag.Parse()
	readConfig(*config_path, &cfg)
	mux, err := server.NewMux(&cfg)
	if err != nil {
		panic(err)
	}
	mux.Handle("/static/", http.FileServer(http.FS(staticData)))
	log.Printf("PasteBin start, Listen on %s", cfg.Listen)
	err = http.ListenAndServe(cfg.Listen, mux)
	if err != nil {
		log.Fatal(err)
	}
}

func readConfig(config string, cfg *modules.Config) {
	f, err := os.Open(config)
	if err != nil {
		panic(err)
	}
	defer f.Close()
	decoder := yaml.NewDecoder(f)
	err = decoder.Decode(cfg)
	if err != nil {
		panic(err)
	}
}

A  => src/modules/config.go +20 -0
@@ 1,20 @@
package modules

// Pg Database config
type DbCfg struct {
	Host     string `yaml:"host"`
	Db_name  string `yaml:"db_name"`
	Port     int    `yaml:"port"`
	User     string `yaml:"user"`
	Password string `yaml:"password"`
}

//  main config
type Config struct {
	DB     DbCfg  `yaml:"db"`
	Https  bool   `yaml:"https"`
	Token  string `yaml:"token"`
	Listen string `yaml:"listen"`
	DefaultExpireDay int `yaml:"default_expire_day" defaylt:"30"`
	MaxSize int64 `yaml:"max_size"`
}

A  => src/modules/db.go +10 -0
@@ 1,10 @@
package modules

import "time"

type Note struct {
	Data       []byte    `json:"data" yaml:"data"`
	MimeType   string    `json:"mime_type" yaml:"mime_type" default:"text/plain"`
	Times      int64     `json:"times,string" yaml:"times"`
	ExpireDate time.Time `json:"expireDate" yaml:"expireDate"`
}

A  => src/modules/schemas.go +9 -0
@@ 1,9 @@
package modules

type JsReq struct {
	Base64     bool   `json:"base64"`
	Data       string `json:"data"`
	Times      int64  `json:"times"`
	ExpireDays int    `json:"expire_days"`
	MimeType   string `json:"mine_type"`
}

A  => src/server/add_note.go +128 -0
@@ 1,128 @@
package server

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"mime"
	"net/http"
	"path"
	"strconv"
	"strings"
	"text/template"
	"time"

	"git.sr.ht/~lindsay/Pastebin/src/modules"
	"git.sr.ht/~lindsay/Pastebin/src/storage"
)

func addNote(w http.ResponseWriter, r *http.Request) {

	var err error
	var note *modules.Note = &modules.Note{}
	var buffer = bytes.NewBuffer(nil)

	if r.Method != "POST" {
		http.Redirect(w, r, "/", http.StatusPermanentRedirect)
		return
	}
	r.Body = http.MaxBytesReader(w, r.Body, cfg.MaxSize*1024)
	/*
	   1. if Content-Type is multipart form, deal as file
	   2. if Content-Type is json form, deal with format of modules.JsReq
	   3. default deal as plain text
	*/
	mediaType, _, err := mime.ParseMediaType(r.Header.Get("Content-Type"))
	if err != nil || !strings.HasPrefix(mediaType, "multipart/") { // request is not multipart file
		note.MimeType = "text/plain"
		io.Copy(buffer, r.Body)

		if parseFormat(r) == "json" { // request data is json
			var req modules.JsReq
			err = json.Unmarshal(buffer.Bytes(), &req)
			if err != nil {
				fmt.Println(err)
				w.WriteHeader(http.StatusBadRequest)
				return
			}

			if req.MimeType == "" {
				req.MimeType = "text/plain"
			}

			note, err = parseJSReq(&req)
			if err != nil {
				fmt.Println(err)
				w.WriteHeader(http.StatusBadRequest)
				return
			}
		} else { // request is not json
			note.Data = buffer.Bytes()
			note.ExpireDate = time.Now().AddDate(0, 0, cfg.DefaultExpireDay)
		}
	} else { // request is multipart file
		err = r.ParseMultipartForm(cfg.MaxSize * 1024)

		if err != nil {
			w.WriteHeader(http.StatusBadRequest)
			return
		}

		file, handler, err := r.FormFile("file")
		if err != nil {
			w.WriteHeader(http.StatusBadRequest)
			return
		}
		defer file.Close()
		_, err = io.Copy(buffer, file)
		if err != nil {
			w.WriteHeader(http.StatusBadRequest)
			return
		}

		note.MimeType, _, err = mime.ParseMediaType(handler.Header.Get("Content-Type"))
		if err != nil {
			note.MimeType = mime.TypeByExtension(handler.Filename)
		}
		note.ExpireDate = time.Now().AddDate(0, 0, cfg.DefaultExpireDay)
		note.Data = buffer.Bytes()
	}

	if len(note.Data) == 0 {
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	id, err := storage.AddNote(note, st)
	if err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		return
	} else {
		url := path.Join(r.Host, strconv.FormatInt(id, 32))
		if cfg.Https {
			url = "https://" + url + "\n"
		} else {
			url = "http://" + url + "\n"
		}
		w.Write([]byte(url))
		return
	}
}

func editor(w http.ResponseWriter, r *http.Request) {
	t, err := template.ParseFS(tmpl, "templates/text.html")
	if err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	t.Execute(w, nil)
}

func file(w http.ResponseWriter, r *http.Request) {
	t, err := template.ParseFS(tmpl, "templates/file.html")
	if err != nil {
		w.WriteHeader(http.StatusInternalServerError)
		return
	}
	t.Execute(w, nil)
}

A  => src/server/read_note.go +65 -0
@@ 1,65 @@
package server

import (
	"encoding/base64"
	"encoding/json"
	"html/template"
	"log"
	"net/http"
	"strconv"
	"strings"

	"git.sr.ht/~lindsay/Pastebin/src/storage"
)

func readNote(w http.ResponseWriter, r *http.Request) {
	path := strings.Split(r.URL.Path, "/")
	if path[len(path)-1] == "" {
		path = path[:len(path)-1]
	}

	if len(path) < 2 {
		editor(w, r)
		return
	}

	format := parseFormat(r)

	id, err := strconv.ParseInt(path[len(path)-1], 32, 64)

	if err != nil {
		w.WriteHeader(http.StatusBadRequest)
		return
	}

	note, err := storage.GetNote(id, st)
	if err != nil {
		w.WriteHeader(http.StatusNotFound)
		return
	}
	if format == "json" {
		resp := struct {
			Data     string `json:"data"`
			MineType string `json:"mine_type"`
		}{MineType: note.MimeType}
		if strings.Contains(note.MimeType, "text") {
			resp.Data = string(note.Data)
		} else {
			resp.Data = base64.RawStdEncoding.EncodeToString(note.Data)
		}

		w.WriteHeader(http.StatusOK)
		json.NewEncoder(w).Encode(resp)
	} else if format == "html" && strings.Contains(strings.ToLower(note.MimeType), "text") {
		t, err := template.ParseFS(tmpl, "templates/viewer.html")
		if err != nil {
			w.WriteHeader(http.StatusInternalServerError)
			log.Println(err)
			return
		}
		t.Execute(w, note)
	} else {
		w.Header().Set("Content-Type", note.MimeType+";charset=UTF-8")
		w.Write(note.Data)
	}
}

A  => src/server/server.go +36 -0
@@ 1,36 @@
package server

import (
	"embed"
	"fmt"
	"net/http"

	"git.sr.ht/~lindsay/Pastebin/src/modules"
	"git.sr.ht/~lindsay/Pastebin/src/storage"
)

var ServeMux *http.ServeMux

//go:embed templates/*
var tmpl embed.FS

var st *storage.Storage
var cfg *modules.Config

func NewMux(config *modules.Config) (*http.ServeMux, error) {
	var err error
	st, err = storage.New(&config.DB)
	cfg = config

	if err != nil {
		return nil, fmt.Errorf("failed to init  database: %v", err)
	}

	ServeMux = http.NewServeMux()
	ServeMux.HandleFunc("/", readNote)
	ServeMux.HandleFunc("/create", addNote)
	ServeMux.HandleFunc("/text", editor)
	ServeMux.HandleFunc("/file", file)

	return ServeMux, nil
}

A  => src/server/templates/file.html +22 -0
@@ 1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🗒️</text></svg>">
    <title>PBin</title>
    <style>main {max-width: 1000px;margin: auto;}</style>
</head>
<body>
    <main>
        <form action="/create" enctype="multipart/form-data" method="post" >
            <input type="file" name="file"><br>
            <input type="submit", value="Submit">
        </form>
    </main>
</body>
<script>

</script>
</html>
\ No newline at end of file

A  => src/server/templates/text.html +94 -0
@@ 1,94 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🗒️</text></svg>">
    <title>PBin</title>
    <style>
        main {max-width: 1000px;margin: auto;}
        #editor{width: 100%; height: 10rem;}
    </style>
</head>
<body>
    <main>
        <form action="/create" method="post" enctype="multipart/form-data" id="editor-form">
            <textarea id="editor" name="data" style="display: block;"></textarea>
            <table>
                <tr><td><label for="times">Max Read Times</label></td><td><input type="number" id="times" name="times" min="1" ></td></tr>
                <tr><td><label for="expire_days">Expire After (d)</label></td><td><input type="number" id="expire_days", name="expire_days" min="1"></td></tr>
                <tr><td><label for="password">Password</label></td><td><input type="password" id="password"></td></tr>
            </table>

            <input type="submit" value="Submit">
        </form>
        <div id="message-box" hidden></div>
    </main>
    
</body>
<script>
    async function encryptEditor(event) {
        event.preventDefault()
        let openpgp = await import('/static/openpgp.min.mjs')
        let target = document.getElementById("editor")
        const password = document.getElementById("password")
        if (password.value != "") {
            const message = await openpgp.createMessage({ text: target.value });
            const encrypted = await openpgp.encrypt({
                message, 
                passwords: [password.value],
            });
            target.value = encrypted

            password.disabled = true
            target.disabled = true

        }
    }

    function addNoteCompleteHandler(event) {
        let mbox = document.getElementById("message-box")
        mbox.innerHTML = event.target.responseText
        mbox.hidden = false
    }
    async function addNote(event) {
        event.preventDefault()
        let editor = document.getElementById("editor")
        if (document.getElementById("password").value != "") {
            await encryptEditor.apply(this, [event])
        }
        editor.disabled = false
        let formData = new FormData(this)
        editor.disabled = true

        if (formData.get("data") == "") {
            let mbox = document.getElementById("message-box")
            mbox.innerHTML = "Write Something To Submit"
            mbox.hidden = false
            editor.disabled = false
            return
        }
        let ajax = new XMLHttpRequest();
        ajax.addEventListener("load", addNoteCompleteHandler, false);
        ajax.open("POST", "/create");
        ajax.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

        let object = {};

        object.data = formData.get('data')
        object.times = parseInt(formData.get('times'))
        object.expire_days = parseInt(formData.get('expire_days'))

        let json = JSON.stringify(object);
        ajax.send(json);
        this.removeEventListener("submit", addNote)
        this.onsubmit = function () { return false }
    }

    window.onload = function(){
        document.getElementById("editor-form")?.reset()
        document.getElementById("editor-form")?.addEventListener("submit", addNote)
    }
</script>
</html>
\ No newline at end of file

A  => src/server/templates/viewer.html +66 -0
@@ 1,66 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🗒️</text></svg>">
    <title>PBin</title>
    <style>
        main {max-width: 1000px;margin: auto;}
        #note{white-space: pre-wrap;word-wrap: break-word;}
    </style>
</head>

<body>
    <main>
        <div class="viewer">
            <form onsubmit="return false;">
                <input type="password" id="gpg-password"><button id="decrypt-button">Decrypt</button>
            </form>
            <pre id="note">{{printf "%s" .Data}}</pre>
            <button id="copy-button">Copy</button>
        </div>
    </main>
    
</body>
<script>
    async function copyViwer(event) {
        let elem = document.getElementById("note")
        let selection = window.getSelection();
        let range = document.createRange();
        range.selectNodeContents(elem);
        selection.removeAllRanges();
        selection.addRange(range);


        if (!navigator.clipboard) {
            document.execCommand('copy')
        } else {
            await navigator.clipboard.writeText(selection.toString())
        }
    }

    async function decryptViewer(event) {
        let openpgp = await import('/static/openpgp.min.mjs')
        let target = document.getElementById("note")
        password = document.getElementById('gpg-password').value
        if (password != "") {
            const message = await openpgp.readMessage({ armoredMessage: target.textContent });
            const decrypted = await openpgp.decrypt({
                message,
                passwords: password,
            });

            target.textContent = decrypted.data

            this.hidden = true
        }
    }

    window.onload = function(){
        document.getElementById("copy-button")?.addEventListener("click", copyViwer)
        document.getElementById('decrypt-button')?.addEventListener('click', decryptViewer)
    }
</script>
</html>
\ No newline at end of file

A  => src/server/utils.go +56 -0
@@ 1,56 @@
package server

import (
	"encoding/base64"
	"fmt"
	"mime"
	"net/http"
	"strings"
	"time"

	"git.sr.ht/~lindsay/Pastebin/src/modules"
)

func parseFormat(r *http.Request) string {
	var format string
	format = r.URL.Query().Get("format")

	if format == "" {
		ua := r.Header.Get("User-Agent")
		ct, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type"))
		if strings.Contains(strings.ToLower(ct), "application/json") {
			format = "json"
		} else if strings.Contains(ua, "curl") || strings.Contains(ua, "wget") {
			format = "ansi"
		} else if strings.Contains(ua, "Mozilla") {
			format = "html"
		} else {
			format = "plain"
		}
	}
	return format
}

func parseJSReq(req *modules.JsReq) (*modules.Note, error) {
	var note modules.Note
	var err error
	if req.Base64 {
		note.Data, err = base64.StdEncoding.DecodeString(req.Data)
		if err != nil {
			return nil, fmt.Errorf("base64 encoding failed: %v", err)
		} //
	} else {
		note.Data = []byte(req.Data)
	}
	if req.MimeType != "" {
		note.MimeType = req.MimeType
	}
	note.Times = req.Times
	if req.ExpireDays > 0 {
		note.ExpireDate = time.Now().AddDate(0, 0, req.ExpireDays)
	} else {
		note.ExpireDate = time.Now().AddDate(0, 0, cfg.DefaultExpireDay)
	}

	return &note, nil
}

A  => src/static/openpgp.min.mjs +17 -0
@@ 1,17 @@
/*! OpenPGP.js v5.2.0 - 2022-03-02 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
const e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=Symbol("doneWritingPromise"),r=Symbol("doneWritingResolve"),i=Symbol("doneWritingReject"),n=Symbol("readingIndex");class a extends Array{constructor(){super(),this[t]=new Promise(((e,t)=>{this[r]=e,this[i]=t})),this[t].catch((()=>{}))}}function s(e){return e&&e.getReader&&Array.isArray(e)}function o(e){if(!s(e)){const t=e.getWriter(),r=t.releaseLock;return t.releaseLock=()=>{t.closed.catch((function(){})),r.call(t)},t}this.stream=e}a.prototype.getReader=function(){return void 0===this[n]&&(this[n]=0),{read:async()=>(await this[t],this[n]===this.length?{value:void 0,done:!0}:{value:this[this[n]++],done:!1})}},a.prototype.readToEnd=async function(e){await this[t];const r=e(this.slice(this[n]));return this.length=0,r},a.prototype.clone=function(){const e=new a;return e[t]=this[t].then((()=>{e.push(...this)})),e},o.prototype.write=async function(e){this.stream.push(e)},o.prototype.close=async function(){this.stream[r]()},o.prototype.abort=async function(e){return this.stream[i](e),e},o.prototype.releaseLock=function(){};const c="object"==typeof e.process&&"object"==typeof e.process.versions,u=c&&void 0;function h(t){return s(t)?"array":e.ReadableStream&&e.ReadableStream.prototype.isPrototypeOf(t)?"web":k&&k.prototype.isPrototypeOf(t)?"ponyfill":u&&u.prototype.isPrototypeOf(t)?"node":!(!t||!t.getReader)&&"web-like"}function f(e){return Uint8Array.prototype.isPrototypeOf(e)}function d(e){if(1===e.length)return e[0];let t=0;for(let r=0;r<e.length;r++){if(!f(e[r]))throw Error("concatUint8Array: Data must be in the form of a Uint8Array");t+=e[r].length}const r=new Uint8Array(t);let i=0;return e.forEach((function(e){r.set(e,i),i+=e.length})),r}const l=c&&void 0,p=c&&void 0;let y,b;if(p){y=function(e){let t=!1;return new k({start(r){e.pause(),e.on("data",(i=>{t||(l.isBuffer(i)&&(i=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)),r.enqueue(i),e.pause())})),e.on("end",(()=>{t||r.close()})),e.on("error",(e=>r.error(e)))},pull(){e.resume()},cancel(r){t=!0,e.destroy(r)}})};class e extends p{constructor(e,t){super(t),this._reader=K(e)}async _read(e){try{for(;;){const{done:e,value:t}=await this._reader.read();if(e){this.push(null);break}if(!this.push(t)||this._cancelling){this._reading=!1;break}}}catch(e){this.emit("error",e)}}_destroy(e){this._reader.cancel(e)}}b=function(t,r){return new e(t,r)}}const m=new WeakSet,g=Symbol("externalBuffer");function w(e){if(this.stream=e,e[g]&&(this[g]=e[g].slice()),s(e)){const t=e.getReader();return this._read=t.read.bind(t),this._releaseLock=()=>{},void(this._cancel=()=>{})}let t=h(e);if("node"===t&&(e=y(e)),t){const t=e.getReader();return this._read=t.read.bind(t),this._releaseLock=()=>{t.closed.catch((function(){})),t.releaseLock()},void(this._cancel=t.cancel.bind(t))}let r=!1;this._read=async()=>r||m.has(e)?{value:void 0,done:!0}:(r=!0,{value:e,done:!1}),this._releaseLock=()=>{if(r)try{m.add(e)}catch(e){}}}w.prototype.read=async function(){if(this[g]&&this[g].length){return{done:!1,value:this[g].shift()}}return this._read()},w.prototype.releaseLock=function(){this[g]&&(this.stream[g]=this[g]),this._releaseLock()},w.prototype.cancel=function(e){return this._cancel(e)},w.prototype.readLine=async function(){let e,t=[];for(;!e;){let{done:r,value:i}=await this.read();if(i+="",r)return t.length?C(t):void 0;const n=i.indexOf("\n")+1;n&&(e=C(t.concat(i.substr(0,n))),t=[]),n!==i.length&&t.push(i.substr(n))}return this.unshift(...t),e},w.prototype.readByte=async function(){const{done:e,value:t}=await this.read();if(e)return;const r=t[0];return this.unshift(N(t,1)),r},w.prototype.readBytes=async function(e){const t=[];let r=0;for(;;){const{done:i,value:n}=await this.read();if(i)return t.length?C(t):void 0;if(t.push(n),r+=n.length,r>=e){const r=C(t);return this.unshift(N(r,e)),N(r,0,e)}}},w.prototype.peekBytes=async function(e){const t=await this.readBytes(e);return this.unshift(t),t},w.prototype.unshift=function(...e){this[g]||(this[g]=[]),1===e.length&&f(e[0])&&this[g].length&&e[0].length&&this[g][0].byteOffset>=e[0].length?this[g][0]=new Uint8Array(this[g][0].buffer,this[g][0].byteOffset-e[0].length,this[g][0].byteLength+e[0].length):this[g].unshift(...e.filter((e=>e&&e.length)))},w.prototype.readToEnd=async function(e=C){const t=[];for(;;){const{done:e,value:r}=await this.read();if(e)break;t.push(r)}return e(t)};let v,_,{ReadableStream:k,WritableStream:A,TransformStream:S}=e;async function E(){if(S)return;const[t,r]=await Promise.all([Promise.resolve().then((function(){return dd})),Promise.resolve().then((function(){return Id}))]);({ReadableStream:k,WritableStream:A,TransformStream:S}=t);const{createReadableStreamWrapper:i}=r;e.ReadableStream&&k!==e.ReadableStream&&(v=i(k),_=i(e.ReadableStream))}const P=c&&void 0;function x(e){let t=h(e);return"node"===t?y(e):"web"===t&&v?v(e):t?e:new k({start(t){t.enqueue(e),t.close()}})}function M(e){if(h(e))return e;const t=new a;return(async()=>{const r=D(t);await r.write(e),await r.close()})(),t}function C(e){return e.some((e=>h(e)&&!s(e)))?function(e){e=e.map(x);const t=U((async function(e){await Promise.all(i.map((t=>L(t,e))))}));let r=Promise.resolve();const i=e.map(((i,n)=>T(i,((i,a)=>(r=r.then((()=>R(i,t.writable,{preventClose:n!==e.length-1}))),r)))));return t.readable}(e):e.some((e=>s(e)))?function(e){const t=new a;let r=Promise.resolve();return e.forEach(((i,n)=>(r=r.then((()=>R(i,t,{preventClose:n!==e.length-1}))),r))),t}(e):"string"==typeof e[0]?e.join(""):P&&P.isBuffer(e[0])?P.concat(e):d(e)}function K(e){return new w(e)}function D(e){return new o(e)}async function R(e,t,{preventClose:r=!1,preventAbort:i=!1,preventCancel:n=!1}={}){if(h(e)&&!s(e)){e=x(e);try{if(e[g]){const r=D(t);for(let t=0;t<e[g].length;t++)await r.ready,await r.write(e[g][t]);r.releaseLock()}await e.pipeTo(t,{preventClose:r,preventAbort:i,preventCancel:n})}catch(e){}return}const a=K(e=M(e)),o=D(t);try{for(;;){await o.ready;const{done:e,value:t}=await a.read();if(e){r||await o.close();break}await o.write(t)}}catch(e){i||await o.abort(e)}finally{a.releaseLock(),o.releaseLock()}}function I(e,t){const r=new S(t);return R(e,r.writable),r.readable}function U(e){let t,r,i=!1;return{readable:new k({start(e){r=e},pull(){t?t():i=!0},cancel:e},{highWaterMark:0}),writable:new A({write:async function(e){r.enqueue(e),i?i=!1:(await new Promise((e=>{t=e})),t=null)},close:r.close.bind(r),abort:r.error.bind(r)})}}function B(e,t=(()=>{}),r=(()=>{})){if(s(e)){const i=new a;return(async()=>{const n=await j(e),a=t(n),s=r();let o;o=void 0!==a&&void 0!==s?C([a,s]):void 0!==a?a:s;const c=D(i);await c.write(o),await c.close()})(),i}if(h(e))return I(e,{async transform(e,r){try{const i=await t(e);void 0!==i&&r.enqueue(i)}catch(e){r.error(e)}},async flush(e){try{const t=await r();void 0!==t&&e.enqueue(t)}catch(t){e.error(t)}}});const i=t(e),n=r();return void 0!==i&&void 0!==n?C([i,n]):void 0!==i?i:n}function T(e,t){if(h(e)&&!s(e)){let r;const i=new S({start(e){r=e}}),n=R(e,i.writable),a=U((async function(e){r.error(e),await n,await new Promise(setTimeout)}));return t(i.readable,a.writable),a.readable}e=M(e);const r=new a;return t(e,r),r}function z(e,t){let r;const i=T(e,((e,n)=>{const a=K(e);a.remainder=()=>(a.releaseLock(),R(e,n),i),r=t(a)}));return r}function q(e){if(s(e))return e.clone();if(h(e)){const t=function(e){if(s(e))throw Error("ArrayStream cannot be tee()d, use clone() instead");if(h(e)){const t=x(e).tee();return t[0][g]=t[1][g]=e[g],t}return[N(e),N(e)]}(e);return F(e,t[0]),t[1]}return N(e)}function O(e){return s(e)?q(e):h(e)?new k({start(t){const r=T(e,(async(e,r)=>{const i=K(e),n=D(r);try{for(;;){await n.ready;const{done:e,value:r}=await i.read();if(e){try{t.close()}catch(e){}return void await n.close()}try{t.enqueue(r)}catch(e){}await n.write(r)}}catch(e){t.error(e),await n.abort(e)}}));F(e,r)}}):N(e)}function F(e,t){Object.entries(Object.getOwnPropertyDescriptors(e.constructor.prototype)).forEach((([r,i])=>{"constructor"!==r&&(i.value?i.value=i.value.bind(t):i.get=i.get.bind(t),Object.defineProperty(e,r,i))}))}function N(e,t=0,r=1/0){if(s(e))throw Error("Not implemented");if(h(e)){if(t>=0&&r>=0){let i=0;return I(e,{transform(e,n){i<r?(i+e.length>=t&&n.enqueue(N(e,Math.max(t-i,0),r-i)),i+=e.length):n.terminate()}})}if(t<0&&(r<0||r===1/0)){let i=[];return B(e,(e=>{e.length>=-t?i=[e]:i.push(e)}),(()=>N(C(i),t,r)))}if(0===t&&r<0){let i;return B(e,(e=>{const n=i?C([i,e]):e;if(n.length>=-r)return i=N(n,r),N(n,t,r);i=n}))}return console.warn(`stream.slice(input, ${t}, ${r}) not implemented efficiently.`),W((async()=>N(await j(e),t,r)))}return e[g]&&(e=C(e[g].concat([e]))),!f(e)||P&&P.isBuffer(e)?e.slice(t,r):(r===1/0&&(r=e.length),e.subarray(t,r))}async function j(e,t=C){return s(e)?e.readToEnd(t):h(e)?K(e).readToEnd(t):e}async function L(e,t){if(h(e)){if(e.cancel)return e.cancel(t);if(e.destroy)return e.destroy(t),await new Promise(setTimeout),t}}function W(e){const t=new a;return(async()=>{const r=D(t);try{await r.write(await e()),await r.close()}catch(e){await r.abort(e)}})(),t}class H{constructor(e){if(void 0===e)throw Error("Invalid BigInteger input");if(e instanceof Uint8Array){const t=e,r=Array(t.length);for(let e=0;e<t.length;e++){const i=t[e].toString(16);r[e]=t[e]<=15?"0"+i:i}this.value=BigInt("0x0"+r.join(""))}else this.value=BigInt(e)}clone(){return new H(this.value)}iinc(){return this.value++,this}inc(){return this.clone().iinc()}idec(){return this.value--,this}dec(){return this.clone().idec()}iadd(e){return this.value+=e.value,this}add(e){return this.clone().iadd(e)}isub(e){return this.value-=e.value,this}sub(e){return this.clone().isub(e)}imul(e){return this.value*=e.value,this}mul(e){return this.clone().imul(e)}imod(e){return this.value%=e.value,this.isNegative()&&this.iadd(e),this}mod(e){return this.clone().imod(e)}modExp(e,t){if(t.isZero())throw Error("Modulo cannot be zero");if(t.isOne())return new H(0);if(e.isNegative())throw Error("Unsopported negative exponent");let r=e.value,i=this.value;i%=t.value;let n=BigInt(1);for(;r>BigInt(0);){const e=r&BigInt(1);r>>=BigInt(1);const a=n*i%t.value;n=e?a:n,i=i*i%t.value}return new H(n)}modInv(e){const{gcd:t,x:r}=this._egcd(e);if(!t.isOne())throw Error("Inverse does not exist");return r.add(e).mod(e)}_egcd(e){let t=BigInt(0),r=BigInt(1),i=BigInt(1),n=BigInt(0),a=this.value;for(e=e.value;e!==BigInt(0);){const s=a/e;let o=t;t=i-s*t,i=o,o=r,r=n-s*r,n=o,o=e,e=a%e,a=o}return{x:new H(i),y:new H(n),gcd:new H(a)}}gcd(e){let t=this.value;for(e=e.value;e!==BigInt(0);){const r=e;e=t%e,t=r}return new H(t)}ileftShift(e){return this.value<<=e.value,this}leftShift(e){return this.clone().ileftShift(e)}irightShift(e){return this.value>>=e.value,this}rightShift(e){return this.clone().irightShift(e)}equal(e){return this.value===e.value}lt(e){return this.value<e.value}lte(e){return this.value<=e.value}gt(e){return this.value>e.value}gte(e){return this.value>=e.value}isZero(){return this.value===BigInt(0)}isOne(){return this.value===BigInt(1)}isNegative(){return this.value<BigInt(0)}isEven(){return!(this.value&BigInt(1))}abs(){const e=this.clone();return this.isNegative()&&(e.value=-e.value),e}toString(){return this.value.toString()}toNumber(){const e=Number(this.value);if(e>Number.MAX_SAFE_INTEGER)throw Error("Number can only safely store up to 53 bits");return e}getBit(e){return(this.value>>BigInt(e)&BigInt(1))===BigInt(0)?0:1}bitLength(){const e=new H(0),t=new H(1),r=new H(-1),i=this.isNegative()?r:e;let n=1;const a=this.clone();for(;!a.irightShift(t).equal(i);)n++;return n}byteLength(){const e=new H(0),t=new H(-1),r=this.isNegative()?t:e,i=new H(8);let n=1;const a=this.clone();for(;!a.irightShift(i).equal(r);)n++;return n}toUint8Array(e="be",t){let r=this.value.toString(16);r.length%2==1&&(r="0"+r);const i=r.length/2,n=new Uint8Array(t||i),a=t?t-i:0;let s=0;for(;s<i;)n[s+a]=parseInt(r.slice(2*s,2*s+2),16),s++;return"be"!==e&&n.reverse(),n}}const G=(()=>{try{return"development"===process.env.NODE_ENV}catch(e){}return!1})(),V={isString:function(e){return"string"==typeof e||String.prototype.isPrototypeOf(e)},isArray:function(e){return Array.prototype.isPrototypeOf(e)},isUint8Array:f,isStream:h,readNumber:function(e){let t=0;for(let r=0;r<e.length;r++)t+=256**r*e[e.length-1-r];return t},writeNumber:function(e,t){const r=new Uint8Array(t);for(let i=0;i<t;i++)r[i]=e>>8*(t-i-1)&255;return r},readDate:function(e){const t=V.readNumber(e);return new Date(1e3*t)},writeDate:function(e){const t=Math.floor(e.getTime()/1e3);return V.writeNumber(t,4)},normalizeDate:function(e=Date.now()){return null===e||e===1/0?e:new Date(1e3*Math.floor(+e/1e3))},readMPI:function(e){const t=(e[0]<<8|e[1])+7>>>3;return e.subarray(2,2+t)},leftPad(e,t){const r=new Uint8Array(t),i=t-e.length;return r.set(e,i),r},uint8ArrayToMPI:function(e){const t=V.uint8ArrayBitLength(e);if(0===t)throw Error("Zero MPI");const r=e.subarray(e.length-Math.ceil(t/8)),i=new Uint8Array([(65280&t)>>8,255&t]);return V.concatUint8Array([i,r])},uint8ArrayBitLength:function(e){let t;for(t=0;t<e.length&&0===e[t];t++);if(t===e.length)return 0;const r=e.subarray(t);return 8*(r.length-1)+V.nbits(r[0])},hexToUint8Array:function(e){const t=new Uint8Array(e.length>>1);for(let r=0;r<e.length>>1;r++)t[r]=parseInt(e.substr(r<<1,2),16);return t},uint8ArrayToHex:function(e){const t=[],r=e.length;let i,n=0;for(;n<r;){for(i=e[n++].toString(16);i.length<2;)i="0"+i;t.push(""+i)}return t.join("")},stringToUint8Array:function(e){return B(e,(e=>{if(!V.isString(e))throw Error("stringToUint8Array: Data must be in the form of a string");const t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t}))},uint8ArrayToString:function(e){const t=[],r=16384,i=(e=new Uint8Array(e)).length;for(let n=0;n<i;n+=r)t.push(String.fromCharCode.apply(String,e.subarray(n,n+r<i?n+r:i)));return t.join("")},encodeUTF8:function(e){const t=new TextEncoder("utf-8");function r(e,r=!1){return t.encode(e,{stream:!r})}return B(e,r,(()=>r("",!0)))},decodeUTF8:function(e){const t=new TextDecoder("utf-8");function r(e,r=!1){return t.decode(e,{stream:!r})}return B(e,r,(()=>r(new Uint8Array,!0)))},concat:C,concatUint8Array:d,equalsUint8Array:function(e,t){if(!V.isUint8Array(e)||!V.isUint8Array(t))throw Error("Data must be in the form of a Uint8Array");if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0},writeChecksum:function(e){let t=0;for(let r=0;r<e.length;r++)t=t+e[r]&65535;return V.writeNumber(t,2)},printDebug:function(e){G&&console.log(e)},printDebugError:function(e){G&&console.error(e)},nbits:function(e){let t=1,r=e>>>16;return 0!==r&&(e=r,t+=16),r=e>>8,0!==r&&(e=r,t+=8),r=e>>4,0!==r&&(e=r,t+=4),r=e>>2,0!==r&&(e=r,t+=2),r=e>>1,0!==r&&(e=r,t+=1),t},double:function(e){const t=new Uint8Array(e.length),r=e.length-1;for(let i=0;i<r;i++)t[i]=e[i]<<1^e[i+1]>>7;return t[r]=e[r]<<1^135*(e[0]>>7),t},shiftRight:function(e,t){if(t)for(let r=e.length-1;r>=0;r--)e[r]>>=t,r>0&&(e[r]|=e[r-1]<<8-t);return e},getWebCrypto:function(){return void 0!==e&&e.crypto&&e.crypto.subtle},detectNode:function(){return"object"==typeof e.process&&"object"==typeof e.process.versions},detectBigInt:()=>"undefined"!=typeof BigInt,getBigInteger:async function(){if(V.detectBigInt())return H;{const{default:e}=await Promise.resolve().then((function(){return qd}));return e}},getNodeCrypto:function(){},getNodeZlib:function(){},getNodeBuffer:function(){return{}.Buffer},getHardwareConcurrency:function(){if(V.detectNode()){return(void 0).cpus().length}return"undefined"!=typeof navigator&&navigator.hardwareConcurrency||1},isEmailAddress:function(e){if(!V.isString(e))return!1;return/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+([a-zA-Z]{2,}|xn--[a-zA-Z\-0-9]+)))$/.test(e)},canonicalizeEOL:function(e){let t=!1;return B(e,(e=>{let r;t&&(e=V.concatUint8Array([new Uint8Array([13]),e])),13===e[e.length-1]?(t=!0,e=e.subarray(0,-1)):t=!1;const i=[];for(let t=0;r=e.indexOf(10,t)+1,r;t=r)13!==e[r-2]&&i.push(r);if(!i.length)return e;const n=new Uint8Array(e.length+i.length);let a=0;for(let t=0;t<i.length;t++){const r=e.subarray(i[t-1]||0,i[t]);n.set(r,a),a+=r.length,n[a-1]=13,n[a]=10,a++}return n.set(e.subarray(i[i.length-1]||0),a),n}),(()=>t?new Uint8Array([13]):void 0))},nativeEOL:function(e){let t=!1;return B(e,(e=>{let r;13===(e=t&&10!==e[0]?V.concatUint8Array([new Uint8Array([13]),e]):new Uint8Array(e))[e.length-1]?(t=!0,e=e.subarray(0,-1)):t=!1;let i=0;for(let t=0;t!==e.length;t=r){r=e.indexOf(13,t)+1,r||(r=e.length);const n=r-(10===e[r]?1:0);t&&e.copyWithin(i,t,n),i+=n-t}return e.subarray(0,i)}),(()=>t?new Uint8Array([13]):void 0))},removeTrailingSpaces:function(e){return e.split("\n").map((e=>{let t=e.length-1;for(;t>=0&&(" "===e[t]||"\t"===e[t]);t--);return e.substr(0,t+1)})).join("\n")},wrapError:function(e,t){if(!t)return Error(e);try{t.message=e+": "+t.message}catch(e){}return t},constructAllowedPackets:function(e){const t={};return e.forEach((e=>{if(!e.tag)throw Error("Invalid input: expected a packet class");t[e.tag]=e})),t},anyPromise:function(e){return new Promise((async(t,r)=>{let i;await Promise.all(e.map((async e=>{try{t(await e)}catch(e){i=e}}))),r(i)}))},selectUint8Array:function(e,t,r){const i=Math.max(t.length,r.length),n=new Uint8Array(i);let a=0;for(let i=0;i<n.length;i++)n[i]=t[i]&256-e|r[i]&255+e,a+=e&i<t.length|1-e&i<r.length;return n.subarray(0,a)},selectUint8:function(e,t,r){return t&256-e|r&255+e}},$=V.getNodeBuffer();let Z,Y;function X(e){let t=new Uint8Array;return B(e,(e=>{t=V.concatUint8Array([t,e]);const r=[],i=Math.floor(t.length/45),n=45*i,a=Z(t.subarray(0,n));for(let e=0;e<i;e++)r.push(a.substr(60*e,60)),r.push("\n");return t=t.subarray(n),r.join("")}),(()=>t.length?Z(t)+"\n":""))}function Q(e){let t="";return B(e,(e=>{t+=e;let r=0;const i=[" ","\t","\r","\n"];for(let e=0;e<i.length;e++){const n=i[e];for(let e=t.indexOf(n);-1!==e;e=t.indexOf(n,e+1))r++}let n=t.length;for(;n>0&&(n-r)%4!=0;n--)i.includes(t[n])&&r--;const a=Y(t.substr(0,n));return t=t.substr(n),a}),(()=>Y(t)))}function J(e){return Q(e.replace(/-/g,"+").replace(/_/g,"/"))}function ee(e,t){let r=X(e).replace(/[\r\n]/g,"");return t&&(r=r.replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,"")),r}$?(Z=e=>$.from(e).toString("base64"),Y=e=>{const t=$.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}):(Z=e=>btoa(V.uint8ArrayToString(e)),Y=e=>V.stringToUint8Array(atob(e)));const te=Symbol("byValue");var re={curve:{p256:"p256","P-256":"p256",secp256r1:"p256",prime256v1:"p256","1.2.840.10045.3.1.7":"p256","2a8648ce3d030107":"p256","2A8648CE3D030107":"p256",p384:"p384","P-384":"p384",secp384r1:"p384","1.3.132.0.34":"p384","2b81040022":"p384","2B81040022":"p384",p521:"p521","P-521":"p521",secp521r1:"p521","1.3.132.0.35":"p521","2b81040023":"p521","2B81040023":"p521",secp256k1:"secp256k1","1.3.132.0.10":"secp256k1","2b8104000a":"secp256k1","2B8104000A":"secp256k1",ED25519:"ed25519",ed25519:"ed25519",Ed25519:"ed25519","1.3.6.1.4.1.11591.15.1":"ed25519","2b06010401da470f01":"ed25519","2B06010401DA470F01":"ed25519",X25519:"curve25519",cv25519:"curve25519",curve25519:"curve25519",Curve25519:"curve25519","1.3.6.1.4.1.3029.1.5.1":"curve25519","2b060104019755010501":"curve25519","2B060104019755010501":"curve25519",brainpoolP256r1:"brainpoolP256r1","1.3.36.3.3.2.8.1.1.7":"brainpoolP256r1","2b2403030208010107":"brainpoolP256r1","2B2403030208010107":"brainpoolP256r1",brainpoolP384r1:"brainpoolP384r1","1.3.36.3.3.2.8.1.1.11":"brainpoolP384r1","2b240303020801010b":"brainpoolP384r1","2B240303020801010B":"brainpoolP384r1",brainpoolP512r1:"brainpoolP512r1","1.3.36.3.3.2.8.1.1.13":"brainpoolP512r1","2b240303020801010d":"brainpoolP512r1","2B240303020801010D":"brainpoolP512r1"},s2k:{simple:0,salted:1,iterated:3,gnu:101},publicKey:{rsaEncryptSign:1,rsaEncrypt:2,rsaSign:3,elgamal:16,dsa:17,ecdh:18,ecdsa:19,eddsa:22,aedh:23,aedsa:24},symmetric:{plaintext:0,idea:1,tripledes:2,cast5:3,blowfish:4,aes128:7,aes192:8,aes256:9,twofish:10},compression:{uncompressed:0,zip:1,zlib:2,bzip2:3},hash:{md5:1,sha1:2,ripemd:3,sha256:8,sha384:9,sha512:10,sha224:11},webHash:{"SHA-1":2,"SHA-256":8,"SHA-384":9,"SHA-512":10},aead:{eax:1,ocb:2,experimentalGCM:100},packet:{publicKeyEncryptedSessionKey:1,signature:2,symEncryptedSessionKey:3,onePassSignature:4,secretKey:5,publicKey:6,secretSubkey:7,compressedData:8,symmetricallyEncryptedData:9,marker:10,literalData:11,trust:12,userID:13,publicSubkey:14,userAttribute:17,symEncryptedIntegrityProtectedData:18,modificationDetectionCode:19,aeadEncryptedData:20},literal:{binary:98,text:116,utf8:117,mime:109},signature:{binary:0,text:1,standalone:2,certGeneric:16,certPersona:17,certCasual:18,certPositive:19,certRevocation:48,subkeyBinding:24,keyBinding:25,key:31,keyRevocation:32,subkeyRevocation:40,timestamp:64,thirdParty:80},signatureSubpacket:{signatureCreationTime:2,signatureExpirationTime:3,exportableCertification:4,trustSignature:5,regularExpression:6,revocable:7,keyExpirationTime:9,placeholderBackwardsCompatibility:10,preferredSymmetricAlgorithms:11,revocationKey:12,issuer:16,notationData:20,preferredHashAlgorithms:21,preferredCompressionAlgorithms:22,keyServerPreferences:23,preferredKeyServer:24,primaryUserID:25,policyURI:26,keyFlags:27,signersUserID:28,reasonForRevocation:29,features:30,signatureTarget:31,embeddedSignature:32,issuerFingerprint:33,preferredAEADAlgorithms:34},keyFlags:{certifyKeys:1,signData:2,encryptCommunication:4,encryptStorage:8,splitPrivateKey:16,authentication:32,sharedPrivateKey:128},armor:{multipartSection:0,multipartLast:1,signed:2,message:3,publicKey:4,privateKey:5,signature:6},reasonForRevocation:{noReason:0,keySuperseded:1,keyCompromised:2,keyRetired:3,userIDInvalid:32},features:{modificationDetection:1,aead:2,v5Keys:4},write:function(e,t){if("number"==typeof t&&(t=this.read(e,t)),void 0!==e[t])return e[t];throw Error("Invalid enum value.")},read:function(e,t){if(e[te]||(e[te]=[],Object.entries(e).forEach((([t,r])=>{e[te][r]=t}))),void 0!==e[te][t])return e[te][t];throw Error("Invalid enum value.")}},ie={preferredHashAlgorithm:re.hash.sha256,preferredSymmetricAlgorithm:re.symmetric.aes256,preferredCompressionAlgorithm:re.compression.uncompressed,deflateLevel:6,aeadProtect:!1,preferredAEADAlgorithm:re.aead.eax,aeadChunkSizeByte:12,v5Keys:!1,s2kIterationCountByte:224,allowUnauthenticatedMessages:!1,allowUnauthenticatedStream:!1,checksumRequired:!1,minRSABits:2047,passwordCollisionCheck:!1,revocationsExpire:!1,allowInsecureDecryptionWithSigningKeys:!1,allowInsecureVerificationWithReformattedKeys:!1,constantTimePKCS1Decryption:!1,constantTimePKCS1DecryptionSupportedSymmetricAlgorithms:new Set([re.symmetric.aes128,re.symmetric.aes192,re.symmetric.aes256]),minBytesForWebCrypto:1e3,ignoreUnsupportedPackets:!0,ignoreMalformedPackets:!1,showVersion:!1,showComment:!1,versionString:"OpenPGP.js 5.2.0",commentString:"https://openpgpjs.org",maxUserIDLength:5120,knownNotations:["preferred-email-encoding@pgp.com","pka-address@gnupg.org"],useIndutnyElliptic:!0,rejectHashAlgorithms:new Set([re.hash.md5,re.hash.ripemd]),rejectMessageHashAlgorithms:new Set([re.hash.md5,re.hash.ripemd,re.hash.sha1]),rejectPublicKeyAlgorithms:new Set([re.publicKey.elgamal,re.publicKey.dsa]),rejectCurves:new Set([re.curve.brainpoolP256r1,re.curve.brainpoolP384r1,re.curve.brainpoolP512r1,re.curve.secp256k1])};function ne(e){const t=e.match(/^-----BEGIN PGP (MESSAGE, PART \d+\/\d+|MESSAGE, PART \d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m);if(!t)throw Error("Unknown ASCII armor type");return/MESSAGE, PART \d+\/\d+/.test(t[1])?re.armor.multipartSection:/MESSAGE, PART \d+/.test(t[1])?re.armor.multipartLast:/SIGNED MESSAGE/.test(t[1])?re.armor.signed:/MESSAGE/.test(t[1])?re.armor.message:/PUBLIC KEY BLOCK/.test(t[1])?re.armor.publicKey:/PRIVATE KEY BLOCK/.test(t[1])?re.armor.privateKey:/SIGNATURE/.test(t[1])?re.armor.signature:void 0}function ae(e,t){let r="";return t.showVersion&&(r+="Version: "+t.versionString+"\n"),t.showComment&&(r+="Comment: "+t.commentString+"\n"),e&&(r+="Comment: "+e+"\n"),r+="\n",r}function se(e){return X(function(e){let t=13501623;return B(e,(e=>{const r=ce?Math.floor(e.length/4):0,i=new Uint32Array(e.buffer,e.byteOffset,r);for(let e=0;e<r;e++)t^=i[e],t=oe[0][t>>24&255]^oe[1][t>>16&255]^oe[2][t>>8&255]^oe[3][t>>0&255];for(let i=4*r;i<e.length;i++)t=t>>8^oe[0][255&t^e[i]]}),(()=>new Uint8Array([t,t>>8,t>>16])))}(e))}const oe=[Array(255),Array(255),Array(255),Array(255)];for(let e=0;e<=255;e++){let t=e<<16;for(let e=0;e<8;e++)t=t<<1^(0!=(8388608&t)?8801531:0);oe[0][e]=(16711680&t)>>16|65280&t|(255&t)<<16}for(let e=0;e<=255;e++)oe[1][e]=oe[0][e]>>8^oe[0][255&oe[0][e]];for(let e=0;e<=255;e++)oe[2][e]=oe[1][e]>>8^oe[0][255&oe[1][e]];for(let e=0;e<=255;e++)oe[3][e]=oe[2][e]>>8^oe[0][255&oe[2][e]];const ce=function(){const e=new ArrayBuffer(2);return new DataView(e).setInt16(0,255,!0),255===new Int16Array(e)[0]}();function ue(e){for(let t=0;t<e.length;t++){if(!/^([^\s:]|[^\s:][^:]*[^\s:]): .+$/.test(e[t]))throw Error("Improperly formatted armor header: "+e[t]);/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(e[t])||V.printDebugError(Error("Unknown header: "+e[t]))}}function he(e){let t=e,r="";const i=e.lastIndexOf("=");return i>=0&&i!==e.length-1&&(t=e.slice(0,i),r=e.slice(i+1).substr(0,4)),{body:t,checksum:r}}function fe(e,t=ie){return new Promise((async(r,i)=>{try{const n=/^-----[^-]+-----$/m,a=/^[ \f\r\t\u00a0\u2000-\u200a\u202f\u205f\u3000]*$/;let s;const o=[];let c,u,h,f=o,d=[],l=Q(T(e,(async(e,t)=>{const p=K(e);try{for(;;){let e=await p.readLine();if(void 0===e)throw Error("Misformed armored text");if(e=V.removeTrailingSpaces(e.replace(/[\r\n]/g,"")),s)if(c)u||2!==s||(n.test(e)?(d=d.join("\r\n"),u=!0,ue(f),f=[],c=!1):d.push(e.replace(/^- /,"")));else if(n.test(e)&&i(Error("Mandatory blank line missing between armor headers and armor data")),a.test(e)){if(ue(f),c=!0,u||2!==s){r({text:d,data:l,headers:o,type:s});break}}else f.push(e);else n.test(e)&&(s=ne(e))}}catch(e){return void i(e)}const y=D(t);try{for(;;){await y.ready;const{done:e,value:t}=await p.read();if(e)throw Error("Misformed armored text");const r=t+"";if(-1!==r.indexOf("=")||-1!==r.indexOf("-")){let e=await p.readToEnd();e.length||(e=""),e=r+e,e=V.removeTrailingSpaces(e.replace(/\r/g,""));const t=e.split(n);if(1===t.length)throw Error("Misformed armored text");const i=he(t[0].slice(0,-1));h=i.checksum,await y.write(i.body);break}await y.write(r)}await y.ready,await y.close()}catch(e){await y.abort(e)}})));l=T(l,(async(e,r)=>{const i=j(se(O(e)));i.catch((()=>{})),await R(e,r,{preventClose:!0});const n=D(r);try{const e=(await i).replace("\n","");if(h!==e&&(h||t.checksumRequired))throw Error("Ascii armor integrity check failed");await n.ready,await n.close()}catch(e){await n.abort(e)}}))}catch(e){i(e)}})).then((async e=>(s(e.data)&&(e.data=await j(e.data)),e)))}function de(e,t,r,i,n,a=ie){let s,o;e===re.armor.signed&&(s=t.text,o=t.hash,t=t.data);const c=O(t),u=[];switch(e){case re.armor.multipartSection:u.push("-----BEGIN PGP MESSAGE, PART "+r+"/"+i+"-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP MESSAGE, PART "+r+"/"+i+"-----\n");break;case re.armor.multipartLast:u.push("-----BEGIN PGP MESSAGE, PART "+r+"-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP MESSAGE, PART "+r+"-----\n");break;case re.armor.signed:u.push("\n-----BEGIN PGP SIGNED MESSAGE-----\n"),u.push("Hash: "+o+"\n\n"),u.push(s.replace(/^-/gm,"- -")),u.push("\n-----BEGIN PGP SIGNATURE-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP SIGNATURE-----\n");break;case re.armor.message:u.push("-----BEGIN PGP MESSAGE-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP MESSAGE-----\n");break;case re.armor.publicKey:u.push("-----BEGIN PGP PUBLIC KEY BLOCK-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP PUBLIC KEY BLOCK-----\n");break;case re.armor.privateKey:u.push("-----BEGIN PGP PRIVATE KEY BLOCK-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP PRIVATE KEY BLOCK-----\n");break;case re.armor.signature:u.push("-----BEGIN PGP SIGNATURE-----\n"),u.push(ae(n,a)),u.push(X(t)),u.push("=",se(c)),u.push("-----END PGP SIGNATURE-----\n")}return V.concat(u)}class le{constructor(){this.bytes=""}read(e){this.bytes=V.uint8ArrayToString(e.subarray(0,8))}write(){return V.stringToUint8Array(this.bytes)}toHex(){return V.uint8ArrayToHex(V.stringToUint8Array(this.bytes))}equals(e,t=!1){return t&&(e.isWildcard()||this.isWildcard())||this.bytes===e.bytes}isNull(){return""===this.bytes}isWildcard(){return/^0+$/.test(this.toHex())}static mapToHex(e){return e.toHex()}static fromID(e){const t=new le;return t.read(V.hexToUint8Array(e)),t}static wildcard(){const e=new le;return e.read(new Uint8Array(8)),e}}var pe=function(){var e,t,r=!1;function i(r,i){var n=e[(t[r]+t[i])%255];return 0!==r&&0!==i||(n=0),n}var n,a,s,o,c=!1;function u(){function u(r){var i,n,a;for(n=a=function(r){var i=e[255-t[r]];return 0===r&&(i=0),i}(r),i=0;i<4;i++)a^=n=255&(n<<1|n>>>7);return a^=99}r||function(){e=[],t=[];var i,n,a=1;for(i=0;i<255;i++)e[i]=a,n=128&a,a<<=1,a&=255,128===n&&(a^=27),a^=e[i],t[e[i]]=i;e[255]=e[0],t[0]=0,r=!0}(),n=[],a=[],s=[[],[],[],[]],o=[[],[],[],[]];for(var h=0;h<256;h++){var f=u(h);n[h]=f,a[f]=h,s[0][h]=i(2,f)<<24|f<<16|f<<8|i(3,f),o[0][f]=i(14,h)<<24|i(9,h)<<16|i(13,h)<<8|i(11,h);for(var d=1;d<4;d++)s[d][h]=s[d-1][h]>>>8|s[d-1][h]<<24,o[d][f]=o[d-1][f]>>>8|o[d-1][f]<<24}c=!0}var h=function(e,t){c||u();var r=new Uint32Array(t);r.set(n,512),r.set(a,768);for(var i=0;i<4;i++)r.set(s[i],4096+1024*i>>2),r.set(o[i],8192+1024*i>>2);var h=function(e,t,r){"use asm";var i=0,n=0,a=0,s=0,o=0,c=0,u=0,h=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0,v=0,_=0,k=0,A=0;var S=new e.Uint32Array(r),E=new e.Uint8Array(r);function P(e,t,r,o,c,u,h,f){e=e|0;t=t|0;r=r|0;o=o|0;c=c|0;u=u|0;h=h|0;f=f|0;var d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0;d=r|0x400,l=r|0x800,p=r|0xc00;c=c^S[(e|0)>>2],u=u^S[(e|4)>>2],h=h^S[(e|8)>>2],f=f^S[(e|12)>>2];for(w=16;(w|0)<=o<<4;w=w+16|0){y=S[(r|c>>22&1020)>>2]^S[(d|u>>14&1020)>>2]^S[(l|h>>6&1020)>>2]^S[(p|f<<2&1020)>>2]^S[(e|w|0)>>2],b=S[(r|u>>22&1020)>>2]^S[(d|h>>14&1020)>>2]^S[(l|f>>6&1020)>>2]^S[(p|c<<2&1020)>>2]^S[(e|w|4)>>2],m=S[(r|h>>22&1020)>>2]^S[(d|f>>14&1020)>>2]^S[(l|c>>6&1020)>>2]^S[(p|u<<2&1020)>>2]^S[(e|w|8)>>2],g=S[(r|f>>22&1020)>>2]^S[(d|c>>14&1020)>>2]^S[(l|u>>6&1020)>>2]^S[(p|h<<2&1020)>>2]^S[(e|w|12)>>2];c=y,u=b,h=m,f=g}i=S[(t|c>>22&1020)>>2]<<24^S[(t|u>>14&1020)>>2]<<16^S[(t|h>>6&1020)>>2]<<8^S[(t|f<<2&1020)>>2]^S[(e|w|0)>>2],n=S[(t|u>>22&1020)>>2]<<24^S[(t|h>>14&1020)>>2]<<16^S[(t|f>>6&1020)>>2]<<8^S[(t|c<<2&1020)>>2]^S[(e|w|4)>>2],a=S[(t|h>>22&1020)>>2]<<24^S[(t|f>>14&1020)>>2]<<16^S[(t|c>>6&1020)>>2]<<8^S[(t|u<<2&1020)>>2]^S[(e|w|8)>>2],s=S[(t|f>>22&1020)>>2]<<24^S[(t|c>>14&1020)>>2]<<16^S[(t|u>>6&1020)>>2]<<8^S[(t|h<<2&1020)>>2]^S[(e|w|12)>>2]}function x(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;P(0x0000,0x0800,0x1000,A,e,t,r,i)}function M(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var a=0;P(0x0400,0x0c00,0x2000,A,e,i,r,t);a=n,n=s,s=a}function C(e,t,r,f){e=e|0;t=t|0;r=r|0;f=f|0;P(0x0000,0x0800,0x1000,A,o^e,c^t,u^r,h^f);o=i,c=n,u=a,h=s}function K(e,t,r,f){e=e|0;t=t|0;r=r|0;f=f|0;var d=0;P(0x0400,0x0c00,0x2000,A,e,f,r,t);d=n,n=s,s=d;i=i^o,n=n^c,a=a^u,s=s^h;o=e,c=t,u=r,h=f}function D(e,t,r,f){e=e|0;t=t|0;r=r|0;f=f|0;P(0x0000,0x0800,0x1000,A,o,c,u,h);o=i=i^e,c=n=n^t,u=a=a^r,h=s=s^f}function R(e,t,r,f){e=e|0;t=t|0;r=r|0;f=f|0;P(0x0000,0x0800,0x1000,A,o,c,u,h);i=i^e,n=n^t,a=a^r,s=s^f;o=e,c=t,u=r,h=f}function I(e,t,r,f){e=e|0;t=t|0;r=r|0;f=f|0;P(0x0000,0x0800,0x1000,A,o,c,u,h);o=i,c=n,u=a,h=s;i=i^e,n=n^t,a=a^r,s=s^f}function U(e,t,r,o){e=e|0;t=t|0;r=r|0;o=o|0;P(0x0000,0x0800,0x1000,A,f,d,l,p);p=~g&p|g&p+1;l=~m&l|m&l+((p|0)==0);d=~b&d|b&d+((l|0)==0);f=~y&f|y&f+((d|0)==0);i=i^e;n=n^t;a=a^r;s=s^o}function B(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;var n=0,a=0,s=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0;e=e^o,t=t^c,r=r^u,i=i^h;n=w|0,a=v|0,s=_|0,f=k|0;for(;(b|0)<128;b=b+1|0){if(n>>>31){d=d^e,l=l^t,p=p^r,y=y^i}n=n<<1|a>>>31,a=a<<1|s>>>31,s=s<<1|f>>>31,f=f<<1;m=i&1;i=i>>>1|r<<31,r=r>>>1|t<<31,t=t>>>1|e<<31,e=e>>>1;if(m)e=e^0xe1000000}o=d,c=l,u=p,h=y}function T(e){e=e|0;A=e}function z(e,t,r,o){e=e|0;t=t|0;r=r|0;o=o|0;i=e,n=t,a=r,s=o}function q(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;o=e,c=t,u=r,h=i}function O(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;f=e,d=t,l=r,p=i}function F(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;y=e,b=t,m=r,g=i}function N(e,t,r,i){e=e|0;t=t|0;r=r|0;i=i|0;p=~g&p|g&i,l=~m&l|m&r,d=~b&d|b&t,f=~y&f|y&e}function j(e){e=e|0;if(e&15)return-1;E[e|0]=i>>>24,E[e|1]=i>>>16&255,E[e|2]=i>>>8&255,E[e|3]=i&255,E[e|4]=n>>>24,E[e|5]=n>>>16&255,E[e|6]=n>>>8&255,E[e|7]=n&255,E[e|8]=a>>>24,E[e|9]=a>>>16&255,E[e|10]=a>>>8&255,E[e|11]=a&255,E[e|12]=s>>>24,E[e|13]=s>>>16&255,E[e|14]=s>>>8&255,E[e|15]=s&255;return 16}function L(e){e=e|0;if(e&15)return-1;E[e|0]=o>>>24,E[e|1]=o>>>16&255,E[e|2]=o>>>8&255,E[e|3]=o&255,E[e|4]=c>>>24,E[e|5]=c>>>16&255,E[e|6]=c>>>8&255,E[e|7]=c&255,E[e|8]=u>>>24,E[e|9]=u>>>16&255,E[e|10]=u>>>8&255,E[e|11]=u&255,E[e|12]=h>>>24,E[e|13]=h>>>16&255,E[e|14]=h>>>8&255,E[e|15]=h&255;return 16}function W(){x(0,0,0,0);w=i,v=n,_=a,k=s}function H(e,t,r){e=e|0;t=t|0;r=r|0;var o=0;if(t&15)return-1;while((r|0)>=16){V[e&7](E[t|0]<<24|E[t|1]<<16|E[t|2]<<8|E[t|3],E[t|4]<<24|E[t|5]<<16|E[t|6]<<8|E[t|7],E[t|8]<<24|E[t|9]<<16|E[t|10]<<8|E[t|11],E[t|12]<<24|E[t|13]<<16|E[t|14]<<8|E[t|15]);E[t|0]=i>>>24,E[t|1]=i>>>16&255,E[t|2]=i>>>8&255,E[t|3]=i&255,E[t|4]=n>>>24,E[t|5]=n>>>16&255,E[t|6]=n>>>8&255,E[t|7]=n&255,E[t|8]=a>>>24,E[t|9]=a>>>16&255,E[t|10]=a>>>8&255,E[t|11]=a&255,E[t|12]=s>>>24,E[t|13]=s>>>16&255,E[t|14]=s>>>8&255,E[t|15]=s&255;o=o+16|0,t=t+16|0,r=r-16|0}return o|0}function G(e,t,r){e=e|0;t=t|0;r=r|0;var i=0;if(t&15)return-1;while((r|0)>=16){$[e&1](E[t|0]<<24|E[t|1]<<16|E[t|2]<<8|E[t|3],E[t|4]<<24|E[t|5]<<16|E[t|6]<<8|E[t|7],E[t|8]<<24|E[t|9]<<16|E[t|10]<<8|E[t|11],E[t|12]<<24|E[t|13]<<16|E[t|14]<<8|E[t|15]);i=i+16|0,t=t+16|0,r=r-16|0}return i|0}var V=[x,M,C,K,D,R,I,U];var $=[C,B];return{set_rounds:T,set_state:z,set_iv:q,set_nonce:O,set_mask:F,set_counter:N,get_state:j,get_iv:L,gcm_init:W,cipher:H,mac:G}}({Uint8Array,Uint32Array},e,t);return h.set_key=function(e,t,i,a,s,c,u,f,d){var l=r.subarray(0,60),p=r.subarray(256,316);l.set([t,i,a,s,c,u,f,d]);for(var y=e,b=1;y<4*e+28;y++){var m=l[y-1];(y%e==0||8===e&&y%e==4)&&(m=n[m>>>24]<<24^n[m>>>16&255]<<16^n[m>>>8&255]<<8^n[255&m]),y%e==0&&(m=m<<8^m>>>24^b<<24,b=b<<1^(128&b?27:0)),l[y]=l[y-e]^m}for(var g=0;g<y;g+=4)for(var w=0;w<4;w++){m=l[y-(4+g)+(4-w)%4];p[g+w]=g<4||g>=y-4?m:o[0][n[m>>>24]]^o[1][n[m>>>16&255]]^o[2][n[m>>>8&255]]^o[3][n[255&m]]}h.set_rounds(e+5)},h};return h.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},h.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},h.MAC={CBC:0,GCM:1},h.HEAP_DATA=16384,h}();function ye(e){return e instanceof Uint8Array}function be(e,t){const r=e?e.byteLength:t||65536;if(4095&r||r<=0)throw Error("heap size must be a positive integer and a multiple of 4096");return e=e||new Uint8Array(new ArrayBuffer(r))}function me(e,t,r,i,n){const a=e.length-t,s=a<n?a:n;return e.set(r.subarray(i,i+s),t),s}function ge(...e){const t=e.reduce(((e,t)=>e+t.length),0),r=new Uint8Array(t);let i=0;for(let t=0;t<e.length;t++)r.set(e[t],i),i+=e[t].length;return r}class we extends Error{constructor(...e){super(...e)}}class ve extends Error{constructor(...e){super(...e)}}class _e extends Error{constructor(...e){super(...e)}}const ke=[],Ae=[];class Se{constructor(e,t,r=!0,i,n,a){this.pos=0,this.len=0,this.mode=i,this.pos=0,this.len=0,this.key=e,this.iv=t,this.padding=r,this.acquire_asm(n,a)}acquire_asm(e,t){return void 0!==this.heap&&void 0!==this.asm||(this.heap=e||ke.pop()||be().subarray(pe.HEAP_DATA),this.asm=t||Ae.pop()||new pe(null,this.heap.buffer),this.reset(this.key,this.iv)),{heap:this.heap,asm:this.asm}}release_asm(){void 0!==this.heap&&void 0!==this.asm&&(ke.push(this.heap),Ae.push(this.asm)),this.heap=void 0,this.asm=void 0}reset(e,t){const{asm:r}=this.acquire_asm(),i=e.length;if(16!==i&&24!==i&&32!==i)throw new ve("illegal key size");const n=new DataView(e.buffer,e.byteOffset,e.byteLength);if(r.set_key(i>>2,n.getUint32(0),n.getUint32(4),n.getUint32(8),n.getUint32(12),i>16?n.getUint32(16):0,i>16?n.getUint32(20):0,i>24?n.getUint32(24):0,i>24?n.getUint32(28):0),void 0!==t){if(16!==t.length)throw new ve("illegal iv size");let e=new DataView(t.buffer,t.byteOffset,t.byteLength);r.set_iv(e.getUint32(0),e.getUint32(4),e.getUint32(8),e.getUint32(12))}else r.set_iv(0,0,0,0)}AES_Encrypt_process(e){if(!ye(e))throw new TypeError("data isn't of expected type");let{heap:t,asm:r}=this.acquire_asm(),i=pe.ENC[this.mode],n=pe.HEAP_DATA,a=this.pos,s=this.len,o=0,c=e.length||0,u=0,h=0,f=new Uint8Array(s+c&-16);for(;c>0;)h=me(t,a+s,e,o,c),s+=h,o+=h,c-=h,h=r.cipher(i,n+a,s),h&&f.set(t.subarray(a,a+h),u),u+=h,h<s?(a+=h,s-=h):(a=0,s=0);return this.pos=a,this.len=s,f}AES_Encrypt_finish(){let{heap:e,asm:t}=this.acquire_asm(),r=pe.ENC[this.mode],i=pe.HEAP_DATA,n=this.pos,a=this.len,s=16-a%16,o=a;if(this.hasOwnProperty("padding")){if(this.padding){for(let t=0;t<s;++t)e[n+a+t]=s;a+=s,o=a}else if(a%16)throw new ve("data length must be a multiple of the block size")}else a+=s;const c=new Uint8Array(o);return a&&t.cipher(r,i+n,a),o&&c.set(e.subarray(n,n+o)),this.pos=0,this.len=0,this.release_asm(),c}AES_Decrypt_process(e){if(!ye(e))throw new TypeError("data isn't of expected type");let{heap:t,asm:r}=this.acquire_asm(),i=pe.DEC[this.mode],n=pe.HEAP_DATA,a=this.pos,s=this.len,o=0,c=e.length||0,u=0,h=s+c&-16,f=0,d=0;this.padding&&(f=s+c-h||16,h-=f);const l=new Uint8Array(h);for(;c>0;)d=me(t,a+s,e,o,c),s+=d,o+=d,c-=d,d=r.cipher(i,n+a,s-(c?0:f)),d&&l.set(t.subarray(a,a+d),u),u+=d,d<s?(a+=d,s-=d):(a=0,s=0);return this.pos=a,this.len=s,l}AES_Decrypt_finish(){let{heap:e,asm:t}=this.acquire_asm(),r=pe.DEC[this.mode],i=pe.HEAP_DATA,n=this.pos,a=this.len,s=a;if(a>0){if(a%16){if(this.hasOwnProperty("padding"))throw new ve("data length must be a multiple of the block size");a+=16-a%16}if(t.cipher(r,i+n,a),this.hasOwnProperty("padding")&&this.padding){let t=e[n+s-1];if(t<1||t>16||t>s)throw new _e("bad padding");let r=0;for(let i=t;i>1;i--)r|=t^e[n+s-i];if(r)throw new _e("bad padding");s-=t}}const o=new Uint8Array(s);return s>0&&o.set(e.subarray(n,n+s)),this.pos=0,this.len=0,this.release_asm(),o}}class Ee{static encrypt(e,t,r=!1){return new Ee(t,r).encrypt(e)}static decrypt(e,t,r=!1){return new Ee(t,r).decrypt(e)}constructor(e,t=!1,r){this.aes=r||new Se(e,void 0,t,"ECB")}encrypt(e){return ge(this.aes.AES_Encrypt_process(e),this.aes.AES_Encrypt_finish())}decrypt(e){return ge(this.aes.AES_Decrypt_process(e),this.aes.AES_Decrypt_finish())}}function Pe(e){const t=function(e){const t=new Ee(e);this.encrypt=function(e){return t.encrypt(e)},this.decrypt=function(e){return t.decrypt(e)}};return t.blockSize=t.prototype.blockSize=16,t.keySize=t.prototype.keySize=e/8,t}function xe(e,t,r,i,n,a){const s=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],o=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],c=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],u=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],h=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],f=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],d=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],l=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696];let p,y,b,m,g,w,v,_,k,A,S,E,P,x,M=0,C=t.length;const K=32===e.length?3:9;_=3===K?r?[0,32,2]:[30,-2,-2]:r?[0,32,2,62,30,-2,64,96,2]:[94,62,-2,32,64,2,30,-2,-2],r&&(C=(t=function(e,t){const r=8-e.length%8;let i;if(2===t&&r<8)i=32;else if(1===t)i=r;else{if(t||!(r<8)){if(8===r)return e;throw Error("des: invalid padding")}i=0}const n=new Uint8Array(e.length+r);for(let t=0;t<e.length;t++)n[t]=e[t];for(let t=0;t<r;t++)n[e.length+t]=i;return n}(t,a)).length);let D=new Uint8Array(C),R=0;for(1===i&&(k=n[M++]<<24|n[M++]<<16|n[M++]<<8|n[M++],S=n[M++]<<24|n[M++]<<16|n[M++]<<8|n[M++],M=0);M<C;){for(w=t[M++]<<24|t[M++]<<16|t[M++]<<8|t[M++],v=t[M++]<<24|t[M++]<<16|t[M++]<<8|t[M++],1===i&&(r?(w^=k,v^=S):(A=k,E=S,k=w,S=v)),b=252645135&(w>>>4^v),v^=b,w^=b<<4,b=65535&(w>>>16^v),v^=b,w^=b<<16,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=16711935&(v>>>8^w),w^=b,v^=b<<8,b=1431655765&(w>>>1^v),v^=b,w^=b<<1,w=w<<1|w>>>31,v=v<<1|v>>>31,y=0;y<K;y+=3){for(P=_[y+1],x=_[y+2],p=_[y];p!==P;p+=x)m=v^e[p],g=(v>>>4|v<<28)^e[p+1],b=w,w=v,v=b^(o[m>>>24&63]|u[m>>>16&63]|f[m>>>8&63]|l[63&m]|s[g>>>24&63]|c[g>>>16&63]|h[g>>>8&63]|d[63&g]);b=w,w=v,v=b}w=w>>>1|w<<31,v=v>>>1|v<<31,b=1431655765&(w>>>1^v),v^=b,w^=b<<1,b=16711935&(v>>>8^w),w^=b,v^=b<<8,b=858993459&(v>>>2^w),w^=b,v^=b<<2,b=65535&(w>>>16^v),v^=b,w^=b<<16,b=252645135&(w>>>4^v),v^=b,w^=b<<4,1===i&&(r?(k=w,S=v):(w^=A,v^=E)),D[R++]=w>>>24,D[R++]=w>>>16&255,D[R++]=w>>>8&255,D[R++]=255&w,D[R++]=v>>>24,D[R++]=v>>>16&255,D[R++]=v>>>8&255,D[R++]=255&v}return r||(D=function(e,t){let r,i=null;if(2===t)r=32;else if(1===t)i=e[e.length-1];else{if(t)throw Error("des: invalid padding");r=0}if(!i){for(i=1;e[e.length-i]===r;)i++;i--}return e.subarray(0,e.length-i)}(D,a)),D}function Me(e){const t=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],r=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],n=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],a=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],s=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],o=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],c=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],u=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],h=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],f=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],d=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],l=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],p=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],y=e.length>8?3:1,b=Array(32*y),m=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0];let g,w,v,_=0,k=0;for(let A=0;A<y;A++){let y=e[_++]<<24|e[_++]<<16|e[_++]<<8|e[_++],A=e[_++]<<24|e[_++]<<16|e[_++]<<8|e[_++];v=252645135&(y>>>4^A),A^=v,y^=v<<4,v=65535&(A>>>-16^y),y^=v,A^=v<<-16,v=858993459&(y>>>2^A),A^=v,y^=v<<2,v=65535&(A>>>-16^y),y^=v,A^=v<<-16,v=1431655765&(y>>>1^A),A^=v,y^=v<<1,v=16711935&(A>>>8^y),y^=v,A^=v<<8,v=1431655765&(y>>>1^A),A^=v,y^=v<<1,v=y<<8|A>>>20&240,y=A<<24|A<<8&16711680|A>>>8&65280|A>>>24&240,A=v;for(let e=0;e<16;e++)m[e]?(y=y<<2|y>>>26,A=A<<2|A>>>26):(y=y<<1|y>>>27,A=A<<1|A>>>27),y&=-15,A&=-15,g=t[y>>>28]|r[y>>>24&15]|i[y>>>20&15]|n[y>>>16&15]|a[y>>>12&15]|s[y>>>8&15]|o[y>>>4&15],w=c[A>>>28]|u[A>>>24&15]|h[A>>>20&15]|f[A>>>16&15]|d[A>>>12&15]|l[A>>>8&15]|p[A>>>4&15],v=65535&(w>>>16^g),b[k++]=g^v,b[k++]=w^v<<16}return b}function Ce(e){this.key=[];for(let t=0;t<3;t++)this.key.push(new Uint8Array(e.subarray(8*t,8*t+8)));this.encrypt=function(e){return xe(Me(this.key[2]),xe(Me(this.key[1]),xe(Me(this.key[0]),e,!0,0,null,null),!1,0,null,null),!0,0,null,null)}}function Ke(){this.BlockSize=8,this.KeySize=16,this.setKey=function(e){if(this.masking=Array(16),this.rotate=Array(16),this.reset(),e.length!==this.KeySize)throw Error("CAST-128: keys must be 16 bytes");return this.keySchedule(e),!0},this.reset=function(){for(let e=0;e<16;e++)this.masking[e]=0,this.rotate[e]=0},this.getBlockSize=function(){return this.BlockSize},this.encrypt=function(e){const t=Array(e.length);for(let a=0;a<e.length;a+=8){let s,o=e[a]<<24|e[a+1]<<16|e[a+2]<<8|e[a+3],c=e[a+4]<<24|e[a+5]<<16|e[a+6]<<8|e[a+7];s=c,c=o^r(c,this.masking[0],this.rotate[0]),o=s,s=c,c=o^i(c,this.masking[1],this.rotate[1]),o=s,s=c,c=o^n(c,this.masking[2],this.rotate[2]),o=s,s=c,c=o^r(c,this.masking[3],this.rotate[3]),o=s,s=c,c=o^i(c,this.masking[4],this.rotate[4]),o=s,s=c,c=o^n(c,this.masking[5],this.rotate[5]),o=s,s=c,c=o^r(c,this.masking[6],this.rotate[6]),o=s,s=c,c=o^i(c,this.masking[7],this.rotate[7]),o=s,s=c,c=o^n(c,this.masking[8],this.rotate[8]),o=s,s=c,c=o^r(c,this.masking[9],this.rotate[9]),o=s,s=c,c=o^i(c,this.masking[10],this.rotate[10]),o=s,s=c,c=o^n(c,this.masking[11],this.rotate[11]),o=s,s=c,c=o^r(c,this.masking[12],this.rotate[12]),o=s,s=c,c=o^i(c,this.masking[13],this.rotate[13]),o=s,s=c,c=o^n(c,this.masking[14],this.rotate[14]),o=s,s=c,c=o^r(c,this.masking[15],this.rotate[15]),o=s,t[a]=c>>>24&255,t[a+1]=c>>>16&255,t[a+2]=c>>>8&255,t[a+3]=255&c,t[a+4]=o>>>24&255,t[a+5]=o>>>16&255,t[a+6]=o>>>8&255,t[a+7]=255&o}return t},this.decrypt=function(e){const t=Array(e.length);for(let a=0;a<e.length;a+=8){let s,o=e[a]<<24|e[a+1]<<16|e[a+2]<<8|e[a+3],c=e[a+4]<<24|e[a+5]<<16|e[a+6]<<8|e[a+7];s=c,c=o^r(c,this.masking[15],this.rotate[15]),o=s,s=c,c=o^n(c,this.masking[14],this.rotate[14]),o=s,s=c,c=o^i(c,this.masking[13],this.rotate[13]),o=s,s=c,c=o^r(c,this.masking[12],this.rotate[12]),o=s,s=c,c=o^n(c,this.masking[11],this.rotate[11]),o=s,s=c,c=o^i(c,this.masking[10],this.rotate[10]),o=s,s=c,c=o^r(c,this.masking[9],this.rotate[9]),o=s,s=c,c=o^n(c,this.masking[8],this.rotate[8]),o=s,s=c,c=o^i(c,this.masking[7],this.rotate[7]),o=s,s=c,c=o^r(c,this.masking[6],this.rotate[6]),o=s,s=c,c=o^n(c,this.masking[5],this.rotate[5]),o=s,s=c,c=o^i(c,this.masking[4],this.rotate[4]),o=s,s=c,c=o^r(c,this.masking[3],this.rotate[3]),o=s,s=c,c=o^n(c,this.masking[2],this.rotate[2]),o=s,s=c,c=o^i(c,this.masking[1],this.rotate[1]),o=s,s=c,c=o^r(c,this.masking[0],this.rotate[0]),o=s,t[a]=c>>>24&255,t[a+1]=c>>>16&255,t[a+2]=c>>>8&255,t[a+3]=255&c,t[a+4]=o>>>24&255,t[a+5]=o>>16&255,t[a+6]=o>>8&255,t[a+7]=255&o}return t};const e=[,,,,];e[0]=[,,,,],e[0][0]=[4,0,13,15,12,14,8],e[0][1]=[5,2,16,18,17,19,10],e[0][2]=[6,3,23,22,21,20,9],e[0][3]=[7,1,26,25,27,24,11],e[1]=[,,,,],e[1][0]=[0,6,21,23,20,22,16],e[1][1]=[1,4,0,2,1,3,18],e[1][2]=[2,5,7,6,5,4,17],e[1][3]=[3,7,10,9,11,8,19],e[2]=[,,,,],e[2][0]=[4,0,13,15,12,14,8],e[2][1]=[5,2,16,18,17,19,10],e[2][2]=[6,3,23,22,21,20,9],e[2][3]=[7,1,26,25,27,24,11],e[3]=[,,,,],e[3][0]=[0,6,21,23,20,22,16],e[3][1]=[1,4,0,2,1,3,18],e[3][2]=[2,5,7,6,5,4,17],e[3][3]=[3,7,10,9,11,8,19];const t=[,,,,];function r(e,t,r){const i=t+e,n=i<<r|i>>>32-r;return(a[0][n>>>24]^a[1][n>>>16&255])-a[2][n>>>8&255]+a[3][255&n]}function i(e,t,r){const i=t^e,n=i<<r|i>>>32-r;return a[0][n>>>24]-a[1][n>>>16&255]+a[2][n>>>8&255]^a[3][255&n]}function n(e,t,r){const i=t-e,n=i<<r|i>>>32-r;return(a[0][n>>>24]+a[1][n>>>16&255]^a[2][n>>>8&255])-a[3][255&n]}t[0]=[,,,,],t[0][0]=[24,25,23,22,18],t[0][1]=[26,27,21,20,22],t[0][2]=[28,29,19,18,25],t[0][3]=[30,31,17,16,28],t[1]=[,,,,],t[1][0]=[3,2,12,13,8],t[1][1]=[1,0,14,15,13],t[1][2]=[7,6,8,9,3],t[1][3]=[5,4,10,11,7],t[2]=[,,,,],t[2][0]=[19,18,28,29,25],t[2][1]=[17,16,30,31,28],t[2][2]=[23,22,24,25,18],t[2][3]=[21,20,26,27,22],t[3]=[,,,,],t[3][0]=[8,9,7,6,3],t[3][1]=[10,11,5,4,7],t[3][2]=[12,13,3,2,8],t[3][3]=[14,15,1,0,13],this.keySchedule=function(r){const i=[,,,,,,,,],n=Array(32);let s;for(let e=0;e<4;e++)s=4*e,i[e]=r[s]<<24|r[s+1]<<16|r[s+2]<<8|r[s+3];const o=[6,7,4,5];let c,u=0;for(let r=0;r<2;r++)for(let r=0;r<4;r++){for(s=0;s<4;s++){const t=e[r][s];c=i[t[1]],c^=a[4][i[t[2]>>>2]>>>24-8*(3&t[2])&255],c^=a[5][i[t[3]>>>2]>>>24-8*(3&t[3])&255],c^=a[6][i[t[4]>>>2]>>>24-8*(3&t[4])&255],c^=a[7][i[t[5]>>>2]>>>24-8*(3&t[5])&255],c^=a[o[s]][i[t[6]>>>2]>>>24-8*(3&t[6])&255],i[t[0]]=c}for(s=0;s<4;s++){const e=t[r][s];c=a[4][i[e[0]>>>2]>>>24-8*(3&e[0])&255],c^=a[5][i[e[1]>>>2]>>>24-8*(3&e[1])&255],c^=a[6][i[e[2]>>>2]>>>24-8*(3&e[2])&255],c^=a[7][i[e[3]>>>2]>>>24-8*(3&e[3])&255],c^=a[4+s][i[e[4]>>>2]>>>24-8*(3&e[4])&255],n[u]=c,u++}}for(let e=0;e<16;e++)this.masking[e]=n[e],this.rotate[e]=31&n[16+e]};const a=[,,,,,,,,];a[0]=[821772500,2678128395,1810681135,1059425402,505495343,2617265619,1610868032,3483355465,3218386727,2294005173,3791863952,2563806837,1852023008,365126098,3269944861,584384398,677919599,3229601881,4280515016,2002735330,1136869587,3744433750,2289869850,2731719981,2714362070,879511577,1639411079,575934255,717107937,2857637483,576097850,2731753936,1725645e3,2810460463,5111599,767152862,2543075244,1251459544,1383482551,3052681127,3089939183,3612463449,1878520045,1510570527,2189125840,2431448366,582008916,3163445557,1265446783,1354458274,3529918736,3202711853,3073581712,3912963487,3029263377,1275016285,4249207360,2905708351,3304509486,1442611557,3585198765,2712415662,2731849581,3248163920,2283946226,208555832,2766454743,1331405426,1447828783,3315356441,3108627284,2957404670,2981538698,3339933917,1669711173,286233437,1465092821,1782121619,3862771680,710211251,980974943,1651941557,430374111,2051154026,704238805,4128970897,3144820574,2857402727,948965521,3333752299,2227686284,718756367,2269778983,2731643755,718440111,2857816721,3616097120,1113355533,2478022182,410092745,1811985197,1944238868,2696854588,1415722873,1682284203,1060277122,1998114690,1503841958,82706478,2315155686,1068173648,845149890,2167947013,1768146376,1993038550,3566826697,3390574031,940016341,3355073782,2328040721,904371731,1205506512,4094660742,2816623006,825647681,85914773,2857843460,1249926541,1417871568,3287612,3211054559,3126306446,1975924523,1353700161,2814456437,2438597621,1800716203,722146342,2873936343,1151126914,4160483941,2877670899,458611604,2866078500,3483680063,770352098,2652916994,3367839148,3940505011,3585973912,3809620402,718646636,2504206814,2914927912,3631288169,2857486607,2860018678,575749918,2857478043,718488780,2069512688,3548183469,453416197,1106044049,3032691430,52586708,3378514636,3459808877,3211506028,1785789304,218356169,3571399134,3759170522,1194783844,1523787992,3007827094,1975193539,2555452411,1341901877,3045838698,3776907964,3217423946,2802510864,2889438986,1057244207,1636348243,3761863214,1462225785,2632663439,481089165,718503062,24497053,3332243209,3344655856,3655024856,3960371065,1195698900,2971415156,3710176158,2115785917,4027663609,3525578417,2524296189,2745972565,3564906415,1372086093,1452307862,2780501478,1476592880,3389271281,18495466,2378148571,901398090,891748256,3279637769,3157290713,2560960102,1447622437,4284372637,216884176,2086908623,1879786977,3588903153,2242455666,2938092967,3559082096,2810645491,758861177,1121993112,215018983,642190776,4169236812,1196255959,2081185372,3508738393,941322904,4124243163,2877523539,1848581667,2205260958,3180453958,2589345134,3694731276,550028657,2519456284,3789985535,2973870856,2093648313,443148163,46942275,2734146937,1117713533,1115362972,1523183689,3717140224,1551984063],a[1]=[522195092,4010518363,1776537470,960447360,4267822970,4005896314,1435016340,1929119313,2913464185,1310552629,3579470798,3724818106,2579771631,1594623892,417127293,2715217907,2696228731,1508390405,3994398868,3925858569,3695444102,4019471449,3129199795,3770928635,3520741761,990456497,4187484609,2783367035,21106139,3840405339,631373633,3783325702,532942976,396095098,3548038825,4267192484,2564721535,2011709262,2039648873,620404603,3776170075,2898526339,3612357925,4159332703,1645490516,223693667,1567101217,3362177881,1029951347,3470931136,3570957959,1550265121,119497089,972513919,907948164,3840628539,1613718692,3594177948,465323573,2659255085,654439692,2575596212,2699288441,3127702412,277098644,624404830,4100943870,2717858591,546110314,2403699828,3655377447,1321679412,4236791657,1045293279,4010672264,895050893,2319792268,494945126,1914543101,2777056443,3894764339,2219737618,311263384,4275257268,3458730721,669096869,3584475730,3835122877,3319158237,3949359204,2005142349,2713102337,2228954793,3769984788,569394103,3855636576,1425027204,108000370,2736431443,3671869269,3043122623,1750473702,2211081108,762237499,3972989403,2798899386,3061857628,2943854345,867476300,964413654,1591880597,1594774276,2179821409,552026980,3026064248,3726140315,2283577634,3110545105,2152310760,582474363,1582640421,1383256631,2043843868,3322775884,1217180674,463797851,2763038571,480777679,2718707717,2289164131,3118346187,214354409,200212307,3810608407,3025414197,2674075964,3997296425,1847405948,1342460550,510035443,4080271814,815934613,833030224,1620250387,1945732119,2703661145,3966000196,1388869545,3456054182,2687178561,2092620194,562037615,1356438536,3409922145,3261847397,1688467115,2150901366,631725691,3840332284,549916902,3455104640,394546491,837744717,2114462948,751520235,2221554606,2415360136,3999097078,2063029875,803036379,2702586305,821456707,3019566164,360699898,4018502092,3511869016,3677355358,2402471449,812317050,49299192,2570164949,3259169295,2816732080,3331213574,3101303564,2156015656,3705598920,3546263921,143268808,3200304480,1638124008,3165189453,3341807610,578956953,2193977524,3638120073,2333881532,807278310,658237817,2969561766,1641658566,11683945,3086995007,148645947,1138423386,4158756760,1981396783,2401016740,3699783584,380097457,2680394679,2803068651,3334260286,441530178,4016580796,1375954390,761952171,891809099,2183123478,157052462,3683840763,1592404427,341349109,2438483839,1417898363,644327628,2233032776,2353769706,2201510100,220455161,1815641738,182899273,2995019788,3627381533,3702638151,2890684138,1052606899,588164016,1681439879,4038439418,2405343923,4229449282,167996282,1336969661,1688053129,2739224926,1543734051,1046297529,1138201970,2121126012,115334942,1819067631,1902159161,1941945968,2206692869,1159982321],a[2]=[2381300288,637164959,3952098751,3893414151,1197506559,916448331,2350892612,2932787856,3199334847,4009478890,3905886544,1373570990,2450425862,4037870920,3778841987,2456817877,286293407,124026297,3001279700,1028597854,3115296800,4208886496,2691114635,2188540206,1430237888,1218109995,3572471700,308166588,570424558,2187009021,2455094765,307733056,1310360322,3135275007,1384269543,2388071438,863238079,2359263624,2801553128,3380786597,2831162807,1470087780,1728663345,4072488799,1090516929,532123132,2389430977,1132193179,2578464191,3051079243,1670234342,1434557849,2711078940,1241591150,3314043432,3435360113,3091448339,1812415473,2198440252,267246943,796911696,3619716990,38830015,1526438404,2806502096,374413614,2943401790,1489179520,1603809326,1920779204,168801282,260042626,2358705581,1563175598,2397674057,1356499128,2217211040,514611088,2037363785,2186468373,4022173083,2792511869,2913485016,1173701892,4200428547,3896427269,1334932762,2455136706,602925377,2835607854,1613172210,41346230,2499634548,2457437618,2188827595,41386358,4172255629,1313404830,2405527007,3801973774,2217704835,873260488,2528884354,2478092616,4012915883,2555359016,2006953883,2463913485,575479328,2218240648,2099895446,660001756,2341502190,3038761536,3888151779,3848713377,3286851934,1022894237,1620365795,3449594689,1551255054,15374395,3570825345,4249311020,4151111129,3181912732,310226346,1133119310,530038928,136043402,2476768958,3107506709,2544909567,1036173560,2367337196,1681395281,1758231547,3641649032,306774401,1575354324,3716085866,1990386196,3114533736,2455606671,1262092282,3124342505,2768229131,4210529083,1833535011,423410938,660763973,2187129978,1639812e3,3508421329,3467445492,310289298,272797111,2188552562,2456863912,310240523,677093832,1013118031,901835429,3892695601,1116285435,3036471170,1337354835,243122523,520626091,277223598,4244441197,4194248841,1766575121,594173102,316590669,742362309,3536858622,4176435350,3838792410,2501204839,1229605004,3115755532,1552908988,2312334149,979407927,3959474601,1148277331,176638793,3614686272,2083809052,40992502,1340822838,2731552767,3535757508,3560899520,1354035053,122129617,7215240,2732932949,3118912700,2718203926,2539075635,3609230695,3725561661,1928887091,2882293555,1988674909,2063640240,2491088897,1459647954,4189817080,2302804382,1113892351,2237858528,1927010603,4002880361,1856122846,1594404395,2944033133,3855189863,3474975698,1643104450,4054590833,3431086530,1730235576,2984608721,3084664418,2131803598,4178205752,267404349,1617849798,1616132681,1462223176,736725533,2327058232,551665188,2945899023,1749386277,2575514597,1611482493,674206544,2201269090,3642560800,728599968,1680547377,2620414464,1388111496,453204106,4156223445,1094905244,2754698257,2201108165,3757000246,2704524545,3922940700,3996465027],a[3]=[2645754912,532081118,2814278639,3530793624,1246723035,1689095255,2236679235,4194438865,2116582143,3859789411,157234593,2045505824,4245003587,1687664561,4083425123,605965023,672431967,1336064205,3376611392,214114848,4258466608,3232053071,489488601,605322005,3998028058,264917351,1912574028,756637694,436560991,202637054,135989450,85393697,2152923392,3896401662,2895836408,2145855233,3535335007,115294817,3147733898,1922296357,3464822751,4117858305,1037454084,2725193275,2127856640,1417604070,1148013728,1827919605,642362335,2929772533,909348033,1346338451,3547799649,297154785,1917849091,4161712827,2883604526,3968694238,1469521537,3780077382,3375584256,1763717519,136166297,4290970789,1295325189,2134727907,2798151366,1566297257,3672928234,2677174161,2672173615,965822077,2780786062,289653839,1133871874,3491843819,35685304,1068898316,418943774,672553190,642281022,2346158704,1954014401,3037126780,4079815205,2030668546,3840588673,672283427,1776201016,359975446,3750173538,555499703,2769985273,1324923,69110472,152125443,3176785106,3822147285,1340634837,798073664,1434183902,15393959,216384236,1303690150,3881221631,3711134124,3960975413,106373927,2578434224,1455997841,1801814300,1578393881,1854262133,3188178946,3258078583,2302670060,1539295533,3505142565,3078625975,2372746020,549938159,3278284284,2620926080,181285381,2865321098,3970029511,68876850,488006234,1728155692,2608167508,836007927,2435231793,919367643,3339422534,3655756360,1457871481,40520939,1380155135,797931188,234455205,2255801827,3990488299,397000196,739833055,3077865373,2871719860,4022553888,772369276,390177364,3853951029,557662966,740064294,1640166671,1699928825,3535942136,622006121,3625353122,68743880,1742502,219489963,1664179233,1577743084,1236991741,410585305,2366487942,823226535,1050371084,3426619607,3586839478,212779912,4147118561,1819446015,1911218849,530248558,3486241071,3252585495,2886188651,3410272728,2342195030,20547779,2982490058,3032363469,3631753222,312714466,1870521650,1493008054,3491686656,615382978,4103671749,2534517445,1932181,2196105170,278426614,6369430,3274544417,2913018367,697336853,2143000447,2946413531,701099306,1558357093,2805003052,3500818408,2321334417,3567135975,216290473,3591032198,23009561,1996984579,3735042806,2024298078,3739440863,569400510,2339758983,3016033873,3097871343,3639523026,3844324983,3256173865,795471839,2951117563,4101031090,4091603803,3603732598,971261452,534414648,428311343,3389027175,2844869880,694888862,1227866773,2456207019,3043454569,2614353370,3749578031,3676663836,459166190,4132644070,1794958188,51825668,2252611902,3084671440,2036672799,3436641603,1099053433,2469121526,3059204941,1323291266,2061838604,1018778475,2233344254,2553501054,334295216,3556750194,1065731521,183467730],a[4]=[2127105028,745436345,2601412319,2788391185,3093987327,500390133,1155374404,389092991,150729210,3891597772,3523549952,1935325696,716645080,946045387,2901812282,1774124410,3869435775,4039581901,3293136918,3438657920,948246080,363898952,3867875531,1286266623,1598556673,68334250,630723836,1104211938,1312863373,613332731,2377784574,1101634306,441780740,3129959883,1917973735,2510624549,3238456535,2544211978,3308894634,1299840618,4076074851,1756332096,3977027158,297047435,3790297736,2265573040,3621810518,1311375015,1667687725,47300608,3299642885,2474112369,201668394,1468347890,576830978,3594690761,3742605952,1958042578,1747032512,3558991340,1408974056,3366841779,682131401,1033214337,1545599232,4265137049,206503691,103024618,2855227313,1337551222,2428998917,2963842932,4015366655,3852247746,2796956967,3865723491,3747938335,247794022,3755824572,702416469,2434691994,397379957,851939612,2314769512,218229120,1380406772,62274761,214451378,3170103466,2276210409,3845813286,28563499,446592073,1693330814,3453727194,29968656,3093872512,220656637,2470637031,77972100,1667708854,1358280214,4064765667,2395616961,325977563,4277240721,4220025399,3605526484,3355147721,811859167,3069544926,3962126810,652502677,3075892249,4132761541,3498924215,1217549313,3250244479,3858715919,3053989961,1538642152,2279026266,2875879137,574252750,3324769229,2651358713,1758150215,141295887,2719868960,3515574750,4093007735,4194485238,1082055363,3417560400,395511885,2966884026,179534037,3646028556,3738688086,1092926436,2496269142,257381841,3772900718,1636087230,1477059743,2499234752,3811018894,2675660129,3285975680,90732309,1684827095,1150307763,1723134115,3237045386,1769919919,1240018934,815675215,750138730,2239792499,1234303040,1995484674,138143821,675421338,1145607174,1936608440,3238603024,2345230278,2105974004,323969391,779555213,3004902369,2861610098,1017501463,2098600890,2628620304,2940611490,2682542546,1171473753,3656571411,3687208071,4091869518,393037935,159126506,1662887367,1147106178,391545844,3452332695,1891500680,3016609650,1851642611,546529401,1167818917,3194020571,2848076033,3953471836,575554290,475796850,4134673196,450035699,2351251534,844027695,1080539133,86184846,1554234488,3692025454,1972511363,2018339607,1491841390,1141460869,1061690759,4244549243,2008416118,2351104703,2868147542,1598468138,722020353,1027143159,212344630,1387219594,1725294528,3745187956,2500153616,458938280,4129215917,1828119673,544571780,3503225445,2297937496,1241802790,267843827,2694610800,1397140384,1558801448,3782667683,1806446719,929573330,2234912681,400817706,616011623,4121520928,3603768725,1761550015,1968522284,4053731006,4192232858,4005120285,872482584,3140537016,3894607381,2287405443,1963876937,3663887957,1584857e3,2975024454,1833426440,4025083860],a[5]=[4143615901,749497569,1285769319,3795025788,2514159847,23610292,3974978748,844452780,3214870880,3751928557,2213566365,1676510905,448177848,3730751033,4086298418,2307502392,871450977,3222878141,4110862042,3831651966,2735270553,1310974780,2043402188,1218528103,2736035353,4274605013,2702448458,3936360550,2693061421,162023535,2827510090,687910808,23484817,3784910947,3371371616,779677500,3503626546,3473927188,4157212626,3500679282,4248902014,2466621104,3899384794,1958663117,925738300,1283408968,3669349440,1840910019,137959847,2679828185,1239142320,1315376211,1547541505,1690155329,739140458,3128809933,3933172616,3876308834,905091803,1548541325,4040461708,3095483362,144808038,451078856,676114313,2861728291,2469707347,993665471,373509091,2599041286,4025009006,4170239449,2149739950,3275793571,3749616649,2794760199,1534877388,572371878,2590613551,1753320020,3467782511,1405125690,4270405205,633333386,3026356924,3475123903,632057672,2846462855,1404951397,3882875879,3915906424,195638627,2385783745,3902872553,1233155085,3355999740,2380578713,2702246304,2144565621,3663341248,3894384975,2502479241,4248018925,3094885567,1594115437,572884632,3385116731,767645374,1331858858,1475698373,3793881790,3532746431,1321687957,619889600,1121017241,3440213920,2070816767,2833025776,1933951238,4095615791,890643334,3874130214,859025556,360630002,925594799,1764062180,3920222280,4078305929,979562269,2810700344,4087740022,1949714515,546639971,1165388173,3069891591,1495988560,922170659,1291546247,2107952832,1813327274,3406010024,3306028637,4241950635,153207855,2313154747,1608695416,1150242611,1967526857,721801357,1220138373,3691287617,3356069787,2112743302,3281662835,1111556101,1778980689,250857638,2298507990,673216130,2846488510,3207751581,3562756981,3008625920,3417367384,2198807050,529510932,3547516680,3426503187,2364944742,102533054,2294910856,1617093527,1204784762,3066581635,1019391227,1069574518,1317995090,1691889997,3661132003,510022745,3238594800,1362108837,1817929911,2184153760,805817662,1953603311,3699844737,120799444,2118332377,207536705,2282301548,4120041617,145305846,2508124933,3086745533,3261524335,1877257368,2977164480,3160454186,2503252186,4221677074,759945014,254147243,2767453419,3801518371,629083197,2471014217,907280572,3900796746,940896768,2751021123,2625262786,3161476951,3661752313,3260732218,1425318020,2977912069,1496677566,3988592072,2140652971,3126511541,3069632175,977771578,1392695845,1698528874,1411812681,1369733098,1343739227,3620887944,1142123638,67414216,3102056737,3088749194,1626167401,2546293654,3941374235,697522451,33404913,143560186,2595682037,994885535,1247667115,3859094837,2699155541,3547024625,4114935275,2968073508,3199963069,2732024527,1237921620,951448369,1898488916,1211705605,2790989240,2233243581,3598044975],a[6]=[2246066201,858518887,1714274303,3485882003,713916271,2879113490,3730835617,539548191,36158695,1298409750,419087104,1358007170,749914897,2989680476,1261868530,2995193822,2690628854,3443622377,3780124940,3796824509,2976433025,4259637129,1551479e3,512490819,1296650241,951993153,2436689437,2460458047,144139966,3136204276,310820559,3068840729,643875328,1969602020,1680088954,2185813161,3283332454,672358534,198762408,896343282,276269502,3014846926,84060815,197145886,376173866,3943890818,3813173521,3545068822,1316698879,1598252827,2633424951,1233235075,859989710,2358460855,3503838400,3409603720,1203513385,1193654839,2792018475,2060853022,207403770,1144516871,3068631394,1121114134,177607304,3785736302,326409831,1929119770,2983279095,4183308101,3474579288,3200513878,3228482096,119610148,1170376745,3378393471,3163473169,951863017,3337026068,3135789130,2907618374,1183797387,2015970143,4045674555,2182986399,2952138740,3928772205,384012900,2454997643,10178499,2879818989,2596892536,111523738,2995089006,451689641,3196290696,235406569,1441906262,3890558523,3013735005,4158569349,1644036924,376726067,1006849064,3664579700,2041234796,1021632941,1374734338,2566452058,371631263,4007144233,490221539,206551450,3140638584,1053219195,1853335209,3412429660,3562156231,735133835,1623211703,3104214392,2738312436,4096837757,3366392578,3110964274,3956598718,3196820781,2038037254,3877786376,2339753847,300912036,3766732888,2372630639,1516443558,4200396704,1574567987,4069441456,4122592016,2699739776,146372218,2748961456,2043888151,35287437,2596680554,655490400,1132482787,110692520,1031794116,2188192751,1324057718,1217253157,919197030,686247489,3261139658,1028237775,3135486431,3059715558,2460921700,986174950,2661811465,4062904701,2752986992,3709736643,367056889,1353824391,731860949,1650113154,1778481506,784341916,357075625,3608602432,1074092588,2480052770,3811426202,92751289,877911070,3600361838,1231880047,480201094,3756190983,3094495953,434011822,87971354,363687820,1717726236,1901380172,3926403882,2481662265,400339184,1490350766,2661455099,1389319756,2558787174,784598401,1983468483,30828846,3550527752,2716276238,3841122214,1765724805,1955612312,1277890269,1333098070,1564029816,2704417615,1026694237,3287671188,1260819201,3349086767,1016692350,1582273796,1073413053,1995943182,694588404,1025494639,3323872702,3551898420,4146854327,453260480,1316140391,1435673405,3038941953,3486689407,1622062951,403978347,817677117,950059133,4246079218,3278066075,1486738320,1417279718,481875527,2549965225,3933690356,760697757,1452955855,3897451437,1177426808,1702951038,4085348628,2447005172,1084371187,3516436277,3068336338,1073369276,1027665953,3284188590,1230553676,1368340146,2226246512,267243139,2274220762,4070734279,2497715176,2423353163,2504755875],a[7]=[3793104909,3151888380,2817252029,895778965,2005530807,3871412763,237245952,86829237,296341424,3851759377,3974600970,2475086196,709006108,1994621201,2972577594,937287164,3734691505,168608556,3189338153,2225080640,3139713551,3033610191,3025041904,77524477,185966941,1208824168,2344345178,1721625922,3354191921,1066374631,1927223579,1971335949,2483503697,1551748602,2881383779,2856329572,3003241482,48746954,1398218158,2050065058,313056748,4255789917,393167848,1912293076,940740642,3465845460,3091687853,2522601570,2197016661,1727764327,364383054,492521376,1291706479,3264136376,1474851438,1685747964,2575719748,1619776915,1814040067,970743798,1561002147,2925768690,2123093554,1880132620,3151188041,697884420,2550985770,2607674513,2659114323,110200136,1489731079,997519150,1378877361,3527870668,478029773,2766872923,1022481122,431258168,1112503832,897933369,2635587303,669726182,3383752315,918222264,163866573,3246985393,3776823163,114105080,1903216136,761148244,3571337562,1690750982,3166750252,1037045171,1888456500,2010454850,642736655,616092351,365016990,1185228132,4174898510,1043824992,2023083429,2241598885,3863320456,3279669087,3674716684,108438443,2132974366,830746235,606445527,4173263986,2204105912,1844756978,2532684181,4245352700,2969441100,3796921661,1335562986,4061524517,2720232303,2679424040,634407289,885462008,3294724487,3933892248,2094100220,339117932,4048830727,3202280980,1458155303,2689246273,1022871705,2464987878,3714515309,353796843,2822958815,4256850100,4052777845,551748367,618185374,3778635579,4020649912,1904685140,3069366075,2670879810,3407193292,2954511620,4058283405,2219449317,3135758300,1120655984,3447565834,1474845562,3577699062,550456716,3466908712,2043752612,881257467,869518812,2005220179,938474677,3305539448,3850417126,1315485940,3318264702,226533026,965733244,321539988,1136104718,804158748,573969341,3708209826,937399083,3290727049,2901666755,1461057207,4013193437,4066861423,3242773476,2421326174,1581322155,3028952165,786071460,3900391652,3918438532,1485433313,4023619836,3708277595,3678951060,953673138,1467089153,1930354364,1533292819,2492563023,1346121658,1685000834,1965281866,3765933717,4190206607,2052792609,3515332758,690371149,3125873887,2180283551,2903598061,3933952357,436236910,289419410,14314871,1242357089,2904507907,1616633776,2666382180,585885352,3471299210,2699507360,1432659641,277164553,3354103607,770115018,2303809295,3741942315,3177781868,2853364978,2269453327,3774259834,987383833,1290892879,225909803,1741533526,890078084,1496906255,1111072499,916028167,243534141,1252605537,2204162171,531204876,290011180,3916834213,102027703,237315147,209093447,1486785922,220223953,2758195998,4175039106,82940208,3127791296,2569425252,518464269,1353887104,3941492737,2377294467,3935040926]}function De(e){this.cast5=new Ke,this.cast5.setKey(e),this.encrypt=function(e){return this.cast5.encrypt(e)}}Ce.keySize=Ce.prototype.keySize=24,Ce.blockSize=Ce.prototype.blockSize=8,De.blockSize=De.prototype.blockSize=8,De.keySize=De.prototype.keySize=16;const Re=4294967295;function Ie(e,t){return(e<<t|e>>>32-t)&Re}function Ue(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Be(e,t,r){e.splice(t,4,255&r,r>>>8&255,r>>>16&255,r>>>24&255)}function Te(e,t){return e>>>8*t&255}function ze(e){this.tf=function(){let e=null,t=null,r=-1,i=[],n=[[],[],[],[]];function a(e){return n[0][Te(e,0)]^n[1][Te(e,1)]^n[2][Te(e,2)]^n[3][Te(e,3)]}function s(e){return n[0][Te(e,3)]^n[1][Te(e,0)]^n[2][Te(e,1)]^n[3][Te(e,2)]}function o(e,t){let r=a(t[0]),n=s(t[1]);t[2]=Ie(t[2]^r+n+i[4*e+8]&Re,31),t[3]=Ie(t[3],1)^r+2*n+i[4*e+9]&Re,r=a(t[2]),n=s(t[3]),t[0]=Ie(t[0]^r+n+i[4*e+10]&Re,31),t[1]=Ie(t[1],1)^r+2*n+i[4*e+11]&Re}function c(e,t){let r=a(t[0]),n=s(t[1]);t[2]=Ie(t[2],1)^r+n+i[4*e+10]&Re,t[3]=Ie(t[3]^r+2*n+i[4*e+11]&Re,31),r=a(t[2]),n=s(t[3]),t[0]=Ie(t[0],1)^r+n+i[4*e+8]&Re,t[1]=Ie(t[1]^r+2*n+i[4*e+9]&Re,31)}return{name:"twofish",blocksize:16,open:function(t){let r,a,s,o,c;e=t;const u=[],h=[],f=[];let d;const l=[];let p,y,b;const m=[[8,1,7,13,6,15,3,2,0,11,5,9,14,12,10,4],[2,8,11,13,15,7,6,14,3,1,9,4,0,10,12,5]],g=[[14,12,11,8,1,2,3,5,15,4,10,6,7,0,9,13],[1,14,2,11,4,12,3,7,6,13,10,5,15,9,0,8]],w=[[11,10,5,14,6,13,9,0,12,8,15,3,2,4,7,1],[4,12,7,5,1,6,9,10,0,14,13,8,2,11,3,15]],v=[[13,7,15,4,1,2,6,14,9,11,3,0,8,5,12,10],[11,9,5,1,12,3,13,14,6,4,7,15,2,0,8,10]],_=[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15],k=[0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7],A=[[],[]],S=[[],[],[],[]];function E(e){return e^e>>2^[0,90,180,238][3&e]}function P(e){return e^e>>1^e>>2^[0,238,180,90][3&e]}function x(e,t){let r,i,n;for(r=0;r<8;r++)i=t>>>24,t=t<<8&Re|e>>>24,e=e<<8&Re,n=i<<1,128&i&&(n^=333),t^=i^n<<16,n^=i>>>1,1&i&&(n^=166),t^=n<<24|n<<8;return t}function M(e,t){const r=t>>4,i=15&t,n=m[e][r^i],a=g[e][_[i]^k[r]];return v[e][_[a]^k[n]]<<4|w[e][n^a]}function C(e,t){let r=Te(e,0),i=Te(e,1),n=Te(e,2),a=Te(e,3);switch(d){case 4:r=A[1][r]^Te(t[3],0),i=A[0][i]^Te(t[3],1),n=A[0][n]^Te(t[3],2),a=A[1][a]^Te(t[3],3);case 3:r=A[1][r]^Te(t[2],0),i=A[1][i]^Te(t[2],1),n=A[0][n]^Te(t[2],2),a=A[0][a]^Te(t[2],3);case 2:r=A[0][A[0][r]^Te(t[1],0)]^Te(t[0],0),i=A[0][A[1][i]^Te(t[1],1)]^Te(t[0],1),n=A[1][A[0][n]^Te(t[1],2)]^Te(t[0],2),a=A[1][A[1][a]^Te(t[1],3)]^Te(t[0],3)}return S[0][r]^S[1][i]^S[2][n]^S[3][a]}for(e=e.slice(0,32),r=e.length;16!==r&&24!==r&&32!==r;)e[r++]=0;for(r=0;r<e.length;r+=4)f[r>>2]=Ue(e,r);for(r=0;r<256;r++)A[0][r]=M(0,r),A[1][r]=M(1,r);for(r=0;r<256;r++)p=A[1][r],y=E(p),b=P(p),S[0][r]=p+(y<<8)+(b<<16)+(b<<24),S[2][r]=y+(b<<8)+(p<<16)+(b<<24),p=A[0][r],y=E(p),b=P(p),S[1][r]=b+(b<<8)+(y<<16)+(p<<24),S[3][r]=y+(p<<8)+(b<<16)+(y<<24);for(d=f.length/2,r=0;r<d;r++)a=f[r+r],u[r]=a,s=f[r+r+1],h[r]=s,l[d-r-1]=x(a,s);for(r=0;r<40;r+=2)a=16843009*r,s=a+16843009,a=C(a,u),s=Ie(C(s,h),8),i[r]=a+s&Re,i[r+1]=Ie(a+2*s,9);for(r=0;r<256;r++)switch(a=s=o=c=r,d){case 4:a=A[1][a]^Te(l[3],0),s=A[0][s]^Te(l[3],1),o=A[0][o]^Te(l[3],2),c=A[1][c]^Te(l[3],3);case 3:a=A[1][a]^Te(l[2],0),s=A[1][s]^Te(l[2],1),o=A[0][o]^Te(l[2],2),c=A[0][c]^Te(l[2],3);case 2:n[0][r]=S[0][A[0][A[0][a]^Te(l[1],0)]^Te(l[0],0)],n[1][r]=S[1][A[0][A[1][s]^Te(l[1],1)]^Te(l[0],1)],n[2][r]=S[2][A[1][A[0][o]^Te(l[1],2)]^Te(l[0],2)],n[3][r]=S[3][A[1][A[1][c]^Te(l[1],3)]^Te(l[0],3)]}},close:function(){i=[],n=[[],[],[],[]]},encrypt:function(e,n){t=e,r=n;const a=[Ue(t,r)^i[0],Ue(t,r+4)^i[1],Ue(t,r+8)^i[2],Ue(t,r+12)^i[3]];for(let e=0;e<8;e++)o(e,a);return Be(t,r,a[2]^i[4]),Be(t,r+4,a[3]^i[5]),Be(t,r+8,a[0]^i[6]),Be(t,r+12,a[1]^i[7]),r+=16,t},decrypt:function(e,n){t=e,r=n;const a=[Ue(t,r)^i[4],Ue(t,r+4)^i[5],Ue(t,r+8)^i[6],Ue(t,r+12)^i[7]];for(let e=7;e>=0;e--)c(e,a);Be(t,r,a[2]^i[0]),Be(t,r+4,a[3]^i[1]),Be(t,r+8,a[0]^i[2]),Be(t,r+12,a[1]^i[3]),r+=16},finalize:function(){return t}}}(),this.tf.open(Array.from(e),0),this.encrypt=function(e){return this.tf.encrypt(Array.from(e),0)}}function qe(){}function Oe(e){this.bf=new qe,this.bf.init(e),this.encrypt=function(e){return this.bf.encryptBlock(e)}}ze.keySize=ze.prototype.keySize=32,ze.blockSize=ze.prototype.blockSize=16,qe.prototype.BLOCKSIZE=8,qe.prototype.SBOXES=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]],qe.prototype.PARRAY=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],qe.prototype.NN=16,qe.prototype._clean=function(e){if(e<0){e=(2147483647&e)+2147483648}return e},qe.prototype._F=function(e){let t;const r=255&e,i=255&(e>>>=8),n=255&(e>>>=8),a=255&(e>>>=8);return t=this.sboxes[0][a]+this.sboxes[1][n],t^=this.sboxes[2][i],t+=this.sboxes[3][r],t},qe.prototype._encryptBlock=function(e){let t,r=e[0],i=e[1];for(t=0;t<this.NN;++t){r^=this.parray[t],i=this._F(r)^i;const e=r;r=i,i=e}r^=this.parray[this.NN+0],i^=this.parray[this.NN+1],e[0]=this._clean(i),e[1]=this._clean(r)},qe.prototype.encryptBlock=function(e){let t;const r=[0,0],i=this.BLOCKSIZE/2;for(t=0;t<this.BLOCKSIZE/2;++t)r[0]=r[0]<<8|255&e[t+0],r[1]=r[1]<<8|255&e[t+i];this._encryptBlock(r);const n=[];for(t=0;t<this.BLOCKSIZE/2;++t)n[t+0]=r[0]>>>24-8*t&255,n[t+i]=r[1]>>>24-8*t&255;return n},qe.prototype._decryptBlock=function(e){let t,r=e[0],i=e[1];for(t=this.NN+1;t>1;--t){r^=this.parray[t],i=this._F(r)^i;const e=r;r=i,i=e}r^=this.parray[1],i^=this.parray[0],e[0]=this._clean(i),e[1]=this._clean(r)},qe.prototype.init=function(e){let t,r=0;for(this.parray=[],t=0;t<this.NN+2;++t){let i=0;for(let t=0;t<4;++t)i=i<<8|255&e[r],++r>=e.length&&(r=0);this.parray[t]=this.PARRAY[t]^i}for(this.sboxes=[],t=0;t<4;++t)for(this.sboxes[t]=[],r=0;r<256;++r)this.sboxes[t][r]=this.SBOXES[t][r];const i=[0,0];for(t=0;t<this.NN+2;t+=2)this._encryptBlock(i),this.parray[t+0]=i[0],this.parray[t+1]=i[1];for(t=0;t<4;++t)for(r=0;r<256;r+=2)this._encryptBlock(i),this.sboxes[t][r+0]=i[0],this.sboxes[t][r+1]=i[1]},Oe.keySize=Oe.prototype.keySize=16,Oe.blockSize=Oe.prototype.blockSize=8;const Fe=Pe(128),Ne=Pe(192),je=Pe(256);var Le=/*#__PURE__*/Object.freeze({__proto__:null,aes128:Fe,aes192:Ne,aes256:je,des:function(e){this.key=e,this.encrypt=function(e,t){return xe(Me(this.key),e,!0,0,null,t)},this.decrypt=function(e,t){return xe(Me(this.key),e,!1,0,null,t)}},tripledes:Ce,cast5:De,twofish:ze,blowfish:Oe,idea:function(){throw Error("IDEA symmetric-key algorithm not implemented")}}),We=function(e,t,r){"use asm";var i=0,n=0,a=0,s=0,o=0,c=0,u=0;var h=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0;var v=new e.Uint8Array(r);function _(e,t,r,c,u,h,f,d,l,p,y,b,m,g,w,v){e=e|0;t=t|0;r=r|0;c=c|0;u=u|0;h=h|0;f=f|0;d=d|0;l=l|0;p=p|0;y=y|0;b=b|0;m=m|0;g=g|0;w=w|0;v=v|0;var _=0,k=0,A=0,S=0,E=0,P=0,x=0,M=0,C=0,K=0,D=0,R=0,I=0,U=0,B=0,T=0,z=0,q=0,O=0,F=0,N=0,j=0,L=0,W=0,H=0,G=0,V=0,$=0,Z=0,Y=0,X=0,Q=0,J=0,ee=0,te=0,re=0,ie=0,ne=0,ae=0,se=0,oe=0,ce=0,ue=0,he=0,fe=0,de=0,le=0,pe=0,ye=0,be=0,me=0,ge=0,we=0,ve=0,_e=0,ke=0,Ae=0,Se=0,Ee=0,Pe=0,xe=0,Me=0,Ce=0,Ke=0,De=0,Re=0,Ie=0,Ue=0,Be=0,Te=0,ze=0;_=i;k=n;A=a;S=s;E=o;x=e+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=t+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=r+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=c+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=u+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=h+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=f+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=d+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=l+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=p+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=y+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=b+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=m+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=g+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=w+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;x=v+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=g^l^r^e;M=P<<1|P>>>31;x=M+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=w^p^c^t;C=P<<1|P>>>31;x=C+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=v^y^u^r;K=P<<1|P>>>31;x=K+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=M^b^h^c;D=P<<1|P>>>31;x=D+(_<<5|_>>>27)+E+(k&A|~k&S)+0x5a827999|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=C^m^f^u;R=P<<1|P>>>31;x=R+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=K^g^d^h;I=P<<1|P>>>31;x=I+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=D^w^l^f;U=P<<1|P>>>31;x=U+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=R^v^p^d;B=P<<1|P>>>31;x=B+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=I^M^y^l;T=P<<1|P>>>31;x=T+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=U^C^b^p;z=P<<1|P>>>31;x=z+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=B^K^m^y;q=P<<1|P>>>31;x=q+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=T^D^g^b;O=P<<1|P>>>31;x=O+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=z^R^w^m;F=P<<1|P>>>31;x=F+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=q^I^v^g;N=P<<1|P>>>31;x=N+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=O^U^M^w;j=P<<1|P>>>31;x=j+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=F^B^C^v;L=P<<1|P>>>31;x=L+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=N^T^K^M;W=P<<1|P>>>31;x=W+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=j^z^D^C;H=P<<1|P>>>31;x=H+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=L^q^R^K;G=P<<1|P>>>31;x=G+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=W^O^I^D;V=P<<1|P>>>31;x=V+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=H^F^U^R;$=P<<1|P>>>31;x=$+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=G^N^B^I;Z=P<<1|P>>>31;x=Z+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=V^j^T^U;Y=P<<1|P>>>31;x=Y+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=$^L^z^B;X=P<<1|P>>>31;x=X+(_<<5|_>>>27)+E+(k^A^S)+0x6ed9eba1|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Z^W^q^T;Q=P<<1|P>>>31;x=Q+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Y^H^O^z;J=P<<1|P>>>31;x=J+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=X^G^F^q;ee=P<<1|P>>>31;x=ee+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Q^V^N^O;te=P<<1|P>>>31;x=te+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=J^$^j^F;re=P<<1|P>>>31;x=re+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ee^Z^L^N;ie=P<<1|P>>>31;x=ie+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=te^Y^W^j;ne=P<<1|P>>>31;x=ne+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=re^X^H^L;ae=P<<1|P>>>31;x=ae+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ie^Q^G^W;se=P<<1|P>>>31;x=se+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ne^J^V^H;oe=P<<1|P>>>31;x=oe+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ae^ee^$^G;ce=P<<1|P>>>31;x=ce+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=se^te^Z^V;ue=P<<1|P>>>31;x=ue+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=oe^re^Y^$;he=P<<1|P>>>31;x=he+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ce^ie^X^Z;fe=P<<1|P>>>31;x=fe+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ue^ne^Q^Y;de=P<<1|P>>>31;x=de+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=he^ae^J^X;le=P<<1|P>>>31;x=le+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=fe^se^ee^Q;pe=P<<1|P>>>31;x=pe+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=de^oe^te^J;ye=P<<1|P>>>31;x=ye+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=le^ce^re^ee;be=P<<1|P>>>31;x=be+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=pe^ue^ie^te;me=P<<1|P>>>31;x=me+(_<<5|_>>>27)+E+(k&A|k&S|A&S)-0x70e44324|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ye^he^ne^re;ge=P<<1|P>>>31;x=ge+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=be^fe^ae^ie;we=P<<1|P>>>31;x=we+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=me^de^se^ne;ve=P<<1|P>>>31;x=ve+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ge^le^oe^ae;_e=P<<1|P>>>31;x=_e+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=we^pe^ce^se;ke=P<<1|P>>>31;x=ke+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ve^ye^ue^oe;Ae=P<<1|P>>>31;x=Ae+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=_e^be^he^ce;Se=P<<1|P>>>31;x=Se+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=ke^me^fe^ue;Ee=P<<1|P>>>31;x=Ee+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ae^ge^de^he;Pe=P<<1|P>>>31;x=Pe+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Se^we^le^fe;xe=P<<1|P>>>31;x=xe+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ee^ve^pe^de;Me=P<<1|P>>>31;x=Me+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Pe^_e^ye^le;Ce=P<<1|P>>>31;x=Ce+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=xe^ke^be^pe;Ke=P<<1|P>>>31;x=Ke+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Me^Ae^me^ye;De=P<<1|P>>>31;x=De+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ce^Se^ge^be;Re=P<<1|P>>>31;x=Re+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ke^Ee^we^me;Ie=P<<1|P>>>31;x=Ie+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=De^Pe^ve^ge;Ue=P<<1|P>>>31;x=Ue+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Re^xe^_e^we;Be=P<<1|P>>>31;x=Be+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ie^Me^ke^ve;Te=P<<1|P>>>31;x=Te+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;P=Ue^Ce^Ae^_e;ze=P<<1|P>>>31;x=ze+(_<<5|_>>>27)+E+(k^A^S)-0x359d3e2a|0;E=S;S=A;A=k<<30|k>>>2;k=_;_=x;i=i+_|0;n=n+k|0;a=a+A|0;s=s+S|0;o=o+E|0}function k(e){e=e|0;_(v[e|0]<<24|v[e|1]<<16|v[e|2]<<8|v[e|3],v[e|4]<<24|v[e|5]<<16|v[e|6]<<8|v[e|7],v[e|8]<<24|v[e|9]<<16|v[e|10]<<8|v[e|11],v[e|12]<<24|v[e|13]<<16|v[e|14]<<8|v[e|15],v[e|16]<<24|v[e|17]<<16|v[e|18]<<8|v[e|19],v[e|20]<<24|v[e|21]<<16|v[e|22]<<8|v[e|23],v[e|24]<<24|v[e|25]<<16|v[e|26]<<8|v[e|27],v[e|28]<<24|v[e|29]<<16|v[e|30]<<8|v[e|31],v[e|32]<<24|v[e|33]<<16|v[e|34]<<8|v[e|35],v[e|36]<<24|v[e|37]<<16|v[e|38]<<8|v[e|39],v[e|40]<<24|v[e|41]<<16|v[e|42]<<8|v[e|43],v[e|44]<<24|v[e|45]<<16|v[e|46]<<8|v[e|47],v[e|48]<<24|v[e|49]<<16|v[e|50]<<8|v[e|51],v[e|52]<<24|v[e|53]<<16|v[e|54]<<8|v[e|55],v[e|56]<<24|v[e|57]<<16|v[e|58]<<8|v[e|59],v[e|60]<<24|v[e|61]<<16|v[e|62]<<8|v[e|63])}function A(e){e=e|0;v[e|0]=i>>>24;v[e|1]=i>>>16&255;v[e|2]=i>>>8&255;v[e|3]=i&255;v[e|4]=n>>>24;v[e|5]=n>>>16&255;v[e|6]=n>>>8&255;v[e|7]=n&255;v[e|8]=a>>>24;v[e|9]=a>>>16&255;v[e|10]=a>>>8&255;v[e|11]=a&255;v[e|12]=s>>>24;v[e|13]=s>>>16&255;v[e|14]=s>>>8&255;v[e|15]=s&255;v[e|16]=o>>>24;v[e|17]=o>>>16&255;v[e|18]=o>>>8&255;v[e|19]=o&255}function S(){i=0x67452301;n=0xefcdab89;a=0x98badcfe;s=0x10325476;o=0xc3d2e1f0;c=u=0}function E(e,t,r,h,f,d,l){e=e|0;t=t|0;r=r|0;h=h|0;f=f|0;d=d|0;l=l|0;i=e;n=t;a=r;s=h;o=f;c=d;u=l}function P(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){k(e);e=e+64|0;t=t-64|0;r=r+64|0}c=c+r|0;if(c>>>0<r>>>0)u=u+1|0;return r|0}function x(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){i=P(e,t)|0;if((i|0)==-1)return-1;e=e+i|0;t=t-i|0}i=i+t|0;c=c+t|0;if(c>>>0<t>>>0)u=u+1|0;v[e|t]=0x80;if((t|0)>=56){for(n=t+1|0;(n|0)<64;n=n+1|0)v[e|n]=0x00;k(e);t=0;v[e|0]=0}for(n=t+1|0;(n|0)<59;n=n+1|0)v[e|n]=0;v[e|56]=u>>>21&255;v[e|57]=u>>>13&255;v[e|58]=u>>>5&255;v[e|59]=u<<3&255|c>>>29;v[e|60]=c>>>21&255;v[e|61]=c>>>13&255;v[e|62]=c>>>5&255;v[e|63]=c<<3&255;k(e);if(~r)A(r);return i|0}function M(){i=h;n=f;a=d;s=l;o=p;c=64;u=0}function C(){i=y;n=b;a=m;s=g;o=w;c=64;u=0}function K(e,t,r,v,k,A,E,P,x,M,C,K,D,R,I,U){e=e|0;t=t|0;r=r|0;v=v|0;k=k|0;A=A|0;E=E|0;P=P|0;x=x|0;M=M|0;C=C|0;K=K|0;D=D|0;R=R|0;I=I|0;U=U|0;S();_(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,v^0x5c5c5c5c,k^0x5c5c5c5c,A^0x5c5c5c5c,E^0x5c5c5c5c,P^0x5c5c5c5c,x^0x5c5c5c5c,M^0x5c5c5c5c,C^0x5c5c5c5c,K^0x5c5c5c5c,D^0x5c5c5c5c,R^0x5c5c5c5c,I^0x5c5c5c5c,U^0x5c5c5c5c);y=i;b=n;m=a;g=s;w=o;S();_(e^0x36363636,t^0x36363636,r^0x36363636,v^0x36363636,k^0x36363636,A^0x36363636,E^0x36363636,P^0x36363636,x^0x36363636,M^0x36363636,C^0x36363636,K^0x36363636,D^0x36363636,R^0x36363636,I^0x36363636,U^0x36363636);h=i;f=n;d=a;l=s;p=o;c=64;u=0}function D(e,t,r){e=e|0;t=t|0;r=r|0;var c=0,u=0,h=0,f=0,d=0,l=0;if(e&63)return-1;if(~r)if(r&31)return-1;l=x(e,t,-1)|0;c=i,u=n,h=a,f=s,d=o;C();_(c,u,h,f,d,0x80000000,0,0,0,0,0,0,0,0,0,672);if(~r)A(r);return l|0}function R(e,t,r,c,u){e=e|0;t=t|0;r=r|0;c=c|0;u=u|0;var h=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0;if(e&63)return-1;if(~u)if(u&31)return-1;v[e+t|0]=r>>>24;v[e+t+1|0]=r>>>16&255;v[e+t+2|0]=r>>>8&255;v[e+t+3|0]=r&255;D(e,t+4|0,-1)|0;h=y=i,f=b=n,d=m=a,l=g=s,p=w=o;c=c-1|0;while((c|0)>0){M();_(y,b,m,g,w,0x80000000,0,0,0,0,0,0,0,0,0,672);y=i,b=n,m=a,g=s,w=o;C();_(y,b,m,g,w,0x80000000,0,0,0,0,0,0,0,0,0,672);y=i,b=n,m=a,g=s,w=o;h=h^i;f=f^n;d=d^a;l=l^s;p=p^o;c=c-1|0}i=h;n=f;a=d;s=l;o=p;if(~u)A(u);return 0}return{reset:S,init:E,process:P,finish:x,hmac_reset:M,hmac_init:K,hmac_finish:D,pbkdf2_generate_block:R}};class He{constructor(){this.pos=0,this.len=0}reset(){const{asm:e}=this.acquire_asm();return this.result=null,this.pos=0,this.len=0,e.reset(),this}process(e){if(null!==this.result)throw new we("state must be reset before processing new data");const{asm:t,heap:r}=this.acquire_asm();let i=this.pos,n=this.len,a=0,s=e.length,o=0;for(;s>0;)o=me(r,i+n,e,a,s),n+=o,a+=o,s-=o,o=t.process(i,n),i+=o,n-=o,n||(i=0);return this.pos=i,this.len=n,this}finish(){if(null!==this.result)throw new we("state must be reset before processing new data");const{asm:e,heap:t}=this.acquire_asm();return e.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(t.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this.release_asm(),this}}const Ge=[],Ve=[];class $e extends He{constructor(){super(),this.NAME="sha1",this.BLOCK_SIZE=64,this.HASH_SIZE=20,this.acquire_asm()}acquire_asm(){return void 0!==this.heap&&void 0!==this.asm||(this.heap=Ge.pop()||be(),this.asm=Ve.pop()||We({Uint8Array},null,this.heap.buffer),this.reset()),{heap:this.heap,asm:this.asm}}release_asm(){void 0!==this.heap&&void 0!==this.asm&&(Ge.push(this.heap),Ve.push(this.asm)),this.heap=void 0,this.asm=void 0}static bytes(e){return(new $e).process(e).finish().result}}$e.NAME="sha1",$e.heap_pool=[],$e.asm_pool=[],$e.asm_function=We;const Ze=[],Ye=[];class Xe extends He{constructor(){super(),this.NAME="sha256",this.BLOCK_SIZE=64,this.HASH_SIZE=32,this.acquire_asm()}acquire_asm(){return void 0!==this.heap&&void 0!==this.asm||(this.heap=Ze.pop()||be(),this.asm=Ye.pop()||function(e,t,r){"use asm";var i=0,n=0,a=0,s=0,o=0,c=0,u=0,h=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0,v=0,_=0,k=0,A=0,S=0,E=0,P=0,x=0,M=0,C=new e.Uint8Array(r);function K(e,t,r,f,d,l,p,y,b,m,g,w,v,_,k,A){e=e|0;t=t|0;r=r|0;f=f|0;d=d|0;l=l|0;p=p|0;y=y|0;b=b|0;m=m|0;g=g|0;w=w|0;v=v|0;_=_|0;k=k|0;A=A|0;var S=0,E=0,P=0,x=0,M=0,C=0,K=0,D=0;S=i;E=n;P=a;x=s;M=o;C=c;K=u;D=h;D=e+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0x428a2f98|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;K=t+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0x71374491|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;C=r+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0xb5c0fbcf|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;M=f+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0xe9b5dba5|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;x=d+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x3956c25b|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;P=l+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0x59f111f1|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;E=p+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x923f82a4|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;S=y+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0xab1c5ed5|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;D=b+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0xd807aa98|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;K=m+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0x12835b01|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;C=g+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0x243185be|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;M=w+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0x550c7dc3|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;x=v+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x72be5d74|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;P=_+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0x80deb1fe|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;E=k+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x9bdc06a7|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;S=A+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0xc19bf174|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;D=e+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0xe49b69c1|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+t+g|0;K=t+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0xefbe4786|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;r=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+w|0;C=r+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0x0fc19dc6|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;f=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+f+v|0;M=f+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0x240ca1cc|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+d+_|0;x=d+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x2de92c6f|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+l+k|0;P=l+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0x4a7484aa|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;p=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+A|0;E=p+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x5cb0a9dc|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;y=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+y+e|0;S=y+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0x76f988da|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+b+t|0;D=b+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0x983e5152|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;m=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+m+r|0;K=m+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0xa831c66d|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+g+f|0;C=g+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0xb00327c8|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;w=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+w+d|0;M=w+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0xbf597fc7|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;v=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+l|0;x=v+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0xc6e00bf3|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+p|0;P=_+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0xd5a79147|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;k=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+k+y|0;E=k+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x06ca6351|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;A=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+A+b|0;S=A+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0x14292967|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;D=e+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0x27b70a85|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+t+g|0;K=t+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0x2e1b2138|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;r=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+w|0;C=r+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0x4d2c6dfc|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;f=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+f+v|0;M=f+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0x53380d13|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+d+_|0;x=d+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x650a7354|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+l+k|0;P=l+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0x766a0abb|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;p=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+A|0;E=p+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x81c2c92e|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;y=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+y+e|0;S=y+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0x92722c85|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+b+t|0;D=b+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0xa2bfe8a1|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;m=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+m+r|0;K=m+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0xa81a664b|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+g+f|0;C=g+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0xc24b8b70|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;w=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+w+d|0;M=w+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0xc76c51a3|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;v=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+l|0;x=v+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0xd192e819|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+p|0;P=_+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0xd6990624|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;k=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+k+y|0;E=k+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0xf40e3585|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;A=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+A+b|0;S=A+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0x106aa070|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+e+m|0;D=e+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0x19a4c116|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+t+g|0;K=t+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0x1e376c08|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;r=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+w|0;C=r+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0x2748774c|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;f=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+f+v|0;M=f+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0x34b0bcb5|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+d+_|0;x=d+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x391c0cb3|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+l+k|0;P=l+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0x4ed8aa4a|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;p=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+p+A|0;E=p+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0x5b9cca4f|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;y=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+y+e|0;S=y+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0x682e6ff3|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;b=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+b+t|0;D=b+D+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(K^M&(C^K))+0x748f82ee|0;x=x+D|0;D=D+(S&E^P&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;m=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+m+r|0;K=m+K+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(C^x&(M^C))+0x78a5636f|0;P=P+K|0;K=K+(D&S^E&(D^S))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0;g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+g+f|0;C=g+C+(P>>>6^P>>>11^P>>>25^P<<26^P<<21^P<<7)+(M^P&(x^M))+0x84c87814|0;E=E+C|0;C=C+(K&D^S&(K^D))+(K>>>2^K>>>13^K>>>22^K<<30^K<<19^K<<10)|0;w=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+w+d|0;M=w+M+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(x^E&(P^x))+0x8cc70208|0;S=S+M|0;M=M+(C&K^D&(C^K))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;v=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+l|0;x=v+x+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(P^S&(E^P))+0x90befffa|0;D=D+x|0;x=x+(M&C^K&(M^C))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+p|0;P=_+P+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(E^D&(S^E))+0xa4506ceb|0;K=K+P|0;P=P+(x&M^C&(x^M))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0;k=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+k+y|0;E=k+E+(K>>>6^K>>>11^K>>>25^K<<26^K<<21^K<<7)+(S^K&(D^S))+0xbef9a3f7|0;C=C+E|0;E=E+(P&x^M&(P^x))+(P>>>2^P>>>13^P>>>22^P<<30^P<<19^P<<10)|0;A=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+A+b|0;S=A+S+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(D^C&(K^D))+0xc67178f2|0;M=M+S|0;S=S+(E&P^x&(E^P))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;i=i+S|0;n=n+E|0;a=a+P|0;s=s+x|0;o=o+M|0;c=c+C|0;u=u+K|0;h=h+D|0}function D(e){e=e|0;K(C[e|0]<<24|C[e|1]<<16|C[e|2]<<8|C[e|3],C[e|4]<<24|C[e|5]<<16|C[e|6]<<8|C[e|7],C[e|8]<<24|C[e|9]<<16|C[e|10]<<8|C[e|11],C[e|12]<<24|C[e|13]<<16|C[e|14]<<8|C[e|15],C[e|16]<<24|C[e|17]<<16|C[e|18]<<8|C[e|19],C[e|20]<<24|C[e|21]<<16|C[e|22]<<8|C[e|23],C[e|24]<<24|C[e|25]<<16|C[e|26]<<8|C[e|27],C[e|28]<<24|C[e|29]<<16|C[e|30]<<8|C[e|31],C[e|32]<<24|C[e|33]<<16|C[e|34]<<8|C[e|35],C[e|36]<<24|C[e|37]<<16|C[e|38]<<8|C[e|39],C[e|40]<<24|C[e|41]<<16|C[e|42]<<8|C[e|43],C[e|44]<<24|C[e|45]<<16|C[e|46]<<8|C[e|47],C[e|48]<<24|C[e|49]<<16|C[e|50]<<8|C[e|51],C[e|52]<<24|C[e|53]<<16|C[e|54]<<8|C[e|55],C[e|56]<<24|C[e|57]<<16|C[e|58]<<8|C[e|59],C[e|60]<<24|C[e|61]<<16|C[e|62]<<8|C[e|63])}function R(e){e=e|0;C[e|0]=i>>>24;C[e|1]=i>>>16&255;C[e|2]=i>>>8&255;C[e|3]=i&255;C[e|4]=n>>>24;C[e|5]=n>>>16&255;C[e|6]=n>>>8&255;C[e|7]=n&255;C[e|8]=a>>>24;C[e|9]=a>>>16&255;C[e|10]=a>>>8&255;C[e|11]=a&255;C[e|12]=s>>>24;C[e|13]=s>>>16&255;C[e|14]=s>>>8&255;C[e|15]=s&255;C[e|16]=o>>>24;C[e|17]=o>>>16&255;C[e|18]=o>>>8&255;C[e|19]=o&255;C[e|20]=c>>>24;C[e|21]=c>>>16&255;C[e|22]=c>>>8&255;C[e|23]=c&255;C[e|24]=u>>>24;C[e|25]=u>>>16&255;C[e|26]=u>>>8&255;C[e|27]=u&255;C[e|28]=h>>>24;C[e|29]=h>>>16&255;C[e|30]=h>>>8&255;C[e|31]=h&255}function I(){i=0x6a09e667;n=0xbb67ae85;a=0x3c6ef372;s=0xa54ff53a;o=0x510e527f;c=0x9b05688c;u=0x1f83d9ab;h=0x5be0cd19;f=d=0}function U(e,t,r,l,p,y,b,m,g,w){e=e|0;t=t|0;r=r|0;l=l|0;p=p|0;y=y|0;b=b|0;m=m|0;g=g|0;w=w|0;i=e;n=t;a=r;s=l;o=p;c=y;u=b;h=m;f=g;d=w}function B(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){D(e);e=e+64|0;t=t-64|0;r=r+64|0}f=f+r|0;if(f>>>0<r>>>0)d=d+1|0;return r|0}function T(e,t,r){e=e|0;t=t|0;r=r|0;var i=0,n=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){i=B(e,t)|0;if((i|0)==-1)return-1;e=e+i|0;t=t-i|0}i=i+t|0;f=f+t|0;if(f>>>0<t>>>0)d=d+1|0;C[e|t]=0x80;if((t|0)>=56){for(n=t+1|0;(n|0)<64;n=n+1|0)C[e|n]=0x00;D(e);t=0;C[e|0]=0}for(n=t+1|0;(n|0)<59;n=n+1|0)C[e|n]=0;C[e|56]=d>>>21&255;C[e|57]=d>>>13&255;C[e|58]=d>>>5&255;C[e|59]=d<<3&255|f>>>29;C[e|60]=f>>>21&255;C[e|61]=f>>>13&255;C[e|62]=f>>>5&255;C[e|63]=f<<3&255;D(e);if(~r)R(r);return i|0}function z(){i=l;n=p;a=y;s=b;o=m;c=g;u=w;h=v;f=64;d=0}function q(){i=_;n=k;a=A;s=S;o=E;c=P;u=x;h=M;f=64;d=0}function O(e,t,r,C,D,R,U,B,T,z,q,O,F,N,j,L){e=e|0;t=t|0;r=r|0;C=C|0;D=D|0;R=R|0;U=U|0;B=B|0;T=T|0;z=z|0;q=q|0;O=O|0;F=F|0;N=N|0;j=j|0;L=L|0;I();K(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,C^0x5c5c5c5c,D^0x5c5c5c5c,R^0x5c5c5c5c,U^0x5c5c5c5c,B^0x5c5c5c5c,T^0x5c5c5c5c,z^0x5c5c5c5c,q^0x5c5c5c5c,O^0x5c5c5c5c,F^0x5c5c5c5c,N^0x5c5c5c5c,j^0x5c5c5c5c,L^0x5c5c5c5c);_=i;k=n;A=a;S=s;E=o;P=c;x=u;M=h;I();K(e^0x36363636,t^0x36363636,r^0x36363636,C^0x36363636,D^0x36363636,R^0x36363636,U^0x36363636,B^0x36363636,T^0x36363636,z^0x36363636,q^0x36363636,O^0x36363636,F^0x36363636,N^0x36363636,j^0x36363636,L^0x36363636);l=i;p=n;y=a;b=s;m=o;g=c;w=u;v=h;f=64;d=0}function F(e,t,r){e=e|0;t=t|0;r=r|0;var f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0;if(e&63)return-1;if(~r)if(r&31)return-1;w=T(e,t,-1)|0;f=i,d=n,l=a,p=s,y=o,b=c,m=u,g=h;q();K(f,d,l,p,y,b,m,g,0x80000000,0,0,0,0,0,0,768);if(~r)R(r);return w|0}function N(e,t,r,f,d){e=e|0;t=t|0;r=r|0;f=f|0;d=d|0;var l=0,p=0,y=0,b=0,m=0,g=0,w=0,v=0,_=0,k=0,A=0,S=0,E=0,P=0,x=0,M=0;if(e&63)return-1;if(~d)if(d&31)return-1;C[e+t|0]=r>>>24;C[e+t+1|0]=r>>>16&255;C[e+t+2|0]=r>>>8&255;C[e+t+3|0]=r&255;F(e,t+4|0,-1)|0;l=_=i,p=k=n,y=A=a,b=S=s,m=E=o,g=P=c,w=x=u,v=M=h;f=f-1|0;while((f|0)>0){z();K(_,k,A,S,E,P,x,M,0x80000000,0,0,0,0,0,0,768);_=i,k=n,A=a,S=s,E=o,P=c,x=u,M=h;q();K(_,k,A,S,E,P,x,M,0x80000000,0,0,0,0,0,0,768);_=i,k=n,A=a,S=s,E=o,P=c,x=u,M=h;l=l^i;p=p^n;y=y^a;b=b^s;m=m^o;g=g^c;w=w^u;v=v^h;f=f-1|0}i=l;n=p;a=y;s=b;o=m;c=g;u=w;h=v;if(~d)R(d);return 0}return{reset:I,init:U,process:B,finish:T,hmac_reset:z,hmac_init:O,hmac_finish:F,pbkdf2_generate_block:N}}({Uint8Array},null,this.heap.buffer),this.reset()),{heap:this.heap,asm:this.asm}}release_asm(){void 0!==this.heap&&void 0!==this.asm&&(Ze.push(this.heap),Ye.push(this.asm)),this.heap=void 0,this.asm=void 0}static bytes(e){return(new Xe).process(e).finish().result}}Xe.NAME="sha256";var Qe=Je;function Je(e,t){if(!e)throw Error(t||"Assertion failed")}Je.equal=function(e,t,r){if(e!=t)throw Error(r||"Assertion failed: "+e+" != "+t)};var et=void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function tt(e,t){return e(t={exports:{}},t.exports),t.exports}var rt=tt((function(e){e.exports="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}));function it(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function nt(e){return 1===e.length?"0"+e:e}function at(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}var st={inherits:rt,toArray:function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),i=0;i<e.length;i+=2)r.push(parseInt(e[i]+e[i+1],16))}else for(var i=0;i<e.length;i++){var n=e.charCodeAt(i),a=n>>8,s=255&n;a?r.push(a,s):r.push(s)}else for(i=0;i<e.length;i++)r[i]=0|e[i];return r},toHex:function(e){for(var t="",r=0;r<e.length;r++)t+=nt(e[r].toString(16));return t},htonl:it,toHex32:function(e,t){for(var r="",i=0;i<e.length;i++){var n=e[i];"little"===t&&(n=it(n)),r+=at(n.toString(16))}return r},zero2:nt,zero8:at,join32:function(e,t,r,i){var n=r-t;Qe(n%4==0);for(var a=Array(n/4),s=0,o=t;s<a.length;s++,o+=4){var c;c="big"===i?e[o]<<24|e[o+1]<<16|e[o+2]<<8|e[o+3]:e[o+3]<<24|e[o+2]<<16|e[o+1]<<8|e[o],a[s]=c>>>0}return a},split32:function(e,t){for(var r=Array(4*e.length),i=0,n=0;i<e.length;i++,n+=4){var a=e[i];"big"===t?(r[n]=a>>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r},rotr32:function(e,t){return e>>>t|e<<32-t},rotl32:function(e,t){return e<<t|e>>>32-t},sum32:function(e,t){return e+t>>>0},sum32_3:function(e,t,r){return e+t+r>>>0},sum32_4:function(e,t,r,i){return e+t+r+i>>>0},sum32_5:function(e,t,r,i,n){return e+t+r+i+n>>>0},sum64:function(e,t,r,i){var n=e[t],a=i+e[t+1]>>>0,s=(a<i?1:0)+r+n;e[t]=s>>>0,e[t+1]=a},sum64_hi:function(e,t,r,i){return(t+i>>>0<t?1:0)+e+r>>>0},sum64_lo:function(e,t,r,i){return t+i>>>0},sum64_4_hi:function(e,t,r,i,n,a,s,o){var c=0,u=t;return c+=(u=u+i>>>0)<t?1:0,c+=(u=u+a>>>0)<a?1:0,e+r+n+s+(c+=(u=u+o>>>0)<o?1:0)>>>0},sum64_4_lo:function(e,t,r,i,n,a,s,o){return t+i+a+o>>>0},sum64_5_hi:function(e,t,r,i,n,a,s,o,c,u){var h=0,f=t;return h+=(f=f+i>>>0)<t?1:0,h+=(f=f+a>>>0)<a?1:0,h+=(f=f+o>>>0)<o?1:0,e+r+n+s+c+(h+=(f=f+u>>>0)<u?1:0)>>>0},sum64_5_lo:function(e,t,r,i,n,a,s,o,c,u){return t+i+a+o+u>>>0},rotr64_hi:function(e,t,r){return(t<<32-r|e>>>r)>>>0},rotr64_lo:function(e,t,r){return(e<<32-r|t>>>r)>>>0},shr64_hi:function(e,t,r){return e>>>r},shr64_lo:function(e,t,r){return(e<<32-r|t>>>r)>>>0}};function ot(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}var ct=ot;ot.prototype.update=function(e,t){if(e=st.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=st.join32(e,0,e.length-r,this.endian);for(var i=0;i<e.length;i+=this._delta32)this._update(e,i,i+this._delta32)}return this},ot.prototype.digest=function(e){return this.update(this._pad()),Qe(null===this.pending),this._digest(e)},ot.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,r=t-(e+this.padLength)%t,i=Array(r+this.padLength);i[0]=128;for(var n=1;n<r;n++)i[n]=0;if(e<<=3,"big"===this.endian){for(var a=8;a<this.padLength;a++)i[n++]=0;i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=e>>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a<this.padLength;a++)i[n++]=0;return i};var ut={BlockHash:ct},ht=st.rotr32;function ft(e,t,r){return e&t^~e&r}function dt(e,t,r){return e&t^e&r^t&r}function lt(e,t,r){return e^t^r}var pt={ft_1:function(e,t,r,i){return 0===e?ft(t,r,i):1===e||3===e?lt(t,r,i):2===e?dt(t,r,i):void 0},ch32:ft,maj32:dt,p32:lt,s0_256:function(e){return ht(e,2)^ht(e,13)^ht(e,22)},s1_256:function(e){return ht(e,6)^ht(e,11)^ht(e,25)},g0_256:function(e){return ht(e,7)^ht(e,18)^e>>>3},g1_256:function(e){return ht(e,17)^ht(e,19)^e>>>10}},yt=st.sum32,bt=st.sum32_4,mt=st.sum32_5,gt=pt.ch32,wt=pt.maj32,vt=pt.s0_256,_t=pt.s1_256,kt=pt.g0_256,At=pt.g1_256,St=ut.BlockHash,Et=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function Pt(){if(!(this instanceof Pt))return new Pt;St.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=Et,this.W=Array(64)}st.inherits(Pt,St);var xt=Pt;function Mt(){if(!(this instanceof Mt))return new Mt;xt.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}Pt.blockSize=512,Pt.outSize=256,Pt.hmacStrength=192,Pt.padLength=64,Pt.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i<r.length;i++)r[i]=bt(At(r[i-2]),r[i-7],kt(r[i-15]),r[i-16]);var n=this.h[0],a=this.h[1],s=this.h[2],o=this.h[3],c=this.h[4],u=this.h[5],h=this.h[6],f=this.h[7];for(Qe(this.k.length===r.length),i=0;i<r.length;i++){var d=mt(f,_t(c),gt(c,u,h),this.k[i],r[i]),l=yt(vt(n),wt(n,a,s));f=h,h=u,u=c,c=yt(o,d),o=s,s=a,a=n,n=yt(d,l)}this.h[0]=yt(this.h[0],n),this.h[1]=yt(this.h[1],a),this.h[2]=yt(this.h[2],s),this.h[3]=yt(this.h[3],o),this.h[4]=yt(this.h[4],c),this.h[5]=yt(this.h[5],u),this.h[6]=yt(this.h[6],h),this.h[7]=yt(this.h[7],f)},Pt.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h,"big"):st.split32(this.h,"big")},st.inherits(Mt,xt);var Ct=Mt;Mt.blockSize=512,Mt.outSize=224,Mt.hmacStrength=192,Mt.padLength=64,Mt.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h.slice(0,7),"big"):st.split32(this.h.slice(0,7),"big")};var Kt=st.rotr64_hi,Dt=st.rotr64_lo,Rt=st.shr64_hi,It=st.shr64_lo,Ut=st.sum64,Bt=st.sum64_hi,Tt=st.sum64_lo,zt=st.sum64_4_hi,qt=st.sum64_4_lo,Ot=st.sum64_5_hi,Ft=st.sum64_5_lo,Nt=ut.BlockHash,jt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Lt(){if(!(this instanceof Lt))return new Lt;Nt.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=jt,this.W=Array(160)}st.inherits(Lt,Nt);var Wt=Lt;function Ht(e,t,r,i,n){var a=e&r^~e&n;return a<0&&(a+=4294967296),a}function Gt(e,t,r,i,n,a){var s=t&i^~t&a;return s<0&&(s+=4294967296),s}function Vt(e,t,r,i,n){var a=e&r^e&n^r&n;return a<0&&(a+=4294967296),a}function $t(e,t,r,i,n,a){var s=t&i^t&a^i&a;return s<0&&(s+=4294967296),s}function Zt(e,t){var r=Kt(e,t,28)^Kt(t,e,2)^Kt(t,e,7);return r<0&&(r+=4294967296),r}function Yt(e,t){var r=Dt(e,t,28)^Dt(t,e,2)^Dt(t,e,7);return r<0&&(r+=4294967296),r}function Xt(e,t){var r=Kt(e,t,14)^Kt(e,t,18)^Kt(t,e,9);return r<0&&(r+=4294967296),r}function Qt(e,t){var r=Dt(e,t,14)^Dt(e,t,18)^Dt(t,e,9);return r<0&&(r+=4294967296),r}function Jt(e,t){var r=Kt(e,t,1)^Kt(e,t,8)^Rt(e,t,7);return r<0&&(r+=4294967296),r}function er(e,t){var r=Dt(e,t,1)^Dt(e,t,8)^It(e,t,7);return r<0&&(r+=4294967296),r}function tr(e,t){var r=Kt(e,t,19)^Kt(t,e,29)^Rt(e,t,6);return r<0&&(r+=4294967296),r}function rr(e,t){var r=Dt(e,t,19)^Dt(t,e,29)^It(e,t,6);return r<0&&(r+=4294967296),r}function ir(){if(!(this instanceof ir))return new ir;Wt.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}Lt.blockSize=1024,Lt.outSize=512,Lt.hmacStrength=192,Lt.padLength=128,Lt.prototype._prepareBlock=function(e,t){for(var r=this.W,i=0;i<32;i++)r[i]=e[t+i];for(;i<r.length;i+=2){var n=tr(r[i-4],r[i-3]),a=rr(r[i-4],r[i-3]),s=r[i-14],o=r[i-13],c=Jt(r[i-30],r[i-29]),u=er(r[i-30],r[i-29]),h=r[i-32],f=r[i-31];r[i]=zt(n,a,s,o,c,u,h,f),r[i+1]=qt(n,a,s,o,c,u,h,f)}},Lt.prototype._update=function(e,t){this._prepareBlock(e,t);var r=this.W,i=this.h[0],n=this.h[1],a=this.h[2],s=this.h[3],o=this.h[4],c=this.h[5],u=this.h[6],h=this.h[7],f=this.h[8],d=this.h[9],l=this.h[10],p=this.h[11],y=this.h[12],b=this.h[13],m=this.h[14],g=this.h[15];Qe(this.k.length===r.length);for(var w=0;w<r.length;w+=2){var v=m,_=g,k=Xt(f,d),A=Qt(f,d),S=Ht(f,d,l,p,y),E=Gt(f,d,l,p,y,b),P=this.k[w],x=this.k[w+1],M=r[w],C=r[w+1],K=Ot(v,_,k,A,S,E,P,x,M,C),D=Ft(v,_,k,A,S,E,P,x,M,C);v=Zt(i,n),_=Yt(i,n),k=Vt(i,n,a,s,o),A=$t(i,n,a,s,o,c);var R=Bt(v,_,k,A),I=Tt(v,_,k,A);m=y,g=b,y=l,b=p,l=f,p=d,f=Bt(u,h,K,D),d=Tt(h,h,K,D),u=o,h=c,o=a,c=s,a=i,s=n,i=Bt(K,D,R,I),n=Tt(K,D,R,I)}Ut(this.h,0,i,n),Ut(this.h,2,a,s),Ut(this.h,4,o,c),Ut(this.h,6,u,h),Ut(this.h,8,f,d),Ut(this.h,10,l,p),Ut(this.h,12,y,b),Ut(this.h,14,m,g)},Lt.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h,"big"):st.split32(this.h,"big")},st.inherits(ir,Wt);var nr=ir;ir.blockSize=1024,ir.outSize=384,ir.hmacStrength=192,ir.padLength=128,ir.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h.slice(0,12),"big"):st.split32(this.h.slice(0,12),"big")};var ar=st.rotl32,sr=st.sum32,or=st.sum32_3,cr=st.sum32_4,ur=ut.BlockHash;function hr(){if(!(this instanceof hr))return new hr;ur.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}st.inherits(hr,ur);var fr=hr;function dr(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function lr(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function pr(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}hr.blockSize=512,hr.outSize=160,hr.hmacStrength=192,hr.padLength=64,hr.prototype._update=function(e,t){for(var r=this.h[0],i=this.h[1],n=this.h[2],a=this.h[3],s=this.h[4],o=r,c=i,u=n,h=a,f=s,d=0;d<80;d++){var l=sr(ar(cr(r,dr(d,i,n,a),e[yr[d]+t],lr(d)),mr[d]),s);r=s,s=a,a=ar(n,10),n=i,i=l,l=sr(ar(cr(o,dr(79-d,c,u,h),e[br[d]+t],pr(d)),gr[d]),f),o=f,f=h,h=ar(u,10),u=c,c=l}l=or(this.h[1],n,h),this.h[1]=or(this.h[2],a,f),this.h[2]=or(this.h[3],s,o),this.h[3]=or(this.h[4],r,c),this.h[4]=or(this.h[0],i,u),this.h[0]=l},hr.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h,"little"):st.split32(this.h,"little")};var yr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],br=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],mr=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],gr=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],wr={ripemd160:fr};function vr(e,t){let r=e[0],i=e[1],n=e[2],a=e[3];r=kr(r,i,n,a,t[0],7,-680876936),a=kr(a,r,i,n,t[1],12,-389564586),n=kr(n,a,r,i,t[2],17,606105819),i=kr(i,n,a,r,t[3],22,-1044525330),r=kr(r,i,n,a,t[4],7,-176418897),a=kr(a,r,i,n,t[5],12,1200080426),n=kr(n,a,r,i,t[6],17,-1473231341),i=kr(i,n,a,r,t[7],22,-45705983),r=kr(r,i,n,a,t[8],7,1770035416),a=kr(a,r,i,n,t[9],12,-1958414417),n=kr(n,a,r,i,t[10],17,-42063),i=kr(i,n,a,r,t[11],22,-1990404162),r=kr(r,i,n,a,t[12],7,1804603682),a=kr(a,r,i,n,t[13],12,-40341101),n=kr(n,a,r,i,t[14],17,-1502002290),i=kr(i,n,a,r,t[15],22,1236535329),r=Ar(r,i,n,a,t[1],5,-165796510),a=Ar(a,r,i,n,t[6],9,-1069501632),n=Ar(n,a,r,i,t[11],14,643717713),i=Ar(i,n,a,r,t[0],20,-373897302),r=Ar(r,i,n,a,t[5],5,-701558691),a=Ar(a,r,i,n,t[10],9,38016083),n=Ar(n,a,r,i,t[15],14,-660478335),i=Ar(i,n,a,r,t[4],20,-405537848),r=Ar(r,i,n,a,t[9],5,568446438),a=Ar(a,r,i,n,t[14],9,-1019803690),n=Ar(n,a,r,i,t[3],14,-187363961),i=Ar(i,n,a,r,t[8],20,1163531501),r=Ar(r,i,n,a,t[13],5,-1444681467),a=Ar(a,r,i,n,t[2],9,-51403784),n=Ar(n,a,r,i,t[7],14,1735328473),i=Ar(i,n,a,r,t[12],20,-1926607734),r=Sr(r,i,n,a,t[5],4,-378558),a=Sr(a,r,i,n,t[8],11,-2022574463),n=Sr(n,a,r,i,t[11],16,1839030562),i=Sr(i,n,a,r,t[14],23,-35309556),r=Sr(r,i,n,a,t[1],4,-1530992060),a=Sr(a,r,i,n,t[4],11,1272893353),n=Sr(n,a,r,i,t[7],16,-155497632),i=Sr(i,n,a,r,t[10],23,-1094730640),r=Sr(r,i,n,a,t[13],4,681279174),a=Sr(a,r,i,n,t[0],11,-358537222),n=Sr(n,a,r,i,t[3],16,-722521979),i=Sr(i,n,a,r,t[6],23,76029189),r=Sr(r,i,n,a,t[9],4,-640364487),a=Sr(a,r,i,n,t[12],11,-421815835),n=Sr(n,a,r,i,t[15],16,530742520),i=Sr(i,n,a,r,t[2],23,-995338651),r=Er(r,i,n,a,t[0],6,-198630844),a=Er(a,r,i,n,t[7],10,1126891415),n=Er(n,a,r,i,t[14],15,-1416354905),i=Er(i,n,a,r,t[5],21,-57434055),r=Er(r,i,n,a,t[12],6,1700485571),a=Er(a,r,i,n,t[3],10,-1894986606),n=Er(n,a,r,i,t[10],15,-1051523),i=Er(i,n,a,r,t[1],21,-2054922799),r=Er(r,i,n,a,t[8],6,1873313359),a=Er(a,r,i,n,t[15],10,-30611744),n=Er(n,a,r,i,t[6],15,-1560198380),i=Er(i,n,a,r,t[13],21,1309151649),r=Er(r,i,n,a,t[4],6,-145523070),a=Er(a,r,i,n,t[11],10,-1120210379),n=Er(n,a,r,i,t[2],15,718787259),i=Er(i,n,a,r,t[9],21,-343485551),e[0]=Cr(r,e[0]),e[1]=Cr(i,e[1]),e[2]=Cr(n,e[2]),e[3]=Cr(a,e[3])}function _r(e,t,r,i,n,a){return t=Cr(Cr(t,e),Cr(i,a)),Cr(t<<n|t>>>32-n,r)}function kr(e,t,r,i,n,a,s){return _r(t&r|~t&i,e,t,n,a,s)}function Ar(e,t,r,i,n,a,s){return _r(t&i|r&~i,e,t,n,a,s)}function Sr(e,t,r,i,n,a,s){return _r(t^r^i,e,t,n,a,s)}function Er(e,t,r,i,n,a,s){return _r(r^(t|~i),e,t,n,a,s)}function Pr(e){const t=[];let r;for(r=0;r<64;r+=4)t[r>>2]=e.charCodeAt(r)+(e.charCodeAt(r+1)<<8)+(e.charCodeAt(r+2)<<16)+(e.charCodeAt(r+3)<<24);return t}const xr="0123456789abcdef".split("");function Mr(e){let t="",r=0;for(;r<4;r++)t+=xr[e>>8*r+4&15]+xr[e>>8*r&15];return t}function Cr(e,t){return e+t&4294967295}const Kr=V.getWebCrypto(),Dr=V.getNodeCrypto();function Rr(e){return async function(t){const r=Dr.createHash(e);return B(t,(e=>{r.update(e)}),(()=>new Uint8Array(r.digest())))}}function Ir(e,t){return async function(r,i=ie){if(s(r)&&(r=await j(r)),!V.isStream(r)&&Kr&&t&&r.length>=i.minBytesForWebCrypto)return new Uint8Array(await Kr.digest(t,r));const n=e();return B(r,(e=>{n.update(e)}),(()=>new Uint8Array(n.digest())))}}function Ur(e,t){return async function(r,i=ie){if(s(r)&&(r=await j(r)),V.isStream(r)){const t=new e;return B(r,(e=>{t.process(e)}),(()=>t.finish().result))}return Kr&&t&&r.length>=i.minBytesForWebCrypto?new Uint8Array(await Kr.digest(t,r)):e.bytes(r)}}let Br;Br=Dr?{md5:Rr("md5"),sha1:Rr("sha1"),sha224:Rr("sha224"),sha256:Rr("sha256"),sha384:Rr("sha384"),sha512:Rr("sha512"),ripemd:Rr("ripemd160")}:{md5:async function(e){const t=function(e){const t=e.length,r=[1732584193,-271733879,-1732584194,271733878];let i;for(i=64;i<=e.length;i+=64)vr(r,Pr(e.substring(i-64,i)));e=e.substring(i-64);const n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<e.length;i++)n[i>>2]|=e.charCodeAt(i)<<(i%4<<3);if(n[i>>2]|=128<<(i%4<<3),i>55)for(vr(r,n),i=0;i<16;i++)n[i]=0;return n[14]=8*t,vr(r,n),r}(V.uint8ArrayToString(e));return V.hexToUint8Array(function(e){for(let t=0;t<e.length;t++)e[t]=Mr(e[t]);return e.join("")}(t))},sha1:Ur($e,"SHA-1"),sha224:Ir(Ct),sha256:Ur(Xe,"SHA-256"),sha384:Ir(nr,"SHA-384"),sha512:Ir(Wt,"SHA-512"),ripemd:Ir(fr)};var Tr={md5:Br.md5,sha1:Br.sha1,sha224:Br.sha224,sha256:Br.sha256,sha384:Br.sha384,sha512:Br.sha512,ripemd:Br.ripemd,digest:function(e,t){switch(e){case re.hash.md5:return this.md5(t);case re.hash.sha1:return this.sha1(t);case re.hash.ripemd:return this.ripemd(t);case re.hash.sha256:return this.sha256(t);case re.hash.sha384:return this.sha384(t);case re.hash.sha512:return this.sha512(t);case re.hash.sha224:return this.sha224(t);default:throw Error("Invalid hash function.")}},getHashByteLength:function(e){switch(e){case re.hash.md5:return 16;case re.hash.sha1:case re.hash.ripemd:return 20;case re.hash.sha256:return 32;case re.hash.sha384:return 48;case re.hash.sha512:return 64;case re.hash.sha224:return 28;default:throw Error("Invalid hash algorithm.")}}};class zr{static encrypt(e,t,r){return new zr(t,r).encrypt(e)}static decrypt(e,t,r){return new zr(t,r).decrypt(e)}constructor(e,t,r){this.aes=r||new Se(e,t,!0,"CFB"),delete this.aes.padding}encrypt(e){return ge(this.aes.AES_Encrypt_process(e),this.aes.AES_Encrypt_finish())}decrypt(e){return ge(this.aes.AES_Decrypt_process(e),this.aes.AES_Decrypt_finish())}}const qr=V.getWebCrypto(),Or=V.getNodeCrypto(),Fr=Or?Or.getCiphers():[],Nr={idea:Fr.includes("idea-cfb")?"idea-cfb":void 0,tripledes:Fr.includes("des-ede3-cfb")?"des-ede3-cfb":void 0,cast5:Fr.includes("cast5-cfb")?"cast5-cfb":void 0,blowfish:Fr.includes("bf-cfb")?"bf-cfb":void 0,aes128:Fr.includes("aes-128-cfb")?"aes-128-cfb":void 0,aes192:Fr.includes("aes-192-cfb")?"aes-192-cfb":void 0,aes256:Fr.includes("aes-256-cfb")?"aes-256-cfb":void 0};var jr=/*#__PURE__*/Object.freeze({__proto__:null,encrypt:async function(e,t,r,i,n){const a=re.read(re.symmetric,e);if(V.getNodeCrypto()&&Nr[a])return function(e,t,r,i){const n=re.read(re.symmetric,e),a=new Or.createCipheriv(Nr[n],t,i);return B(r,(e=>new Uint8Array(a.update(e))))}(e,t,r,i);if("aes"===a.substr(0,3))return function(e,t,r,i,n){if(V.getWebCrypto()&&24!==t.length&&!V.isStream(r)&&r.length>=3e3*n.minBytesForWebCrypto)return async function(e,t,r,i){const n="AES-CBC",a=await qr.importKey("raw",t,{name:n},!1,["encrypt"]),{blockSize:s}=crypto.getCipher(e),o=V.concatUint8Array([new Uint8Array(s),r]),c=new Uint8Array(await qr.encrypt({name:n,iv:i},a,o)).subarray(0,r.length);return function(e,t){for(let r=0;r<e.length;r++)e[r]=e[r]^t[r]}(c,r),c}(e,t,r,i);const a=new zr(t,i);return B(r,(e=>a.aes.AES_Encrypt_process(e)),(()=>a.aes.AES_Encrypt_finish()))}(e,t,r,i,n);const s=new Le[a](t),o=s.blockSize,c=i.slice();let u=new Uint8Array;const h=e=>{e&&(u=V.concatUint8Array([u,e]));const t=new Uint8Array(u.length);let r,i=0;for(;e?u.length>=o:u.length;){const e=s.encrypt(c);for(r=0;r<o;r++)c[r]=u[r]^e[r],t[i++]=c[r];u=u.subarray(o)}return t.subarray(0,i)};return B(r,h,h)},decrypt:async function(e,t,r,i){const n=re.read(re.symmetric,e);if(V.getNodeCrypto()&&Nr[n])return function(e,t,r,i){const n=re.read(re.symmetric,e),a=new Or.createDecipheriv(Nr[n],t,i);return B(r,(e=>new Uint8Array(a.update(e))))}(e,t,r,i);if("aes"===n.substr(0,3))return function(e,t,r,i){if(V.isStream(r)){const e=new zr(t,i);return B(r,(t=>e.aes.AES_Decrypt_process(t)),(()=>e.aes.AES_Decrypt_finish()))}return zr.decrypt(r,t,i)}(0,t,r,i);const a=new Le[n](t),s=a.blockSize;let o=i,c=new Uint8Array;const u=e=>{e&&(c=V.concatUint8Array([c,e]));const t=new Uint8Array(c.length);let r,i=0;for(;e?c.length>=s:c.length;){const e=a.encrypt(o);for(o=c,r=0;r<s;r++)t[i++]=o[r]^e[r];c=c.subarray(s)}return t.subarray(0,i)};return B(r,u,u)}});class Lr{static encrypt(e,t,r){return new Lr(t,r).encrypt(e)}static decrypt(e,t,r){return new Lr(t,r).encrypt(e)}constructor(e,t,r){this.aes=r||new Se(e,void 0,!1,"CTR"),delete this.aes.padding,this.AES_CTR_set_options(t)}encrypt(e){return ge(this.aes.AES_Encrypt_process(e),this.aes.AES_Encrypt_finish())}decrypt(e){return ge(this.aes.AES_Encrypt_process(e),this.aes.AES_Encrypt_finish())}AES_CTR_set_options(e,t,r){let{asm:i}=this.aes.acquire_asm();if(void 0!==r){if(r<8||r>48)throw new ve("illegal counter size");let e=Math.pow(2,r)-1;i.set_mask(0,0,e/4294967296|0,0|e)}else r=48,i.set_mask(0,0,65535,4294967295);if(void 0===e)throw Error("nonce is required");{let t=e.length;if(!t||t>16)throw new ve("illegal nonce size");let r=new DataView(new ArrayBuffer(16));new Uint8Array(r.buffer).set(e),i.set_nonce(r.getUint32(0),r.getUint32(4),r.getUint32(8),r.getUint32(12))}if(void 0!==t){if(t<0||t>=Math.pow(2,r))throw new ve("illegal counter value");i.set_counter(0,0,t/4294967296|0,0|t)}}}class Wr{static encrypt(e,t,r=!0,i){return new Wr(t,i,r).encrypt(e)}static decrypt(e,t,r=!0,i){return new Wr(t,i,r).decrypt(e)}constructor(e,t,r=!0,i){this.aes=i||new Se(e,t,r,"CBC")}encrypt(e){return ge(this.aes.AES_Encrypt_process(e),this.aes.AES_Encrypt_finish())}decrypt(e){return ge(this.aes.AES_Decrypt_process(e),this.aes.AES_Decrypt_finish())}}const Hr=V.getWebCrypto(),Gr=V.getNodeCrypto();function Vr(e,t){const r=e.length-16;for(let i=0;i<16;i++)e[i+r]^=t[i];return e}const $r=new Uint8Array(16);async function Zr(e){const t=await async function(e){if(V.getWebCrypto()&&24!==e.length)return e=await Hr.importKey("raw",e,{name:"AES-CBC",length:8*e.length},!1,["encrypt"]),async function(t){const r=await Hr.encrypt({name:"AES-CBC",iv:$r,length:128},e,t);return new Uint8Array(r).subarray(0,r.byteLength-16)};if(V.getNodeCrypto())return async function(t){const r=new Gr.createCipheriv("aes-"+8*e.length+"-cbc",e,$r).update(t);return new Uint8Array(r)};return async function(t){return Wr.encrypt(t,e,!1,$r)}}(e),r=V.double(await t($r)),i=V.double(r);return async function(e){return(await t(function(e,t,r){if(e.length&&e.length%16==0)return Vr(e,t);const i=new Uint8Array(e.length+(16-e.length%16));return i.set(e),i[e.length]=128,Vr(i,r)}(e,r,i))).subarray(-16)}}const Yr=V.getWebCrypto(),Xr=V.getNodeCrypto(),Qr=V.getNodeBuffer(),Jr=new Uint8Array(16),ei=new Uint8Array(16);ei[15]=1;const ti=new Uint8Array(16);async function ri(e){const t=await Zr(e);return function(e,r){return t(V.concatUint8Array([e,r]))}}async function ii(e){return V.getWebCrypto()&&24!==e.length?(e=await Yr.importKey("raw",e,{name:"AES-CTR",length:8*e.length},!1,["encrypt"]),async function(t,r){const i=await Yr.encrypt({name:"AES-CTR",counter:r,length:128},e,t);return new Uint8Array(i)}):V.getNodeCrypto()?async function(t,r){const i=new Xr.createCipheriv("aes-"+8*e.length+"-ctr",e,r),n=Qr.concat([i.update(t),i.final()]);return new Uint8Array(n)}:async function(t,r){return Lr.encrypt(t,e,r)}}async function ni(e,t){if(e!==re.symmetric.aes128&&e!==re.symmetric.aes192&&e!==re.symmetric.aes256)throw Error("EAX mode supports only AES cipher");const[r,i]=await Promise.all([ri(t),ii(t)]);return{encrypt:async function(e,t,n){const[a,s]=await Promise.all([r(Jr,t),r(ei,n)]),o=await i(e,a),c=await r(ti,o);for(let e=0;e<16;e++)c[e]^=s[e]^a[e];return V.concatUint8Array([o,c])},decrypt:async function(e,t,n){if(e.length<16)throw Error("Invalid EAX ciphertext");const a=e.subarray(0,-16),s=e.subarray(-16),[o,c,u]=await Promise.all([r(Jr,t),r(ei,n),r(ti,a)]),h=u;for(let e=0;e<16;e++)h[e]^=c[e]^o[e];if(!V.equalsUint8Array(s,h))throw Error("Authentication tag mismatch");return await i(a,o)}}}ti[15]=2,ni.getNonce=function(e,t){const r=e.slice();for(let e=0;e<t.length;e++)r[8+e]^=t[e];return r},ni.blockLength=16,ni.ivLength=16,ni.tagLength=16;function ai(e){let t=0;for(let r=1;0==(e&r);r<<=1)t++;return t}function si(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r];return e}function oi(e,t){return si(e.slice(),t)}const ci=new Uint8Array(16),ui=new Uint8Array([1]);async function hi(e,t){let r,i,n,a=0;function s(e,t,i,s){const o=t.length/16|0;!function(e,t){const r=V.nbits(Math.max(e.length,t.length)/16|0)-1;for(let e=a+1;e<=r;e++)n[e]=V.double(n[e-1]);a=r}(t,s);const c=V.concatUint8Array([ci.subarray(0,15-i.length),ui,i]),u=63&c[15];c[15]&=192;const h=r(c),f=V.concatUint8Array([h,oi(h.subarray(0,8),h.subarray(1,9))]),d=V.shiftRight(f.subarray(0+(u>>3),17+(u>>3)),8-(7&u)).subarray(1),l=new Uint8Array(16),p=new Uint8Array(t.length+16);let y,b=0;for(y=0;y<o;y++)si(d,n[ai(y+1)]),p.set(si(e(oi(d,t)),d),b),si(l,e===r?t:p.subarray(b)),t=t.subarray(16),b+=16;if(t.length){si(d,n.x);const i=r(d);p.set(oi(t,i),b);const a=new Uint8Array(16);a.set(e===r?t:p.subarray(b,-16),0),a[t.length]=128,si(l,a),b+=t.length}const m=si(r(si(si(l,d),n.$)),function(e){if(!e.length)return ci;const t=e.length/16|0,i=new Uint8Array(16),a=new Uint8Array(16);for(let s=0;s<t;s++)si(i,n[ai(s+1)]),si(a,r(oi(i,e))),e=e.subarray(16);if(e.length){si(i,n.x);const t=new Uint8Array(16);t.set(e,0),t[e.length]=128,si(t,i),si(a,r(t))}return a}(s));return p.set(m,b),p}return function(e,t){const a=re.read(re.symmetric,e),s=new Le[a](t);r=s.encrypt.bind(s),i=s.decrypt.bind(s);const o=r(ci),c=V.double(o);n=[],n[0]=V.double(c),n.x=o,n.$=c}(e,t),{encrypt:async function(e,t,i){return s(r,e,t,i)},decrypt:async function(e,t,r){if(e.length<16)throw Error("Invalid OCB ciphertext");const n=e.subarray(-16);e=e.subarray(0,-16);const a=s(i,e,t,r);if(V.equalsUint8Array(n,a.subarray(-16)))return a.subarray(0,-16);throw Error("Authentication tag mismatch")}}}hi.getNonce=function(e,t){const r=e.slice();for(let e=0;e<t.length;e++)r[7+e]^=t[e];return r},hi.blockLength=16,hi.ivLength=15,hi.tagLength=16;class fi{constructor(e,t,r,i=16,n){this.tagSize=i,this.gamma0=0,this.counter=1,this.aes=n||new Se(e,void 0,!1,"CTR");let{asm:a,heap:s}=this.aes.acquire_asm();if(a.gcm_init(),this.tagSize<4||this.tagSize>16)throw new ve("illegal tagSize value");const o=t.length||0,c=new Uint8Array(16);12!==o?(this._gcm_mac_process(t),s[0]=0,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=0,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=0,s[11]=o>>>29,s[12]=o>>>21&255,s[13]=o>>>13&255,s[14]=o>>>5&255,s[15]=o<<3&255,a.mac(pe.MAC.GCM,pe.HEAP_DATA,16),a.get_iv(pe.HEAP_DATA),a.set_iv(0,0,0,0),c.set(s.subarray(0,16))):(c.set(t),c[15]=1);const u=new DataView(c.buffer);if(this.gamma0=u.getUint32(12),a.set_nonce(u.getUint32(0),u.getUint32(4),u.getUint32(8),0),a.set_mask(0,0,0,4294967295),void 0!==r){if(r.length>68719476704)throw new ve("illegal adata length");r.length?(this.adata=r,this._gcm_mac_process(r)):this.adata=void 0}else this.adata=void 0;if(this.counter<1||this.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");a.set_counter(0,0,0,this.gamma0+this.counter|0)}static encrypt(e,t,r,i,n){return new fi(t,r,i,n).encrypt(e)}static decrypt(e,t,r,i,n){return new fi(t,r,i,n).decrypt(e)}encrypt(e){return this.AES_GCM_encrypt(e)}decrypt(e){return this.AES_GCM_decrypt(e)}AES_GCM_Encrypt_process(e){let t=0,r=e.length||0,{asm:i,heap:n}=this.aes.acquire_asm(),a=this.counter,s=this.aes.pos,o=this.aes.len,c=0,u=o+r&-16,h=0;if((a-1<<4)+o+r>68719476704)throw new RangeError("counter overflow");const f=new Uint8Array(u);for(;r>0;)h=me(n,s+o,e,t,r),o+=h,t+=h,r-=h,h=i.cipher(pe.ENC.CTR,pe.HEAP_DATA+s,o),h=i.mac(pe.MAC.GCM,pe.HEAP_DATA+s,h),h&&f.set(n.subarray(s,s+h),c),a+=h>>>4,c+=h,h<o?(s+=h,o-=h):(s=0,o=0);return this.counter=a,this.aes.pos=s,this.aes.len=o,f}AES_GCM_Encrypt_finish(){let{asm:e,heap:t}=this.aes.acquire_asm(),r=this.counter,i=this.tagSize,n=this.adata,a=this.aes.pos,s=this.aes.len;const o=new Uint8Array(s+i);e.cipher(pe.ENC.CTR,pe.HEAP_DATA+a,s+15&-16),s&&o.set(t.subarray(a,a+s));let c=s;for(;15&c;c++)t[a+c]=0;e.mac(pe.MAC.GCM,pe.HEAP_DATA+a,c);const u=void 0!==n?n.length:0,h=(r-1<<4)+s;return t[0]=0,t[1]=0,t[2]=0,t[3]=u>>>29,t[4]=u>>>21,t[5]=u>>>13&255,t[6]=u>>>5&255,t[7]=u<<3&255,t[8]=t[9]=t[10]=0,t[11]=h>>>29,t[12]=h>>>21&255,t[13]=h>>>13&255,t[14]=h>>>5&255,t[15]=h<<3&255,e.mac(pe.MAC.GCM,pe.HEAP_DATA,16),e.get_iv(pe.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(pe.ENC.CTR,pe.HEAP_DATA,16),o.set(t.subarray(0,i),s),this.counter=1,this.aes.pos=0,this.aes.len=0,o}AES_GCM_Decrypt_process(e){let t=0,r=e.length||0,{asm:i,heap:n}=this.aes.acquire_asm(),a=this.counter,s=this.tagSize,o=this.aes.pos,c=this.aes.len,u=0,h=c+r>s?c+r-s&-16:0,f=c+r-h,d=0;if((a-1<<4)+c+r>68719476704)throw new RangeError("counter overflow");const l=new Uint8Array(h);for(;r>f;)d=me(n,o+c,e,t,r-f),c+=d,t+=d,r-=d,d=i.mac(pe.MAC.GCM,pe.HEAP_DATA+o,d),d=i.cipher(pe.DEC.CTR,pe.HEAP_DATA+o,d),d&&l.set(n.subarray(o,o+d),u),a+=d>>>4,u+=d,o=0,c=0;return r>0&&(c+=me(n,0,e,t,r)),this.counter=a,this.aes.pos=o,this.aes.len=c,l}AES_GCM_Decrypt_finish(){let{asm:e,heap:t}=this.aes.acquire_asm(),r=this.tagSize,i=this.adata,n=this.counter,a=this.aes.pos,s=this.aes.len,o=s-r;if(s<r)throw new we("authentication tag not found");const c=new Uint8Array(o),u=new Uint8Array(t.subarray(a+o,a+s));let h=o;for(;15&h;h++)t[a+h]=0;e.mac(pe.MAC.GCM,pe.HEAP_DATA+a,h),e.cipher(pe.DEC.CTR,pe.HEAP_DATA+a,h),o&&c.set(t.subarray(a,a+o));const f=void 0!==i?i.length:0,d=(n-1<<4)+s-r;t[0]=0,t[1]=0,t[2]=0,t[3]=f>>>29,t[4]=f>>>21,t[5]=f>>>13&255,t[6]=f>>>5&255,t[7]=f<<3&255,t[8]=t[9]=t[10]=0,t[11]=d>>>29,t[12]=d>>>21&255,t[13]=d>>>13&255,t[14]=d>>>5&255,t[15]=d<<3&255,e.mac(pe.MAC.GCM,pe.HEAP_DATA,16),e.get_iv(pe.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(pe.ENC.CTR,pe.HEAP_DATA,16);let l=0;for(let e=0;e<r;++e)l|=u[e]^t[e];if(l)throw new _e("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,c}AES_GCM_decrypt(e){const t=this.AES_GCM_Decrypt_process(e),r=this.AES_GCM_Decrypt_finish(),i=new Uint8Array(t.length+r.length);return t.length&&i.set(t),r.length&&i.set(r,t.length),i}AES_GCM_encrypt(e){const t=this.AES_GCM_Encrypt_process(e),r=this.AES_GCM_Encrypt_finish(),i=new Uint8Array(t.length+r.length);return t.length&&i.set(t),r.length&&i.set(r,t.length),i}_gcm_mac_process(e){let{asm:t,heap:r}=this.aes.acquire_asm(),i=0,n=e.length||0,a=0;for(;n>0;){for(a=me(r,0,e,i,n),i+=a,n-=a;15&a;)r[a++]=0;t.mac(pe.MAC.GCM,pe.HEAP_DATA,a)}}}const di=V.getWebCrypto(),li=V.getNodeCrypto(),pi=V.getNodeBuffer();async function yi(e,t){if(e!==re.symmetric.aes128&&e!==re.symmetric.aes192&&e!==re.symmetric.aes256)throw Error("GCM mode supports only AES cipher");if(V.getWebCrypto()&&24!==t.length){const e=await di.importKey("raw",t,{name:"AES-GCM"},!1,["encrypt","decrypt"]);return{encrypt:async function(r,i,n=new Uint8Array){if(!r.length)return fi.encrypt(r,t,i,n);const a=await di.encrypt({name:"AES-GCM",iv:i,additionalData:n,tagLength:128},e,r);return new Uint8Array(a)},decrypt:async function(r,i,n=new Uint8Array){if(16===r.length)return fi.decrypt(r,t,i,n);const a=await di.decrypt({name:"AES-GCM",iv:i,additionalData:n,tagLength:128},e,r);return new Uint8Array(a)}}}return V.getNodeCrypto()?{encrypt:async function(e,r,i=new Uint8Array){const n=new li.createCipheriv("aes-"+8*t.length+"-gcm",t,r);n.setAAD(i);const a=pi.concat([n.update(e),n.final(),n.getAuthTag()]);return new Uint8Array(a)},decrypt:async function(e,r,i=new Uint8Array){const n=new li.createDecipheriv("aes-"+8*t.length+"-gcm",t,r);n.setAAD(i),n.setAuthTag(e.slice(e.length-16,e.length));const a=pi.concat([n.update(e.slice(0,e.length-16)),n.final()]);return new Uint8Array(a)}}:{encrypt:async function(e,r,i){return fi.encrypt(e,t,r,i)},decrypt:async function(e,r,i){return fi.decrypt(e,t,r,i)}}}yi.getNonce=function(e,t){const r=e.slice();for(let e=0;e<t.length;e++)r[4+e]^=t[e];return r},yi.blockLength=16,yi.ivLength=12,yi.tagLength=16;var bi={cfb:jr,gcm:yi,experimentalGCM:yi,eax:ni,ocb:hi},mi=tt((function(e){!function(e){var t=function(e){var t,r=new Float64Array(16);if(e)for(t=0;t<e.length;t++)r[t]=e[t];return r},r=function(){throw Error("no PRNG")},i=new Uint8Array(32);i[0]=9;var n=t(),a=t([1]),s=t([56129,1]),o=t([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),c=t([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),u=t([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),h=t([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),f=t([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function d(e,t,r,i){return function(e,t,r,i,n){var a,s=0;for(a=0;a<n;a++)s|=e[t+a]^r[i+a];return(1&s-1>>>8)-1}(e,t,r,i,32)}function l(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function p(e){var t,r,i=1;for(t=0;t<16;t++)r=e[t]+i+65535,i=Math.floor(r/65536),e[t]=r-65536*i;e[0]+=i-1+37*(i-1)}function y(e,t,r){for(var i,n=~(r-1),a=0;a<16;a++)i=n&(e[a]^t[a]),e[a]^=i,t[a]^=i}function b(e,r){var i,n,a,s=t(),o=t();for(i=0;i<16;i++)o[i]=r[i];for(p(o),p(o),p(o),n=0;n<2;n++){for(s[0]=o[0]-65517,i=1;i<15;i++)s[i]=o[i]-65535-(s[i-1]>>16&1),s[i-1]&=65535;s[15]=o[15]-32767-(s[14]>>16&1),a=s[15]>>16&1,s[14]&=65535,y(o,s,1-a)}for(i=0;i<16;i++)e[2*i]=255&o[i],e[2*i+1]=o[i]>>8}function m(e,t){var r=new Uint8Array(32),i=new Uint8Array(32);return b(r,e),b(i,t),d(r,0,i,0)}function g(e){var t=new Uint8Array(32);return b(t,e),1&t[0]}function w(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function v(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]+r[i]}function _(e,t,r){for(var i=0;i<16;i++)e[i]=t[i]-r[i]}function k(e,t,r){var i,n,a=0,s=0,o=0,c=0,u=0,h=0,f=0,d=0,l=0,p=0,y=0,b=0,m=0,g=0,w=0,v=0,_=0,k=0,A=0,S=0,E=0,P=0,x=0,M=0,C=0,K=0,D=0,R=0,I=0,U=0,B=0,T=r[0],z=r[1],q=r[2],O=r[3],F=r[4],N=r[5],j=r[6],L=r[7],W=r[8],H=r[9],G=r[10],V=r[11],$=r[12],Z=r[13],Y=r[14],X=r[15];a+=(i=t[0])*T,s+=i*z,o+=i*q,c+=i*O,u+=i*F,h+=i*N,f+=i*j,d+=i*L,l+=i*W,p+=i*H,y+=i*G,b+=i*V,m+=i*$,g+=i*Z,w+=i*Y,v+=i*X,s+=(i=t[1])*T,o+=i*z,c+=i*q,u+=i*O,h+=i*F,f+=i*N,d+=i*j,l+=i*L,p+=i*W,y+=i*H,b+=i*G,m+=i*V,g+=i*$,w+=i*Z,v+=i*Y,_+=i*X,o+=(i=t[2])*T,c+=i*z,u+=i*q,h+=i*O,f+=i*F,d+=i*N,l+=i*j,p+=i*L,y+=i*W,b+=i*H,m+=i*G,g+=i*V,w+=i*$,v+=i*Z,_+=i*Y,k+=i*X,c+=(i=t[3])*T,u+=i*z,h+=i*q,f+=i*O,d+=i*F,l+=i*N,p+=i*j,y+=i*L,b+=i*W,m+=i*H,g+=i*G,w+=i*V,v+=i*$,_+=i*Z,k+=i*Y,A+=i*X,u+=(i=t[4])*T,h+=i*z,f+=i*q,d+=i*O,l+=i*F,p+=i*N,y+=i*j,b+=i*L,m+=i*W,g+=i*H,w+=i*G,v+=i*V,_+=i*$,k+=i*Z,A+=i*Y,S+=i*X,h+=(i=t[5])*T,f+=i*z,d+=i*q,l+=i*O,p+=i*F,y+=i*N,b+=i*j,m+=i*L,g+=i*W,w+=i*H,v+=i*G,_+=i*V,k+=i*$,A+=i*Z,S+=i*Y,E+=i*X,f+=(i=t[6])*T,d+=i*z,l+=i*q,p+=i*O,y+=i*F,b+=i*N,m+=i*j,g+=i*L,w+=i*W,v+=i*H,_+=i*G,k+=i*V,A+=i*$,S+=i*Z,E+=i*Y,P+=i*X,d+=(i=t[7])*T,l+=i*z,p+=i*q,y+=i*O,b+=i*F,m+=i*N,g+=i*j,w+=i*L,v+=i*W,_+=i*H,k+=i*G,A+=i*V,S+=i*$,E+=i*Z,P+=i*Y,x+=i*X,l+=(i=t[8])*T,p+=i*z,y+=i*q,b+=i*O,m+=i*F,g+=i*N,w+=i*j,v+=i*L,_+=i*W,k+=i*H,A+=i*G,S+=i*V,E+=i*$,P+=i*Z,x+=i*Y,M+=i*X,p+=(i=t[9])*T,y+=i*z,b+=i*q,m+=i*O,g+=i*F,w+=i*N,v+=i*j,_+=i*L,k+=i*W,A+=i*H,S+=i*G,E+=i*V,P+=i*$,x+=i*Z,M+=i*Y,C+=i*X,y+=(i=t[10])*T,b+=i*z,m+=i*q,g+=i*O,w+=i*F,v+=i*N,_+=i*j,k+=i*L,A+=i*W,S+=i*H,E+=i*G,P+=i*V,x+=i*$,M+=i*Z,C+=i*Y,K+=i*X,b+=(i=t[11])*T,m+=i*z,g+=i*q,w+=i*O,v+=i*F,_+=i*N,k+=i*j,A+=i*L,S+=i*W,E+=i*H,P+=i*G,x+=i*V,M+=i*$,C+=i*Z,K+=i*Y,D+=i*X,m+=(i=t[12])*T,g+=i*z,w+=i*q,v+=i*O,_+=i*F,k+=i*N,A+=i*j,S+=i*L,E+=i*W,P+=i*H,x+=i*G,M+=i*V,C+=i*$,K+=i*Z,D+=i*Y,R+=i*X,g+=(i=t[13])*T,w+=i*z,v+=i*q,_+=i*O,k+=i*F,A+=i*N,S+=i*j,E+=i*L,P+=i*W,x+=i*H,M+=i*G,C+=i*V,K+=i*$,D+=i*Z,R+=i*Y,I+=i*X,w+=(i=t[14])*T,v+=i*z,_+=i*q,k+=i*O,A+=i*F,S+=i*N,E+=i*j,P+=i*L,x+=i*W,M+=i*H,C+=i*G,K+=i*V,D+=i*$,R+=i*Z,I+=i*Y,U+=i*X,v+=(i=t[15])*T,s+=38*(k+=i*q),o+=38*(A+=i*O),c+=38*(S+=i*F),u+=38*(E+=i*N),h+=38*(P+=i*j),f+=38*(x+=i*L),d+=38*(M+=i*W),l+=38*(C+=i*H),p+=38*(K+=i*G),y+=38*(D+=i*V),b+=38*(R+=i*$),m+=38*(I+=i*Z),g+=38*(U+=i*Y),w+=38*(B+=i*X),a=(i=(a+=38*(_+=i*z))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),w=(i=w+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),a=(i=(a+=n-1+37*(n-1))+(n=1)+65535)-65536*(n=Math.floor(i/65536)),s=(i=s+n+65535)-65536*(n=Math.floor(i/65536)),o=(i=o+n+65535)-65536*(n=Math.floor(i/65536)),c=(i=c+n+65535)-65536*(n=Math.floor(i/65536)),u=(i=u+n+65535)-65536*(n=Math.floor(i/65536)),h=(i=h+n+65535)-65536*(n=Math.floor(i/65536)),f=(i=f+n+65535)-65536*(n=Math.floor(i/65536)),d=(i=d+n+65535)-65536*(n=Math.floor(i/65536)),l=(i=l+n+65535)-65536*(n=Math.floor(i/65536)),p=(i=p+n+65535)-65536*(n=Math.floor(i/65536)),y=(i=y+n+65535)-65536*(n=Math.floor(i/65536)),b=(i=b+n+65535)-65536*(n=Math.floor(i/65536)),m=(i=m+n+65535)-65536*(n=Math.floor(i/65536)),g=(i=g+n+65535)-65536*(n=Math.floor(i/65536)),w=(i=w+n+65535)-65536*(n=Math.floor(i/65536)),v=(i=v+n+65535)-65536*(n=Math.floor(i/65536)),a+=n-1+37*(n-1),e[0]=a,e[1]=s,e[2]=o,e[3]=c,e[4]=u,e[5]=h,e[6]=f,e[7]=d,e[8]=l,e[9]=p,e[10]=y,e[11]=b,e[12]=m,e[13]=g,e[14]=w,e[15]=v}function A(e,t){k(e,t,t)}function S(e,r){var i,n=t();for(i=0;i<16;i++)n[i]=r[i];for(i=253;i>=0;i--)A(n,n),2!==i&&4!==i&&k(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}function E(e,r,i){var n,a,o=new Uint8Array(32),c=new Float64Array(80),u=t(),h=t(),f=t(),d=t(),l=t(),p=t();for(a=0;a<31;a++)o[a]=r[a];for(o[31]=127&r[31]|64,o[0]&=248,w(c,i),a=0;a<16;a++)h[a]=c[a],d[a]=u[a]=f[a]=0;for(u[0]=d[0]=1,a=254;a>=0;--a)y(u,h,n=o[a>>>3]>>>(7&a)&1),y(f,d,n),v(l,u,f),_(u,u,f),v(f,h,d),_(h,h,d),A(d,l),A(p,u),k(u,f,u),k(f,h,l),v(l,u,f),_(u,u,f),A(h,u),_(f,d,p),k(u,f,s),v(u,u,d),k(f,f,u),k(u,d,p),k(d,h,c),A(h,l),y(u,h,n),y(f,d,n);for(a=0;a<16;a++)c[a+16]=u[a],c[a+32]=f[a],c[a+48]=h[a],c[a+64]=d[a];var m=c.subarray(32),g=c.subarray(16);return S(m,m),k(g,g,m),b(e,g),0}function P(e,t){return E(e,t,i)}function x(e,r){var i=t(),n=t(),a=t(),s=t(),o=t(),u=t(),h=t(),f=t(),d=t();_(i,e[1],e[0]),_(d,r[1],r[0]),k(i,i,d),v(n,e[0],e[1]),v(d,r[0],r[1]),k(n,n,d),k(a,e[3],r[3]),k(a,a,c),k(s,e[2],r[2]),v(s,s,s),_(o,n,i),_(u,s,a),v(h,s,a),v(f,n,i),k(e[0],o,u),k(e[1],f,h),k(e[2],h,u),k(e[3],o,f)}function M(e,t,r){var i;for(i=0;i<4;i++)y(e[i],t[i],r)}function C(e,r){var i=t(),n=t(),a=t();S(a,r[2]),k(i,r[0],a),k(n,r[1],a),b(e,n),e[31]^=g(i)<<7}function K(e,t,r){var i,s;for(l(e[0],n),l(e[1],a),l(e[2],a),l(e[3],n),s=255;s>=0;--s)M(e,t,i=r[s/8|0]>>(7&s)&1),x(t,e),x(e,e),M(e,t,i)}function D(e,r){var i=[t(),t(),t(),t()];l(i[0],u),l(i[1],h),l(i[2],a),k(i[3],u,h),K(e,i,r)}function R(i,n,a){var s,o,c=[t(),t(),t(),t()];for(a||r(n,32),(s=e.hash(n.subarray(0,32)))[0]&=248,s[31]&=127,s[31]|=64,D(c,s),C(i,c),o=0;o<32;o++)n[o+32]=i[o];return 0}var I=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function U(e,t){var r,i,n,a;for(i=63;i>=32;--i){for(r=0,n=i-32,a=i-12;n<a;++n)t[n]+=r-16*t[i]*I[n-(i-32)],r=Math.floor((t[n]+128)/256),t[n]-=256*r;t[n]+=r,t[i]=0}for(r=0,n=0;n<32;n++)t[n]+=r-(t[31]>>4)*I[n],r=t[n]>>8,t[n]&=255;for(n=0;n<32;n++)t[n]-=r*I[n];for(i=0;i<32;i++)t[i+1]+=t[i]>>8,e[i]=255&t[i]}function B(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;U(e,r)}function T(e,r){var i=t(),s=t(),c=t(),u=t(),h=t(),d=t(),p=t();return l(e[2],a),w(e[1],r),A(c,e[1]),k(u,c,o),_(c,c,e[2]),v(u,e[2],u),A(h,u),A(d,h),k(p,d,h),k(i,p,c),k(i,i,u),function(e,r){var i,n=t();for(i=0;i<16;i++)n[i]=r[i];for(i=250;i>=0;i--)A(n,n),1!==i&&k(n,n,r);for(i=0;i<16;i++)e[i]=n[i]}(i,i),k(i,i,c),k(i,i,u),k(i,i,u),k(e[0],i,u),A(s,e[0]),k(s,s,u),m(s,c)&&k(e[0],e[0],f),A(s,e[0]),k(s,s,u),m(s,c)?-1:(g(e[0])===r[31]>>7&&_(e[0],n,e[0]),k(e[3],e[0],e[1]),0)}var z=64;function q(){for(var e=0;e<arguments.length;e++)if(!(arguments[e]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function O(e){for(var t=0;t<e.length;t++)e[t]=0}e.scalarMult=function(e,t){if(q(e,t),32!==e.length)throw Error("bad n size");if(32!==t.length)throw Error("bad p size");var r=new Uint8Array(32);return E(r,e,t),r},e.box={},e.box.keyPair=function(){var e,t,i=new Uint8Array(32),n=new Uint8Array(32);return e=i,r(t=n,32),P(e,t),{publicKey:i,secretKey:n}},e.box.keyPair.fromSecretKey=function(e){if(q(e),32!==e.length)throw Error("bad secret key size");var t=new Uint8Array(32);return P(t,e),{publicKey:t,secretKey:new Uint8Array(e)}},e.sign=function(r,i){if(q(r,i),64!==i.length)throw Error("bad secret key size");var n=new Uint8Array(z+r.length);return function(r,i,n,a){var s,o,c,u,h,f=new Float64Array(64),d=[t(),t(),t(),t()];(s=e.hash(a.subarray(0,32)))[0]&=248,s[31]&=127,s[31]|=64;var l=n+64;for(u=0;u<n;u++)r[64+u]=i[u];for(u=0;u<32;u++)r[32+u]=s[32+u];for(B(c=e.hash(r.subarray(32,l))),D(d,c),C(r,d),u=32;u<64;u++)r[u]=a[u];for(B(o=e.hash(r.subarray(0,l))),u=0;u<64;u++)f[u]=0;for(u=0;u<32;u++)f[u]=c[u];for(u=0;u<32;u++)for(h=0;h<32;h++)f[u+h]+=o[u]*s[h];U(r.subarray(32),f)}(n,r,r.length,i),n},e.sign.detached=function(t,r){for(var i=e.sign(t,r),n=new Uint8Array(z),a=0;a<n.length;a++)n[a]=i[a];return n},e.sign.detached.verify=function(r,i,n){if(q(r,i,n),i.length!==z)throw Error("bad signature size");if(32!==n.length)throw Error("bad public key size");var a,s=new Uint8Array(z+r.length),o=new Uint8Array(z+r.length);for(a=0;a<z;a++)s[a]=i[a];for(a=0;a<r.length;a++)s[a+z]=r[a];return function(r,i,n,a){var s,o,c=new Uint8Array(32),u=[t(),t(),t(),t()],h=[t(),t(),t(),t()];if(n<64)return-1;if(T(h,a))return-1;for(s=0;s<n;s++)r[s]=i[s];for(s=0;s<32;s++)r[s+32]=a[s];if(B(o=e.hash(r.subarray(0,n))),K(u,h,o),D(h,i.subarray(32)),x(u,h),C(c,u),n-=64,d(i,0,c,0)){for(s=0;s<n;s++)r[s]=0;return-1}for(s=0;s<n;s++)r[s]=i[s+64];return n}(o,s,s.length,n)>=0},e.sign.keyPair=function(){var e=new Uint8Array(32),t=new Uint8Array(64);return R(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(q(e),64!==e.length)throw Error("bad secret key size");for(var t=new Uint8Array(32),r=0;r<t.length;r++)t[r]=e[32+r];return{publicKey:t,secretKey:new Uint8Array(e)}},e.sign.keyPair.fromSeed=function(e){if(q(e),32!==e.length)throw Error("bad seed size");for(var t=new Uint8Array(32),r=new Uint8Array(64),i=0;i<32;i++)r[i]=e[i];return R(t,r,!0),{publicKey:t,secretKey:r}},e.setPRNG=function(e){r=e},function(){var t="undefined"!=typeof self?self.crypto||self.msCrypto:null;if(t&&t.getRandomValues){e.setPRNG((function(e,r){var i,n=new Uint8Array(r);for(i=0;i<r;i+=65536)t.getRandomValues(n.subarray(i,i+Math.min(r-i,65536)));for(i=0;i<r;i++)e[i]=n[i];O(n)}))}else(t=void 0)&&t.randomBytes&&e.setPRNG((function(e,r){var i,n=t.randomBytes(r);for(i=0;i<r;i++)e[i]=n[i];O(n)}))}()}(e.exports?e.exports:self.nacl=self.nacl||{})}));const gi=V.getNodeCrypto();async function wi(e){const t=new Uint8Array(e);if("undefined"!=typeof crypto&&crypto.getRandomValues)crypto.getRandomValues(t);else if(gi){const e=gi.randomBytes(t.length);t.set(e)}else{if(!_i.buffer)throw Error("No secure random number generator available.");await _i.get(t)}return t}async function vi(e,t){const r=await V.getBigInteger();if(t.lt(e))throw Error("Illegal parameter value: max <= min");const i=t.sub(e),n=i.byteLength();return new r(await wi(n+8)).mod(i).add(e)}const _i=new class{constructor(){this.buffer=null,this.size=null,this.callback=null}init(e,t){this.buffer=new Uint8Array(e),this.size=0,this.callback=t}set(e){if(!this.buffer)throw Error("RandomBuffer is not initialized");if(!(e instanceof Uint8Array))throw Error("Invalid type: buf not an Uint8Array");const t=this.buffer.length-this.size;e.length>t&&(e=e.subarray(0,t)),this.buffer.set(e,this.size),this.size+=e.length}async get(e){if(!this.buffer)throw Error("RandomBuffer is not initialized");if(!(e instanceof Uint8Array))throw Error("Invalid type: buf not an Uint8Array");if(this.size<e.length){if(!this.callback)throw Error("Random number buffer depleted");return await this.callback(),this.get(e)}for(let t=0;t<e.length;t++)e[t]=this.buffer[--this.size],this.buffer[this.size]=0}};var ki=/*#__PURE__*/Object.freeze({__proto__:null,getRandomBytes:wi,getRandomBigInteger:vi,randomBuffer:_i});async function Ai(e,t,r){const i=await V.getBigInteger(),n=new i(1),a=n.leftShift(new i(e-1)),s=new i(30),o=[1,6,5,4,3,2,1,4,3,2,1,2,1,4,3,2,1,2,1,4,3,2,1,6,5,4,3,2,1,2],c=await vi(a,a.leftShift(n));let u=c.mod(s).toNumber();do{c.iadd(new i(o[u])),u=(u+o[u])%o.length,c.bitLength()>e&&(c.imod(a.leftShift(n)).iadd(a),u=c.mod(s).toNumber())}while(!await Si(c,t,r));return c}async function Si(e,t,r){return!(t&&!e.dec().gcd(t).isOne())&&(!!await async function(e){const t=await V.getBigInteger();return Ei.every((r=>0!==e.mod(new t(r))))}(e)&&(!!await async function(e,t){const r=await V.getBigInteger();return(t=t||new r(2)).modExp(e.dec(),e).isOne()}(e)&&!!await async function(e,t,r){const i=await V.getBigInteger(),n=e.bitLength();t||(t=Math.max(1,n/48|0));const a=e.dec();let s=0;for(;!a.getBit(s);)s++;const o=e.rightShift(new i(s));for(;t>0;t--){let t,n=(r?r():await vi(new i(2),a)).modExp(o,e);if(!n.isOne()&&!n.equal(a)){for(t=1;t<s;t++){if(n=n.mul(n).mod(e),n.isOne())return!1;if(n.equal(a))break}if(t===s)return!1}}return!0}(e,r)))}const Ei=[7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999];const Pi=[];async function xi(e,t){const r=e.length;if(r>t-11)throw Error("Message too long");const i=await async function(e){const t=new Uint8Array(e);let r=0;for(;r<e;){const i=await wi(e-r);for(let e=0;e<i.length;e++)0!==i[e]&&(t[r++]=i[e])}return t}(t-r-3),n=new Uint8Array(t);return n[1]=2,n.set(i,2),n.set(e,t-r),n}function Mi(e,t){let r=2,i=1;for(let t=r;t<e.length;t++)i&=0!==e[t],r+=i;const n=r-2,a=e.subarray(r+1),s=0===e[0]&2===e[1]&n>=8&!i;if(t)return V.selectUint8Array(s,a,t);if(s)return a;throw Error("Decryption error")}async function Ci(e,t,r){let i;if(t.length!==Tr.getHashByteLength(e))throw Error("Invalid hash length");const n=new Uint8Array(Pi[e].length);for(i=0;i<Pi[e].length;i++)n[i]=Pi[e][i];const a=n.length+t.length;if(r<a+11)throw Error("Intended encoded message length too short");const s=new Uint8Array(r-a-3).fill(255),o=new Uint8Array(r);return o[1]=1,o.set(s,2),o.set(n,r-a),o.set(t,r-t.length),o}Pi[1]=[48,32,48,12,6,8,42,134,72,134,247,13,2,5,5,0,4,16],Pi[2]=[48,33,48,9,6,5,43,14,3,2,26,5,0,4,20],Pi[3]=[48,33,48,9,6,5,43,36,3,2,1,5,0,4,20],Pi[8]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,1,5,0,4,32],Pi[9]=[48,65,48,13,6,9,96,134,72,1,101,3,4,2,2,5,0,4,48],Pi[10]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,3,5,0,4,64],Pi[11]=[48,45,48,13,6,9,96,134,72,1,101,3,4,2,4,5,0,4,28];var Ki=/*#__PURE__*/Object.freeze({__proto__:null,emeEncode:xi,emeDecode:Mi,emsaEncode:Ci});const Di=V.getWebCrypto(),Ri=V.getNodeCrypto(),Ii=void 0,Ui=V.detectNode()?Ii.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())})):void 0,Bi=V.detectNode()?Ii.define("RSAPubliceKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())})):void 0;var Ti=/*#__PURE__*/Object.freeze({__proto__:null,sign:async function(e,t,r,i,n,a,s,o,c){if(t&&!V.isStream(t))if(V.getWebCrypto())try{return await async function(e,t,r,i,n,a,s,o){const c=await async function(e,t,r,i,n,a){const s=await V.getBigInteger(),o=new s(i),c=new s(n),u=new s(r);let h=u.mod(c.dec()),f=u.mod(o.dec());return f=f.toUint8Array(),h=h.toUint8Array(),{kty:"RSA",n:ee(e,!0),e:ee(t,!0),d:ee(r,!0),p:ee(n,!0),q:ee(i,!0),dp:ee(h,!0),dq:ee(f,!0),qi:ee(a,!0),ext:!0}}(r,i,n,a,s,o),u={name:"RSASSA-PKCS1-v1_5",hash:{name:e}},h=await Di.importKey("jwk",c,u,!1,["sign"]);return new Uint8Array(await Di.sign("RSASSA-PKCS1-v1_5",h,t))}(re.read(re.webHash,e),t,r,i,n,a,s,o)}catch(e){V.printDebugError(e)}else if(V.getNodeCrypto())return async function(e,t,r,i,n,a,s,o){const{default:c}=await Promise.resolve().then((function(){return Bd})),u=new c(a),h=new c(s),f=new c(n),d=f.mod(h.subn(1)),l=f.mod(u.subn(1)),p=Ri.createSign(re.read(re.hash,e));p.write(t),p.end();const y={version:0,modulus:new c(r),publicExponent:new c(i),privateExponent:new c(n),prime1:new c(s),prime2:new c(a),exponent1:d,exponent2:l,coefficient:new c(o)};if(void 0!==Ri.createPrivateKey){const e=Ui.encode(y,"der");return new Uint8Array(p.sign({key:e,format:"der",type:"pkcs1"}))}const b=Ui.encode(y,"pem",{label:"RSA PRIVATE KEY"});return new Uint8Array(p.sign(b))}(e,t,r,i,n,a,s,o);return async function(e,t,r,i){const n=await V.getBigInteger();t=new n(t);const a=new n(await Ci(e,i,t.byteLength()));if(r=new n(r),a.gte(t))throw Error("Message size cannot exceed modulus size");return a.modExp(r,t).toUint8Array("be",t.byteLength())}(e,r,n,c)},verify:async function(e,t,r,i,n,a){if(t&&!V.isStream(t))if(V.getWebCrypto())try{return await async function(e,t,r,i,n){const a=function(e,t){return{kty:"RSA",n:ee(e,!0),e:ee(t,!0),ext:!0}}(i,n),s=await Di.importKey("jwk",a,{name:"RSASSA-PKCS1-v1_5",hash:{name:e}},!1,["verify"]);return Di.verify("RSASSA-PKCS1-v1_5",s,r,t)}(re.read(re.webHash,e),t,r,i,n)}catch(e){V.printDebugError(e)}else if(V.getNodeCrypto())return async function(e,t,r,i,n){const{default:a}=await Promise.resolve().then((function(){return Bd})),s=Ri.createVerify(re.read(re.hash,e));s.write(t),s.end();const o={modulus:new a(i),publicExponent:new a(n)};let c;if(void 0!==Ri.createPrivateKey){c={key:Bi.encode(o,"der"),format:"der",type:"pkcs1"}}else c=Bi.encode(o,"pem",{label:"RSA PUBLIC KEY"});try{return await s.verify(c,r)}catch(e){return!1}}(e,t,r,i,n);return async function(e,t,r,i,n){const a=await V.getBigInteger();if(r=new a(r),t=new a(t),i=new a(i),t.gte(r))throw Error("Signature size cannot exceed modulus size");const s=t.modExp(i,r).toUint8Array("be",r.byteLength()),o=await Ci(e,n,r.byteLength());return V.equalsUint8Array(s,o)}(e,r,i,n,a)},encrypt:async function(e,t,r){return V.getNodeCrypto()?async function(e,t,r){const{default:i}=await Promise.resolve().then((function(){return Bd})),n={modulus:new i(t),publicExponent:new i(r)};let a;if(void 0!==Ri.createPrivateKey){a={key:Bi.encode(n,"der"),format:"der",type:"pkcs1",padding:Ri.constants.RSA_PKCS1_PADDING}}else{a={key:Bi.encode(n,"pem",{label:"RSA PUBLIC KEY"}),padding:Ri.constants.RSA_PKCS1_PADDING}}return new Uint8Array(Ri.publicEncrypt(a,e))}(e,t,r):async function(e,t,r){const i=await V.getBigInteger();if(t=new i(t),e=new i(await xi(e,t.byteLength())),r=new i(r),e.gte(t))throw Error("Message size cannot exceed modulus size");return e.modExp(r,t).toUint8Array("be",t.byteLength())}(e,t,r)},decrypt:async function(e,t,r,i,n,a,s,o){return V.getNodeCrypto()?async function(e,t,r,i,n,a,s,o){const{default:c}=await Promise.resolve().then((function(){return Bd})),u=new c(n),h=new c(a),f=new c(i),d=f.mod(h.subn(1)),l=f.mod(u.subn(1)),p={version:0,modulus:new c(t),publicExponent:new c(r),privateExponent:new c(i),prime1:new c(a),prime2:new c(n),exponent1:d,exponent2:l,coefficient:new c(s)};let y;if(void 0!==Ri.createPrivateKey){y={key:Ui.encode(p,"der"),format:"der",type:"pkcs1",padding:Ri.constants.RSA_PKCS1_PADDING}}else{y={key:Ui.encode(p,"pem",{label:"RSA PRIVATE KEY"}),padding:Ri.constants.RSA_PKCS1_PADDING}}try{return new Uint8Array(Ri.privateDecrypt(y,e))}catch(e){if(o)return o;throw Error("Decryption error")}}(e,t,r,i,n,a,s,o):async function(e,t,r,i,n,a,s,o){const c=await V.getBigInteger();if(e=new c(e),t=new c(t),r=new c(r),i=new c(i),n=new c(n),a=new c(a),s=new c(s),e.gte(t))throw Error("Data too large.");const u=i.mod(a.dec()),h=i.mod(n.dec()),f=(await vi(new c(2),t)).mod(t),d=f.modInv(t).modExp(r,t),l=(e=e.mul(d).mod(t)).modExp(h,n),p=e.modExp(u,a);let y=s.mul(p.sub(l)).mod(a).mul(n).add(l);return y=y.mul(f).mod(t),Mi(y.toUint8Array("be",t.byteLength()),o)}(e,t,r,i,n,a,s,o)},generate:async function(e,t){if(t=new(await V.getBigInteger())(t),V.getWebCrypto()){const r={name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:t.toUint8Array(),hash:{name:"SHA-1"}},i=await Di.generateKey(r,!0,["sign","verify"]),n=await Di.exportKey("jwk",i.privateKey);return{n:J(n.n),e:t.toUint8Array(),d:J(n.d),p:J(n.q),q:J(n.p),u:J(n.qi)}}if(V.getNodeCrypto()&&Ri.generateKeyPair&&Ui){const r={modulusLength:e,publicExponent:t.toNumber(),publicKeyEncoding:{type:"pkcs1",format:"der"},privateKeyEncoding:{type:"pkcs1",format:"der"}},i=await new Promise(((e,t)=>Ri.generateKeyPair("rsa",r,((r,i,n)=>{r?t(r):e(Ui.decode(n,"der"))}))));return{n:i.modulus.toArrayLike(Uint8Array),e:i.publicExponent.toArrayLike(Uint8Array),d:i.privateExponent.toArrayLike(Uint8Array),p:i.prime2.toArrayLike(Uint8Array),q:i.prime1.toArrayLike(Uint8Array),u:i.coefficient.toArrayLike(Uint8Array)}}let r,i,n;do{i=await Ai(e-(e>>1),t,40),r=await Ai(e>>1,t,40),n=r.mul(i)}while(n.bitLength()!==e);const a=r.dec().imul(i.dec());return i.lt(r)&&([r,i]=[i,r]),{n:n.toUint8Array(),e:t.toUint8Array(),d:t.modInv(a).toUint8Array(),p:r.toUint8Array(),q:i.toUint8Array(),u:r.modInv(i).toUint8Array()}},validateParams:async function(e,t,r,i,n,a){const s=await V.getBigInteger();if(e=new s(e),i=new s(i),n=new s(n),!i.mul(n).equal(e))return!1;const o=new s(2);if(a=new s(a),!i.mul(a).mod(n).isOne())return!1;t=new s(t),r=new s(r);const c=new s(Math.floor(e.bitLength()/3)),u=await vi(o,o.leftShift(c)),h=u.mul(r).mul(t);return!(!h.mod(i.dec()).equal(u)||!h.mod(n.dec()).equal(u))}});var zi=/*#__PURE__*/Object.freeze({__proto__:null,encrypt:async function(e,t,r,i){const n=await V.getBigInteger();t=new n(t),r=new n(r),i=new n(i);const a=new n(await xi(e,t.byteLength())),s=await vi(new n(1),t.dec());return{c1:r.modExp(s,t).toUint8Array(),c2:i.modExp(s,t).imul(a).imod(t).toUint8Array()}},decrypt:async function(e,t,r,i,n){const a=await V.getBigInteger();return e=new a(e),t=new a(t),r=new a(r),i=new a(i),Mi(e.modExp(i,r).modInv(r).imul(t).imod(r).toUint8Array("be",r.byteLength()),n)},validateParams:async function(e,t,r,i){const n=await V.getBigInteger();e=new n(e),t=new n(t),r=new n(r);const a=new n(1);if(t.lte(a)||t.gte(e))return!1;const s=new n(e.bitLength()),o=new n(1023);if(s.lt(o))return!1;if(!t.modExp(e.dec(),e).isOne())return!1;let c=t;const u=new n(1),h=new n(2).leftShift(new n(17));for(;u.lt(h);){if(c=c.mul(t).imod(e),c.isOne())return!1;u.iinc()}i=new n(i);const f=new n(2),d=await vi(f.leftShift(s.dec()),f.leftShift(s)),l=e.dec().imul(d).iadd(i);return!!r.equal(t.modExp(l,e))}});class qi{constructor(e){if(e instanceof qi)this.oid=e.oid;else if(V.isArray(e)||V.isUint8Array(e)){if(6===(e=new Uint8Array(e))[0]){if(e[1]!==e.length-2)throw Error("Length mismatch in DER encoded oid");e=e.subarray(2)}this.oid=e}else this.oid=""}read(e){if(e.length>=1){const t=e[0];if(e.length>=1+t)return this.oid=e.subarray(1,1+t),1+this.oid.length}throw Error("Invalid oid")}write(){return V.concatUint8Array([new Uint8Array([this.oid.length]),this.oid])}toHex(){return V.uint8ArrayToHex(this.oid)}getName(){const e=this.toHex();if(re.curve[e])return re.write(re.curve,e);throw Error("Unknown curve object identifier.")}}function Oi(e,t){return e.keyPair({priv:t})}function Fi(e,t){const r=e.keyPair({pub:t});if(!0!==r.validate().result)throw Error("Invalid elliptic public key");return r}async function Ni(e){if(!ie.useIndutnyElliptic)throw Error("This curve is only supported in the full build of OpenPGP.js");const{default:t}=await Promise.resolve().then((function(){return Jl}));return new t.ec(e)}const ji=V.getWebCrypto(),Li=V.getNodeCrypto(),Wi={p256:"P-256",p384:"P-384",p521:"P-521"},Hi=Li?Li.getCurves():[],Gi=Li?{secp256k1:Hi.includes("secp256k1")?"secp256k1":void 0,p256:Hi.includes("prime256v1")?"prime256v1":void 0,p384:Hi.includes("secp384r1")?"secp384r1":void 0,p521:Hi.includes("secp521r1")?"secp521r1":void 0,ed25519:Hi.includes("ED25519")?"ED25519":void 0,curve25519:Hi.includes("X25519")?"X25519":void 0,brainpoolP256r1:Hi.includes("brainpoolP256r1")?"brainpoolP256r1":void 0,brainpoolP384r1:Hi.includes("brainpoolP384r1")?"brainpoolP384r1":void 0,brainpoolP512r1:Hi.includes("brainpoolP512r1")?"brainpoolP512r1":void 0}:{},Vi={p256:{oid:[6,8,42,134,72,206,61,3,1,7],keyType:re.publicKey.ecdsa,hash:re.hash.sha256,cipher:re.symmetric.aes128,node:Gi.p256,web:Wi.p256,payloadSize:32,sharedSize:256},p384:{oid:[6,5,43,129,4,0,34],keyType:re.publicKey.ecdsa,hash:re.hash.sha384,cipher:re.symmetric.aes192,node:Gi.p384,web:Wi.p384,payloadSize:48,sharedSize:384},p521:{oid:[6,5,43,129,4,0,35],keyType:re.publicKey.ecdsa,hash:re.hash.sha512,cipher:re.symmetric.aes256,node:Gi.p521,web:Wi.p521,payloadSize:66,sharedSize:528},secp256k1:{oid:[6,5,43,129,4,0,10],keyType:re.publicKey.ecdsa,hash:re.hash.sha256,cipher:re.symmetric.aes128,node:Gi.secp256k1,payloadSize:32},ed25519:{oid:[6,9,43,6,1,4,1,218,71,15,1],keyType:re.publicKey.eddsa,hash:re.hash.sha512,node:!1,payloadSize:32},curve25519:{oid:[6,10,43,6,1,4,1,151,85,1,5,1],keyType:re.publicKey.ecdh,hash:re.hash.sha256,cipher:re.symmetric.aes128,node:!1,payloadSize:32},brainpoolP256r1:{oid:[6,9,43,36,3,3,2,8,1,1,7],keyType:re.publicKey.ecdsa,hash:re.hash.sha256,cipher:re.symmetric.aes128,node:Gi.brainpoolP256r1,payloadSize:32},brainpoolP384r1:{oid:[6,9,43,36,3,3,2,8,1,1,11],keyType:re.publicKey.ecdsa,hash:re.hash.sha384,cipher:re.symmetric.aes192,node:Gi.brainpoolP384r1,payloadSize:48},brainpoolP512r1:{oid:[6,9,43,36,3,3,2,8,1,1,13],keyType:re.publicKey.ecdsa,hash:re.hash.sha512,cipher:re.symmetric.aes256,node:Gi.brainpoolP512r1,payloadSize:64}};class $i{constructor(e,t){try{(V.isArray(e)||V.isUint8Array(e))&&(e=new qi(e)),e instanceof qi&&(e=e.getName()),this.name=re.write(re.curve,e)}catch(e){throw Error("Not valid curve")}t=t||Vi[this.name],this.keyType=t.keyType,this.oid=t.oid,this.hash=t.hash,this.cipher=t.cipher,this.node=t.node&&Vi[this.name],this.web=t.web&&Vi[this.name],this.payloadSize=t.payloadSize,this.web&&V.getWebCrypto()?this.type="web":this.node&&V.getNodeCrypto()?this.type="node":"curve25519"===this.name?this.type="curve25519":"ed25519"===this.name&&(this.type="ed25519")}async genKeyPair(){let e;switch(this.type){case"web":try{return await async function(e){const t=await ji.generateKey({name:"ECDSA",namedCurve:Wi[e]},!0,["sign","verify"]),r=await ji.exportKey("jwk",t.privateKey);return{publicKey:Yi(await ji.exportKey("jwk",t.publicKey)),privateKey:J(r.d)}}(this.name)}catch(e){V.printDebugError("Browser did not support generating ec key "+e.message);break}case"node":return async function(e){const t=Li.createECDH(Gi[e]);return await t.generateKeys(),{publicKey:new Uint8Array(t.getPublicKey()),privateKey:new Uint8Array(t.getPrivateKey())}}(this.name);case"curve25519":{const t=await wi(32);t[0]=127&t[0]|64,t[31]&=248;const r=t.slice().reverse();e=mi.box.keyPair.fromSecretKey(r);return{publicKey:V.concatUint8Array([new Uint8Array([64]),e.publicKey]),privateKey:t}}case"ed25519":{const e=await wi(32),t=mi.sign.keyPair.fromSeed(e);return{publicKey:V.concatUint8Array([new Uint8Array([64]),t.publicKey]),privateKey:e}}}const t=await Ni(this.name);return e=await t.genKeyPair({entropy:V.uint8ArrayToString(await wi(32))}),{publicKey:new Uint8Array(e.getPublic("array",!1)),privateKey:e.getPrivate().toArrayLike(Uint8Array)}}}async function Zi(e,t,r,i){const n={p256:!0,p384:!0,p521:!0,secp256k1:!0,curve25519:e===re.publicKey.ecdh,brainpoolP256r1:!0,brainpoolP384r1:!0,brainpoolP512r1:!0},a=t.getName();if(!n[a])return!1;if("curve25519"===a){i=i.slice().reverse();const{publicKey:e}=mi.box.keyPair.fromSecretKey(i);r=new Uint8Array(r);const t=new Uint8Array([64,...e]);return!!V.equalsUint8Array(t,r)}const s=await Ni(a);try{r=Fi(s,r).getPublic()}catch(e){return!1}return!!Oi(s,i).getPublic().eq(r)}function Yi(e){const t=J(e.x),r=J(e.y),i=new Uint8Array(t.length+r.length+1);return i[0]=4,i.set(t,1),i.set(r,t.length+1),i}function Xi(e,t,r){const i=e,n=r.slice(1,i+1),a=r.slice(i+1,2*i+1);return{kty:"EC",crv:t,x:ee(n,!0),y:ee(a,!0),ext:!0}}function Qi(e,t,r,i){const n=Xi(e,t,r);return n.d=ee(i,!0),n}const Ji=V.getWebCrypto(),en=V.getNodeCrypto();async function tn(e,t,r,i,n,a){const s=new $i(e);if(r&&!V.isStream(r)){const e={publicKey:i,privateKey:n};switch(s.type){case"web":try{return await async function(e,t,r,i){const n=e.payloadSize,a=Qi(e.payloadSize,Wi[e.name],i.publicKey,i.privateKey),s=await Ji.importKey("jwk",a,{name:"ECDSA",namedCurve:Wi[e.name],hash:{name:re.read(re.webHash,e.hash)}},!1,["sign"]),o=new Uint8Array(await Ji.sign({name:"ECDSA",namedCurve:Wi[e.name],hash:{name:re.read(re.webHash,t)}},s,r));return{r:o.slice(0,n),s:o.slice(n,n<<1)}}(s,t,r,e)}catch(e){if("p521"!==s.name&&("DataError"===e.name||"OperationError"===e.name))throw e;V.printDebugError("Browser did not support signing: "+e.message)}break;case"node":{const i=await async function(e,t,r,i){const n=en.createSign(re.read(re.hash,t));n.write(r),n.end();const a=sn.encode({version:1,parameters:e.oid,privateKey:Array.from(i.privateKey),publicKey:{unused:0,data:Array.from(i.publicKey)}},"pem",{label:"EC PRIVATE KEY"});return an.decode(n.sign(a),"der")}(s,t,r,e);return{r:i.r.toArrayLike(Uint8Array),s:i.s.toArrayLike(Uint8Array)}}}}return async function(e,t,r){const i=await Ni(e.name),n=Oi(i,r).sign(t);return{r:n.r.toArrayLike(Uint8Array),s:n.s.toArrayLike(Uint8Array)}}(s,a,n)}async function rn(e,t,r,i,n,a){const s=new $i(e);if(i&&!V.isStream(i))switch(s.type){case"web":try{return await async function(e,t,{r,s:i},n,a){const s=Xi(e.payloadSize,Wi[e.name],a),o=await Ji.importKey("jwk",s,{name:"ECDSA",namedCurve:Wi[e.name],hash:{name:re.read(re.webHash,e.hash)}},!1,["verify"]),c=V.concatUint8Array([r,i]).buffer;return Ji.verify({name:"ECDSA",namedCurve:Wi[e.name],hash:{name:re.read(re.webHash,t)}},o,c,n)}(s,t,r,i,n)}catch(e){if("p521"!==s.name&&("DataError"===e.name||"OperationError"===e.name))throw e;V.printDebugError("Browser did not support verifying: "+e.message)}break;case"node":return async function(e,t,{r,s:i},n,a){const{default:s}=await Promise.resolve().then((function(){return Bd})),o=en.createVerify(re.read(re.hash,t));o.write(n),o.end();const c=cn.encode({algorithm:{algorithm:[1,2,840,10045,2,1],parameters:e.oid},subjectPublicKey:{unused:0,data:Array.from(a)}},"pem",{label:"PUBLIC KEY"}),u=an.encode({r:new s(r),s:new s(i)},"der");try{return o.verify(c,u)}catch(e){return!1}}(s,t,r,i,n)}return async function(e,t,r,i){const n=await Ni(e.name);return Fi(n,i).verify(r,t)}(s,r,void 0===t?i:a,n)}const nn=void 0,an=en?nn.define("ECDSASignature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())})):void 0,sn=en?nn.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").explicit(0).optional().any(),this.key("publicKey").explicit(1).optional().bitstr())})):void 0,on=en?nn.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().any())})):void 0,cn=en?nn.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(on),this.key("subjectPublicKey").bitstr())})):void 0;var un=/*#__PURE__*/Object.freeze({__proto__:null,sign:tn,verify:rn,validateParams:async function(e,t,r){const i=new $i(e);if(i.keyType!==re.publicKey.ecdsa)return!1;switch(i.type){case"web":case"node":{const i=await wi(8),n=re.hash.sha256,a=await Tr.digest(n,i);try{const s=await tn(e,n,i,t,r,a);return await rn(e,n,s,i,t,a)}catch(e){return!1}}default:return Zi(re.publicKey.ecdsa,e,t,r)}}});mi.hash=e=>new Uint8Array(Wt().update(e).digest());var hn=/*#__PURE__*/Object.freeze({__proto__:null,sign:async function(e,t,r,i,n,a){if(Tr.getHashByteLength(t)<Tr.getHashByteLength(re.hash.sha256))throw Error("Hash algorithm too weak: sha256 or stronger is required for EdDSA.");const s=V.concatUint8Array([n,i.subarray(1)]),o=mi.sign.detached(a,s);return{r:o.subarray(0,32),s:o.subarray(32)}},verify:async function(e,t,{r,s:i},n,a,s){const o=V.concatUint8Array([r,i]);return mi.sign.detached.verify(s,o,a.subarray(1))},validateParams:async function(e,t,r){if("ed25519"!==e.getName())return!1;const{publicKey:i}=mi.sign.keyPair.fromSeed(r),n=new Uint8Array([64,...i]);return V.equalsUint8Array(t,n)}});function fn(e,t){const r=new Le["aes"+8*e.length](e),i=new Uint32Array([2795939494,2795939494]),n=ln(t);let a=i;const s=n,o=n.length/2,c=new Uint32Array([0,0]);let u=new Uint32Array(4);for(let e=0;e<=5;++e)for(let t=0;t<o;++t)c[1]=o*e+(1+t),u[0]=a[0],u[1]=a[1],u[2]=s[2*t],u[3]=s[2*t+1],u=ln(r.encrypt(pn(u))),a=u.subarray(0,2),a[0]^=c[0],a[1]^=c[1],s[2*t]=u[2],s[2*t+1]=u[3];return pn(a,s)}function dn(e,t){const r=new Le["aes"+8*e.length](e),i=new Uint32Array([2795939494,2795939494]),n=ln(t);let a=n.subarray(0,2);const s=n.subarray(2),o=n.length/2-1,c=new Uint32Array([0,0]);let u=new Uint32Array(4);for(let e=5;e>=0;--e)for(let t=o-1;t>=0;--t)c[1]=o*e+(t+1),u[0]=a[0]^c[0],u[1]=a[1]^c[1],u[2]=s[2*t],u[3]=s[2*t+1],u=ln(r.decrypt(pn(u))),a=u.subarray(0,2),s[2*t]=u[2],s[2*t+1]=u[3];if(a[0]===i[0]&&a[1]===i[1])return pn(s);throw Error("Key Data Integrity failed")}function ln(e){const{length:t}=e,r=function(e){if(V.isString(e)){const{length:t}=e,r=new ArrayBuffer(t),i=new Uint8Array(r);for(let r=0;r<t;++r)i[r]=e.charCodeAt(r);return r}return new Uint8Array(e).buffer}(e),i=new DataView(r),n=new Uint32Array(t/4);for(let e=0;e<t/4;++e)n[e]=i.getUint32(4*e);return n}function pn(){let e=0;for(let t=0;t<arguments.length;++t)e+=4*arguments[t].length;const t=new ArrayBuffer(e),r=new DataView(t);let i=0;for(let e=0;e<arguments.length;++e){for(let t=0;t<arguments[e].length;++t)r.setUint32(i+4*t,arguments[e][t]);i+=4*arguments[e].length}return new Uint8Array(t)}var yn=/*#__PURE__*/Object.freeze({__proto__:null,wrap:fn,unwrap:dn});function bn(e){const t=8-e.length%8,r=new Uint8Array(e.length+t).fill(t);return r.set(e),r}function mn(e){const t=e.length;if(t>0){const r=e[t-1];if(r>=1){const i=e.subarray(t-r),n=new Uint8Array(r).fill(r);if(V.equalsUint8Array(i,n))return e.subarray(0,t-r)}}throw Error("Invalid padding")}var gn=/*#__PURE__*/Object.freeze({__proto__:null,encode:bn,decode:mn});class wn{constructor(e){e=void 0===e?new Uint8Array([]):V.isString(e)?V.stringToUint8Array(e):new Uint8Array(e),this.data=e}read(e){if(e.length>=1){const t=e[0];if(e.length>=1+t)return this.data=e.subarray(1,1+t),1+this.data.length}throw Error("Invalid symmetric key")}write(){return V.concatUint8Array([new Uint8Array([this.data.length]),this.data])}}class vn{constructor(e){if(e){const{hash:t,cipher:r}=e;this.hash=t,this.cipher=r}else this.hash=null,this.cipher=null}read(e){if(e.length<4||3!==e[0]||1!==e[1])throw Error("Cannot read KDFParams");return this.hash=e[2],this.cipher=e[3],4}write(){return new Uint8Array([3,1,this.hash,this.cipher])}}function _n(e){const t=re.read(re.symmetric,e);return Le[t]}var kn=/*#__PURE__*/Object.freeze({__proto__:null,publicKeyEncrypt:async function(e,t,r,i){switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:{const{n:e,e:i}=t;return{c:await Kn.rsa.encrypt(r,e,i)}}case re.publicKey.elgamal:{const{p:e,g:i,y:n}=t;return Kn.elgamal.encrypt(r,e,i,n)}case re.publicKey.ecdh:{const{oid:e,Q:n,kdfParams:a}=t,{publicKey:s,wrappedKey:o}=await Kn.elliptic.ecdh.encrypt(e,a,r,n,i);return{V:s,C:new wn(o)}}default:return[]}},publicKeyDecrypt:async function(e,t,r,i,n,a){switch(e){case re.publicKey.rsaEncryptSign:case re.publicKey.rsaEncrypt:{const{c:e}=i,{n,e:s}=t,{d:o,p:c,q:u,u:h}=r;return Kn.rsa.decrypt(e,n,s,o,c,u,h,a)}case re.publicKey.elgamal:{const{c1:e,c2:n}=i,s=t.p,o=r.x;return Kn.elgamal.decrypt(e,n,s,o,a)}case re.publicKey.ecdh:{const{oid:e,Q:a,kdfParams:s}=t,{d:o}=r,{V:c,C:u}=i;return Kn.elliptic.ecdh.decrypt(e,s,c,u.data,a,o,n)}default:throw Error("Invalid public key encryption algorithm.")}},parsePublicKeyParams:function(e,t){let r=0;switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:case re.publicKey.rsaSign:{const e=V.readMPI(t.subarray(r));r+=e.length+2;const i=V.readMPI(t.subarray(r));return r+=i.length+2,{read:r,publicParams:{n:e,e:i}}}case re.publicKey.dsa:{const e=V.readMPI(t.subarray(r));r+=e.length+2;const i=V.readMPI(t.subarray(r));r+=i.length+2;const n=V.readMPI(t.subarray(r));r+=n.length+2;const a=V.readMPI(t.subarray(r));return r+=a.length+2,{read:r,publicParams:{p:e,q:i,g:n,y:a}}}case re.publicKey.elgamal:{const e=V.readMPI(t.subarray(r));r+=e.length+2;const i=V.readMPI(t.subarray(r));r+=i.length+2;const n=V.readMPI(t.subarray(r));return r+=n.length+2,{read:r,publicParams:{p:e,g:i,y:n}}}case re.publicKey.ecdsa:{const e=new qi;r+=e.read(t);const i=V.readMPI(t.subarray(r));return r+=i.length+2,{read:r,publicParams:{oid:e,Q:i}}}case re.publicKey.eddsa:{const e=new qi;r+=e.read(t);let i=V.readMPI(t.subarray(r));return r+=i.length+2,i=V.leftPad(i,33),{read:r,publicParams:{oid:e,Q:i}}}case re.publicKey.ecdh:{const e=new qi;r+=e.read(t);const i=V.readMPI(t.subarray(r));r+=i.length+2;const n=new vn;return r+=n.read(t.subarray(r)),{read:r,publicParams:{oid:e,Q:i,kdfParams:n}}}default:throw Error("Invalid public key encryption algorithm.")}},parsePrivateKeyParams:function(e,t,r){let i=0;switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:case re.publicKey.rsaSign:{const e=V.readMPI(t.subarray(i));i+=e.length+2;const r=V.readMPI(t.subarray(i));i+=r.length+2;const n=V.readMPI(t.subarray(i));i+=n.length+2;const a=V.readMPI(t.subarray(i));return i+=a.length+2,{read:i,privateParams:{d:e,p:r,q:n,u:a}}}case re.publicKey.dsa:case re.publicKey.elgamal:{const e=V.readMPI(t.subarray(i));return i+=e.length+2,{read:i,privateParams:{x:e}}}case re.publicKey.ecdsa:case re.publicKey.ecdh:{const e=new $i(r.oid);let n=V.readMPI(t.subarray(i));return i+=n.length+2,n=V.leftPad(n,e.payloadSize),{read:i,privateParams:{d:n}}}case re.publicKey.eddsa:{let e=V.readMPI(t.subarray(i));return i+=e.length+2,e=V.leftPad(e,32),{read:i,privateParams:{seed:e}}}default:throw Error("Invalid public key encryption algorithm.")}},parseEncSessionKeyParams:function(e,t){let r=0;switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:return{c:V.readMPI(t.subarray(r))};case re.publicKey.elgamal:{const e=V.readMPI(t.subarray(r));r+=e.length+2;return{c1:e,c2:V.readMPI(t.subarray(r))}}case re.publicKey.ecdh:{const e=V.readMPI(t.subarray(r));r+=e.length+2;const i=new wn;return i.read(t.subarray(r)),{V:e,C:i}}default:throw Error("Invalid public key encryption algorithm.")}},serializeParams:function(e,t){const r=Object.keys(t).map((e=>{const r=t[e];return V.isUint8Array(r)?V.uint8ArrayToMPI(r):r.write()}));return V.concatUint8Array(r)},generateParams:function(e,t,r){switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:case re.publicKey.rsaSign:return Kn.rsa.generate(t,65537).then((({n:e,e:t,d:r,p:i,q:n,u:a})=>({privateParams:{d:r,p:i,q:n,u:a},publicParams:{n:e,e:t}})));case re.publicKey.ecdsa:return Kn.elliptic.generate(r).then((({oid:e,Q:t,secret:r})=>({privateParams:{d:r},publicParams:{oid:new qi(e),Q:t}})));case re.publicKey.eddsa:return Kn.elliptic.generate(r).then((({oid:e,Q:t,secret:r})=>({privateParams:{seed:r},publicParams:{oid:new qi(e),Q:t}})));case re.publicKey.ecdh:return Kn.elliptic.generate(r).then((({oid:e,Q:t,secret:r,hash:i,cipher:n})=>({privateParams:{d:r},publicParams:{oid:new qi(e),Q:t,kdfParams:new vn({hash:i,cipher:n})}})));case re.publicKey.dsa:case re.publicKey.elgamal:throw Error("Unsupported algorithm for key generation.");default:throw Error("Invalid public key algorithm.")}},validateParams:async function(e,t,r){if(!t||!r)throw Error("Missing key parameters");switch(e){case re.publicKey.rsaEncrypt:case re.publicKey.rsaEncryptSign:case re.publicKey.rsaSign:{const{n:e,e:i}=t,{d:n,p:a,q:s,u:o}=r;return Kn.rsa.validateParams(e,i,n,a,s,o)}case re.publicKey.dsa:{const{p:e,q:i,g:n,y:a}=t,{x:s}=r;return Kn.dsa.validateParams(e,i,n,a,s)}case re.publicKey.elgamal:{const{p:e,g:i,y:n}=t,{x:a}=r;return Kn.elgamal.validateParams(e,i,n,a)}case re.publicKey.ecdsa:case re.publicKey.ecdh:{const i=Kn.elliptic[re.read(re.publicKey,e)],{oid:n,Q:a}=t,{d:s}=r;return i.validateParams(n,a,s)}case re.publicKey.eddsa:{const{oid:e,Q:i}=t,{seed:n}=r;return Kn.elliptic.eddsa.validateParams(e,i,n)}default:throw Error("Invalid public key algorithm.")}},getPrefixRandom:async function(e){const{blockSize:t}=_n(e),r=await wi(t),i=new Uint8Array([r[r.length-2],r[r.length-1]]);return V.concat([r,i])},generateSessionKey:function(e){const{keySize:t}=_n(e);return wi(t)},getAEADMode:function(e){const t=re.read(re.aead,e);return bi[t]},getCipher:_n});const An=V.getWebCrypto(),Sn=V.getNodeCrypto();function En(e,t,r,i){return V.concatUint8Array([t.write(),new Uint8Array([e]),r.write(),V.stringToUint8Array("Anonymous Sender    "),i.subarray(0,20)])}async function Pn(e,t,r,i,n=!1,a=!1){let s;if(n){for(s=0;s<t.length&&0===t[s];s++);t=t.subarray(s)}if(a){for(s=t.length-1;s>=0&&0===t[s];s--);t=t.subarray(0,s+1)}return(await Tr.digest(e,V.concatUint8Array([new Uint8Array([0,0,0,1]),t,i]))).subarray(0,r)}async function xn(e,t){switch(e.type){case"curve25519":{const r=await wi(32),{secretKey:i,sharedKey:n}=await Mn(e,t,null,r);let{publicKey:a}=mi.box.keyPair.fromSecretKey(i);return a=V.concatUint8Array([new Uint8Array([64]),a]),{publicKey:a,sharedKey:n}}case"web":if(e.web&&V.getWebCrypto())try{return await async function(e,t){const r=Xi(e.payloadSize,e.web.web,t);let i=An.generateKey({name:"ECDH",namedCurve:e.web.web},!0,["deriveKey","deriveBits"]),n=An.importKey("jwk",r,{name:"ECDH",namedCurve:e.web.web},!1,[]);[i,n]=await Promise.all([i,n]);let a=An.deriveBits({name:"ECDH",namedCurve:e.web.web,public:n},i.privateKey,e.web.sharedSize),s=An.exportKey("jwk",i.publicKey);[a,s]=await Promise.all([a,s]);const o=new Uint8Array(a);return{publicKey:new Uint8Array(Yi(s)),sharedKey:o}}(e,t)}catch(e){V.printDebugError(e)}break;case"node":return async function(e,t){const r=Sn.createECDH(e.node.node);r.generateKeys();const i=new Uint8Array(r.computeSecret(t));return{publicKey:new Uint8Array(r.getPublicKey()),sharedKey:i}}(e,t)}return async function(e,t){const r=await Ni(e.name),i=await e.genKeyPair();t=Fi(r,t);const n=Oi(r,i.privateKey),a=i.publicKey,s=n.derive(t.getPublic()),o=r.curve.p.byteLength(),c=s.toArrayLike(Uint8Array,"be",o);return{publicKey:a,sharedKey:c}}(e,t)}async function Mn(e,t,r,i){if(i.length!==e.payloadSize){const t=new Uint8Array(e.payloadSize);t.set(i,e.payloadSize-i.length),i=t}switch(e.type){case"curve25519":{const e=i.slice().reverse();return{secretKey:e,sharedKey:mi.scalarMult(e,t.subarray(1))}}case"web":if(e.web&&V.getWebCrypto())try{return await async function(e,t,r,i){const n=Qi(e.payloadSize,e.web.web,r,i);let a=An.importKey("jwk",n,{name:"ECDH",namedCurve:e.web.web},!0,["deriveKey","deriveBits"]);const s=Xi(e.payloadSize,e.web.web,t);let o=An.importKey("jwk",s,{name:"ECDH",namedCurve:e.web.web},!0,[]);[a,o]=await Promise.all([a,o]);let c=An.deriveBits({name:"ECDH",namedCurve:e.web.web,public:o},a,e.web.sharedSize),u=An.exportKey("jwk",a);[c,u]=await Promise.all([c,u]);const h=new Uint8Array(c);return{secretKey:J(u.d),sharedKey:h}}(e,t,r,i)}catch(e){V.printDebugError(e)}break;case"node":return async function(e,t,r){const i=Sn.createECDH(e.node.node);i.setPrivateKey(r);const n=new Uint8Array(i.computeSecret(t));return{secretKey:new Uint8Array(i.getPrivateKey()),sharedKey:n}}(e,t,i)}return async function(e,t,r){const i=await Ni(e.name);t=Fi(i,t),r=Oi(i,r);const n=new Uint8Array(r.getPrivate()),a=r.derive(t.getPublic()),s=i.curve.p.byteLength(),o=a.toArrayLike(Uint8Array,"be",s);return{secretKey:n,sharedKey:o}}(e,t,i)}var Cn=/*#__PURE__*/Object.freeze({__proto__:null,validateParams:async function(e,t,r){return Zi(re.publicKey.ecdh,e,t,r)},encrypt:async function(e,t,r,i,n){const a=bn(r),s=new $i(e),{publicKey:o,sharedKey:c}=await xn(s,i),u=En(re.publicKey.ecdh,e,t,n),{keySize:h}=_n(t.cipher);return{publicKey:o,wrappedKey:fn(await Pn(t.hash,c,h,u),a)}},decrypt:async function(e,t,r,i,n,a,s){const o=new $i(e),{sharedKey:c}=await Mn(o,r,n,a),u=En(re.publicKey.ecdh,e,t,s),{keySize:h}=_n(t.cipher);let f;for(let e=0;e<3;e++)try{return mn(dn(await Pn(t.hash,c,h,u,1===e,2===e),i))}catch(e){f=e}throw f}});var Kn={rsa:Ti,elgamal:zi,elliptic:/*#__PURE__*/Object.freeze({__proto__:null,Curve:$i,ecdh:Cn,ecdsa:un,eddsa:hn,generate:async function(e){const t=await V.getBigInteger();e=new $i(e);const r=await e.genKeyPair(),i=new t(r.publicKey).toUint8Array(),n=new t(r.privateKey).toUint8Array("be",e.payloadSize);return{oid:e.oid,Q:i,secret:n,hash:e.hash,cipher:e.cipher}},getPreferredHashAlgo:function(e){return Vi[re.write(re.curve,e.toHex())].hash}}),dsa:/*#__PURE__*/Object.freeze({__proto__:null,sign:async function(e,t,r,i,n,a){const s=await V.getBigInteger(),o=new s(1);let c,u,h,f;i=new s(i),n=new s(n),r=new s(r),a=new s(a),r=r.mod(i),a=a.mod(n);const d=new s(t.subarray(0,n.byteLength())).mod(n);for(;;){if(c=await vi(o,n),u=r.modExp(c,i).imod(n),u.isZero())continue;const e=a.mul(u).imod(n);if(f=d.add(e).imod(n),h=c.modInv(n).imul(f).imod(n),!h.isZero())break}return{r:u.toUint8Array("be",n.byteLength()),s:h.toUint8Array("be",n.byteLength())}},verify:async function(e,t,r,i,n,a,s,o){const c=await V.getBigInteger(),u=new c(0);if(t=new c(t),r=new c(r),a=new c(a),s=new c(s),n=new c(n),o=new c(o),t.lte(u)||t.gte(s)||r.lte(u)||r.gte(s))return V.printDebug("invalid DSA Signature"),!1;const h=new c(i.subarray(0,s.byteLength())).imod(s),f=r.modInv(s);if(f.isZero())return V.printDebug("invalid DSA Signature"),!1;n=n.mod(a),o=o.mod(a);const d=h.mul(f).imod(s),l=t.mul(f).imod(s),p=n.modExp(d,a),y=o.modExp(l,a);return p.mul(y).imod(a).imod(s).equal(t)},validateParams:async function(e,t,r,i,n){const a=await V.getBigInteger();e=new a(e),t=new a(t),r=new a(r),i=new a(i);const s=new a(1);if(r.lte(s)||r.gte(e))return!1;if(!e.dec().mod(t).isZero())return!1;if(!r.modExp(t,e).isOne())return!1;const o=new a(t.bitLength()),c=new a(150);if(o.lt(c)||!await Si(t,null,32))return!1;n=new a(n);const u=new a(2),h=await vi(u.leftShift(o.dec()),u.leftShift(o)),f=t.mul(h).add(n);return!!i.equal(r.modExp(f,e))}}),nacl:mi};var Dn=/*#__PURE__*/Object.freeze({__proto__:null,parseSignatureParams:function(e,t){let r=0;switch(e){case re.publicKey.rsaEncryptSign:case re.publicKey.rsaEncrypt:case re.publicKey.rsaSign:return{s:V.readMPI(t.subarray(r))};case re.publicKey.dsa:case re.publicKey.ecdsa:{const e=V.readMPI(t.subarray(r));r+=e.length+2;return{r:e,s:V.readMPI(t.subarray(r))}}case re.publicKey.eddsa:{let e=V.readMPI(t.subarray(r));r+=e.length+2,e=V.leftPad(e,32);let i=V.readMPI(t.subarray(r));return i=V.leftPad(i,32),{r:e,s:i}}default:throw Error("Invalid signature algorithm.")}},verify:async function(e,t,r,i,n,a){switch(e){case re.publicKey.rsaEncryptSign:case re.publicKey.rsaEncrypt:case re.publicKey.rsaSign:{const{n:e,e:s}=i,o=V.leftPad(r.s,e.length);return Kn.rsa.verify(t,n,o,e,s,a)}case re.publicKey.dsa:{const{g:e,p:n,q:s,y:o}=i,{r:c,s:u}=r;return Kn.dsa.verify(t,c,u,a,e,n,s,o)}case re.publicKey.ecdsa:{const{oid:e,Q:s}=i,o=new Kn.elliptic.Curve(e).payloadSize,c=V.leftPad(r.r,o),u=V.leftPad(r.s,o);return Kn.elliptic.ecdsa.verify(e,t,{r:c,s:u},n,s,a)}case re.publicKey.eddsa:{const{oid:e,Q:s}=i;return Kn.elliptic.eddsa.verify(e,t,r,n,s,a)}default:throw Error("Invalid signature algorithm.")}},sign:async function(e,t,r,i,n,a){if(!r||!i)throw Error("Missing key parameters");switch(e){case re.publicKey.rsaEncryptSign:case re.publicKey.rsaEncrypt:case re.publicKey.rsaSign:{const{n:e,e:s}=r,{d:o,p:c,q:u,u:h}=i;return{s:await Kn.rsa.sign(t,n,e,s,o,c,u,h,a)}}case re.publicKey.dsa:{const{g:e,p:n,q:s}=r,{x:o}=i;return Kn.dsa.sign(t,a,e,n,s,o)}case re.publicKey.elgamal:throw Error("Signing with Elgamal is not defined in the OpenPGP standard.");case re.publicKey.ecdsa:{const{oid:e,Q:s}=r,{d:o}=i;return Kn.elliptic.ecdsa.sign(e,t,n,s,o,a)}case re.publicKey.eddsa:{const{oid:e,Q:s}=r,{seed:o}=i;return Kn.elliptic.eddsa.sign(e,t,n,s,o,a)}default:throw Error("Invalid signature algorithm.")}}});const Rn={cipher:Le,hash:Tr,mode:bi,publicKey:Kn,signature:Dn,random:ki,pkcs1:Ki,pkcs5:gn,aesKW:yn};Object.assign(Rn,kn);var In="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function Un(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)}const Bn={arraySet:function(e,t,r,i,n){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+i),n);else for(let a=0;a<i;a++)e[n+a]=t[r+a]},flattenChunks:function(e){let t,r,i,n,a;for(i=0,t=0,r=e.length;t<r;t++)i+=e[t].length;const s=new Uint8Array(i);for(n=0,t=0,r=e.length;t<r;t++)a=e[t],s.set(a,n),n+=a.length;return s}},Tn={arraySet:function(e,t,r,i,n){for(let a=0;a<i;a++)e[n+a]=t[r+a]},flattenChunks:function(e){return[].concat.apply([],e)}};let zn=In?Uint8Array:Array,qn=In?Uint16Array:Array,On=In?Int32Array:Array,Fn=In?Bn.flattenChunks:Tn.flattenChunks,Nn=In?Bn.arraySet:Tn.arraySet;function jn(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ln=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Wn=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Hn=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Gn=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Vn=Array(576);jn(Vn);const $n=Array(60);jn($n);const Zn=Array(512);jn(Zn);const Yn=Array(256);jn(Yn);const Xn=Array(29);jn(Xn);const Qn=Array(30);function Jn(e,t,r,i,n){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=e&&e.length}let ea,ta,ra;function ia(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function na(e){return e<256?Zn[e]:Zn[256+(e>>>7)]}function aa(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function sa(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<<e.bi_valid&65535,aa(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function oa(e,t,r){sa(e,r[2*t],r[2*t+1])}function ca(e,t){let r=0;do{r|=1&e,e>>>=1,r<<=1}while(--t>0);return r>>>1}function ua(e,t,r){const i=Array(16);let n,a,s=0;for(n=1;n<=15;n++)i[n]=s=s+r[n-1]<<1;for(a=0;a<=t;a++){const t=e[2*a+1];0!==t&&(e[2*a]=ca(i[t]++,t))}}function ha(e){let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function fa(e){e.bi_valid>8?aa(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function da(e,t,r,i){const n=2*t,a=2*r;return e[n]<e[a]||e[n]===e[a]&&i[t]<=i[r]}function la(e,t,r){const i=e.heap[r];let n=r<<1;for(;n<=e.heap_len&&(n<e.heap_len&&da(t,e.heap[n+1],e.heap[n],e.depth)&&n++,!da(t,i,e.heap[n],e.depth));)e.heap[r]=e.heap[n],r=n,n<<=1;e.heap[r]=i}function pa(e,t,r){let i,n,a,s,o=0;if(0!==e.last_lit)do{i=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],n=e.pending_buf[e.l_buf+o],o++,0===i?oa(e,n,t):(a=Yn[n],oa(e,a+256+1,t),s=Ln[a],0!==s&&(n-=Xn[a],sa(e,n,s)),i--,a=na(i),oa(e,a,r),s=Wn[a],0!==s&&(i-=Qn[a],sa(e,i,s)))}while(o<e.last_lit);oa(e,256,t)}function ya(e,t){const r=t.dyn_tree,i=t.stat_desc.static_tree,n=t.stat_desc.has_stree,a=t.stat_desc.elems;let s,o,c,u=-1;for(e.heap_len=0,e.heap_max=573,s=0;s<a;s++)0!==r[2*s]?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):r[2*s+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,r[2*c]=1,e.depth[c]=0,e.opt_len--,n&&(e.static_len-=i[2*c+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)la(e,r,s);c=a;do{s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],la(e,r,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,r[2*c]=r[2*s]+r[2*o],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,r[2*s+1]=r[2*o+1]=c,e.heap[1]=c++,la(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){const r=t.dyn_tree,i=t.max_code,n=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,c=t.stat_desc.max_length;let u,h,f,d,l,p,y=0;for(d=0;d<=15;d++)e.bl_count[d]=0;for(r[2*e.heap[e.heap_max]+1]=0,u=e.heap_max+1;u<573;u++)h=e.heap[u],d=r[2*r[2*h+1]+1]+1,d>c&&(d=c,y++),r[2*h+1]=d,h>i||(e.bl_count[d]++,l=0,h>=o&&(l=s[h-o]),p=r[2*h],e.opt_len+=p*(d+l),a&&(e.static_len+=p*(n[2*h+1]+l)));if(0!==y){do{for(d=c-1;0===e.bl_count[d];)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[c]--,y-=2}while(y>0);for(d=c;0!==d;d--)for(h=e.bl_count[d];0!==h;)f=e.heap[--u],f>i||(r[2*f+1]!==d&&(e.opt_len+=(d-r[2*f+1])*r[2*f],r[2*f+1]=d),h--)}}(e,t),ua(r,u,e.bl_count)}function ba(e,t,r){let i,n,a=-1,s=t[1],o=0,c=7,u=4;for(0===s&&(c=138,u=3),t[2*(r+1)+1]=65535,i=0;i<=r;i++)n=s,s=t[2*(i+1)+1],++o<c&&n===s||(o<u?e.bl_tree[2*n]+=o:0!==n?(n!==a&&e.bl_tree[2*n]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,o=0,a=n,0===s?(c=138,u=3):n===s?(c=6,u=3):(c=7,u=4))}function ma(e,t,r){let i,n,a=-1,s=t[1],o=0,c=7,u=4;for(0===s&&(c=138,u=3),i=0;i<=r;i++)if(n=s,s=t[2*(i+1)+1],!(++o<c&&n===s)){if(o<u)do{oa(e,n,e.bl_tree)}while(0!=--o);else 0!==n?(n!==a&&(oa(e,n,e.bl_tree),o--),oa(e,16,e.bl_tree),sa(e,o-3,2)):o<=10?(oa(e,17,e.bl_tree),sa(e,o-3,3)):(oa(e,18,e.bl_tree),sa(e,o-11,7));o=0,a=n,0===s?(c=138,u=3):n===s?(c=6,u=3):(c=7,u=4)}}jn(Qn);let ga=!1;function wa(e){ga||(!function(){let e,t,r,i,n;const a=Array(16);for(r=0,i=0;i<28;i++)for(Xn[i]=r,e=0;e<1<<Ln[i];e++)Yn[r++]=i;for(Yn[r-1]=i,n=0,i=0;i<16;i++)for(Qn[i]=n,e=0;e<1<<Wn[i];e++)Zn[n++]=i;for(n>>=7;i<30;i++)for(Qn[i]=n<<7,e=0;e<1<<Wn[i]-7;e++)Zn[256+n++]=i;for(t=0;t<=15;t++)a[t]=0;for(e=0;e<=143;)Vn[2*e+1]=8,e++,a[8]++;for(;e<=255;)Vn[2*e+1]=9,e++,a[9]++;for(;e<=279;)Vn[2*e+1]=7,e++,a[7]++;for(;e<=287;)Vn[2*e+1]=8,e++,a[8]++;for(ua(Vn,287,a),e=0;e<30;e++)$n[2*e+1]=5,$n[2*e]=ca(e,5);ea=new Jn(Vn,Ln,257,286,15),ta=new Jn($n,Wn,0,30,15),ra=new Jn([],Hn,0,19,7)}(),ga=!0),e.l_desc=new ia(e.dyn_ltree,ea),e.d_desc=new ia(e.dyn_dtree,ta),e.bl_desc=new ia(e.bl_tree,ra),e.bi_buf=0,e.bi_valid=0,ha(e)}function va(e,t,r,i){sa(e,0+(i?1:0),3),function(e,t,r,i){fa(e),i&&(aa(e,r),aa(e,~r)),Nn(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}function _a(e){sa(e,2,3),oa(e,256,Vn),function(e){16===e.bi_valid?(aa(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}function ka(e,t,r,i){let n,a,s=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=function(e){let t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),ya(e,e.l_desc),ya(e,e.d_desc),s=function(e){let t;for(ba(e,e.dyn_ltree,e.l_desc.max_code),ba(e,e.dyn_dtree,e.d_desc.max_code),ya(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*Gn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),n=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=n&&(n=a)):n=a=r+5,r+4<=n&&-1!==t?va(e,t,r,i):4===e.strategy||a===n?(sa(e,2+(i?1:0),3),pa(e,Vn,$n)):(sa(e,4+(i?1:0),3),function(e,t,r,i){let n;for(sa(e,t-257,5),sa(e,r-1,5),sa(e,i-4,4),n=0;n<i;n++)sa(e,e.bl_tree[2*Gn[n]+1],3);ma(e,e.dyn_ltree,t-1),ma(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),pa(e,e.dyn_ltree,e.dyn_dtree)),ha(e),i&&fa(e)}function Aa(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(Yn[r]+256+1)]++,e.dyn_dtree[2*na(t)]++),e.last_lit===e.lit_bufsize-1}function Sa(e,t,r,i){let n=65535&e|0,a=e>>>16&65535|0,s=0;for(;0!==r;){s=r>2e3?2e3:r,r-=s;do{n=n+t[i++]|0,a=a+n|0}while(--s);n%=65521,a%=65521}return n|a<<16|0}const Ea=function(){let e;const t=[];for(let r=0;r<256;r++){e=r;for(let t=0;t<8;t++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();function Pa(e,t,r,i){const n=Ea,a=i+r;e^=-1;for(let r=i;r<a;r++)e=e>>>8^n[255&(e^t[r])];return-1^e}var xa={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Ma(e,t){return e.msg=xa[t],t}function Ca(e){return(e<<1)-(e>4?9:0)}function Ka(e){let t=e.length;for(;--t>=0;)e[t]=0}function Da(e){const t=e.state;let r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(Nn(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function Ra(e,t){ka(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Da(e.strm)}function Ia(e,t){e.pending_buf[e.pending++]=t}function Ua(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function Ba(e,t,r,i){let n=e.avail_in;return n>i&&(n=i),0===n?0:(e.avail_in-=n,Nn(t,e.input,e.next_in,n,r),1===e.state.wrap?e.adler=Sa(e.adler,t,n,r):2===e.state.wrap&&(e.adler=Pa(e.adler,t,n,r)),e.next_in+=n,e.total_in+=n,n)}function Ta(e,t){let r,i,n=e.max_chain_length,a=e.strstart,s=e.prev_length,o=e.nice_match;const c=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,u=e.window,h=e.w_mask,f=e.prev,d=e.strstart+258;let l=u[a+s-1],p=u[a+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(r=t,u[r+s]===p&&u[r+s-1]===l&&u[r]===u[a]&&u[++r]===u[a+1]){a+=2,r++;do{}while(u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&u[++a]===u[++r]&&a<d);if(i=258-(d-a),a=d-258,i>s){if(e.match_start=t,s=i,i>=o)break;l=u[a+s-1],p=u[a+s]}}}while((t=f[t&h])>c&&0!=--n);return s<=e.lookahead?s:e.lookahead}function za(e){const t=e.w_size;let r,i,n,a,s;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-262)){Nn(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,i=e.hash_size,r=i;do{n=e.head[--r],e.head[r]=n>=t?n-t:0}while(--i);i=t,r=i;do{n=e.prev[--r],e.prev[r]=n>=t?n-t:0}while(--i);a+=t}if(0===e.strm.avail_in)break;if(i=Ba(e.strm,e.window,e.strstart+e.lookahead,a),e.lookahead+=i,e.lookahead+e.insert>=3)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+3-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)}function qa(e,t){let r,i;for(;;){if(e.lookahead<262){if(za(e),e.lookahead<262&&0===t)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-262&&(e.match_length=Ta(e,r)),e.match_length>=3)if(i=Aa(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else i=Aa(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ra(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(Ra(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Ra(e,!1),0===e.strm.avail_out)?1:2}function Oa(e,t){let r,i,n;for(;;){if(e.lookahead<262){if(za(e),e.lookahead<262&&0===t)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-262&&(e.match_length=Ta(e,r),e.match_length<=5&&(1===e.strategy||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,i=Aa(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,i&&(Ra(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(i=Aa(e,0,e.window[e.strstart-1]),i&&Ra(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Aa(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(Ra(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Ra(e,!1),0===e.strm.avail_out)?1:2}class Fa{constructor(e,t,r,i,n){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=i,this.func=n}}const Na=[new Fa(0,0,0,0,(function(e,t){let r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(za(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;const i=e.block_start+r;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,Ra(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(Ra(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(Ra(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(Ra(e,!1),e.strm.avail_out),1)})),new Fa(4,4,8,4,qa),new Fa(4,5,16,8,qa),new Fa(4,6,32,32,qa),new Fa(4,4,16,16,Oa),new Fa(8,16,32,32,Oa),new Fa(8,16,128,128,Oa),new Fa(8,32,128,256,Oa),new Fa(32,128,258,1024,Oa),new Fa(32,258,258,4096,Oa)];class ja{constructor(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new qn(1146),this.dyn_dtree=new qn(122),this.bl_tree=new qn(78),Ka(this.dyn_ltree),Ka(this.dyn_dtree),Ka(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new qn(16),this.heap=new qn(573),Ka(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new qn(573),Ka(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}}function La(e){const t=function(e){let t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:113,e.adler=2===t.wrap?0:1,t.last_flush=0,wa(t),0):Ma(e,-2)}(e);return 0===t&&function(e){e.window_size=2*e.w_size,Ka(e.head),e.max_lazy_match=Na[e.level].max_lazy,e.good_match=Na[e.level].good_length,e.nice_match=Na[e.level].nice_length,e.max_chain_length=Na[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0}(e.state),t}function Wa(e,t){let r,i,n,a;if(!e||!e.state||t>5||t<0)return e?Ma(e,-2):-2;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||666===i.status&&4!==t)return Ma(e,0===e.avail_out?-5:-2);if(i.strm=e,r=i.last_flush,i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,Ia(i,31),Ia(i,139),Ia(i,8),i.gzhead?(Ia(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ia(i,255&i.gzhead.time),Ia(i,i.gzhead.time>>8&255),Ia(i,i.gzhead.time>>16&255),Ia(i,i.gzhead.time>>24&255),Ia(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),Ia(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Ia(i,255&i.gzhead.extra.length),Ia(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Pa(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(Ia(i,0),Ia(i,0),Ia(i,0),Ia(i,0),Ia(i,0),Ia(i,9===i.level?2:i.strategy>=2||i.level<2?4:0),Ia(i,3),i.status=113);else{let t=8+(i.w_bits-8<<4)<<8,r=-1;r=i.strategy>=2||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=r<<6,0!==i.strstart&&(t|=32),t+=31-t%31,i.status=113,Ua(i,t),0!==i.strstart&&(Ua(i,e.adler>>>16),Ua(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),Da(e),n=i.pending,i.pending!==i.pending_buf_size));)Ia(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),Da(e),n=i.pending,i.pending===i.pending_buf_size)){a=1;break}a=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Ia(i,a)}while(0!==a);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),0===a&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),Da(e),n=i.pending,i.pending===i.pending_buf_size)){a=1;break}a=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Ia(i,a)}while(0!==a);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pa(e.adler,i.pending_buf,i.pending-n,n)),0===a&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&Da(e),i.pending+2<=i.pending_buf_size&&(Ia(i,255&e.adler),Ia(i,e.adler>>8&255),e.adler=0,i.status=113)):i.status=113),0!==i.pending){if(Da(e),0===e.avail_out)return i.last_flush=-1,0}else if(0===e.avail_in&&Ca(t)<=Ca(r)&&4!==t)return Ma(e,-5);if(666===i.status&&0!==e.avail_in)return Ma(e,-5);if(0!==e.avail_in||0!==i.lookahead||0!==t&&666!==i.status){var s=2===i.strategy?function(e,t){let r;for(;;){if(0===e.lookahead&&(za(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=Aa(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(Ra(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(Ra(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Ra(e,!1),0===e.strm.avail_out)?1:2}(i,t):3===i.strategy?function(e,t){let r,i,n,a;const s=e.window;for(;;){if(e.lookahead<=258){if(za(e),e.lookahead<=258&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=e.strstart-1,i=s[n],i===s[++n]&&i===s[++n]&&i===s[++n])){a=e.strstart+258;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<a);e.match_length=258-(a-n),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=Aa(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=Aa(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(Ra(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(Ra(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Ra(e,!1),0===e.strm.avail_out)?1:2}(i,t):Na[i.level].func(i,t);if(3!==s&&4!==s||(i.status=666),1===s||3===s)return 0===e.avail_out&&(i.last_flush=-1),0;if(2===s&&(1===t?_a(i):5!==t&&(va(i,0,0,!1),3===t&&(Ka(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Da(e),0===e.avail_out))return i.last_flush=-1,0}return 4!==t?0:i.wrap<=0?1:(2===i.wrap?(Ia(i,255&e.adler),Ia(i,e.adler>>8&255),Ia(i,e.adler>>16&255),Ia(i,e.adler>>24&255),Ia(i,255&e.total_in),Ia(i,e.total_in>>8&255),Ia(i,e.total_in>>16&255),Ia(i,e.total_in>>24&255)):(Ua(i,e.adler>>>16),Ua(i,65535&e.adler)),Da(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?0:1)}try{String.fromCharCode.call(null,0)}catch(e){}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){}const Ha=new zn(256);for(let e=0;e<256;e++)Ha[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;function Ga(e){let t,r,i,n,a=0;const s=e.length;for(i=0;i<s;i++)t=e.charCodeAt(i),55296==(64512&t)&&i+1<s&&(r=e.charCodeAt(i+1),56320==(64512&r)&&(t=65536+(t-55296<<10)+(r-56320),i++)),a+=t<128?1:t<2048?2:t<65536?3:4;const o=new zn(a);for(n=0,i=0;n<a;i++)t=e.charCodeAt(i),55296==(64512&t)&&i+1<s&&(r=e.charCodeAt(i+1),56320==(64512&r)&&(t=65536+(t-55296<<10)+(r-56320),i++)),t<128?o[n++]=t:t<2048?(o[n++]=192|t>>>6,o[n++]=128|63&t):t<65536?(o[n++]=224|t>>>12,o[n++]=128|t>>>6&63,o[n++]=128|63&t):(o[n++]=240|t>>>18,o[n++]=128|t>>>12&63,o[n++]=128|t>>>6&63,o[n++]=128|63&t);return o}Ha[254]=Ha[254]=1;class Va{constructor(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}}class $a{constructor(e){this.options={level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,...e||{}};const t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Va,this.strm.avail_out=0;var r,i,n=function(e,t,r,i,n,a){if(!e)return-2;let s=1;if(-1===t&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),n<1||n>9||8!==r||i<8||i>15||t<0||t>9||a<0||a>4)return Ma(e,-2);8===i&&(i=9);const o=new ja;return e.state=o,o.strm=e,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new zn(2*o.w_size),o.head=new qn(o.hash_size),o.prev=new qn(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new zn(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=a,o.method=r,La(e)}(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw Error(xa[n]);if(t.header&&(r=this.strm,i=t.header,r&&r.state&&(2!==r.state.wrap||(r.state.gzhead=i))),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ga(t.dictionary):t.dictionary instanceof ArrayBuffer?new Uint8Array(t.dictionary):t.dictionary,0!==(n=function(e,t){let r,i,n,a,s,o,c,u,h=t.length;if(!e||!e.state)return-2;if(r=e.state,a=r.wrap,2===a||1===a&&42!==r.status||r.lookahead)return-2;for(1===a&&(e.adler=Sa(e.adler,t,h,0)),r.wrap=0,h>=r.w_size&&(0===a&&(Ka(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new zn(r.w_size),Nn(u,t,h-r.w_size,r.w_size,0),t=u,h=r.w_size),s=e.avail_in,o=e.next_in,c=e.input,e.avail_in=h,e.next_in=0,e.input=t,za(r);r.lookahead>=3;){i=r.strstart,n=r.lookahead-2;do{r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+3-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++}while(--n);r.strstart=i,r.lookahead=2,za(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=c,e.avail_in=s,r.wrap=a,0}(this.strm,e)))throw Error(xa[n]);this._dict_set=!0}}push(e,t){const{strm:r,options:{chunkSize:i}}=this;var n,a;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,"string"==typeof e?r.input=Ga(e):e instanceof ArrayBuffer?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;do{if(0===r.avail_out&&(r.output=new zn(i),r.next_out=0,r.avail_out=i),1!==(n=Wa(r,a))&&0!==n)return this.onEnd(n),this.ended=!0,!1;0!==r.avail_out&&(0!==r.avail_in||4!==a&&2!==a)||this.onData(Un(r.output,r.next_out))}while((r.avail_in>0||0===r.avail_out)&&1!==n);return 4===a?(n=function(e){let t;return e&&e.state?(t=e.state.status,42!==t&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?Ma(e,-2):(e.state=null,113===t?Ma(e,-3):0)):-2}(this.strm),this.onEnd(n),this.ended=!0,0===n):2!==a||(this.onEnd(0),r.avail_out=0,!0)}onData(e){this.chunks.push(e)}onEnd(e){0===e&&(this.result=Fn(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}}function Za(e,t){let r,i,n,a,s,o,c,u,h,f;const d=e.state;r=e.next_in;const l=e.input,p=r+(e.avail_in-5);i=e.next_out;const y=e.output,b=i-(t-e.avail_out),m=i+(e.avail_out-257),g=d.dmax,w=d.wsize,v=d.whave,_=d.wnext,k=d.window;n=d.hold,a=d.bits;const A=d.lencode,S=d.distcode,E=(1<<d.lenbits)-1,P=(1<<d.distbits)-1;e:do{a<15&&(n+=l[r++]<<a,a+=8,n+=l[r++]<<a,a+=8),s=A[n&E];t:for(;;){if(o=s>>>24,n>>>=o,a-=o,o=s>>>16&255,0===o)y[i++]=65535&s;else{if(!(16&o)){if(0==(64&o)){s=A[(65535&s)+(n&(1<<o)-1)];continue t}if(32&o){d.mode=12;break e}e.msg="invalid literal/length code",d.mode=30;break e}c=65535&s,o&=15,o&&(a<o&&(n+=l[r++]<<a,a+=8),c+=n&(1<<o)-1,n>>>=o,a-=o),a<15&&(n+=l[r++]<<a,a+=8,n+=l[r++]<<a,a+=8),s=S[n&P];r:for(;;){if(o=s>>>24,n>>>=o,a-=o,o=s>>>16&255,!(16&o)){if(0==(64&o)){s=S[(65535&s)+(n&(1<<o)-1)];continue r}e.msg="invalid distance code",d.mode=30;break e}if(u=65535&s,o&=15,a<o&&(n+=l[r++]<<a,a+=8,a<o&&(n+=l[r++]<<a,a+=8)),u+=n&(1<<o)-1,u>g){e.msg="invalid distance too far back",d.mode=30;break e}if(n>>>=o,a-=o,o=i-b,u>o){if(o=u-o,o>v&&d.sane){e.msg="invalid distance too far back",d.mode=30;break e}if(h=0,f=k,0===_){if(h+=w-o,o<c){c-=o;do{y[i++]=k[h++]}while(--o);h=i-u,f=y}}else if(_<o){if(h+=w+_-o,o-=_,o<c){c-=o;do{y[i++]=k[h++]}while(--o);if(h=0,_<c){o=_,c-=o;do{y[i++]=k[h++]}while(--o);h=i-u,f=y}}}else if(h+=_-o,o<c){c-=o;do{y[i++]=k[h++]}while(--o);h=i-u,f=y}for(;c>2;)y[i++]=f[h++],y[i++]=f[h++],y[i++]=f[h++],c-=3;c&&(y[i++]=f[h++],c>1&&(y[i++]=f[h++]))}else{h=i-u;do{y[i++]=y[h++],y[i++]=y[h++],y[i++]=y[h++],c-=3}while(c>2);c&&(y[i++]=y[h++],c>1&&(y[i++]=y[h++]))}break}}break}}while(r<p&&i<m);c=a>>3,r-=c,a-=c<<3,n&=(1<<a)-1,e.next_in=r,e.next_out=i,e.avail_in=r<p?p-r+5:5-(r-p),e.avail_out=i<m?m-i+257:257-(i-m),d.hold=n,d.bits=a}const Ya=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Xa=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Qa=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Ja=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function es(e,t,r,i,n,a,s,o){const c=o.bits;let u,h,f,d,l,p=0,y=0,b=0,m=0,g=0,w=0,v=0,_=0,k=0,A=0,S=null,E=0;const P=new qn(16),x=new qn(16);let M,C,K,D=null,R=0;for(p=0;p<=15;p++)P[p]=0;for(y=0;y<i;y++)P[t[r+y]]++;for(g=c,m=15;m>=1&&0===P[m];m--);if(g>m&&(g=m),0===m)return n[a++]=20971520,n[a++]=20971520,o.bits=1,0;for(b=1;b<m&&0===P[b];b++);for(g<b&&(g=b),_=1,p=1;p<=15;p++)if(_<<=1,_-=P[p],_<0)return-1;if(_>0&&(0===e||1!==m))return-1;for(x[1]=0,p=1;p<15;p++)x[p+1]=x[p]+P[p];for(y=0;y<i;y++)0!==t[r+y]&&(s[x[t[r+y]]++]=y);0===e?(S=D=s,l=19):1===e?(S=Ya,E-=257,D=Xa,R-=257,l=256):(S=Qa,D=Ja,l=-1),A=0,y=0,p=b,d=a,w=g,v=0,f=-1,k=1<<g;const I=k-1;if(1===e&&k>852||2===e&&k>592)return 1;for(;;){M=p-v,s[y]<l?(C=0,K=s[y]):s[y]>l?(C=D[R+s[y]],K=S[E+s[y]]):(C=96,K=0),u=1<<p-v,h=1<<w,b=h;do{h-=u,n[d+(A>>v)+h]=M<<24|C<<16|K|0}while(0!==h);for(u=1<<p-1;A&u;)u>>=1;if(0!==u?(A&=u-1,A+=u):A=0,y++,0==--P[p]){if(p===m)break;p=t[r+s[y]]}if(p>g&&(A&I)!==f){for(0===v&&(v=g),d+=b,w=p-v,_=1<<w;w+v<m&&(_-=P[w+v],!(_<=0));)w++,_<<=1;if(k+=1<<w,1===e&&k>852||2===e&&k>592)return 1;f=A&I,n[f]=g<<24|w<<16|d-a|0}}return 0!==A&&(n[d+A]=p-v<<24|64<<16|0),o.bits=g,0}function ts(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}class rs{constructor(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new qn(320),this.work=new qn(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}}function is(e){let t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,function(e){let t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new On(852),t.distcode=t.distdyn=new On(592),t.sane=1,t.back=-1,0):-2}(e)):-2}function ns(e,t){let r,i;return e?(i=new rs,e.state=i,i.window=null,r=function(e,t){let r,i;return e&&e.state?(i=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?-2:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=r,i.wbits=t,is(e))):-2}(e,t),0!==r&&(e.state=null),r):-2}let as,ss,os=!0;function cs(e){if(os){let t;for(as=new On(512),ss=new On(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(es(1,e.lens,0,288,as,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;es(2,e.lens,0,32,ss,0,e.work,{bits:5}),os=!1}e.lencode=as,e.lenbits=9,e.distcode=ss,e.distbits=5}function us(e,t,r,i){let n;const a=e.state;return null===a.window&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new zn(a.wsize)),i>=a.wsize?(Nn(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(n=a.wsize-a.wnext,n>i&&(n=i),Nn(a.window,t,r-i,n,a.wnext),(i-=n)?(Nn(a.window,t,r-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=n,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=n))),0}function hs(e,t){let r,i,n,a,s,o,c,u,h,f,d,l,p,y,b,m,g,w,v,_,k,A,S,E,P=0,x=new zn(4);const M=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return-2;r=e.state,12===r.mode&&(r.mode=13),s=e.next_out,n=e.output,c=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,u=r.hold,h=r.bits,f=o,d=c,A=0;e:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;h<16;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(2&r.wrap&&35615===u){r.check=0,x[0]=255&u,x[1]=u>>>8&255,r.check=Pa(r.check,x,2,0),u=0,h=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(u>>>=4,h-=4,k=8+(15&u),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,u=0,h=0;break;case 2:for(;h<16;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(r.flags=u,8!=(255&r.flags)){e.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=Pa(r.check,x,2,0)),u=0,h=0,r.mode=3;case 3:for(;h<32;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.head&&(r.head.time=u),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,x[2]=u>>>16&255,x[3]=u>>>24&255,r.check=Pa(r.check,x,4,0)),u=0,h=0,r.mode=4;case 4:for(;h<16;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=Pa(r.check,x,2,0)),u=0,h=0,r.mode=5;case 5:if(1024&r.flags){for(;h<16;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=Pa(r.check,x,2,0)),u=0,h=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(l=r.length,l>o&&(l=o),l&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=Array(r.head.extra_len)),Nn(r.head.extra,i,a,l,k)),512&r.flags&&(r.check=Pa(r.check,i,l,a)),o-=l,a+=l,r.length-=l),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;l=0;do{k=i[a+l++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&l<o);if(512&r.flags&&(r.check=Pa(r.check,i,l,a)),o-=l,a+=l,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;l=0;do{k=i[a+l++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k))}while(k&&l<o);if(512&r.flags&&(r.check=Pa(r.check,i,l,a)),o-=l,a+=l,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;h<16;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(u!==(65535&r.check)){e.msg="header crc mismatch",r.mode=30;break}u=0,h=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;h<32;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}e.adler=r.check=ts(u),u=0,h=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,r.hold=u,r.bits=h,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&h,h-=7&h,r.mode=27;break}for(;h<3;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}switch(r.last=1&u,u>>>=1,h-=1,3&u){case 0:r.mode=14;break;case 1:if(cs(r),r.mode=20,6===t){u>>>=2,h-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}u>>>=2,h-=2;break;case 14:for(u>>>=7&h,h-=7&h;h<32;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if((65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,u=0,h=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(l=r.length,l){if(l>o&&(l=o),l>c&&(l=c),0===l)break e;Nn(n,i,a,l,s),o-=l,a+=l,c-=l,s+=l,r.length-=l;break}r.mode=12;break;case 17:for(;h<14;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(r.nlen=257+(31&u),u>>>=5,h-=5,r.ndist=1+(31&u),u>>>=5,h-=5,r.ncode=4+(15&u),u>>>=4,h-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;h<3;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.lens[M[r.have++]]=7&u,u>>>=3,h-=3}for(;r.have<19;)r.lens[M[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},A=es(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,A){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;P=r.lencode[u&(1<<r.lenbits)-1],b=P>>>24,m=P>>>16&255,g=65535&P,!(b<=h);){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(g<16)u>>>=b,h-=b,r.lens[r.have++]=g;else{if(16===g){for(E=b+2;h<E;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(u>>>=b,h-=b,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],l=3+(3&u),u>>>=2,h-=2}else if(17===g){for(E=b+3;h<E;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}u>>>=b,h-=b,k=0,l=3+(7&u),u>>>=3,h-=3}else{for(E=b+7;h<E;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}u>>>=b,h-=b,k=0,l=11+(127&u),u>>>=7,h-=7}if(r.have+l>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;l--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},A=es(1,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,A){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},A=es(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,A){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(o>=6&&c>=258){e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,r.hold=u,r.bits=h,Za(e,d),s=e.next_out,n=e.output,c=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,u=r.hold,h=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;P=r.lencode[u&(1<<r.lenbits)-1],b=P>>>24,m=P>>>16&255,g=65535&P,!(b<=h);){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(m&&0==(240&m)){for(w=b,v=m,_=g;P=r.lencode[_+((u&(1<<w+v)-1)>>w)],b=P>>>24,m=P>>>16&255,g=65535&P,!(w+b<=h);){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}u>>>=w,h-=w,r.back+=w}if(u>>>=b,h-=b,r.back+=b,r.length=g,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=12;break}if(64&m){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(E=r.extra;h<E;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,h-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;P=r.distcode[u&(1<<r.distbits)-1],b=P>>>24,m=P>>>16&255,g=65535&P,!(b<=h);){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(0==(240&m)){for(w=b,v=m,_=g;P=r.distcode[_+((u&(1<<w+v)-1)>>w)],b=P>>>24,m=P>>>16&255,g=65535&P,!(w+b<=h);){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}u>>>=w,h-=w,r.back+=w}if(u>>>=b,h-=b,r.back+=b,64&m){e.msg="invalid distance code",r.mode=30;break}r.offset=g,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(E=r.extra;h<E;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,h-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===c)break e;if(l=d-c,r.offset>l){if(l=r.offset-l,l>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}l>r.wnext?(l-=r.wnext,p=r.wsize-l):p=r.wnext-l,l>r.length&&(l=r.length),y=r.window}else y=n,p=s-r.offset,l=r.length;l>c&&(l=c),c-=l,r.length-=l;do{n[s++]=y[p++]}while(--l);0===r.length&&(r.mode=21);break;case 26:if(0===c)break e;n[s++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;h<32;){if(0===o)break e;o--,u|=i[a++]<<h,h+=8}if(d-=c,e.total_out+=d,r.total+=d,d&&(e.adler=r.check=r.flags?Pa(r.check,n,d,s-d):Sa(r.check,n,d,s-d)),d=c,(r.flags?u:ts(u))!==r.check){e.msg="incorrect data check",r.mode=30;break}u=0,h=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;h<32;){if(0===o)break e;o--,u+=i[a++]<<h,h+=8}if(u!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=30;break}u=0,h=0}r.mode=29;case 29:A=1;break e;case 30:A=-3;break e;case 32:default:return-2}return e.next_out=s,e.avail_out=c,e.next_in=a,e.avail_in=o,r.hold=u,r.bits=h,(r.wsize||d!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&us(e,e.output,e.next_out,d-e.avail_out),f-=e.avail_in,d-=e.avail_out,e.total_in+=f,e.total_out+=d,r.total+=d,r.wrap&&d&&(e.adler=r.check=r.flags?Pa(r.check,n,d,e.next_out-d):Sa(r.check,n,d,e.next_out-d)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0===f&&0===d||4===t)&&0===A&&(A=-5),A}function fs(e,t){const r=t.length;let i,n;return e&&e.state?(i=e.state,0!==i.wrap&&11!==i.mode?-2:11===i.mode&&(n=1,n=Sa(n,t,r,0),n!==i.check)?-3:(us(e,t,r,r),i.havedict=1,0)):-2}class ds{constructor(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}}class ls{constructor(e){this.options={chunkSize:16384,windowBits:0,...e||{}};const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Va,this.strm.avail_out=0;let r=ns(this.strm,t.windowBits);if(0!==r)throw Error(xa[r]);if(this.header=new ds,function(e,t){let r;e&&e.state&&(r=e.state,0==(2&r.wrap)||(r.head=t,t.done=!1))}(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ga(t.dictionary):t.dictionary instanceof ArrayBuffer&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=fs(this.strm,t.dictionary),0!==r)))throw Error(xa[r])}push(e,t){const{strm:r,options:{chunkSize:i,dictionary:n}}=this;let a,s,o=!1;if(this.ended)return!1;s=t===~~t?t:!0===t?4:0,"string"==typeof e?r.input=function(e){const t=new zn(e.length);for(let r=0,i=t.length;r<i;r++)t[r]=e.charCodeAt(r);return t}(e):e instanceof ArrayBuffer?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;do{if(0===r.avail_out&&(r.output=new zn(i),r.next_out=0,r.avail_out=i),a=hs(r,0),2===a&&n&&(a=fs(this.strm,n)),-5===a&&!0===o&&(a=0,o=!1),1!==a&&0!==a)return this.onEnd(a),this.ended=!0,!1;r.next_out&&(0!==r.avail_out&&1!==a&&(0!==r.avail_in||4!==s&&2!==s)||this.onData(Un(r.output,r.next_out))),0===r.avail_in&&0===r.avail_out&&(o=!0)}while((r.avail_in>0||0===r.avail_out)&&1!==a);return 1===a&&(s=4),4===s?(a=function(e){if(!e||!e.state)return-2;const t=e.state;return t.window&&(t.window=null),e.state=null,0}(this.strm),this.onEnd(a),this.ended=!0,0===a):2!==s||(this.onEnd(0),r.avail_out=0,!0)}onData(e){this.chunks.push(e)}onEnd(e){0===e&&(this.result=Fn(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg}}var ps=[0,1,3,7,15,31,63,127,255],ys=function(e){this.stream=e,this.bitOffset=0,this.curByte=0,this.hasByte=!1};ys.prototype._ensureByte=function(){this.hasByte||(this.curByte=this.stream.readByte(),this.hasByte=!0)},ys.prototype.read=function(e){for(var t=0;e>0;){this._ensureByte();var r=8-this.bitOffset;if(e>=r)t<<=r,t|=ps[r]&this.curByte,this.hasByte=!1,this.bitOffset=0,e-=r;else{t<<=e;var i=r-e;t|=(this.curByte&ps[e]<<i)>>i,this.bitOffset+=e,e=0}}return t},ys.prototype.seek=function(e){var t=e%8,r=(e-t)/8;this.bitOffset=t,this.stream.seek(r),this.hasByte=!1},ys.prototype.pi=function(){var e,t=new Uint8Array(6);for(e=0;e<t.length;e++)t[e]=this.read(8);return function(e){return Array.prototype.map.call(e,(e=>("00"+e.toString(16)).slice(-2))).join("")}(t)};var bs=ys,ms=function(){};ms.prototype.readByte=function(){throw Error("abstract method readByte() not implemented")},ms.prototype.read=function(e,t,r){for(var i=0;i<r;){var n=this.readByte();if(n<0)return 0===i?-1:i;e[t++]=n,i++}return i},ms.prototype.seek=function(e){throw Error("abstract method seek() not implemented")},ms.prototype.writeByte=function(e){throw Error("abstract method readByte() not implemented")},ms.prototype.write=function(e,t,r){var i;for(i=0;i<r;i++)this.writeByte(e[t++]);return r},ms.prototype.flush=function(){};var gs,ws=ms,vs=(gs=new Uint32Array([0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188]),function(){var e=4294967295;this.getCRC=function(){return~e>>>0},this.updateCRC=function(t){e=e<<8^gs[255&(e>>>24^t)]},this.updateCRCRun=function(t,r){for(;r-- >0;)e=e<<8^gs[255&(e>>>24^t)]}}),_s=function(e,t){var r,i=e[t];for(r=t;r>0;r--)e[r]=e[r-1];return e[0]=i,i},ks={OK:0,LAST_BLOCK:-1,NOT_BZIP_DATA:-2,UNEXPECTED_INPUT_EOF:-3,UNEXPECTED_OUTPUT_EOF:-4,DATA_ERROR:-5,OUT_OF_MEMORY:-6,OBSOLETE_INPUT:-7,END_OF_BLOCK:-8},As={};As[ks.LAST_BLOCK]="Bad file checksum",As[ks.NOT_BZIP_DATA]="Not bzip data",As[ks.UNEXPECTED_INPUT_EOF]="Unexpected input EOF",As[ks.UNEXPECTED_OUTPUT_EOF]="Unexpected output EOF",As[ks.DATA_ERROR]="Data error",As[ks.OUT_OF_MEMORY]="Out of memory",As[ks.OBSOLETE_INPUT]="Obsolete (pre 0.9.5) bzip format not supported.";var Ss=function(e,t){var r=As[e]||"unknown error";t&&(r+=": "+t);var i=new TypeError(r);throw i.errorCode=e,i},Es=function(e,t){this.writePos=this.writeCurrent=this.writeCount=0,this._start_bunzip(e,t)};Es.prototype._init_block=function(){return this._get_next_block()?(this.blockCRC=new vs,!0):(this.writeCount=-1,!1)},Es.prototype._start_bunzip=function(e,t){var r=new Uint8Array(4);4===e.read(r,0,4)&&"BZh"===String.fromCharCode(r[0],r[1],r[2])||Ss(ks.NOT_BZIP_DATA,"bad magic");var i=r[3]-48;(i<1||i>9)&&Ss(ks.NOT_BZIP_DATA,"level out of range"),this.reader=new bs(e),this.dbufSize=1e5*i,this.nextoutput=0,this.outputStream=t,this.streamCRC=0},Es.prototype._get_next_block=function(){var e,t,r,i=this.reader,n=i.pi();if("177245385090"===n)return!1;"314159265359"!==n&&Ss(ks.NOT_BZIP_DATA),this.targetBlockCRC=i.read(32)>>>0,this.streamCRC=(this.targetBlockCRC^(this.streamCRC<<1|this.streamCRC>>>31))>>>0,i.read(1)&&Ss(ks.OBSOLETE_INPUT);var a=i.read(24);a>this.dbufSize&&Ss(ks.DATA_ERROR,"initial position out of bounds");var s=i.read(16),o=new Uint8Array(256),c=0;for(e=0;e<16;e++)if(s&1<<15-e){var u=16*e;for(r=i.read(16),t=0;t<16;t++)r&1<<15-t&&(o[c++]=u+t)}var h=i.read(3);(h<2||h>6)&&Ss(ks.DATA_ERROR);var f=i.read(15);0===f&&Ss(ks.DATA_ERROR);var d=new Uint8Array(256);for(e=0;e<h;e++)d[e]=e;var l=new Uint8Array(f);for(e=0;e<f;e++){for(t=0;i.read(1);t++)t>=h&&Ss(ks.DATA_ERROR);l[e]=_s(d,t)}var p,y=c+2,b=[];for(t=0;t<h;t++){var m,g,w=new Uint8Array(y),v=new Uint16Array(21);for(s=i.read(5),e=0;e<y;e++){for(;(s<1||s>20)&&Ss(ks.DATA_ERROR),i.read(1);)i.read(1)?s--:s++;w[e]=s}for(m=g=w[0],e=1;e<y;e++)w[e]>g?g=w[e]:w[e]<m&&(m=w[e]);p={},b.push(p),p.permute=new Uint16Array(258),p.limit=new Uint32Array(22),p.base=new Uint32Array(21),p.minLen=m,p.maxLen=g;var _=0;for(e=m;e<=g;e++)for(v[e]=p.limit[e]=0,s=0;s<y;s++)w[s]===e&&(p.permute[_++]=s);for(e=0;e<y;e++)v[w[e]]++;for(_=s=0,e=m;e<g;e++)_+=v[e],p.limit[e]=_-1,_<<=1,s+=v[e],p.base[e+1]=_-s;p.limit[g+1]=Number.MAX_VALUE,p.limit[g]=_+v[g]-1,p.base[m]=0}var k=new Uint32Array(256);for(e=0;e<256;e++)d[e]=e;var A,S=0,E=0,P=0,x=this.dbuf=new Uint32Array(this.dbufSize);for(y=0;;){for(y--||(y=49,P>=f&&Ss(ks.DATA_ERROR),p=b[l[P++]]),e=p.minLen,t=i.read(e);e>p.maxLen&&Ss(ks.DATA_ERROR),!(t<=p.limit[e]);e++)t=t<<1|i.read(1);((t-=p.base[e])<0||t>=258)&&Ss(ks.DATA_ERROR);var M=p.permute[t];if(0!==M&&1!==M){if(S)for(S=0,E+s>this.dbufSize&&Ss(ks.DATA_ERROR),k[A=o[d[0]]]+=s;s--;)x[E++]=A;if(M>c)break;E>=this.dbufSize&&Ss(ks.DATA_ERROR),k[A=o[A=_s(d,e=M-1)]]++,x[E++]=A}else S||(S=1,s=0),s+=0===M?S:2*S,S<<=1}for((a<0||a>=E)&&Ss(ks.DATA_ERROR),t=0,e=0;e<256;e++)r=t+k[e],k[e]=t,t=r;for(e=0;e<E;e++)x[k[A=255&x[e]]]|=e<<8,k[A]++;var C=0,K=0,D=0;return E&&(K=255&(C=x[a]),C>>=8,D=-1),this.writePos=C,this.writeCurrent=K,this.writeCount=E,this.writeRun=D,!0},Es.prototype._read_bunzip=function(e,t){var r,i,n;if(this.writeCount<0)return 0;var a=this.dbuf,s=this.writePos,o=this.writeCurrent,c=this.writeCount;this.outputsize;for(var u=this.writeRun;c;){for(c--,i=o,o=255&(s=a[s]),s>>=8,3==u++?(r=o,n=i,o=-1):(r=1,n=o),this.blockCRC.updateCRCRun(n,r);r--;)this.outputStream.writeByte(n),this.nextoutput++;o!=i&&(u=0)}return this.writeCount=c,this.blockCRC.getCRC()!==this.targetBlockCRC&&Ss(ks.DATA_ERROR,"Bad block CRC (got "+this.blockCRC.getCRC().toString(16)+" expected "+this.targetBlockCRC.toString(16)+")"),this.nextoutput};var Ps=function(e){if("readByte"in e)return e;var t=new ws;return t.pos=0,t.readByte=function(){return e[this.pos++]},t.seek=function(e){this.pos=e},t.eof=function(){return this.pos>=e.length},t},xs=function(e){var t=new ws,r=!0;if(e)if("number"==typeof e)t.buffer=new Uint8Array(e),r=!1;else{if("writeByte"in e)return e;t.buffer=e,r=!1}else t.buffer=new Uint8Array(16384);return t.pos=0,t.writeByte=function(e){if(r&&this.pos>=this.buffer.length){var t=new Uint8Array(2*this.buffer.length);t.set(this.buffer),this.buffer=t}this.buffer[this.pos++]=e},t.getBuffer=function(){if(this.pos!==this.buffer.length){if(!r)throw new TypeError("outputsize does not match decoded input");var e=new Uint8Array(this.pos);e.set(this.buffer.subarray(0,this.pos)),this.buffer=e}return this.buffer},t._coerced=!0,t};var Ms=function(e,t,r){for(var i=Ps(e),n=xs(t),a=new Es(i,n);!("eof"in i)||!i.eof();)if(a._init_block())a._read_bunzip();else{var s=a.reader.read(32)>>>0;if(s!==a.streamCRC&&Ss(ks.DATA_ERROR,"Bad stream CRC (got "+a.streamCRC.toString(16)+" expected "+s.toString(16)+")"),!r||!("eof"in i)||i.eof())break;a._start_bunzip(i,n)}if("getBuffer"in n)return n.getBuffer()};class Cs{static get tag(){return re.packet.literalData}constructor(e=new Date){this.format=re.literal.utf8,this.date=V.normalizeDate(e),this.text=null,this.data=null,this.filename=""}setText(e,t=re.literal.utf8){this.format=t,this.text=e,this.data=null}getText(e=!1){return(null===this.text||V.isStream(this.text))&&(this.text=V.decodeUTF8(V.nativeEOL(this.getBytes(e)))),this.text}setBytes(e,t){this.format=t,this.data=e,this.text=null}getBytes(e=!1){return null===this.data&&(this.data=V.canonicalizeEOL(V.encodeUTF8(this.text))),e?O(this.data):this.data}setFilename(e){this.filename=e}getFilename(){return this.filename}async read(e){await z(e,(async e=>{const t=await e.readByte(),r=await e.readByte();this.filename=V.decodeUTF8(await e.readBytes(r)),this.date=V.readDate(await e.readBytes(4));let i=e.remainder();s(i)&&(i=await j(i)),this.setBytes(i,t)}))}writeHeader(){const e=V.encodeUTF8(this.filename),t=new Uint8Array([e.length]),r=new Uint8Array([this.format]),i=V.writeDate(this.date);return V.concatUint8Array([r,t,e,i])}write(){const e=this.writeHeader(),t=this.getBytes();return V.concat([e,t])}}function Ks(e){let t,r=0;const i=e[0];return i<192?([r]=e,t=1):i<255?(r=(e[0]-192<<8)+e[1]+192,t=2):255===i&&(r=V.readNumber(e.subarray(1,5)),t=5),{len:r,offset:t}}function Ds(e){return e<192?new Uint8Array([e]):e>191&&e<8384?new Uint8Array([192+(e-192>>8),e-192&255]):V.concatUint8Array([new Uint8Array([255]),V.writeNumber(e,4)])}function Rs(e){if(e<0||e>30)throw Error("Partial Length power must be between 1 and 30");return new Uint8Array([224+e])}function Is(e){return new Uint8Array([192|e])}function Us(e,t){return V.concatUint8Array([Is(e),Ds(t)])}function Bs(e){return[re.packet.literalData,re.packet.compressedData,re.packet.symmetricallyEncryptedData,re.packet.symEncryptedIntegrityProtectedData,re.packet.aeadEncryptedData].includes(e)}async function Ts(e,t){const r=K(e);let i,n;try{const s=await r.peekBytes(2);if(!s||s.length<2||0==(128&s[0]))throw Error("Error during parsing. This message / key probably does not conform to a valid OpenPGP format.");const o=await r.readByte();let c,u,h=-1,f=-1;f=0,0!=(64&o)&&(f=1),f?h=63&o:(h=(63&o)>>2,u=3&o);const d=Bs(h);let l,p=null;if(d){if("array"===V.isStream(e)){const e=new a;i=D(e),p=e}else{const e=new S;i=D(e.writable),p=e.readable}n=t({tag:h,packet:p})}else p=[];do{if(f){const e=await r.readByte();if(l=!1,e<192)c=e;else if(e>=192&&e<224)c=(e-192<<8)+await r.readByte()+192;else if(e>223&&e<255){if(c=1<<(31&e),l=!0,!d)throw new TypeError("This packet type does not support partial lengths.")}else c=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte()}else switch(u){case 0:c=await r.readByte();break;case 1:c=await r.readByte()<<8|await r.readByte();break;case 2:c=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte();break;default:c=1/0}if(c>0){let e=0;for(;;){i&&await i.ready;const{done:t,value:n}=await r.read();if(t){if(c===1/0)break;throw Error("Unexpected end of packet")}const a=c===1/0?n:n.subarray(0,c-e);if(i?await i.write(a):p.push(a),e+=n.length,e>=c){r.unshift(n.subarray(c-e+n.length));break}}}}while(l);const y=await r.peekBytes(d?1/0:2);return i?(await i.ready,await i.close()):(p=V.concatUint8Array(p),await t({tag:h,packet:p})),!y||!y.length}catch(e){if(i)return await i.abort(e),!0;throw e}finally{i&&await n,r.releaseLock()}}class zs extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,zs),this.name="UnsupportedError"}}const qs=Symbol("verified"),Os=new Set([re.signatureSubpacket.issuer,re.signatureSubpacket.issuerFingerprint,re.signatureSubpacket.embeddedSignature]);class Fs{static get tag(){return re.packet.signature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.signatureData=null,this.unhashedSubpackets=[],this.signedHashValue=null,this.created=null,this.signatureExpirationTime=null,this.signatureNeverExpires=!0,this.exportable=null,this.trustLevel=null,this.trustAmount=null,this.regularExpression=null,this.revocable=null,this.keyExpirationTime=null,this.keyNeverExpires=null,this.preferredSymmetricAlgorithms=null,this.revocationKeyClass=null,this.revocationKeyAlgorithm=null,this.revocationKeyFingerprint=null,this.issuerKeyID=new le,this.rawNotations=[],this.notations={},this.preferredHashAlgorithms=null,this.preferredCompressionAlgorithms=null,this.keyServerPreferences=null,this.preferredKeyServer=null,this.isPrimaryUserID=null,this.policyURI=null,this.keyFlags=null,this.signersUserID=null,this.reasonForRevocationFlag=null,this.reasonForRevocationString=null,this.features=null,this.signatureTargetPublicKeyAlgorithm=null,this.signatureTargetHashAlgorithm=null,this.signatureTargetHash=null,this.embeddedSignature=null,this.issuerKeyVersion=null,this.issuerFingerprint=null,this.preferredAEADAlgorithms=null,this.revoked=null,this[qs]=null}read(e){let t=0;if(this.version=e[t++],4!==this.version&&5!==this.version)throw new zs(`Version ${this.version} of the signature packet is unsupported.`);if(this.signatureType=e[t++],this.publicKeyAlgorithm=e[t++],this.hashAlgorithm=e[t++],t+=this.readSubPackets(e.subarray(t,e.length),!0),!this.created)throw Error("Missing signature creation time subpacket.");this.signatureData=e.subarray(0,t),t+=this.readSubPackets(e.subarray(t,e.length),!1),this.signedHashValue=e.subarray(t,t+2),t+=2,this.params=Rn.signature.parseSignatureParams(this.publicKeyAlgorithm,e.subarray(t,e.length))}writeParams(){return this.params instanceof Promise?W((async()=>Rn.serializeParams(this.publicKeyAlgorithm,await this.params))):Rn.serializeParams(this.publicKeyAlgorithm,this.params)}write(){const e=[];return e.push(this.signatureData),e.push(this.writeUnhashedSubPackets()),e.push(this.signedHashValue),e.push(this.writeParams()),V.concat(e)}async sign(e,t,r=new Date,i=!1){5===e.version?this.version=5:this.version=4;const n=[new Uint8Array([this.version,this.signatureType,this.publicKeyAlgorithm,this.hashAlgorithm])];this.created=V.normalizeDate(r),this.issuerKeyVersion=e.version,this.issuerFingerprint=e.getFingerprintBytes(),this.issuerKeyID=e.getKeyID(),n.push(this.writeHashedSubPackets()),this.signatureData=V.concat(n);const a=this.toHash(this.signatureType,t,i),s=await this.hash(this.signatureType,t,a,i);this.signedHashValue=N(q(s),0,2);const o=async()=>Rn.signature.sign(this.publicKeyAlgorithm,this.hashAlgorithm,e.publicParams,e.privateParams,a,await j(s));V.isStream(s)?this.params=o():(this.params=await o(),this[qs]=!0)}writeHashedSubPackets(){const e=re.signatureSubpacket,t=[];let r;if(null===this.created)throw Error("Missing signature creation time");t.push(Ns(e.signatureCreationTime,V.writeDate(this.created))),null!==this.signatureExpirationTime&&t.push(Ns(e.signatureExpirationTime,V.writeNumber(this.signatureExpirationTime,4))),null!==this.exportable&&t.push(Ns(e.exportableCertification,new Uint8Array([this.exportable?1:0]))),null!==this.trustLevel&&(r=new Uint8Array([this.trustLevel,this.trustAmount]),t.push(Ns(e.trustSignature,r))),null!==this.regularExpression&&t.push(Ns(e.regularExpression,this.regularExpression)),null!==this.revocable&&t.push(Ns(e.revocable,new Uint8Array([this.revocable?1:0]))),null!==this.keyExpirationTime&&t.push(Ns(e.keyExpirationTime,V.writeNumber(this.keyExpirationTime,4))),null!==this.preferredSymmetricAlgorithms&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.preferredSymmetricAlgorithms)),t.push(Ns(e.preferredSymmetricAlgorithms,r))),null!==this.revocationKeyClass&&(r=new Uint8Array([this.revocationKeyClass,this.revocationKeyAlgorithm]),r=V.concat([r,this.revocationKeyFingerprint]),t.push(Ns(e.revocationKey,r))),this.rawNotations.forEach((([{name:i,value:n,humanReadable:a}])=>{r=[new Uint8Array([a?128:0,0,0,0])],r.push(V.writeNumber(i.length,2)),r.push(V.writeNumber(n.length,2)),r.push(V.stringToUint8Array(i)),r.push(n),r=V.concat(r),t.push(Ns(e.notationData,r))})),null!==this.preferredHashAlgorithms&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.preferredHashAlgorithms)),t.push(Ns(e.preferredHashAlgorithms,r))),null!==this.preferredCompressionAlgorithms&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.preferredCompressionAlgorithms)),t.push(Ns(e.preferredCompressionAlgorithms,r))),null!==this.keyServerPreferences&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.keyServerPreferences)),t.push(Ns(e.keyServerPreferences,r))),null!==this.preferredKeyServer&&t.push(Ns(e.preferredKeyServer,V.stringToUint8Array(this.preferredKeyServer))),null!==this.isPrimaryUserID&&t.push(Ns(e.primaryUserID,new Uint8Array([this.isPrimaryUserID?1:0]))),null!==this.policyURI&&t.push(Ns(e.policyURI,V.stringToUint8Array(this.policyURI))),null!==this.keyFlags&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.keyFlags)),t.push(Ns(e.keyFlags,r))),null!==this.signersUserID&&t.push(Ns(e.signersUserID,V.stringToUint8Array(this.signersUserID))),null!==this.reasonForRevocationFlag&&(r=V.stringToUint8Array(String.fromCharCode(this.reasonForRevocationFlag)+this.reasonForRevocationString),t.push(Ns(e.reasonForRevocation,r))),null!==this.features&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.features)),t.push(Ns(e.features,r))),null!==this.signatureTargetPublicKeyAlgorithm&&(r=[new Uint8Array([this.signatureTargetPublicKeyAlgorithm,this.signatureTargetHashAlgorithm])],r.push(V.stringToUint8Array(this.signatureTargetHash)),r=V.concat(r),t.push(Ns(e.signatureTarget,r))),null!==this.preferredAEADAlgorithms&&(r=V.stringToUint8Array(V.uint8ArrayToString(this.preferredAEADAlgorithms)),t.push(Ns(e.preferredAEADAlgorithms,r)));const i=V.concat(t),n=V.writeNumber(i.length,2);return V.concat([n,i])}writeUnhashedSubPackets(){const e=re.signatureSubpacket,t=[];let r;this.issuerKeyID.isNull()||5===this.issuerKeyVersion||t.push(Ns(e.issuer,this.issuerKeyID.write())),null!==this.embeddedSignature&&t.push(Ns(e.embeddedSignature,this.embeddedSignature.write())),null!==this.issuerFingerprint&&(r=[new Uint8Array([this.issuerKeyVersion]),this.issuerFingerprint],r=V.concat(r),t.push(Ns(e.issuerFingerprint,r))),this.unhashedSubpackets.forEach((e=>{t.push(Ds(e.length)),t.push(e)}));const i=V.concat(t),n=V.writeNumber(i.length,2);return V.concat([n,i])}readSubPacket(e,t=!0){let r=0;const i=128&e[r],n=127&e[r];if(t||Os.has(n))switch(r++,n){case re.signatureSubpacket.signatureCreationTime:this.created=V.readDate(e.subarray(r,e.length));break;case re.signatureSubpacket.signatureExpirationTime:{const t=V.readNumber(e.subarray(r,e.length));this.signatureNeverExpires=0===t,this.signatureExpirationTime=t;break}case re.signatureSubpacket.exportableCertification:this.exportable=1===e[r++];break;case re.signatureSubpacket.trustSignature:this.trustLevel=e[r++],this.trustAmount=e[r++];break;case re.signatureSubpacket.regularExpression:this.regularExpression=e[r];break;case re.signatureSubpacket.revocable:this.revocable=1===e[r++];break;case re.signatureSubpacket.keyExpirationTime:{const t=V.readNumber(e.subarray(r,e.length));this.keyExpirationTime=t,this.keyNeverExpires=0===t;break}case re.signatureSubpacket.preferredSymmetricAlgorithms:this.preferredSymmetricAlgorithms=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.revocationKey:this.revocationKeyClass=e[r++],this.revocationKeyAlgorithm=e[r++],this.revocationKeyFingerprint=e.subarray(r,r+20);break;case re.signatureSubpacket.issuer:this.issuerKeyID.read(e.subarray(r,e.length));break;case re.signatureSubpacket.notationData:{const t=!!(128&e[r]);r+=4;const n=V.readNumber(e.subarray(r,r+2));r+=2;const a=V.readNumber(e.subarray(r,r+2));r+=2;const s=V.uint8ArrayToString(e.subarray(r,r+n)),o=e.subarray(r+n,r+n+a);this.rawNotations.push({name:s,humanReadable:t,value:o,critical:i}),t&&(this.notations[s]=V.uint8ArrayToString(o));break}case re.signatureSubpacket.preferredHashAlgorithms:this.preferredHashAlgorithms=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.preferredCompressionAlgorithms:this.preferredCompressionAlgorithms=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.keyServerPreferences:this.keyServerPreferences=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.preferredKeyServer:this.preferredKeyServer=V.uint8ArrayToString(e.subarray(r,e.length));break;case re.signatureSubpacket.primaryUserID:this.isPrimaryUserID=0!==e[r++];break;case re.signatureSubpacket.policyURI:this.policyURI=V.uint8ArrayToString(e.subarray(r,e.length));break;case re.signatureSubpacket.keyFlags:this.keyFlags=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.signersUserID:this.signersUserID=V.uint8ArrayToString(e.subarray(r,e.length));break;case re.signatureSubpacket.reasonForRevocation:this.reasonForRevocationFlag=e[r++],this.reasonForRevocationString=V.uint8ArrayToString(e.subarray(r,e.length));break;case re.signatureSubpacket.features:this.features=[...e.subarray(r,e.length)];break;case re.signatureSubpacket.signatureTarget:{this.signatureTargetPublicKeyAlgorithm=e[r++],this.signatureTargetHashAlgorithm=e[r++];const t=Rn.getHashByteLength(this.signatureTargetHashAlgorithm);this.signatureTargetHash=V.uint8ArrayToString(e.subarray(r,r+t));break}case re.signatureSubpacket.embeddedSignature:this.embeddedSignature=new Fs,this.embeddedSignature.read(e.subarray(r,e.length));break;case re.signatureSubpacket.issuerFingerprint:this.issuerKeyVersion=e[r++],this.issuerFingerprint=e.subarray(r,e.length),5===this.issuerKeyVersion?this.issuerKeyID.read(this.issuerFingerprint):this.issuerKeyID.read(this.issuerFingerprint.subarray(-8));break;case re.signatureSubpacket.preferredAEADAlgorithms:this.preferredAEADAlgorithms=[...e.subarray(r,e.length)];break;default:{const e=Error("Unknown signature subpacket type "+n);if(i)throw e;V.printDebug(e)}}else this.unhashedSubpackets.push(e.subarray(r,e.length))}readSubPackets(e,t=!0,r){const i=V.readNumber(e.subarray(0,2));let n=2;for(;n<2+i;){const i=Ks(e.subarray(n,e.length));n+=i.offset,this.readSubPacket(e.subarray(n,n+i.len),t,r),n+=i.len}return n}toSign(e,t){const r=re.signature;switch(e){case r.binary:return null!==t.text?V.encodeUTF8(t.getText(!0)):t.getBytes(!0);case r.text:{const e=t.getBytes(!0);return V.canonicalizeEOL(e)}case r.standalone:return new Uint8Array(0);case r.certGeneric:case r.certPersona:case r.certCasual:case r.certPositive:case r.certRevocation:{let e,i;if(t.userID)i=180,e=t.userID;else{if(!t.userAttribute)throw Error("Either a userID or userAttribute packet needs to be supplied for certification.");i=209,e=t.userAttribute}const n=e.write();return V.concat([this.toSign(r.key,t),new Uint8Array([i]),V.writeNumber(n.length,4),n])}case r.subkeyBinding:case r.subkeyRevocation:case r.keyBinding:return V.concat([this.toSign(r.key,t),this.toSign(r.key,{key:t.bind})]);case r.key:if(void 0===t.key)throw Error("Key packet is required for this signature.");return t.key.writeForHash(this.version);case r.keyRevocation:return this.toSign(r.key,t);case r.timestamp:return new Uint8Array(0);case r.thirdParty:throw Error("Not implemented");default:throw Error("Unknown signature type.")}}calculateTrailer(e,t){let r=0;return B(q(this.signatureData),(e=>{r+=e.length}),(()=>{const i=[];return 5!==this.version||this.signatureType!==re.signature.binary&&this.signatureType!==re.signature.text||(t?i.push(new Uint8Array(6)):i.push(e.writeHeader())),i.push(new Uint8Array([this.version,255])),5===this.version&&i.push(new Uint8Array(4)),i.push(V.writeNumber(r,4)),V.concat(i)}))}toHash(e,t,r=!1){const i=this.toSign(e,t);return V.concat([i,this.signatureData,this.calculateTrailer(t,r)])}async hash(e,t,r,i=!1){return r||(r=this.toHash(e,t,i)),Rn.hash.digest(this.hashAlgorithm,r)}async verify(e,t,r,i=new Date,n=!1,a=ie){if(!this.issuerKeyID.equals(e.getKeyID()))throw Error("Signature was not issued by the given public key");if(this.publicKeyAlgorithm!==e.algorithm)throw Error("Public key algorithm used to sign signature does not match issuer key algorithm.");const s=t===re.signature.binary||t===re.signature.text;if(!(this[qs]&&!s)){let i,a;if(this.hashed?a=await this.hashed:(i=this.toHash(t,r,n),a=await this.hash(t,r,i)),a=await j(a),this.signedHashValue[0]!==a[0]||this.signedHashValue[1]!==a[1])throw Error("Signed digest did not match");if(this.params=await this.params,this[qs]=await Rn.signature.verify(this.publicKeyAlgorithm,this.hashAlgorithm,this.params,e.publicParams,i,a),!this[qs])throw Error("Signature verification failed")}const o=V.normalizeDate(i);if(o&&this.created>o)throw Error("Signature creation time is in the future");if(o&&o>=this.getExpirationTime())throw Error("Signature is expired");if(a.rejectHashAlgorithms.has(this.hashAlgorithm))throw Error("Insecure hash algorithm: "+re.read(re.hash,this.hashAlgorithm).toUpperCase());if(a.rejectMessageHashAlgorithms.has(this.hashAlgorithm)&&[re.signature.binary,re.signature.text].includes(this.signatureType))throw Error("Insecure message hash algorithm: "+re.read(re.hash,this.hashAlgorithm).toUpperCase());if(this.rawNotations.forEach((({name:e,critical:t})=>{if(t&&a.knownNotations.indexOf(e)<0)throw Error("Unknown critical notation: "+e)})),null!==this.revocationKeyClass)throw Error("This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.")}isExpired(e=new Date){const t=V.normalizeDate(e);return null!==t&&!(this.created<=t&&t<this.getExpirationTime())}getExpirationTime(){return this.signatureNeverExpires?1/0:new Date(this.created.getTime()+1e3*this.signatureExpirationTime)}}function Ns(e,t){const r=[];return r.push(Ds(t.length+1)),r.push(new Uint8Array([e])),r.push(t),V.concat(r)}class js{static get tag(){return re.packet.onePassSignature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.issuerKeyID=null,this.flags=null}read(e){let t=0;if(this.version=e[t++],3!==this.version)throw new zs(`Version ${this.version} of the one-pass signature packet is unsupported.`);return this.signatureType=e[t++],this.hashAlgorithm=e[t++],this.publicKeyAlgorithm=e[t++],this.issuerKeyID=new le,this.issuerKeyID.read(e.subarray(t,t+8)),t+=8,this.flags=e[t++],this}write(){const e=new Uint8Array([3,this.signatureType,this.hashAlgorithm,this.publicKeyAlgorithm]),t=new Uint8Array([this.flags]);return V.concatUint8Array([e,this.issuerKeyID.write(),t])}calculateTrailer(...e){return W((async()=>Fs.prototype.calculateTrailer.apply(await this.correspondingSig,e)))}async verify(){const e=await this.correspondingSig;if(!e||e.constructor.tag!==re.packet.signature)throw Error("Corresponding signature packet missing");if(e.signatureType!==this.signatureType||e.hashAlgorithm!==this.hashAlgorithm||e.publicKeyAlgorithm!==this.publicKeyAlgorithm||!e.issuerKeyID.equals(this.issuerKeyID))throw Error("Corresponding signature packet does not match one-pass signature packet");return e.hashed=this.hashed,e.verify.apply(e,arguments)}}function Ls(e,t){if(!t[e]){let t;try{t=re.read(re.packet,e)}catch(t){throw new zs("Unknown packet type with tag: "+e)}throw Error("Packet not allowed in this context: "+t)}return new t[e]}js.prototype.hash=Fs.prototype.hash,js.prototype.toHash=Fs.prototype.toHash,js.prototype.toSign=Fs.prototype.toSign;class Ws extends Array{static async fromBinary(e,t,r=ie){const i=new Ws;return await i.read(e,t,r),i}async read(e,t,r=ie){this.stream=T(e,(async(e,i)=>{const n=D(i);try{for(;;){await n.ready;if(await Ts(e,(async e=>{try{if(e.tag===re.packet.marker||e.tag===re.packet.trust)return;const i=Ls(e.tag,t);i.packets=new Ws,i.fromStream=V.isStream(e.packet),await i.read(e.packet,r),await n.write(i)}catch(t){const i=!r.ignoreUnsupportedPackets&&t instanceof zs,a=!(r.ignoreMalformedPackets||t instanceof zs);(i||a||Bs(e.tag))&&await n.abort(t),V.printDebugError(t)}})))return await n.ready,void await n.close()}}catch(e){await n.abort(e)}}));const i=K(this.stream);for(;;){const{done:e,value:t}=await i.read();if(e?this.stream=null:this.push(t),e||Bs(t.constructor.tag))break}i.releaseLock()}write(){const e=[];for(let t=0;t<this.length;t++){const r=this[t].write();if(V.isStream(r)&&Bs(this[t].constructor.tag)){let i=[],n=0;const a=512;e.push(Is(this[t].constructor.tag)),e.push(B(r,(e=>{if(i.push(e),n+=e.length,n>=a){const e=Math.min(Math.log(n)/Math.LN2|0,30),t=2**e,r=V.concat([Rs(e)].concat(i));return i=[r.subarray(1+t)],n=i[0].length,r.subarray(0,1+t)}}),(()=>V.concat([Ds(n)].concat(i)))))}else{if(V.isStream(r)){let i=0;e.push(B(q(r),(e=>{i+=e.length}),(()=>Us(this[t].constructor.tag,i))))}else e.push(Us(this[t].constructor.tag,r.length));e.push(r)}}return V.concat(e)}filterByTag(...e){const t=new Ws,r=e=>t=>e===t;for(let i=0;i<this.length;i++)e.some(r(this[i].constructor.tag))&&t.push(this[i]);return t}findPacket(e){return this.find((t=>t.constructor.tag===e))}indexOfTag(...e){const t=[],r=this,i=e=>t=>e===t;for(let n=0;n<this.length;n++)e.some(i(r[n].constructor.tag))&&t.push(n);return t}}const Hs=/*#__PURE__*/V.constructAllowedPackets([Cs,js,Fs]);class Gs{static get tag(){return re.packet.compressedData}constructor(e=ie){this.packets=null,this.algorithm=e.preferredCompressionAlgorithm,this.compressed=null,this.deflateLevel=e.deflateLevel}async read(e,t=ie){await z(e,(async e=>{this.algorithm=await e.readByte(),this.compressed=e.remainder(),await this.decompress(t)}))}write(){return null===this.compressed&&this.compress(),V.concat([new Uint8Array([this.algorithm]),this.compressed])}async decompress(e=ie){const t=re.read(re.compression,this.algorithm),r=Js[t];if(!r)throw Error(t+" decompression not supported");this.packets=await Ws.fromBinary(r(this.compressed),Hs,e)}compress(){const e=re.read(re.compression,this.algorithm),t=Qs[e];if(!t)throw Error(e+" compression not supported");this.compressed=t(this.packets.write(),this.deflateLevel)}}const Vs=V.getNodeZlib();function $s(e){return e}function Zs(e,t,r={}){return function(i){return!V.isStream(i)||s(i)?W((()=>j(i).then((t=>new Promise(((i,n)=>{e(t,r,((e,t)=>{if(e)return n(e);i(t)}))})))))):y(b(i).pipe(t(r)))}}function Ys(e,t={}){return function(r){const i=new e(t);return B(r,(e=>{if(e.length)return i.push(e,2),i.result}),(()=>{if(e===$a)return i.push([],4),i.result}))}}function Xs(e){return function(t){return W((async()=>e(await j(t))))}}const Qs=Vs?{zip:/*#__PURE__*/(e,t)=>Zs(Vs.deflateRaw,Vs.createDeflateRaw,{level:t})(e),zlib:/*#__PURE__*/(e,t)=>Zs(Vs.deflate,Vs.createDeflate,{level:t})(e)}:{zip:/*#__PURE__*/(e,t)=>Ys($a,{raw:!0,level:t})(e),zlib:/*#__PURE__*/(e,t)=>Ys($a,{level:t})(e)},Js=Vs?{uncompressed:$s,zip:/*#__PURE__*/Zs(Vs.inflateRaw,Vs.createInflateRaw),zlib:/*#__PURE__*/Zs(Vs.inflate,Vs.createInflate),bzip2:/*#__PURE__*/Xs(Ms)}:{uncompressed:$s,zip:/*#__PURE__*/Ys(ls,{raw:!0}),zlib:/*#__PURE__*/Ys(ls),bzip2:/*#__PURE__*/Xs(Ms)},eo=/*#__PURE__*/V.constructAllowedPackets([Cs,Gs,js,Fs]);class to{static get tag(){return re.packet.symEncryptedIntegrityProtectedData}constructor(){this.version=1,this.encrypted=null,this.packets=null}async read(e){await z(e,(async e=>{const t=await e.readByte();if(1!==t)throw new zs(`Version ${t} of the SEIP packet is unsupported.`);this.encrypted=e.remainder()}))}write(){return V.concat([new Uint8Array([1]),this.encrypted])}async encrypt(e,t,r=ie){const{blockSize:i}=Rn.getCipher(e);let n=this.packets.write();s(n)&&(n=await j(n));const a=await Rn.getPrefixRandom(e),o=new Uint8Array([211,20]),c=V.concat([a,n,o]),u=await Rn.hash.sha1(O(c)),h=V.concat([c,u]);return this.encrypted=await Rn.mode.cfb.encrypt(e,t,h,new Uint8Array(i),r),!0}async decrypt(e,t,r=ie){const{blockSize:i}=Rn.getCipher(e);let n=q(this.encrypted);s(n)&&(n=await j(n));const a=await Rn.mode.cfb.decrypt(e,t,n,new Uint8Array(i)),o=N(O(a),-20),c=N(a,0,-20),u=Promise.all([j(await Rn.hash.sha1(O(c))),j(o)]).then((([e,t])=>{if(!V.equalsUint8Array(e,t))throw Error("Modification detected.");return new Uint8Array})),h=N(c,i+2);let f=N(h,0,-2);return f=C([f,W((()=>u))]),V.isStream(n)&&r.allowUnauthenticatedStream||(f=await j(f)),this.packets=await Ws.fromBinary(f,eo,r),!0}}const ro=/*#__PURE__*/V.constructAllowedPackets([Cs,Gs,js,Fs]);class io{static get tag(){return re.packet.aeadEncryptedData}constructor(){this.version=1,this.cipherAlgorithm=null,this.aeadAlgorithm=re.aead.eax,this.chunkSizeByte=null,this.iv=null,this.encrypted=null,this.packets=null}async read(e){await z(e,(async e=>{const t=await e.readByte();if(1!==t)throw new zs(`Version ${t} of the AEAD-encrypted data packet is not supported.`);this.cipherAlgorithm=await e.readByte(),this.aeadAlgorithm=await e.readByte(),this.chunkSizeByte=await e.readByte();const r=Rn.getAEADMode(this.aeadAlgorithm);this.iv=await e.readBytes(r.ivLength),this.encrypted=e.remainder()}))}write(){return V.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.iv,this.encrypted])}async decrypt(e,t,r=ie){this.packets=await Ws.fromBinary(await this.crypt("decrypt",t,q(this.encrypted)),ro,r)}async encrypt(e,t,r=ie){this.cipherAlgorithm=e;const{ivLength:i}=Rn.getAEADMode(this.aeadAlgorithm);this.iv=await Rn.random.getRandomBytes(i),this.chunkSizeByte=r.aeadChunkSizeByte;const n=this.packets.write();this.encrypted=await this.crypt("encrypt",t,n)}async crypt(e,t,r){const i=Rn.getAEADMode(this.aeadAlgorithm),n=await i(this.cipherAlgorithm,t),a="decrypt"===e?i.tagLength:0,s="encrypt"===e?i.tagLength:0,o=2**(this.chunkSizeByte+6)+a,c=new ArrayBuffer(21),u=new Uint8Array(c,0,13),h=new Uint8Array(c),f=new DataView(c),d=new Uint8Array(c,5,8);u.set([192|io.tag,this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte],0);let l=0,p=Promise.resolve(),y=0,b=0;const m=this.iv;return T(r,(async(t,r)=>{if("array"!==V.isStream(t)){const e=new S({},{highWaterMark:V.getHardwareConcurrency()*2**(this.chunkSizeByte+6),size:e=>e.length});R(e.readable,r),r=e.writable}const c=K(t),g=D(r);try{for(;;){let t=await c.readBytes(o+a)||new Uint8Array;const r=t.subarray(t.length-a);let w,v;if(t=t.subarray(0,t.length-a),!l||t.length?(c.unshift(r),w=n[e](t,i.getNonce(m,d),u),b+=t.length-a+s):(f.setInt32(17,y),w=n[e](r,i.getNonce(m,d),h),b+=s,v=!0),y+=t.length-a,p=p.then((()=>w)).then((async e=>{await g.ready,await g.write(e),b-=e.length})).catch((e=>g.abort(e))),(v||b>g.desiredSize)&&await p,v){await g.close();break}f.setInt32(9,++l)}}catch(e){await g.abort(e)}}))}}class no{static get tag(){return re.packet.publicKeyEncryptedSessionKey}constructor(){this.version=3,this.publicKeyID=new le,this.publicKeyAlgorithm=null,this.sessionKey=null,this.sessionKeyAlgorithm=null,this.encrypted={}}read(e){if(this.version=e[0],3!==this.version)throw new zs(`Version ${this.version} of the PKESK packet is unsupported.`);this.publicKeyID.read(e.subarray(1,e.length)),this.publicKeyAlgorithm=e[9],this.encrypted=Rn.parseEncSessionKeyParams(this.publicKeyAlgorithm,e.subarray(10))}write(){const e=[new Uint8Array([this.version]),this.publicKeyID.write(),new Uint8Array([this.publicKeyAlgorithm]),Rn.serializeParams(this.publicKeyAlgorithm,this.encrypted)];return V.concatUint8Array(e)}async encrypt(e){const t=V.concatUint8Array([new Uint8Array([re.write(re.symmetric,this.sessionKeyAlgorithm)]),this.sessionKey,V.writeChecksum(this.sessionKey)]),r=re.write(re.publicKey,this.publicKeyAlgorithm);this.encrypted=await Rn.publicKeyEncrypt(r,e.publicParams,t,e.getFingerprintBytes())}async decrypt(e,t){if(this.publicKeyAlgorithm!==e.algorithm)throw Error("Decryption error");const r=t?V.concatUint8Array([new Uint8Array([t.sessionKeyAlgorithm]),t.sessionKey,V.writeChecksum(t.sessionKey)]):null,i=await Rn.publicKeyDecrypt(this.publicKeyAlgorithm,e.publicParams,e.privateParams,this.encrypted,e.getFingerprintBytes(),r),n=i[0],a=i.subarray(1,i.length-2),s=i.subarray(i.length-2),o=V.writeChecksum(a),c=o[0]===s[0]&o[1]===s[1];if(t){const e=c&n===t.sessionKeyAlgorithm&a.length===t.sessionKey.length;this.sessionKeyAlgorithm=V.selectUint8(e,n,t.sessionKeyAlgorithm),this.sessionKey=V.selectUint8Array(e,a,t.sessionKey)}else{if(!(c&&re.read(re.symmetric,n)))throw Error("Decryption error");this.sessionKey=a,this.sessionKeyAlgorithm=n}}}class ao{constructor(e=ie){this.algorithm=re.hash.sha256,this.type="iterated",this.c=e.s2kIterationCountByte,this.salt=null}getCount(){return 16+(15&this.c)<<6+(this.c>>4)}read(e){let t=0;switch(this.type=re.read(re.s2k,e[t++]),this.algorithm=e[t++],this.type){case"simple":break;case"salted":this.salt=e.subarray(t,t+8),t+=8;break;case"iterated":this.salt=e.subarray(t,t+8),t+=8,this.c=e[t++];break;case"gnu":if("GNU"!==V.uint8ArrayToString(e.subarray(t,t+3)))throw Error("Unknown s2k type.");t+=3;if(1001!==1e3+e[t++])throw Error("Unknown s2k gnu protection mode.");this.type="gnu-dummy";break;default:throw Error("Unknown s2k type.")}return t}write(){if("gnu-dummy"===this.type)return new Uint8Array([101,0,...V.stringToUint8Array("GNU"),1]);const e=[new Uint8Array([re.write(re.s2k,this.type),this.algorithm])];switch(this.type){case"simple":break;case"salted":e.push(this.salt);break;case"iterated":e.push(this.salt),e.push(new Uint8Array([this.c]));break;case"gnu":throw Error("GNU s2k type not supported.");default:throw Error("Unknown s2k type.")}return V.concatUint8Array(e)}async produceKey(e,t){e=V.encodeUTF8(e);const r=[];let i=0,n=0;for(;i<t;){let t;switch(this.type){case"simple":t=V.concatUint8Array([new Uint8Array(n),e]);break;case"salted":t=V.concatUint8Array([new Uint8Array(n),this.salt,e]);break;case"iterated":{const r=V.concatUint8Array([this.salt,e]);let i=r.length;const a=Math.max(this.getCount(),i);t=new Uint8Array(n+a),t.set(r,n);for(let e=n+i;e<a;e+=i,i*=2)t.copyWithin(e,n,e);break}case"gnu":throw Error("GNU s2k type not supported.");default:throw Error("Unknown s2k type.")}const a=await Rn.hash.digest(this.algorithm,t);r.push(a),i+=a.length,n++}return V.concatUint8Array(r).subarray(0,t)}}class so{static get tag(){return re.packet.symEncryptedSessionKey}constructor(e=ie){this.version=e.aeadProtect?5:4,this.sessionKey=null,this.sessionKeyEncryptionAlgorithm=null,this.sessionKeyAlgorithm=re.symmetric.aes256,this.aeadAlgorithm=re.write(re.aead,e.preferredAEADAlgorithm),this.encrypted=null,this.s2k=null,this.iv=null}read(e){let t=0;if(this.version=e[t++],4!==this.version&&5!==this.version)throw new zs(`Version ${this.version} of the SKESK packet is unsupported.`);const r=e[t++];if(5===this.version&&(this.aeadAlgorithm=e[t++]),this.s2k=new ao,t+=this.s2k.read(e.subarray(t,e.length)),5===this.version){const r=Rn.getAEADMode(this.aeadAlgorithm);this.iv=e.subarray(t,t+=r.ivLength)}5===this.version||t<e.length?(this.encrypted=e.subarray(t,e.length),this.sessionKeyEncryptionAlgorithm=r):this.sessionKeyAlgorithm=r}write(){const e=null===this.encrypted?this.sessionKeyAlgorithm:this.sessionKeyEncryptionAlgorithm;let t;return 5===this.version?t=V.concatUint8Array([new Uint8Array([this.version,e,this.aeadAlgorithm]),this.s2k.write(),this.iv,this.encrypted]):(t=V.concatUint8Array([new Uint8Array([this.version,e]),this.s2k.write()]),null!==this.encrypted&&(t=V.concatUint8Array([t,this.encrypted]))),t}async decrypt(e){const t=null!==this.sessionKeyEncryptionAlgorithm?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm,{blockSize:r,keySize:i}=Rn.getCipher(t),n=await this.s2k.produceKey(e,i);if(5===this.version){const e=Rn.getAEADMode(this.aeadAlgorithm),r=new Uint8Array([192|so.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),i=await e(t,n);this.sessionKey=await i.decrypt(this.encrypted,this.iv,r)}else if(null!==this.encrypted){const e=await Rn.mode.cfb.decrypt(t,n,this.encrypted,new Uint8Array(r));this.sessionKeyAlgorithm=re.write(re.symmetric,e[0]),this.sessionKey=e.subarray(1,e.length)}else this.sessionKey=n}async encrypt(e,t=ie){const r=null!==this.sessionKeyEncryptionAlgorithm?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm;this.sessionKeyEncryptionAlgorithm=r,this.s2k=new ao(t),this.s2k.salt=await Rn.random.getRandomBytes(8);const{blockSize:i,keySize:n}=Rn.getCipher(r),a=await this.s2k.produceKey(e,n);if(null===this.sessionKey&&(this.sessionKey=await Rn.generateSessionKey(this.sessionKeyAlgorithm)),5===this.version){const e=Rn.getAEADMode(this.aeadAlgorithm);this.iv=await Rn.random.getRandomBytes(e.ivLength);const t=new Uint8Array([192|so.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),i=await e(r,a);this.encrypted=await i.encrypt(this.sessionKey,this.iv,t)}else{const e=V.concatUint8Array([new Uint8Array([this.sessionKeyAlgorithm]),this.sessionKey]);this.encrypted=await Rn.mode.cfb.encrypt(r,a,e,new Uint8Array(i),t)}}}class oo{static get tag(){return re.packet.publicKey}constructor(e=new Date,t=ie){this.version=t.v5Keys?5:4,this.created=V.normalizeDate(e),this.algorithm=null,this.publicParams=null,this.expirationTimeV3=0,this.fingerprint=null,this.keyID=null}static fromSecretKeyPacket(e){const t=new oo,{version:r,created:i,algorithm:n,publicParams:a,keyID:s,fingerprint:o}=e;return t.version=r,t.created=i,t.algorithm=n,t.publicParams=a,t.keyID=s,t.fingerprint=o,t}async read(e){let t=0;if(this.version=e[t++],4===this.version||5===this.version){this.created=V.readDate(e.subarray(t,t+4)),t+=4,this.algorithm=e[t++],5===this.version&&(t+=4);try{const{read:r,publicParams:i}=Rn.parsePublicKeyParams(this.algorithm,e.subarray(t));this.publicParams=i,t+=r}catch(e){throw Error("Error reading MPIs")}return await this.computeFingerprintAndKeyID(),t}throw new zs(`Version ${this.version} of the key packet is unsupported.`)}write(){const e=[];e.push(new Uint8Array([this.version])),e.push(V.writeDate(this.created)),e.push(new Uint8Array([this.algorithm]));const t=Rn.serializeParams(this.algorithm,this.publicParams);return 5===this.version&&e.push(V.writeNumber(t.length,4)),e.push(t),V.concatUint8Array(e)}writeForHash(e){const t=this.writePublicKey();return 5===e?V.concatUint8Array([new Uint8Array([154]),V.writeNumber(t.length,4),t]):V.concatUint8Array([new Uint8Array([153]),V.writeNumber(t.length,2),t])}isDecrypted(){return null}getCreationTime(){return this.created}getKeyID(){return this.keyID}async computeFingerprintAndKeyID(){if(await this.computeFingerprint(),this.keyID=new le,5===this.version)this.keyID.read(this.fingerprint.subarray(0,8));else{if(4!==this.version)throw Error("Unsupported key version");this.keyID.read(this.fingerprint.subarray(12,20))}}async computeFingerprint(){const e=this.writeForHash(this.version);if(5===this.version)this.fingerprint=await Rn.hash.sha256(e);else{if(4!==this.version)throw Error("Unsupported key version");this.fingerprint=await Rn.hash.sha1(e)}}getFingerprintBytes(){return this.fingerprint}getFingerprint(){return V.uint8ArrayToHex(this.getFingerprintBytes())}hasSameFingerprintAs(e){return this.version===e.version&&V.equalsUint8Array(this.writePublicKey(),e.writePublicKey())}getAlgorithmInfo(){const e={};e.algorithm=re.read(re.publicKey,this.algorithm);const t=this.publicParams.n||this.publicParams.p;return t?e.bits=V.uint8ArrayBitLength(t):e.curve=this.publicParams.oid.getName(),e}}oo.prototype.readPublicKey=oo.prototype.read,oo.prototype.writePublicKey=oo.prototype.write;const co=/*#__PURE__*/V.constructAllowedPackets([Cs,Gs,js,Fs]);class uo{static get tag(){return re.packet.symmetricallyEncryptedData}constructor(){this.encrypted=null,this.packets=null}read(e){this.encrypted=e}write(){return this.encrypted}async decrypt(e,t,r=ie){if(!r.allowUnauthenticatedMessages)throw Error("Message is not authenticated.");const{blockSize:i}=Rn.getCipher(e),n=await j(q(this.encrypted)),a=await Rn.mode.cfb.decrypt(e,t,n.subarray(i+2),n.subarray(2,i+2));this.packets=await Ws.fromBinary(a,co,r)}async encrypt(e,t,r=ie){const i=this.packets.write(),{blockSize:n}=Rn.getCipher(e),a=await Rn.getPrefixRandom(e),s=await Rn.mode.cfb.encrypt(e,t,a,new Uint8Array(n),r),o=await Rn.mode.cfb.encrypt(e,t,i,s.subarray(2),r);this.encrypted=V.concat([s,o])}}class ho{static get tag(){return re.packet.marker}read(e){return 80===e[0]&&71===e[1]&&80===e[2]}write(){return new Uint8Array([80,71,80])}}class fo extends oo{static get tag(){return re.packet.publicSubkey}constructor(e,t){super(e,t)}static fromSecretSubkeyPacket(e){const t=new fo,{version:r,created:i,algorithm:n,publicParams:a,keyID:s,fingerprint:o}=e;return t.version=r,t.created=i,t.algorithm=n,t.publicParams=a,t.keyID=s,t.fingerprint=o,t}}class lo{static get tag(){return re.packet.userAttribute}constructor(){this.attributes=[]}read(e){let t=0;for(;t<e.length;){const r=Ks(e.subarray(t,e.length));t+=r.offset,this.attributes.push(V.uint8ArrayToString(e.subarray(t,t+r.len))),t+=r.len}}write(){const e=[];for(let t=0;t<this.attributes.length;t++)e.push(Ds(this.attributes[t].length)),e.push(V.stringToUint8Array(this.attributes[t]));return V.concatUint8Array(e)}equals(e){return!!(e&&e instanceof lo)&&this.attributes.every((function(t,r){return t===e.attributes[r]}))}}class po extends oo{static get tag(){return re.packet.secretKey}constructor(e=new Date,t=ie){super(e,t),this.keyMaterial=null,this.isEncrypted=null,this.s2kUsage=0,this.s2k=null,this.symmetric=null,this.aead=null,this.privateParams=null}async read(e){let t=await this.readPublicKey(e);if(this.s2kUsage=e[t++],5===this.version&&t++,255===this.s2kUsage||254===this.s2kUsage||253===this.s2kUsage){if(this.symmetric=e[t++],253===this.s2kUsage&&(this.aead=e[t++]),this.s2k=new ao,t+=this.s2k.read(e.subarray(t,e.length)),"gnu-dummy"===this.s2k.type)return}else this.s2kUsage&&(this.symmetric=this.s2kUsage);if(this.s2kUsage&&(this.iv=e.subarray(t,t+Rn.getCipher(this.symmetric).blockSize),t+=this.iv.length),5===this.version&&(t+=4),this.keyMaterial=e.subarray(t),this.isEncrypted=!!this.s2kUsage,!this.isEncrypted){const e=this.keyMaterial.subarray(0,-2);if(!V.equalsUint8Array(V.writeChecksum(e),this.keyMaterial.subarray(-2)))throw Error("Key checksum mismatch");try{const{privateParams:t}=Rn.parsePrivateKeyParams(this.algorithm,e,this.publicParams);this.privateParams=t}catch(e){throw Error("Error reading MPIs")}}}write(){const e=[this.writePublicKey()];e.push(new Uint8Array([this.s2kUsage]));const t=[];return 255!==this.s2kUsage&&254!==this.s2kUsage&&253!==this.s2kUsage||(t.push(this.symmetric),253===this.s2kUsage&&t.push(this.aead),t.push(...this.s2k.write())),this.s2kUsage&&"gnu-dummy"!==this.s2k.type&&t.push(...this.iv),5===this.version&&e.push(new Uint8Array([t.length])),e.push(new Uint8Array(t)),this.isDummy()||(this.s2kUsage||(this.keyMaterial=Rn.serializeParams(this.algorithm,this.privateParams)),5===this.version&&e.push(V.writeNumber(this.keyMaterial.length,4)),e.push(this.keyMaterial),this.s2kUsage||e.push(V.writeChecksum(this.keyMaterial))),V.concatUint8Array(e)}isDecrypted(){return!1===this.isEncrypted}isDummy(){return!(!this.s2k||"gnu-dummy"!==this.s2k.type)}makeDummy(e=ie){this.isDummy()||(this.isDecrypted()&&this.clearPrivateParams(),this.isEncrypted=null,this.keyMaterial=null,this.s2k=new ao(e),this.s2k.algorithm=0,this.s2k.c=0,this.s2k.type="gnu-dummy",this.s2kUsage=254,this.symmetric=re.symmetric.aes256)}async encrypt(e,t=ie){if(this.isDummy())return;if(!this.isDecrypted())throw Error("Key packet is already encrypted");if(this.isDecrypted()&&!e)return void(this.s2kUsage=0);if(!e)throw Error("The key must be decrypted before removing passphrase protection.");this.s2k=new ao(t),this.s2k.salt=await Rn.random.getRandomBytes(8);const r=Rn.serializeParams(this.algorithm,this.privateParams);this.symmetric=re.symmetric.aes256;const i=await yo(this.s2k,e,this.symmetric),{blockSize:n}=Rn.getCipher(this.symmetric);if(this.iv=await Rn.random.getRandomBytes(n),t.aeadProtect){this.s2kUsage=253,this.aead=re.aead.eax;const e=Rn.getAEADMode(this.aead),t=await e(this.symmetric,i);this.keyMaterial=await t.encrypt(r,this.iv.subarray(0,e.ivLength),new Uint8Array)}else this.s2kUsage=254,this.keyMaterial=await Rn.mode.cfb.encrypt(this.symmetric,i,V.concatUint8Array([r,await Rn.hash.sha1(r,t)]),this.iv,t)}async decrypt(e){if(this.isDummy())return!1;if(this.isDecrypted())throw Error("Key packet is already decrypted.");let t,r;if(254!==this.s2kUsage&&253!==this.s2kUsage)throw 255===this.s2kUsage?Error("Encrypted private key is authenticated using an insecure two-byte hash"):Error("Private key is encrypted using an insecure S2K function: unsalted MD5");if(t=await yo(this.s2k,e,this.symmetric),253===this.s2kUsage){const e=Rn.getAEADMode(this.aead),i=await e(this.symmetric,t);try{r=await i.decrypt(this.keyMaterial,this.iv.subarray(0,e.ivLength),new Uint8Array)}catch(e){if("Authentication tag mismatch"===e.message)throw Error("Incorrect key passphrase: "+e.message);throw e}}else{const e=await Rn.mode.cfb.decrypt(this.symmetric,t,this.keyMaterial,this.iv);r=e.subarray(0,-20);const i=await Rn.hash.sha1(r);if(!V.equalsUint8Array(i,e.subarray(-20)))throw Error("Incorrect key passphrase")}try{const{privateParams:e}=Rn.parsePrivateKeyParams(this.algorithm,r,this.publicParams);this.privateParams=e}catch(e){throw Error("Error reading MPIs")}this.isEncrypted=!1,this.keyMaterial=null,this.s2kUsage=0}async validate(){if(this.isDummy())return;if(!this.isDecrypted())throw Error("Key is not decrypted");let e;try{e=await Rn.validateParams(this.algorithm,this.publicParams,this.privateParams)}catch(t){e=!1}if(!e)throw Error("Key is invalid")}async generate(e,t){const{privateParams:r,publicParams:i}=await Rn.generateParams(this.algorithm,e,t);this.privateParams=r,this.publicParams=i,this.isEncrypted=!1}clearPrivateParams(){this.isDummy()||(Object.keys(this.privateParams).forEach((e=>{this.privateParams[e].fill(0),delete this.privateParams[e]})),this.privateParams=null,this.isEncrypted=!0)}}async function yo(e,t,r){const{keySize:i}=Rn.getCipher(r);return e.produceKey(t,i)}var bo=tt((function(e){!function(t){function r(e){function t(){return Ae<Se}function r(){return Ae}function n(e){Ae=e}function a(){Ae=0,Se=ke.length}function s(e,t){return{name:e,tokens:t||"",semantic:t||"",children:[]}}function o(e,t){var r;return null===t?null:((r=s(e)).tokens=t.tokens,r.semantic=t.semantic,r.children.push(t),r)}function c(e,t){return null!==t&&(e.tokens+=t.tokens,e.semantic+=t.semantic),e.children.push(t),e}function u(e){var r;return t()&&e(r=ke[Ae])?(Ae+=1,s("token",r)):null}function h(e){return function(){return o("literal",u((function(t){return t===e})))}}function f(){var e=arguments;return function(){var t,i,a,o;for(o=r(),i=s("and"),t=0;t<e.length;t+=1){if(null===(a=e[t]()))return n(o),null;c(i,a)}return i}}function d(){var e=arguments;return function(){var t,i,a;for(a=r(),t=0;t<e.length;t+=1){if(null!==(i=e[t]()))return i;n(a)}return null}}function l(e){return function(){var t,i;return i=r(),null!==(t=e())?t:(n(i),s("opt"))}}function p(e){return function(){var t=e();return null!==t&&(t.semantic=""),t}}function y(e){return function(){var t=e();return null!==t&&t.semantic.length>0&&(t.semantic=" "),t}}function b(e,t){return function(){var i,a,o,u,h;for(u=r(),i=s("star"),o=0,h=void 0===t?0:t;null!==(a=e());)o+=1,c(i,a);return o>=h?i:(n(u),null)}}function m(e){return e.charCodeAt(0)>=128}function g(){return o("cr",h("\r")())}function w(){return o("crlf",f(g,k)())}function v(){return o("dquote",h('"')())}function _(){return o("htab",h("\t")())}function k(){return o("lf",h("\n")())}function A(){return o("sp",h(" ")())}function S(){return o("vchar",u((function(t){var r=t.charCodeAt(0),i=33<=r&&r<=126;return e.rfc6532&&(i=i||m(t)),i})))}function E(){return o("wsp",d(A,_)())}function P(){var e=o("quoted-pair",d(f(h("\\"),d(S,E)),ie)());return null===e?null:(e.semantic=e.semantic[1],e)}function x(){return o("fws",d(ae,f(l(f(b(E),p(w))),b(E,1)))())}function M(){return o("ctext",d((function(){return u((function(t){var r=t.charCodeAt(0),i=33<=r&&r<=39||42<=r&&r<=91||93<=r&&r<=126;return e.rfc6532&&(i=i||m(t)),i}))}),te)())}function C(){return o("ccontent",d(M,P,K)())}function K(){return o("comment",f(h("("),b(f(l(x),C)),l(x),h(")"))())}function D(){return o("cfws",d(f(b(f(l(x),K),1),l(x)),x)())}function R(){return o("atext",u((function(t){var r="a"<=t&&t<="z"||"A"<=t&&t<="Z"||"0"<=t&&t<="9"||["!","#","$","%","&","'","*","+","-","/","=","?","^","_","`","{","|","}","~"].indexOf(t)>=0;return e.rfc6532&&(r=r||m(t)),r})))}function I(){return o("atom",f(y(l(D)),b(R,1),y(l(D)))())}function U(){var e,t;return null===(e=o("dot-atom-text",b(R,1)()))||null!==(t=b(f(h("."),b(R,1)))())&&c(e,t),e}function B(){return o("dot-atom",f(p(l(D)),U,p(l(D)))())}function T(){return o("qtext",d((function(){return u((function(t){var r=t.charCodeAt(0),i=33===r||35<=r&&r<=91||93<=r&&r<=126;return e.rfc6532&&(i=i||m(t)),i}))}),re)())}function z(){return o("qcontent",d(T,P)())}function q(){return o("quoted-string",f(p(l(D)),p(v),b(f(l(y(x)),z)),l(p(x)),p(v),p(l(D)))())}function O(){return o("word",d(I,q)())}function F(){return o("address",d(N,W)())}function N(){return o("mailbox",d(j,J)())}function j(){return o("name-addr",f(l(H),L)())}function L(){return o("angle-addr",d(f(p(l(D)),h("<"),J,h(">"),p(l(D))),se)())}function W(){return o("group",f(H,h(":"),l($),h(";"),p(l(D)))())}function H(){return o("display-name",(null!==(e=o("phrase",d(ne,b(O,1))()))&&(e.semantic=function(e){return e.replace(/([ \t]|\r\n)+/g," ").replace(/^\s*/,"").replace(/\s*$/,"")}(e.semantic)),e));var e}function G(){return o("mailbox-list",d(f(N,b(f(h(","),N))),ue)())}function V(){return o("address-list",d(f(F,b(f(h(","),F))),he)())}function $(){return o("group-list",d(G,p(D),fe)())}function Z(){return o("local-part",d(de,B,q)())}function Y(){return o("dtext",d((function(){return u((function(t){var r=t.charCodeAt(0),i=33<=r&&r<=90||94<=r&&r<=126;return e.rfc6532&&(i=i||m(t)),i}))}),pe)())}function X(){return o("domain-literal",f(p(l(D)),h("["),b(f(l(x),Y)),l(x),h("]"),p(l(D)))())}function Q(){return o("domain",(t=d(le,B,X)(),e.rejectTLD&&t&&t.semantic&&t.semantic.indexOf(".")<0?null:(t&&(t.semantic=t.semantic.replace(/\s+/g,"")),t)));var t}function J(){return o("addr-spec",f(Z,h("@"),Q)())}function ee(){return e.strict?null:o("obs-NO-WS-CTL",u((function(e){var t=e.charCodeAt(0);return 1<=t&&t<=8||11===t||12===t||14<=t&&t<=31||127===t})))}function te(){return e.strict?null:o("obs-ctext",ee())}function re(){return e.strict?null:o("obs-qtext",ee())}function ie(){return e.strict?null:o("obs-qp",f(h("\\"),d(h("\0"),ee,k,g))())}function ne(){return e.strict?null:e.atInDisplayName?o("obs-phrase",f(O,b(d(O,h("."),h("@"),y(D))))()):o("obs-phrase",f(O,b(d(O,h("."),y(D))))())}function ae(){return e.strict?null:o("obs-FWS",b(f(p(l(w)),E),1)())}function se(){return e.strict?null:o("obs-angle-addr",f(p(l(D)),h("<"),oe,J,h(">"),p(l(D)))())}function oe(){return e.strict?null:o("obs-route",f(ce,h(":"))())}function ce(){return e.strict?null:o("obs-domain-list",f(b(d(p(D),h(","))),h("@"),Q,b(f(h(","),p(l(D)),l(f(h("@"),Q)))))())}function ue(){return e.strict?null:o("obs-mbox-list",f(b(f(p(l(D)),h(","))),N,b(f(h(","),l(f(N,p(D))))))())}function he(){return e.strict?null:o("obs-addr-list",f(b(f(p(l(D)),h(","))),F,b(f(h(","),l(f(F,p(D))))))())}function fe(){return e.strict?null:o("obs-group-list",f(b(f(p(l(D)),h(",")),1),p(l(D)))())}function de(){return e.strict?null:o("obs-local-part",f(O,b(f(h("."),O)))())}function le(){return e.strict?null:o("obs-domain",f(I,b(f(h("."),I)))())}function pe(){return e.strict?null:o("obs-dtext",d(ee,P)())}function ye(e,t){var r,i,n;if(null==t)return null;for(i=[t];i.length>0;){if((n=i.pop()).name===e)return n;for(r=n.children.length-1;r>=0;r-=1)i.push(n.children[r])}return null}function be(e,t){var r,i,n,a,s;if(null==t)return null;for(i=[t],a=[],s={},r=0;r<e.length;r+=1)s[e[r]]=!0;for(;i.length>0;)if((n=i.pop()).name in s)a.push(n);else for(r=n.children.length-1;r>=0;r-=1)i.push(n.children[r]);return a}function me(t){var r,i,n,a,s;if(null===t)return null;for(r=[],i=be(["group","mailbox"],t),n=0;n<i.length;n+=1)"group"===(a=i[n]).name?r.push(ge(a)):"mailbox"===a.name&&r.push(we(a));return s={ast:t,addresses:r},e.simple&&(s=function(e){var t;if(e&&e.addresses)for(t=0;t<e.addresses.length;t+=1)delete e.addresses[t].node;return e}(s)),e.oneResult?function(t){if(!t)return null;if(!e.partial&&t.addresses.length>1)return null;return t.addresses&&t.addresses[0]}(s):e.simple?s&&s.addresses:s}function ge(e){var t,r=ye("display-name",e),i=[],n=be(["mailbox"],e);for(t=0;t<n.length;t+=1)i.push(we(n[t]));return{node:e,parts:{name:r},type:e.name,name:ve(r),addresses:i}}function we(e){var t=ye("display-name",e),r=ye("addr-spec",e),i=function(e,t){var r,i,n,a;if(null==t)return null;for(i=[t],a=[];i.length>0;)for((n=i.pop()).name===e&&a.push(n),r=n.children.length-1;r>=0;r-=1)i.push(n.children[r]);return a}("cfws",e),n=be(["comment"],e),a=ye("local-part",r),s=ye("domain",r);return{node:e,parts:{name:t,address:r,local:a,domain:s,comments:i},type:e.name,name:ve(t),address:ve(r),local:ve(a),domain:ve(s),comments:_e(n),groupName:ve(e.groupName)}}function ve(e){return null!=e?e.semantic:null}function _e(e){var t="";if(e)for(var r=0;r<e.length;r+=1)t+=ve(e[r]);return t}var ke,Ae,Se,Ee,Pe;if(null===(e=i(e,{})))return null;if(ke=e.input,Pe={address:F,"address-list":V,"angle-addr":L,from:function(){return o("from",d(G,V)())},group:W,mailbox:N,"mailbox-list":G,"reply-to":function(){return o("reply-to",V())},sender:function(){return o("sender",d(N,F)())}}[e.startAt]||V,!e.strict){if(a(),e.strict=!0,Ee=Pe(ke),e.partial||!t())return me(Ee);e.strict=!1}return a(),Ee=Pe(ke),!e.partial&&t()?null:me(Ee)}function i(e,t){function r(e){return"[object String]"===Object.prototype.toString.call(e)}function i(e){return null==e}var n,a;if(r(e))e={input:e};else if(!function(e){return e===Object(e)}(e))return null;if(!r(e.input))return null;if(!t)return null;for(a in n={oneResult:!1,partial:!1,rejectTLD:!1,rfc6532:!1,simple:!1,startAt:"address-list",strict:!1,atInDisplayName:!1})i(e[a])&&(e[a]=i(t[a])?n[a]:t[a]);return e}r.parseOneAddress=function(e){return r(i(e,{oneResult:!0,rfc6532:!0,simple:!0,startAt:"address-list"}))},r.parseAddressList=function(e){return r(i(e,{rfc6532:!0,simple:!0,startAt:"address-list"}))},r.parseFrom=function(e){return r(i(e,{rfc6532:!0,simple:!0,startAt:"from"}))},r.parseSender=function(e){return r(i(e,{oneResult:!0,rfc6532:!0,simple:!0,startAt:"sender"}))},r.parseReplyTo=function(e){return r(i(e,{rfc6532:!0,simple:!0,startAt:"reply-to"}))},e.exports=r}()}));class mo{static get tag(){return re.packet.userID}constructor(){this.userID="",this.name="",this.email="",this.comment=""}static fromObject(e){if(V.isString(e)||e.name&&!V.isString(e.name)||e.email&&!V.isEmailAddress(e.email)||e.comment&&!V.isString(e.comment))throw Error("Invalid user ID format");const t=new mo;Object.assign(t,e);const r=[];return t.name&&r.push(t.name),t.comment&&r.push(`(${t.comment})`),t.email&&r.push(`<${t.email}>`),t.userID=r.join(" "),t}read(e,t=ie){const r=V.decodeUTF8(e);if(r.length>t.maxUserIDLength)throw Error("User ID string is too long");try{const{name:e,address:t,comments:i}=bo.parseOneAddress({input:r,atInDisplayName:!0});this.comment=i.replace(/^\(|\)$/g,""),this.name=e,this.email=t}catch(e){}this.userID=r}write(){return V.encodeUTF8(this.userID)}equals(e){return e&&e.userID===this.userID}}class go extends po{static get tag(){return re.packet.secretSubkey}constructor(e=new Date,t=ie){super(e,t)}}class wo{static get tag(){return re.packet.trust}read(){throw new zs("Trust packets are not supported")}write(){throw new zs("Trust packets are not supported")}}const vo=/*#__PURE__*/V.constructAllowedPackets([Fs]);class _o{constructor(e){this.packets=e||new Ws}write(){return this.packets.write()}armor(e=ie){return de(re.armor.signature,this.write(),void 0,void 0,void 0,e)}getSigningKeyIDs(){return this.packets.map((e=>e.issuerKeyID))}}async function ko({armoredSignature:e,binarySignature:t,config:r,...i}){r={...ie,...r};let n=e||t;if(!n)throw Error("readSignature: must pass options object containing `armoredSignature` or `binarySignature`");if(e&&!V.isString(e))throw Error("readSignature: options.armoredSignature must be a string");if(t&&!V.isUint8Array(t))throw Error("readSignature: options.binarySignature must be a Uint8Array");const a=Object.keys(i);if(a.length>0)throw Error("Unknown option: "+a.join(", "));if(e){const{type:e,data:t}=await fe(n,r);if(e!==re.armor.signature)throw Error("Armored text not of type signature");n=t}const s=await Ws.fromBinary(n,vo,r);return new _o(s)}async function Ao(e,t){const r=new go(e.date,t);return r.packets=null,r.algorithm=re.write(re.publicKey,e.algorithm),await r.generate(e.rsaBits,e.curve),await r.computeFingerprintAndKeyID(),r}async function So(e,t){const r=new po(e.date,t);return r.packets=null,r.algorithm=re.write(re.publicKey,e.algorithm),await r.generate(e.rsaBits,e.curve,e.config),await r.computeFingerprintAndKeyID(),r}async function Eo(e,t,r,i,n=new Date,a){let s,o;for(let c=e.length-1;c>=0;c--)try{(!s||e[c].created>=s.created)&&(await e[c].verify(t,r,i,n,void 0,a),s=e[c])}catch(e){o=e}if(!s)throw V.wrapError(`Could not find valid ${re.read(re.signature,r)} signature in key ${t.getKeyID().toHex()}`.replace("certGeneric ","self-").replace(/([a-z])([A-Z])/g,((e,t,r)=>t+" "+r.toLowerCase())),o);return s}function Po(e,t,r=new Date){const i=V.normalizeDate(r);if(null!==i){const r=Io(e,t);return!(e.created<=i&&i<r)}return!1}async function xo(e,t,r,i){const n={};n.key=t,n.bind=e;const a=new Fs;return a.signatureType=re.signature.subkeyBinding,a.publicKeyAlgorithm=t.algorithm,a.hashAlgorithm=await Mo(null,e,void 0,void 0,i),r.sign?(a.keyFlags=[re.keyFlags.signData],a.embeddedSignature=await Ko(n,null,e,{signatureType:re.signature.keyBinding},r.date,void 0,void 0,i)):a.keyFlags=[re.keyFlags.encryptCommunication|re.keyFlags.encryptStorage],r.keyExpirationTime>0&&(a.keyExpirationTime=r.keyExpirationTime,a.keyNeverExpires=!1),await a.sign(t,n,r.date),a}async function Mo(e,t,r=new Date,i={},n){let a=n.preferredHashAlgorithm,s=a;if(e){const t=await e.getPrimaryUser(r,i,n);t.selfCertification.preferredHashAlgorithms&&([s]=t.selfCertification.preferredHashAlgorithms,a=Rn.hash.getHashByteLength(a)<=Rn.hash.getHashByteLength(s)?s:a)}switch(Object.getPrototypeOf(t)){case po.prototype:case oo.prototype:case go.prototype:case fo.prototype:switch(t.algorithm){case re.publicKey.ecdh:case re.publicKey.ecdsa:case re.publicKey.eddsa:s=Rn.publicKey.elliptic.getPreferredHashAlgo(t.publicParams.oid)}}return Rn.hash.getHashByteLength(a)<=Rn.hash.getHashByteLength(s)?s:a}async function Co(e,t=[],r=new Date,i=[],n=ie){const a={symmetric:re.symmetric.aes128,aead:re.aead.eax,compression:re.compression.uncompressed}[e],s={symmetric:n.preferredSymmetricAlgorithm,aead:n.preferredAEADAlgorithm,compression:n.preferredCompressionAlgorithm}[e],o={symmetric:"preferredSymmetricAlgorithms",aead:"preferredAEADAlgorithms",compression:"preferredCompressionAlgorithms"}[e];return(await Promise.all(t.map((async function(e,t){const a=(await e.getPrimaryUser(r,i[t],n)).selfCertification[o];return!!a&&a.indexOf(s)>=0})))).every(Boolean)?s:a}async function Ko(e,t,r,i,n,a,s=!1,o){if(r.isDummy())throw Error("Cannot sign with a gnu-dummy key.");if(!r.isDecrypted())throw Error("Signing key is not decrypted.");const c=new Fs;return Object.assign(c,i),c.publicKeyAlgorithm=r.algorithm,c.hashAlgorithm=await Mo(t,r,n,a,o),await c.sign(r,e,n,s),c}async function Do(e,t,r,i=new Date,n){(e=e[r])&&(t[r].length?await Promise.all(e.map((async function(e){e.isExpired(i)||n&&!await n(e)||t[r].some((function(t){return V.equalsUint8Array(t.writeParams(),e.writeParams())}))||t[r].push(e)}))):t[r]=e)}async function Ro(e,t,r,i,n,a,s=new Date,o){a=a||e;const c=[];return await Promise.all(i.map((async function(e){try{n&&!e.issuerKeyID.equals(n.issuerKeyID)||(await e.verify(a,t,r,o.revocationsExpire?s:null,!1,o),c.push(e.issuerKeyID))}catch(e){}}))),n?(n.revoked=!!c.some((e=>e.equals(n.issuerKeyID)))||(n.revoked||!1),n.revoked):c.length>0}function Io(e,t){let r;return!1===t.keyNeverExpires&&(r=e.created.getTime()+1e3*t.keyExpirationTime),r?new Date(r):1/0}function Uo(e,t={}){switch(e.type=e.type||t.type,e.curve=e.curve||t.curve,e.rsaBits=e.rsaBits||t.rsaBits,e.keyExpirationTime=void 0!==e.keyExpirationTime?e.keyExpirationTime:t.keyExpirationTime,e.passphrase=V.isString(e.passphrase)?e.passphrase:t.passphrase,e.date=e.date||t.date,e.sign=e.sign||!1,e.type){case"ecc":try{e.curve=re.write(re.curve,e.curve)}catch(e){throw Error("Invalid curve")}e.curve!==re.curve.ed25519&&e.curve!==re.curve.curve25519||(e.curve=e.sign?re.curve.ed25519:re.curve.curve25519),e.sign?e.algorithm=e.curve===re.curve.ed25519?re.publicKey.eddsa:re.publicKey.ecdsa:e.algorithm=re.publicKey.ecdh;break;case"rsa":e.algorithm=re.publicKey.rsaEncryptSign;break;default:throw Error("Unsupported key type "+e.type)}return e}function Bo(e,t){const r=e.algorithm;return r!==re.publicKey.rsaEncrypt&&r!==re.publicKey.elgamal&&r!==re.publicKey.ecdh&&(!t.keyFlags||0!=(t.keyFlags[0]&re.keyFlags.signData))}function To(e,t){const r=e.algorithm;return r!==re.publicKey.dsa&&r!==re.publicKey.rsaSign&&r!==re.publicKey.ecdsa&&r!==re.publicKey.eddsa&&(!t.keyFlags||0!=(t.keyFlags[0]&re.keyFlags.encryptCommunication)||0!=(t.keyFlags[0]&re.keyFlags.encryptStorage))}function zo(e,t){return!!t.allowInsecureDecryptionWithSigningKeys||(!e.keyFlags||0!=(e.keyFlags[0]&re.keyFlags.encryptCommunication)||0!=(e.keyFlags[0]&re.keyFlags.encryptStorage))}function qo(e,t){const r=re.write(re.publicKey,e.algorithm),i=e.getAlgorithmInfo();if(t.rejectPublicKeyAlgorithms.has(r))throw Error(i.algorithm+" keys are considered too weak.");switch(r){case re.publicKey.rsaEncryptSign:case re.publicKey.rsaSign:case re.publicKey.rsaEncrypt:if(i.bits<t.minRSABits)throw Error(`RSA keys shorter than ${t.minRSABits} bits are considered too weak.`);break;case re.publicKey.ecdsa:case re.publicKey.eddsa:case re.publicKey.ecdh:if(t.rejectCurves.has(i.curve))throw Error(`Support for ${i.algorithm} keys using curve ${i.curve} is disabled.`)}}class Oo{constructor(e,t){this.userID=e.constructor.tag===re.packet.userID?e:null,this.userAttribute=e.constructor.tag===re.packet.userAttribute?e:null,this.selfCertifications=[],this.otherCertifications=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){const e=new Ws;return e.push(this.userID||this.userAttribute),e.push(...this.revocationSignatures),e.push(...this.selfCertifications),e.push(...this.otherCertifications),e}clone(){const e=new Oo(this.userID||this.userAttribute,this.mainKey);return e.selfCertifications=[...this.selfCertifications],e.otherCertifications=[...this.otherCertifications],e.revocationSignatures=[...this.revocationSignatures],e}async certify(e,t,r){const i=this.mainKey.keyPacket,n={userID:this.userID,userAttribute:this.userAttribute,key:i},a=new Oo(n.userID||n.userAttribute,this.mainKey);return a.otherCertifications=await Promise.all(e.map((async function(e){if(!e.isPrivate())throw Error("Need private key for signing");if(e.hasSameFingerprintAs(i))throw Error("The user's own key can only be used for self-certifications");const a=await e.getSigningKey(void 0,t,void 0,r);return Ko(n,e,a.keyPacket,{signatureType:re.signature.certGeneric,keyFlags:[re.keyFlags.certifyKeys|re.keyFlags.signData]},t,void 0,void 0,r)}))),await a.update(this,t,r),a}async isRevoked(e,t,r=new Date,i){const n=this.mainKey.keyPacket;return Ro(n,re.signature.certRevocation,{key:n,userID:this.userID,userAttribute:this.userAttribute},this.revocationSignatures,e,t,r,i)}async verifyCertificate(e,t,r=new Date,i){const n=this,a=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:a},{issuerKeyID:o}=e,c=t.filter((e=>e.getKeys(o).length>0));return 0===c.length?null:(await Promise.all(c.map((async t=>{const a=await t.getSigningKey(o,e.created,void 0,i);if(e.revoked||await n.isRevoked(e,a.keyPacket,r,i))throw Error("User certificate is revoked");try{await e.verify(a.keyPacket,re.signature.certGeneric,s,r,void 0,i)}catch(e){throw V.wrapError("User certificate is invalid",e)}}))),!0)}async verifyAllCertifications(e,t=new Date,r){const i=this,n=this.selfCertifications.concat(this.otherCertifications);return Promise.all(n.map((async n=>({keyID:n.issuerKeyID,valid:await i.verifyCertificate(n,e,t,r).catch((()=>!1))}))))}async verify(e=new Date,t){if(!this.selfCertifications.length)throw Error("No self-certifications found");const r=this,i=this.mainKey.keyPacket,n={userID:this.userID,userAttribute:this.userAttribute,key:i};let a;for(let s=this.selfCertifications.length-1;s>=0;s--)try{const a=this.selfCertifications[s];if(a.revoked||await r.isRevoked(a,void 0,e,t))throw Error("Self-certification is revoked");try{await a.verify(i,re.signature.certGeneric,n,e,void 0,t)}catch(e){throw V.wrapError("Self-certification is invalid",e)}return!0}catch(e){a=e}throw a}async update(e,t,r){const i=this.mainKey.keyPacket,n={userID:this.userID,userAttribute:this.userAttribute,key:i};await Do(e,this,"selfCertifications",t,(async function(e){try{return await e.verify(i,re.signature.certGeneric,n,t,!1,r),!0}catch(e){return!1}})),await Do(e,this,"otherCertifications",t),await Do(e,this,"revocationSignatures",t,(function(e){return Ro(i,re.signature.certRevocation,n,[e],void 0,void 0,t,r)}))}}class Fo{constructor(e,t){this.keyPacket=e,this.bindingSignatures=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){const e=new Ws;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.bindingSignatures),e}clone(){const e=new Fo(this.keyPacket,this.mainKey);return e.bindingSignatures=[...this.bindingSignatures],e.revocationSignatures=[...this.revocationSignatures],e}async isRevoked(e,t,r=new Date,i=ie){const n=this.mainKey.keyPacket;return Ro(n,re.signature.subkeyRevocation,{key:n,bind:this.keyPacket},this.revocationSignatures,e,t,r,i)}async verify(e=new Date,t=ie){const r=this.mainKey.keyPacket,i={key:r,bind:this.keyPacket},n=await Eo(this.bindingSignatures,r,re.signature.subkeyBinding,i,e,t);if(n.revoked||await this.isRevoked(n,null,e,t))throw Error("Subkey is revoked");if(Po(this.keyPacket,n,e))throw Error("Subkey is expired");return n}async getExpirationTime(e=new Date,t=ie){const r=this.mainKey.keyPacket,i={key:r,bind:this.keyPacket};let n;try{n=await Eo(this.bindingSignatures,r,re.signature.subkeyBinding,i,e,t)}catch(e){return null}const a=Io(this.keyPacket,n),s=n.getExpirationTime();return a<s?a:s}async update(e,t=new Date,r=ie){const i=this.mainKey.keyPacket;if(!this.hasSameFingerprintAs(e))throw Error("Subkey update method: fingerprints of subkeys not equal");this.keyPacket.constructor.tag===re.packet.publicSubkey&&e.keyPacket.constructor.tag===re.packet.secretSubkey&&(this.keyPacket=e.keyPacket);const n=this,a={key:i,bind:n.keyPacket};await Do(e,this,"bindingSignatures",t,(async function(e){for(let t=0;t<n.bindingSignatures.length;t++)if(n.bindingSignatures[t].issuerKeyID.equals(e.issuerKeyID))return e.created>n.bindingSignatures[t].created&&(n.bindingSignatures[t]=e),!1;try{return await e.verify(i,re.signature.subkeyBinding,a,t,void 0,r),!0}catch(e){return!1}})),await Do(e,this,"revocationSignatures",t,(function(e){return Ro(i,re.signature.subkeyRevocation,a,[e],void 0,void 0,t,r)}))}async revoke(e,{flag:t=re.reasonForRevocation.noReason,string:r=""}={},i=new Date,n=ie){const a={key:e,bind:this.keyPacket},s=new Fo(this.keyPacket,this.mainKey);return s.revocationSignatures.push(await Ko(a,null,e,{signatureType:re.signature.subkeyRevocation,reasonForRevocationFlag:re.write(re.reasonForRevocation,t),reasonForRevocationString:r},i,void 0,!1,n)),await s.update(this),s}hasSameFingerprintAs(e){return this.keyPacket.hasSameFingerprintAs(e.keyPacket||e)}}["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","isDecrypted"].forEach((e=>{Fo.prototype[e]=function(){return this.keyPacket[e]()}}));const No=/*#__PURE__*/V.constructAllowedPackets([Fs]);class jo{packetListToStructure(e,t=new Set){let r,i,n;for(const a of e){const e=a.constructor.tag;if(t.has(e))throw Error("Unexpected packet type: "+e);switch(e){case re.packet.publicKey:case re.packet.secretKey:if(this.keyPacket)throw Error("Key block contains multiple keys");if(this.keyPacket=a,i=this.getKeyID(),!i)throw Error("Missing Key ID");break;case re.packet.userID:case re.packet.userAttribute:r=new Oo(a,this),this.users.push(r);break;case re.packet.publicSubkey:case re.packet.secretSubkey:r=null,n=new Fo(a,this),this.subkeys.push(n);break;case re.packet.signature:switch(a.signatureType){case re.signature.certGeneric:case re.signature.certPersona:case re.signature.certCasual:case re.signature.certPositive:if(!r){V.printDebug("Dropping certification signatures without preceding user packet");continue}a.issuerKeyID.equals(i)?r.selfCertifications.push(a):r.otherCertifications.push(a);break;case re.signature.certRevocation:r?r.revocationSignatures.push(a):this.directSignatures.push(a);break;case re.signature.key:this.directSignatures.push(a);break;case re.signature.subkeyBinding:if(!n){V.printDebug("Dropping subkey binding signature without preceding subkey packet");continue}n.bindingSignatures.push(a);break;case re.signature.keyRevocation:this.revocationSignatures.push(a);break;case re.signature.subkeyRevocation:if(!n){V.printDebug("Dropping subkey revocation signature without preceding subkey packet");continue}n.revocationSignatures.push(a)}}}}toPacketList(){const e=new Ws;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.directSignatures),this.users.map((t=>e.push(...t.toPacketList()))),this.subkeys.map((t=>e.push(...t.toPacketList()))),e}clone(e=!1){const t=new this.constructor(this.toPacketList());return e&&t.getKeys().forEach((e=>{if(e.keyPacket=Object.create(Object.getPrototypeOf(e.keyPacket),Object.getOwnPropertyDescriptors(e.keyPacket)),!e.keyPacket.isDecrypted())return;const t={};Object.keys(e.keyPacket.privateParams).forEach((r=>{t[r]=new Uint8Array(e.keyPacket.privateParams[r])})),e.keyPacket.privateParams=t})),t}getSubkeys(e=null){return this.subkeys.filter((t=>!e||t.getKeyID().equals(e,!0)))}getKeys(e=null){const t=[];return e&&!this.getKeyID().equals(e,!0)||t.push(this),t.concat(this.getSubkeys(e))}getKeyIDs(){return this.getKeys().map((e=>e.getKeyID()))}getUserIDs(){return this.users.map((e=>e.userID?e.userID.userID:null)).filter((e=>null!==e))}write(){return this.toPacketList().write()}async getSigningKey(e=null,t=new Date,r={},i=ie){await this.verifyPrimaryKey(t,r,i);const n=this.keyPacket,a=this.subkeys.slice().sort(((e,t)=>t.keyPacket.created-e.keyPacket.created));let s;for(const r of a)if(!e||r.getKeyID().equals(e))try{await r.verify(t,i);const e={key:n,bind:r.keyPacket},a=await Eo(r.bindingSignatures,n,re.signature.subkeyBinding,e,t,i);if(!Bo(r.keyPacket,a))continue;if(!a.embeddedSignature)throw Error("Missing embedded signature");return await Eo([a.embeddedSignature],r.keyPacket,re.signature.keyBinding,e,t,i),qo(r.keyPacket,i),r}catch(e){s=e}try{const a=await this.getPrimaryUser(t,r,i);if((!e||n.getKeyID().equals(e))&&Bo(n,a.selfCertification))return qo(n,i),this}catch(e){s=e}throw V.wrapError("Could not find valid signing key packet in key "+this.getKeyID().toHex(),s)}async getEncryptionKey(e,t=new Date,r={},i=ie){await this.verifyPrimaryKey(t,r,i);const n=this.keyPacket,a=this.subkeys.slice().sort(((e,t)=>t.keyPacket.created-e.keyPacket.created));let s;for(const r of a)if(!e||r.getKeyID().equals(e))try{await r.verify(t,i);const e={key:n,bind:r.keyPacket},a=await Eo(r.bindingSignatures,n,re.signature.subkeyBinding,e,t,i);if(To(r.keyPacket,a))return qo(r.keyPacket,i),r}catch(e){s=e}try{const a=await this.getPrimaryUser(t,r,i);if((!e||n.getKeyID().equals(e))&&To(n,a.selfCertification))return qo(n,i),this}catch(e){s=e}throw V.wrapError("Could not find valid encryption key packet in key "+this.getKeyID().toHex(),s)}async isRevoked(e,t,r=new Date,i=ie){return Ro(this.keyPacket,re.signature.keyRevocation,{key:this.keyPacket},this.revocationSignatures,e,t,r,i)}async verifyPrimaryKey(e=new Date,t={},r=ie){const i=this.keyPacket;if(await this.isRevoked(null,null,e,r))throw Error("Primary key is revoked");const{selfCertification:n}=await this.getPrimaryUser(e,t,r);if(Po(i,n,e))throw Error("Primary key is expired");const a=await Eo(this.directSignatures,i,re.signature.key,{key:i},e,r).catch((()=>{}));if(a&&Po(i,a,e))throw Error("Primary key is expired")}async getExpirationTime(e,t=ie){let r;try{const{selfCertification:i}=await this.getPrimaryUser(null,e,t),n=Io(this.keyPacket,i),a=i.getExpirationTime(),s=await Eo(this.directSignatures,this.keyPacket,re.signature.key,{key:this.keyPacket},null,t).catch((()=>{}));if(s){const e=Io(this.keyPacket,s);r=Math.min(n,a,e)}else r=n<a?n:a}catch(e){r=null}return V.normalizeDate(r)}async getPrimaryUser(e=new Date,t={},r=ie){const i=this.keyPacket,n=[];let a;for(let s=0;s<this.users.length;s++)try{const a=this.users[s];if(!a.userID)continue;if(void 0!==t.name&&a.userID.name!==t.name||void 0!==t.email&&a.userID.email!==t.email||void 0!==t.comment&&a.userID.comment!==t.comment)throw Error("Could not find user that matches that user ID");const o={userID:a.userID,key:i},c=await Eo(a.selfCertifications,i,re.signature.certGeneric,o,e,r);n.push({index:s,user:a,selfCertification:c})}catch(e){a=e}if(!n.length)throw a||Error("Could not find primary user");await Promise.all(n.map((async function(t){return t.user.revoked||t.user.isRevoked(t.selfCertification,null,e,r)})));const s=n.sort((function(e,t){const r=e.selfCertification,i=t.selfCertification;return i.revoked-r.revoked||r.isPrimaryUserID-i.isPrimaryUserID||r.created-i.created})).pop(),{user:o,selfCertification:c}=s;if(c.revoked||await o.isRevoked(c,null,e,r))throw Error("Primary user is revoked");return s}async update(e,t=new Date,r=ie){if(!this.hasSameFingerprintAs(e))throw Error("Primary key fingerprints must be equal to update the key");if(!this.isPrivate()&&e.isPrivate()){if(!(this.subkeys.length===e.subkeys.length&&this.subkeys.every((t=>e.subkeys.some((e=>t.hasSameFingerprintAs(e)))))))throw Error("Cannot update public key with private key if subkeys mismatch");return e.update(this,r)}const i=this.clone();return await Do(e,i,"revocationSignatures",t,(n=>Ro(i.keyPacket,re.signature.keyRevocation,i,[n],null,e.keyPacket,t,r))),await Do(e,i,"directSignatures",t),await Promise.all(e.users.map((async e=>{const n=i.users.filter((t=>e.userID&&e.userID.equals(t.userID)||e.userAttribute&&e.userAttribute.equals(t.userAttribute)));if(n.length>0)await Promise.all(n.map((i=>i.update(e,t,r))));else{const t=e.clone();t.mainKey=i,i.users.push(t)}}))),await Promise.all(e.subkeys.map((async e=>{const n=i.subkeys.filter((t=>t.hasSameFingerprintAs(e)));if(n.length>0)await Promise.all(n.map((i=>i.update(e,t,r))));else{const t=e.clone();t.mainKey=i,i.subkeys.push(t)}}))),i}async getRevocationCertificate(e=new Date,t=ie){const r={key:this.keyPacket},i=await Eo(this.revocationSignatures,this.keyPacket,re.signature.keyRevocation,r,e,t),n=new Ws;return n.push(i),de(re.armor.publicKey,n.write(),null,null,"This is a revocation certificate")}async applyRevocationCertificate(e,t=new Date,r=ie){const i=await fe(e,r),n=(await Ws.fromBinary(i.data,No,r)).findPacket(re.packet.signature);if(!n||n.signatureType!==re.signature.keyRevocation)throw Error("Could not find revocation signature packet");if(!n.issuerKeyID.equals(this.getKeyID()))throw Error("Revocation signature does not match key");try{await n.verify(this.keyPacket,re.signature.keyRevocation,{key:this.keyPacket},t,void 0,r)}catch(e){throw V.wrapError("Could not verify revocation signature",e)}const a=this.clone();return a.revocationSignatures.push(n),a}async signPrimaryUser(e,t,r,i=ie){const{index:n,user:a}=await this.getPrimaryUser(t,r,i),s=await a.certify(e,t,i),o=this.clone();return o.users[n]=s,o}async signAllUsers(e,t=new Date,r=ie){const i=this.clone();return i.users=await Promise.all(this.users.map((function(i){return i.certify(e,t,r)}))),i}async verifyPrimaryUser(e,t=new Date,r,i=ie){const n=this.keyPacket,{user:a}=await this.getPrimaryUser(t,r,i);return e?await a.verifyAllCertifications(e,t,i):[{keyID:n.getKeyID(),valid:await a.verify(t,i).catch((()=>!1))}]}async verifyAllUsers(e,t=new Date,r=ie){const i=this.keyPacket,n=[];return await Promise.all(this.users.map((async a=>{const s=e?await a.verifyAllCertifications(e,t,r):[{keyID:i.getKeyID(),valid:await a.verify(t,r).catch((()=>!1))}];n.push(...s.map((e=>({userID:a.userID.userID,keyID:e.keyID,valid:e.valid}))))}))),n}}function Lo(e){for(const t of e)switch(t.constructor.tag){case re.packet.secretKey:return new Ho(e);case re.packet.publicKey:return new Wo(e)}throw Error("No key packet found")}["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","hasSameFingerprintAs"].forEach((e=>{jo.prototype[e]=Fo.prototype[e]}));class Wo extends jo{constructor(e){if(super(),this.keyPacket=null,this.revocationSignatures=[],this.directSignatures=[],this.users=[],this.subkeys=[],e&&(this.packetListToStructure(e,new Set([re.packet.secretKey,re.packet.secretSubkey])),!this.keyPacket))throw Error("Invalid key: missing public-key packet")}isPrivate(){return!1}toPublic(){return this}armor(e=ie){return de(re.armor.publicKey,this.toPacketList().write(),void 0,void 0,void 0,e)}}class Ho extends Wo{constructor(e){if(super(),this.packetListToStructure(e,new Set([re.packet.publicKey,re.packet.publicSubkey])),!this.keyPacket)throw Error("Invalid key: missing private-key packet")}isPrivate(){return!0}toPublic(){const e=new Ws,t=this.toPacketList();for(const r of t)switch(r.constructor.tag){case re.packet.secretKey:{const t=oo.fromSecretKeyPacket(r);e.push(t);break}case re.packet.secretSubkey:{const t=fo.fromSecretSubkeyPacket(r);e.push(t);break}default:e.push(r)}return new Wo(e)}armor(e=ie){return de(re.armor.privateKey,this.toPacketList().write(),void 0,void 0,void 0,e)}async getDecryptionKeys(e,t=new Date,r={},i=ie){const n=this.keyPacket,a=[];for(let r=0;r<this.subkeys.length;r++)if(!e||this.subkeys[r].getKeyID().equals(e,!0))try{const e={key:n,bind:this.subkeys[r].keyPacket};zo(await Eo(this.subkeys[r].bindingSignatures,n,re.signature.subkeyBinding,e,t,i),i)&&a.push(this.subkeys[r])}catch(e){}const s=await this.getPrimaryUser(t,r,i);return e&&!n.getKeyID().equals(e,!0)||!zo(s.selfCertification,i)||a.push(this),a}isDecrypted(){return this.getKeys().some((({keyPacket:e})=>e.isDecrypted()))}async validate(e=ie){if(!this.isPrivate())throw Error("Cannot validate a public key");let t;if(this.keyPacket.isDummy()){const r=await this.getSigningKey(null,null,void 0,{...e,rejectPublicKeyAlgorithms:new Set,minRSABits:0});r&&!r.keyPacket.isDummy()&&(t=r.keyPacket)}else t=this.keyPacket;if(t)return t.validate();{const e=this.getKeys();if(e.map((e=>e.keyPacket.isDummy())).every(Boolean))throw Error("Cannot validate an all-gnu-dummy key");return Promise.all(e.map((async e=>e.keyPacket.validate())))}}clearPrivateParams(){this.getKeys().forEach((({keyPacket:e})=>{e.isDecrypted()&&e.clearPrivateParams()}))}async revoke({flag:e=re.reasonForRevocation.noReason,string:t=""}={},r=new Date,i=ie){if(!this.isPrivate())throw Error("Need private key for revoking");const n={key:this.keyPacket},a=this.clone();return a.revocationSignatures.push(await Ko(n,null,this.keyPacket,{signatureType:re.signature.keyRevocation,reasonForRevocationFlag:re.write(re.reasonForRevocation,e),reasonForRevocationString:t},r,void 0,void 0,i)),a}async addSubkey(e={}){const t={...ie,...e.config};if(e.passphrase)throw Error("Subkey could not be encrypted here, please encrypt whole key");if(e.rsaBits<t.minRSABits)throw Error(`rsaBits should be at least ${t.minRSABits}, got: ${e.rsaBits}`);const r=this.keyPacket;if(r.isDummy())throw Error("Cannot add subkey to gnu-dummy primary key");if(!r.isDecrypted())throw Error("Key is not decrypted");const i=r.getAlgorithmInfo();i.type=i.curve?"ecc":"rsa",i.rsaBits=i.bits||4096,i.curve=i.curve||"curve25519",e=Uo(e,i);const n=await Ao(e);qo(n,t);const a=await xo(n,r,e,t),s=this.toPacketList();return s.push(n,a),new Ho(s)}}const Go=/*#__PURE__*/V.constructAllowedPackets([oo,fo,po,go,mo,lo,Fs]);async function Vo(e,t,r,i){r.passphrase&&await e.encrypt(r.passphrase,i),await Promise.all(t.map((async function(e,t){const n=r.subkeys[t].passphrase;n&&await e.encrypt(n,i)})));const n=new Ws;n.push(e),await Promise.all(r.userIDs.map((async function(t,n){function a(e,t){return[t,...e.filter((e=>e!==t))]}const s=mo.fromObject(t),o={};o.userID=s,o.key=e;const c=new Fs;return c.signatureType=re.signature.certGeneric,c.publicKeyAlgorithm=e.algorithm,c.hashAlgorithm=await Mo(null,e,void 0,void 0,i),c.keyFlags=[re.keyFlags.certifyKeys|re.keyFlags.signData],c.preferredSymmetricAlgorithms=a([re.symmetric.aes256,re.symmetric.aes128,re.symmetric.aes192],i.preferredSymmetricAlgorithm),i.aeadProtect&&(c.preferredAEADAlgorithms=a([re.aead.eax,re.aead.ocb],i.preferredAEADAlgorithm)),c.preferredHashAlgorithms=a([re.hash.sha256,re.hash.sha512],i.preferredHashAlgorithm),c.preferredCompressionAlgorithms=a([re.compression.zlib,re.compression.zip,re.compression.uncompressed],i.preferredCompressionAlgorithm),0===n&&(c.isPrimaryUserID=!0),c.features=[0],c.features[0]|=re.features.modificationDetection,i.aeadProtect&&(c.features[0]|=re.features.aead),i.v5Keys&&(c.features[0]|=re.features.v5Keys),r.keyExpirationTime>0&&(c.keyExpirationTime=r.keyExpirationTime,c.keyNeverExpires=!1),await c.sign(e,o,r.date),{userIDPacket:s,signaturePacket:c}}))).then((e=>{e.forEach((({userIDPacket:e,signaturePacket:t})=>{n.push(e),n.push(t)}))})),await Promise.all(t.map((async function(t,n){const a=r.subkeys[n];return{secretSubkeyPacket:t,subkeySignaturePacket:await xo(t,e,a,i)}}))).then((e=>{e.forEach((({secretSubkeyPacket:e,subkeySignaturePacket:t})=>{n.push(e),n.push(t)}))}));const a={key:e};return n.push(await Ko(a,null,e,{signatureType:re.signature.keyRevocation,reasonForRevocationFlag:re.reasonForRevocation.noReason,reasonForRevocationString:""},r.date,void 0,void 0,i)),r.passphrase&&e.clearPrivateParams(),await Promise.all(t.map((async function(e,t){r.subkeys[t].passphrase&&e.clearPrivateParams()}))),new Ho(n)}async function $o({armoredKey:e,binaryKey:t,config:r,...i}){if(r={...ie,...r},!e&&!t)throw Error("readKey: must pass options object containing `armoredKey` or `binaryKey`");if(e&&!V.isString(e))throw Error("readKey: options.armoredKey must be a string");if(t&&!V.isUint8Array(t))throw Error("readKey: options.binaryKey must be a Uint8Array");const n=Object.keys(i);if(n.length>0)throw Error("Unknown option: "+n.join(", "));let a;if(e){const{type:t,data:i}=await fe(e,r);if(t!==re.armor.publicKey&&t!==re.armor.privateKey)throw Error("Armored text not of type key");a=i}else a=t;return Lo(await Ws.fromBinary(a,Go,r))}async function Zo({armoredKey:e,binaryKey:t,config:r,...i}){if(r={...ie,...r},!e&&!t)throw Error("readPrivateKey: must pass options object containing `armoredKey` or `binaryKey`");if(e&&!V.isString(e))throw Error("readPrivateKey: options.armoredKey must be a string");if(t&&!V.isUint8Array(t))throw Error("readPrivateKey: options.binaryKey must be a Uint8Array");const n=Object.keys(i);if(n.length>0)throw Error("Unknown option: "+n.join(", "));let a;if(e){const{type:t,data:i}=await fe(e,r);if(t!==re.armor.privateKey)throw Error("Armored text not of type private key");a=i}else a=t;const s=await Ws.fromBinary(a,Go,r);return new Ho(s)}async function Yo({armoredKeys:e,binaryKeys:t,config:r,...i}){r={...ie,...r};let n=e||t;if(!n)throw Error("readKeys: must pass options object containing `armoredKeys` or `binaryKeys`");if(e&&!V.isString(e))throw Error("readKeys: options.armoredKeys must be a string");if(t&&!V.isUint8Array(t))throw Error("readKeys: options.binaryKeys must be a Uint8Array");const a=Object.keys(i);if(a.length>0)throw Error("Unknown option: "+a.join(", "));if(e){const{type:t,data:i}=await fe(e,r);if(t!==re.armor.publicKey&&t!==re.armor.privateKey)throw Error("Armored text not of type key");n=i}const s=[],o=await Ws.fromBinary(n,Go,r),c=o.indexOfTag(re.packet.publicKey,re.packet.secretKey);if(0===c.length)throw Error("No key packet found");for(let e=0;e<c.length;e++){const t=Lo(o.slice(c[e],c[e+1]));s.push(t)}return s}async function Xo({armoredKeys:e,binaryKeys:t,config:r}){r={...ie,...r};let i=e||t;if(!i)throw Error("readPrivateKeys: must pass options object containing `armoredKeys` or `binaryKeys`");if(e&&!V.isString(e))throw Error("readPrivateKeys: options.armoredKeys must be a string");if(t&&!V.isUint8Array(t))throw Error("readPrivateKeys: options.binaryKeys must be a Uint8Array");if(e){const{type:t,data:n}=await fe(e,r);if(t!==re.armor.privateKey)throw Error("Armored text not of type private key");i=n}const n=[],a=await Ws.fromBinary(i,Go,r),s=a.indexOfTag(re.packet.secretKey);if(0===s.length)throw Error("No secret key packet found");for(let e=0;e<s.length;e++){const t=a.slice(s[e],s[e+1]),r=new Ho(t);n.push(r)}return n}const Qo=/*#__PURE__*/V.constructAllowedPackets([Cs,Gs,io,to,uo,no,so,js,Fs]),Jo=/*#__PURE__*/V.constructAllowedPackets([so]),ec=/*#__PURE__*/V.constructAllowedPackets([Fs]);class tc{constructor(e){this.packets=e||new Ws}getEncryptionKeyIDs(){const e=[];return this.packets.filterByTag(re.packet.publicKeyEncryptedSessionKey).forEach((function(t){e.push(t.publicKeyID)})),e}getSigningKeyIDs(){const e=this.unwrapCompressed(),t=e.packets.filterByTag(re.packet.onePassSignature);if(t.length>0)return t.map((e=>e.issuerKeyID));return e.packets.filterByTag(re.packet.signature).map((e=>e.issuerKeyID))}async decrypt(e,t,r,i=new Date,n=ie){const a=r||await this.decryptSessionKeys(e,t,i,n),s=this.packets.filterByTag(re.packet.symmetricallyEncryptedData,re.packet.symEncryptedIntegrityProtectedData,re.packet.aeadEncryptedData);if(0===s.length)return this;const o=s[0];let c=null;const u=Promise.all(a.map((async({algorithm:e,data:t})=>{if(!V.isUint8Array(t)||!V.isString(e))throw Error("Invalid session key for decryption.");try{const r=re.write(re.symmetric,e);await o.decrypt(r,t,n)}catch(e){V.printDebugError(e),c=e}})));if(L(o.encrypted),o.encrypted=null,await u,!o.packets||!o.packets.length)throw c||Error("Decryption failed.");const h=new tc(o.packets);return o.packets=new Ws,h}async decryptSessionKeys(e,t,r=new Date,i=ie){let n,a=[];if(t){const e=this.packets.filterByTag(re.packet.symEncryptedSessionKey);if(0===e.length)throw Error("No symmetrically encrypted session key packet found.");await Promise.all(t.map((async function(t,r){let n;n=r?await Ws.fromBinary(e.write(),Jo,i):e,await Promise.all(n.map((async function(e){try{await e.decrypt(t),a.push(e)}catch(e){V.printDebugError(e)}})))})))}else{if(!e)throw Error("No key or password specified.");{const t=this.packets.filterByTag(re.packet.publicKeyEncryptedSessionKey);if(0===t.length)throw Error("No public key encrypted session key packet found.");await Promise.all(t.map((async function(t){await Promise.all(e.map((async function(e){let s=[re.symmetric.aes256,re.symmetric.aes128,re.symmetric.tripledes,re.symmetric.cast5];try{const t=await e.getPrimaryUser(r,void 0,i);t.selfCertification.preferredSymmetricAlgorithms&&(s=s.concat(t.selfCertification.preferredSymmetricAlgorithms))}catch(e){}const o=(await e.getDecryptionKeys(t.publicKeyID,null,void 0,i)).map((e=>e.keyPacket));await Promise.all(o.map((async function(e){if(!e||e.isDummy())return;if(!e.isDecrypted())throw Error("Decryption key is not decrypted.");if(i.constantTimePKCS1Decryption&&(t.publicKeyAlgorithm===re.publicKey.rsaEncrypt||t.publicKeyAlgorithm===re.publicKey.rsaEncryptSign||t.publicKeyAlgorithm===re.publicKey.rsaSign||t.publicKeyAlgorithm===re.publicKey.elgamal)){const r=t.write();await Promise.all(Array.from(i.constantTimePKCS1DecryptionSupportedSymmetricAlgorithms).map((async t=>{const i=new no;i.read(r);const s={sessionKeyAlgorithm:t,sessionKey:await Rn.generateSessionKey(t)};try{await i.decrypt(e,s),a.push(i)}catch(e){V.printDebugError(e),n=e}})))}else try{if(await t.decrypt(e),!s.includes(re.write(re.symmetric,t.sessionKeyAlgorithm)))throw Error("A non-preferred symmetric algorithm was used.");a.push(t)}catch(e){V.printDebugError(e),n=e}})))}))),L(t.encrypted),t.encrypted=null})))}}if(a.length>0){if(a.length>1){const e=new Set;a=a.filter((t=>{const r=t.sessionKeyAlgorithm+V.uint8ArrayToString(t.sessionKey);return!e.has(r)&&(e.add(r),!0)}))}return a.map((e=>({data:e.sessionKey,algorithm:re.read(re.symmetric,e.sessionKeyAlgorithm)})))}throw n||Error("Session key decryption failed.")}getLiteralData(){const e=this.unwrapCompressed().packets.findPacket(re.packet.literalData);return e&&e.getBytes()||null}getFilename(){const e=this.unwrapCompressed().packets.findPacket(re.packet.literalData);return e&&e.getFilename()||null}getText(){const e=this.unwrapCompressed().packets.findPacket(re.packet.literalData);return e?e.getText():null}static async generateSessionKey(e=[],t=new Date,r=[],i=ie){const n=await Co("symmetric",e,t,r,i),a=re.read(re.symmetric,n),s=i.aeadProtect&&await async function(e,t=new Date,r=[],i=ie){let n=!0;return await Promise.all(e.map((async function(e,a){const s=await e.getPrimaryUser(t,r[a],i);s.selfCertification.features&&s.selfCertification.features[0]&re.features.aead||(n=!1)}))),n}(e,t,r,i)?re.read(re.aead,await Co("aead",e,t,r,i)):void 0;return{data:await Rn.generateSessionKey(n),algorithm:a,aeadAlgorithm:s}}async encrypt(e,t,r,i=!1,n=[],a=new Date,s=[],o=ie){if(r){if(!V.isUint8Array(r.data)||!V.isString(r.algorithm))throw Error("Invalid session key for encryption.")}else if(e&&e.length)r=await tc.generateSessionKey(e,a,s,o);else{if(!t||!t.length)throw Error("No keys, passwords, or session key provided.");r=await tc.generateSessionKey(void 0,void 0,void 0,o)}const{data:c,algorithm:u,aeadAlgorithm:h}=r,f=await tc.encryptSessionKey(c,u,h,e,t,i,n,a,s,o);let d;h?(d=new io,d.aeadAlgorithm=re.write(re.aead,h)):d=new to,d.packets=this.packets;const l=re.write(re.symmetric,u);return await d.encrypt(l,c,o),f.packets.push(d),d.packets=new Ws,f}static async encryptSessionKey(e,t,r,i,n,a=!1,s=[],o=new Date,c=[],u=ie){const h=new Ws,f=re.write(re.symmetric,t),d=r&&re.write(re.aead,r);if(i){const t=await Promise.all(i.map((async function(t,r){const i=await t.getEncryptionKey(s[r],o,c,u),n=new no;return n.publicKeyID=a?le.wildcard():i.getKeyID(),n.publicKeyAlgorithm=i.keyPacket.algorithm,n.sessionKey=e,n.sessionKeyAlgorithm=f,await n.encrypt(i.keyPacket),delete n.sessionKey,n})));h.push(...t)}if(n){const t=async function(e,t){try{return await e.decrypt(t),1}catch(e){return 0}},r=(e,t)=>e+t,i=async function(e,a,s,o){const c=new so(u);if(c.sessionKey=e,c.sessionKeyAlgorithm=a,s&&(c.aeadAlgorithm=s),await c.encrypt(o,u),u.passwordCollisionCheck){if(1!==(await Promise.all(n.map((e=>t(c,e))))).reduce(r))return i(e,a,o)}return delete c.sessionKey,c},a=await Promise.all(n.map((t=>i(e,f,d,t))));h.push(...a)}return new tc(h)}async sign(e=[],t=null,r=[],i=new Date,n=[],a=ie){const s=new Ws,o=this.packets.findPacket(re.packet.literalData);if(!o)throw Error("No literal data packet to sign.");let c,u;const h=null===o.text?re.signature.binary:re.signature.text;if(t)for(u=t.packets.filterByTag(re.packet.signature),c=u.length-1;c>=0;c--){const t=u[c],r=new js;r.signatureType=t.signatureType,r.hashAlgorithm=t.hashAlgorithm,r.publicKeyAlgorithm=t.publicKeyAlgorithm,r.issuerKeyID=t.issuerKeyID,e.length||0!==c||(r.flags=1),s.push(r)}return await Promise.all(Array.from(e).reverse().map((async function(t,s){if(!t.isPrivate())throw Error("Need private key for signing");const o=r[e.length-1-s],c=await t.getSigningKey(o,i,n,a),u=new js;return u.signatureType=h,u.hashAlgorithm=await Mo(t,c.keyPacket,i,n,a),u.publicKeyAlgorithm=c.keyPacket.algorithm,u.issuerKeyID=c.getKeyID(),s===e.length-1&&(u.flags=1),u}))).then((e=>{e.forEach((e=>s.push(e)))})),s.push(o),s.push(...await rc(o,e,t,r,i,n,!1,a)),new tc(s)}compress(e,t=ie){if(e===re.compression.uncompressed)return this;const r=new Gs(t);r.algorithm=e,r.packets=this.packets;const i=new Ws;return i.push(r),new tc(i)}async signDetached(e=[],t=null,r=[],i=new Date,n=[],a=ie){const s=this.packets.findPacket(re.packet.literalData);if(!s)throw Error("No literal data packet to sign.");return new _o(await rc(s,e,t,r,i,n,!0,a))}async verify(e,t=new Date,r=ie){const i=this.unwrapCompressed(),n=i.packets.filterByTag(re.packet.literalData);if(1!==n.length)throw Error("Can only verify message with one literal data packet.");s(i.packets.stream)&&i.packets.push(...await j(i.packets.stream,(e=>e||[])));const a=i.packets.filterByTag(re.packet.onePassSignature).reverse(),o=i.packets.filterByTag(re.packet.signature);return a.length&&!o.length&&V.isStream(i.packets.stream)&&!s(i.packets.stream)?(await Promise.all(a.map((async e=>{e.correspondingSig=new Promise(((t,r)=>{e.correspondingSigResolve=t,e.correspondingSigReject=r})),e.signatureData=W((async()=>(await e.correspondingSig).signatureData)),e.hashed=j(await e.hash(e.signatureType,n[0],void 0,!1)),e.hashed.catch((()=>{}))}))),i.packets.stream=T(i.packets.stream,(async(e,t)=>{const r=K(e),i=D(t);try{for(let e=0;e<a.length;e++){const{value:t}=await r.read();a[e].correspondingSigResolve(t)}await r.readToEnd(),await i.ready,await i.close()}catch(e){a.forEach((t=>{t.correspondingSigReject(e)})),await i.abort(e)}})),ic(a,n,e,t,!1,r)):ic(o,n,e,t,!1,r)}verifyDetached(e,t,r=new Date,i=ie){const n=this.unwrapCompressed().packets.filterByTag(re.packet.literalData);if(1!==n.length)throw Error("Can only verify message with one literal data packet.");return ic(e.packets,n,t,r,!0,i)}unwrapCompressed(){const e=this.packets.filterByTag(re.packet.compressedData);return e.length?new tc(e[0].packets):this}async appendSignature(e,t=ie){await this.packets.read(V.isUint8Array(e)?e:(await fe(e)).data,ec,t)}write(){return this.packets.write()}armor(e=ie){return de(re.armor.message,this.write(),null,null,null,e)}}async function rc(e,t,r=null,i=[],n=new Date,a=[],s=!1,o=ie){const c=new Ws,u=null===e.text?re.signature.binary:re.signature.text;if(await Promise.all(t.map((async(t,r)=>{const c=a[r];if(!t.isPrivate())throw Error("Need private key for signing");const h=await t.getSigningKey(i[r],n,c,o);return Ko(e,t,h.keyPacket,{signatureType:u},n,c,s,o)}))).then((e=>{c.push(...e)})),r){const e=r.packets.filterByTag(re.packet.signature);c.push(...e)}return c}async function ic(e,t,r,i=new Date,n=!1,a=ie){return Promise.all(e.filter((function(e){return["text","binary"].includes(re.read(re.signature,e.signatureType))})).map((async function(e){return async function(e,t,r,i=new Date,n=!1,a=ie){let s,o;for(const t of r){const r=t.getKeys(e.issuerKeyID);if(r.length>0){s=t,o=r[0];break}}const c=e instanceof js?e.correspondingSig:e,u={keyID:e.issuerKeyID,verified:(async()=>{if(!o)throw Error("Could not find signing key with key ID "+e.issuerKeyID.toHex());await e.verify(o.keyPacket,e.signatureType,t[0],i,n,a);const r=await c;if(o.getCreationTime()>r.created)throw Error("Key is newer than the signature");try{await s.getSigningKey(o.getKeyID(),r.created,void 0,a)}catch(e){if(!a.allowInsecureVerificationWithReformattedKeys||!e.message.match(/Signature creation time is in the future/))throw e;await s.getSigningKey(o.getKeyID(),i,void 0,a)}return!0})(),signature:(async()=>{const e=await c,t=new Ws;return e&&t.push(e),new _o(t)})()};return u.signature.catch((()=>{})),u.verified.catch((()=>{})),u}(e,t,r,i,n,a)})))}async function nc({armoredMessage:e,binaryMessage:t,config:r,...i}){r={...ie,...r};let n=e||t;if(!n)throw Error("readMessage: must pass options object containing `armoredMessage` or `binaryMessage`");if(e&&!V.isString(e)&&!V.isStream(e))throw Error("readMessage: options.armoredMessage must be a string or stream");if(t&&!V.isUint8Array(t)&&!V.isStream(t))throw Error("readMessage: options.binaryMessage must be a Uint8Array or stream");const a=Object.keys(i);if(a.length>0)throw Error("Unknown option: "+a.join(", "));const s=V.isStream(n);if(s&&(await E(),n=x(n)),e){const{type:e,data:t}=await fe(n,r);if(e!==re.armor.message)throw Error("Armored text not of type message");n=t}const o=await Ws.fromBinary(n,Qo,r),c=new tc(o);return c.fromStream=s,c}async function ac({text:e,binary:t,filename:r,date:i=new Date,format:n=(void 0!==e?"utf8":"binary"),...a}){let s=void 0!==e?e:t;if(void 0===s)throw Error("createMessage: must pass options object containing `text` or `binary`");if(e&&!V.isString(e)&&!V.isStream(e))throw Error("createMessage: options.text must be a string or stream");if(t&&!V.isUint8Array(t)&&!V.isStream(t))throw Error("createMessage: options.binary must be a Uint8Array or stream");const o=Object.keys(a);if(o.length>0)throw Error("Unknown option: "+o.join(", "));const c=V.isStream(s);c&&(await E(),s=x(s));const u=new Cs(i);void 0!==e?u.setText(s,re.write(re.literal,n)):u.setBytes(s,re.write(re.literal,n)),void 0!==r&&u.setFilename(r);const h=new Ws;h.push(u);const f=new tc(h);return f.fromStream=c,f}const sc=/*#__PURE__*/V.constructAllowedPackets([Fs]);class oc{constructor(e,t){if(this.text=V.removeTrailingSpaces(e).replace(/\r?\n/g,"\r\n"),t&&!(t instanceof _o))throw Error("Invalid signature input");this.signature=t||new _o(new Ws)}getSigningKeyIDs(){const e=[];return this.signature.packets.forEach((function(t){e.push(t.issuerKeyID)})),e}async sign(e,t=null,r=[],i=new Date,n=[],a=ie){const s=new Cs;s.setText(this.text);const o=new _o(await rc(s,e,t,r,i,n,!0,a));return new oc(this.text,o)}verify(e,t=new Date,r=ie){const i=this.signature.packets,n=new Cs;return n.setText(this.text),ic(i,[n],e,t,!0,r)}getText(){return this.text.replace(/\r\n/g,"\n")}armor(e=ie){let t=this.signature.packets.map((function(e){return re.read(re.hash,e.hashAlgorithm).toUpperCase()}));t=t.filter((function(e,t,r){return r.indexOf(e)===t}));const r={hash:t.join(),text:this.text,data:this.signature.packets.write()};return de(re.armor.signed,r,void 0,void 0,void 0,e)}}async function cc({cleartextMessage:e,config:t,...r}){if(t={...ie,...t},!e)throw Error("readCleartextMessage: must pass options object containing `cleartextMessage`");if(!V.isString(e))throw Error("readCleartextMessage: options.cleartextMessage must be a string");const i=Object.keys(r);if(i.length>0)throw Error("Unknown option: "+i.join(", "));const n=await fe(e);if(n.type!==re.armor.signed)throw Error("No cleartext signed message.");const a=await Ws.fromBinary(n.data,sc,t);!function(e,t){const r=function(e){const r=e=>t=>e.hashAlgorithm===t;for(let i=0;i<t.length;i++)if(t[i].constructor.tag===re.packet.signature&&!e.some(r(t[i])))return!1;return!0};let i=null,n=[];if(e.forEach((function(e){if(i=e.match(/Hash: (.+)/),!i)throw Error('Only "Hash" header allowed in cleartext signed message');i=i[1].replace(/\s/g,""),i=i.split(","),i=i.map((function(e){e=e.toLowerCase();try{return re.write(re.hash,e)}catch(t){throw Error("Unknown hash algorithm in armor header: "+e)}})),n=n.concat(i)})),!n.length&&!r([re.hash.md5]))throw Error('If no "Hash" header in cleartext signed message, then only MD5 signatures allowed');if(n.length&&!r(n))throw Error("Hash algorithm mismatch in armor header and signature")}(n.headers,a);const s=new _o(a);return new oc(n.text,s)}async function uc({text:e,...t}){if(!e)throw Error("createCleartextMessage: must pass options object containing `text`");if(!V.isString(e))throw Error("createCleartextMessage: options.text must be a string");const r=Object.keys(t);if(r.length>0)throw Error("Unknown option: "+r.join(", "));return new oc(e)}async function hc({userIDs:e=[],passphrase:t="",type:r="ecc",rsaBits:i=4096,curve:n="curve25519",keyExpirationTime:a=0,date:s=new Date,subkeys:o=[{}],format:c="armored",config:u,...h}){Pc(u={...ie,...u}),e=xc(e);const f=Object.keys(h);if(f.length>0)throw Error("Unknown option: "+f.join(", "));if(0===e.length)throw Error("UserIDs are required for key generation");if("rsa"===r&&i<u.minRSABits)throw Error(`rsaBits should be at least ${u.minRSABits}, got: ${i}`);const d={userIDs:e,passphrase:t,type:r,rsaBits:i,curve:n,keyExpirationTime:a,date:s,subkeys:o};try{const{key:e,revocationCertificate:t}=await async function(e,t){e.sign=!0,(e=Uo(e)).subkeys=e.subkeys.map(((t,r)=>Uo(e.subkeys[r],e)));let r=[So(e,t)];r=r.concat(e.subkeys.map((e=>Ao(e,t))));const i=await Promise.all(r),n=await Vo(i[0],i.slice(1),e,t),a=await n.getRevocationCertificate(e.date,t);return n.revocationSignatures=[],{key:n,revocationCertificate:a}}(d,u);return e.getKeys().forEach((({keyPacket:e})=>qo(e,u))),{privateKey:Kc(e,c,u),publicKey:Kc(e.toPublic(),c,u),revocationCertificate:t}}catch(e){throw V.wrapError("Error generating keypair",e)}}async function fc({privateKey:e,userIDs:t=[],passphrase:r="",keyExpirationTime:i=0,date:n,format:a="armored",config:s,...o}){Pc(s={...ie,...s}),t=xc(t);const c=Object.keys(o);if(c.length>0)throw Error("Unknown option: "+c.join(", "));if(0===t.length)throw Error("UserIDs are required for key reformat");const u={privateKey:e,userIDs:t,passphrase:r,keyExpirationTime:i,date:n};try{const{key:e,revocationCertificate:t}=await async function(e,t){e=o(e);const{privateKey:r}=e;if(!r.isPrivate())throw Error("Cannot reformat a public key");if(r.keyPacket.isDummy())throw Error("Cannot reformat a gnu-dummy primary key");if(!r.getKeys().every((({keyPacket:e})=>e.isDecrypted())))throw Error("Key is not decrypted");const i=r.keyPacket;e.subkeys||(e.subkeys=await Promise.all(r.subkeys.map((async e=>{const r=e.keyPacket,n={key:i,bind:r},a=await Eo(e.bindingSignatures,i,re.signature.subkeyBinding,n,null,t).catch((()=>({})));return{sign:a.keyFlags&&a.keyFlags[0]&re.keyFlags.signData}}))));const n=r.subkeys.map((e=>e.keyPacket));if(e.subkeys.length!==n.length)throw Error("Number of subkey options does not match number of subkeys");e.subkeys=e.subkeys.map((t=>o(t,e)));const a=await Vo(i,n,e,t),s=await a.getRevocationCertificate(e.date,t);return a.revocationSignatures=[],{key:a,revocationCertificate:s};function o(e,t={}){return e.keyExpirationTime=e.keyExpirationTime||t.keyExpirationTime,e.passphrase=V.isString(e.passphrase)?e.passphrase:t.passphrase,e.date=e.date||t.date,e}}(u,s);return{privateKey:Kc(e,a,s),publicKey:Kc(e.toPublic(),a,s),revocationCertificate:t}}catch(e){throw V.wrapError("Error reformatting keypair",e)}}async function dc({key:e,revocationCertificate:t,reasonForRevocation:r,date:i=new Date,format:n="armored",config:a,...s}){Pc(a={...ie,...a});const o=Object.keys(s);if(o.length>0)throw Error("Unknown option: "+o.join(", "));try{const s=t?await e.applyRevocationCertificate(t,i,a):await e.revoke(r,i,a);return s.isPrivate()?{privateKey:Kc(s,n,a),publicKey:Kc(s.toPublic(),n,a)}:{privateKey:null,publicKey:Kc(s,n,a)}}catch(e){throw V.wrapError("Error revoking key",e)}}async function lc({privateKey:e,passphrase:t,config:r,...i}){Pc(r={...ie,...r});const n=Object.keys(i);if(n.length>0)throw Error("Unknown option: "+n.join(", "));if(!e.isPrivate())throw Error("Cannot decrypt a public key");const a=e.clone(!0),s=V.isArray(t)?t:[t];try{return await Promise.all(a.getKeys().map((e=>V.anyPromise(s.map((t=>e.keyPacket.decrypt(t))))))),await a.validate(r),a}catch(e){throw a.clearPrivateParams(),V.wrapError("Error decrypting private key",e)}}async function pc({privateKey:e,passphrase:t,config:r,...i}){Pc(r={...ie,...r});const n=Object.keys(i);if(n.length>0)throw Error("Unknown option: "+n.join(", "));if(!e.isPrivate())throw Error("Cannot encrypt a public key");const a=e.clone(!0),s=a.getKeys(),o=V.isArray(t)?t:Array(s.length).fill(t);if(o.length!==s.length)throw Error("Invalid number of passphrases given for key encryption");try{return await Promise.all(s.map((async(e,t)=>{const{keyPacket:i}=e;await i.encrypt(o[t],r),i.clearPrivateParams()}))),a}catch(e){throw a.clearPrivateParams(),V.wrapError("Error encrypting private key",e)}}async function yc({message:e,encryptionKeys:t,signingKeys:r,passwords:i,sessionKey:n,format:a="armored",signature:s=null,wildcard:o=!1,signingKeyIDs:c=[],encryptionKeyIDs:u=[],date:h=new Date,signingUserIDs:f=[],encryptionUserIDs:d=[],config:l,...p}){if(Pc(l={...ie,...l}),kc(e),Sc(a),t=xc(t),r=xc(r),i=xc(i),c=xc(c),u=xc(u),f=xc(f),d=xc(d),p.detached)throw Error("The `detached` option has been removed from openpgp.encrypt, separately call openpgp.sign instead. Don't forget to remove the `privateKeys` option as well.");if(p.publicKeys)throw Error("The `publicKeys` option has been removed from openpgp.encrypt, pass `encryptionKeys` instead");if(p.privateKeys)throw Error("The `privateKeys` option has been removed from openpgp.encrypt, pass `signingKeys` instead");if(void 0!==p.armor)throw Error("The `armor` option has been removed from openpgp.encrypt, pass `format` instead.");const y=Object.keys(p);if(y.length>0)throw Error("Unknown option: "+y.join(", "));r||(r=[]);const b=e.fromStream;try{if((r.length||s)&&(e=await e.sign(r,s,c,h,f,l)),e=e.compress(await Co("compression",t,h,d,l),l),e=await e.encrypt(t,i,n,o,u,h,d,l),"object"===a)return e;const p="armored"===a;return Mc(p?e.armor(l):e.write(),b,p?"utf8":"binary")}catch(e){throw V.wrapError("Error encrypting message",e)}}async function bc({message:e,decryptionKeys:t,passwords:r,sessionKeys:i,verificationKeys:n,expectSigned:a=!1,format:s="utf8",signature:o=null,date:c=new Date,config:u,...h}){if(Pc(u={...ie,...u}),kc(e),n=xc(n),t=xc(t),r=xc(r),i=xc(i),h.privateKeys)throw Error("The `privateKeys` option has been removed from openpgp.decrypt, pass `decryptionKeys` instead");if(h.publicKeys)throw Error("The `publicKeys` option has been removed from openpgp.decrypt, pass `verificationKeys` instead");const f=Object.keys(h);if(f.length>0)throw Error("Unknown option: "+f.join(", "));try{const h=await e.decrypt(t,r,i,c,u);n||(n=[]);const f={};if(f.signatures=o?await h.verifyDetached(o,n,c,u):await h.verify(n,c,u),f.data="binary"===s?h.getLiteralData():h.getText(),f.filename=h.getFilename(),Cc(f,e),a){if(0===n.length)throw Error("Verification keys are required to verify message signatures");if(0===f.signatures.length)throw Error("Message is not signed");f.data=C([f.data,W((async()=>{await V.anyPromise(f.signatures.map((e=>e.verified)))}))])}return f.data=await Mc(f.data,e.fromStream,s),f}catch(e){throw V.wrapError("Error decrypting message",e)}}async function mc({message:e,signingKeys:t,format:r="armored",detached:i=!1,signingKeyIDs:n=[],date:a=new Date,signingUserIDs:s=[],config:o,...c}){if(Pc(o={...ie,...o}),Ac(e),Sc(r),t=xc(t),n=xc(n),s=xc(s),c.privateKeys)throw Error("The `privateKeys` option has been removed from openpgp.sign, pass `signingKeys` instead");if(void 0!==c.armor)throw Error("The `armor` option has been removed from openpgp.sign, pass `format` instead.");const u=Object.keys(c);if(u.length>0)throw Error("Unknown option: "+u.join(", "));if(e instanceof oc&&"binary"===r)throw Error("Cannot return signed cleartext message in binary format");if(e instanceof oc&&i)throw Error("Cannot detach-sign a cleartext message");if(!t||0===t.length)throw Error("No signing keys provided");try{let c;if(c=i?await e.signDetached(t,void 0,n,a,s,o):await e.sign(t,void 0,n,a,s,o),"object"===r)return c;const u="armored"===r;return c=u?c.armor(o):c.write(),i&&(c=T(e.packets.write(),(async(e,t)=>{await Promise.all([R(c,t),j(e).catch((()=>{}))])}))),Mc(c,e.fromStream,u?"utf8":"binary")}catch(e){throw V.wrapError("Error signing message",e)}}async function gc({message:e,verificationKeys:t,expectSigned:r=!1,format:i="utf8",signature:n=null,date:a=new Date,config:s,...o}){if(Pc(s={...ie,...s}),Ac(e),t=xc(t),o.publicKeys)throw Error("The `publicKeys` option has been removed from openpgp.verify, pass `verificationKeys` instead");const c=Object.keys(o);if(c.length>0)throw Error("Unknown option: "+c.join(", "));if(e instanceof oc&&"binary"===i)throw Error("Can't return cleartext message data as binary");if(e instanceof oc&&n)throw Error("Can't verify detached cleartext signature");try{const o={};if(o.signatures=n?await e.verifyDetached(n,t,a,s):await e.verify(t,a,s),o.data="binary"===i?e.getLiteralData():e.getText(),e.fromStream&&Cc(o,e),r){if(0===o.signatures.length)throw Error("Message is not signed");o.data=C([o.data,W((async()=>{await V.anyPromise(o.signatures.map((e=>e.verified)))}))])}return o.data=await Mc(o.data,e.fromStream,i),o}catch(e){throw V.wrapError("Error verifying signed message",e)}}async function wc({encryptionKeys:e,date:t=new Date,encryptionUserIDs:r=[],config:i,...n}){if(Pc(i={...ie,...i}),e=xc(e),r=xc(r),n.publicKeys)throw Error("The `publicKeys` option has been removed from openpgp.generateSessionKey, pass `encryptionKeys` instead");const a=Object.keys(n);if(a.length>0)throw Error("Unknown option: "+a.join(", "));try{return await tc.generateSessionKey(e,t,r,i)}catch(e){throw V.wrapError("Error generating session key",e)}}async function vc({data:e,algorithm:t,aeadAlgorithm:r,encryptionKeys:i,passwords:n,format:a="armored",wildcard:s=!1,encryptionKeyIDs:o=[],date:c=new Date,encryptionUserIDs:u=[],config:h,...f}){if(Pc(h={...ie,...h}),function(e,t){if(!V.isUint8Array(e))throw Error("Parameter ["+(t||"data")+"] must be of type Uint8Array")}(e),function(e,t){if(!V.isString(e))throw Error("Parameter ["+(t||"data")+"] must be of type String")}(t,"algorithm"),Sc(a),i=xc(i),n=xc(n),o=xc(o),u=xc(u),f.publicKeys)throw Error("The `publicKeys` option has been removed from openpgp.encryptSessionKey, pass `encryptionKeys` instead");const d=Object.keys(f);if(d.length>0)throw Error("Unknown option: "+d.join(", "));try{return Kc(await tc.encryptSessionKey(e,t,r,i,n,s,o,c,u,h),a,h)}catch(e){throw V.wrapError("Error encrypting session key",e)}}async function _c({message:e,decryptionKeys:t,passwords:r,date:i=new Date,config:n,...a}){if(Pc(n={...ie,...n}),kc(e),t=xc(t),r=xc(r),a.privateKeys)throw Error("The `privateKeys` option has been removed from openpgp.decryptSessionKeys, pass `decryptionKeys` instead");const s=Object.keys(a);if(s.length>0)throw Error("Unknown option: "+s.join(", "));try{return await e.decryptSessionKeys(t,r,i,n)}catch(e){throw V.wrapError("Error decrypting session keys",e)}}function kc(e){if(!(e instanceof tc))throw Error("Parameter [message] needs to be of type Message")}function Ac(e){if(!(e instanceof oc||e instanceof tc))throw Error("Parameter [message] needs to be of type Message or CleartextMessage")}function Sc(e){if("armored"!==e&&"binary"!==e&&"object"!==e)throw Error("Unsupported format "+e)}const Ec=Object.keys(ie).length;function Pc(e){const t=Object.keys(e);if(t.length!==Ec)for(const e of t)if(void 0===ie[e])throw Error("Unknown config property: "+e)}function xc(e){return e&&!V.isArray(e)&&(e=[e]),e}async function Mc(e,t,r="utf8"){const i=V.isStream(e);return"array"===i?j(e):"node"===t?(e=b(e),"binary"!==r&&e.setEncoding(r),e):"web"===t&&"ponyfill"===i?_(e):e}function Cc(e,t){e.data=T(t.packets.stream,(async(t,r)=>{await R(e.data,r,{preventClose:!0});const i=D(r);try{await j(t,(e=>e)),await i.close()}catch(e){await i.abort(e)}}))}function Kc(e,t,r){switch(t){case"object":return e;case"armored":return e.armor(r);case"binary":return e.write();default:throw Error("Unsupported format "+t)}}const Dc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol:e=>`Symbol(${e})`;function Rc(){}const Ic="undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:void 0;function Uc(e){return"object"==typeof e&&null!==e||"function"==typeof e}const Bc=Rc,Tc=Promise,zc=Promise.prototype.then,qc=Promise.resolve.bind(Tc),Oc=Promise.reject.bind(Tc);function Fc(e){return new Tc(e)}function Nc(e){return qc(e)}function jc(e){return Oc(e)}function Lc(e,t,r){return zc.call(e,t,r)}function Wc(e,t,r){Lc(Lc(e,t,r),void 0,Bc)}function Hc(e,t){Wc(e,t)}function Gc(e,t){Wc(e,void 0,t)}function Vc(e,t,r){return Lc(e,t,r)}function $c(e){Lc(e,void 0,Bc)}const Zc=(()=>{const e=Ic&&Ic.queueMicrotask;if("function"==typeof e)return e;const t=Nc(void 0);return e=>Lc(t,e)})();function Yc(e,t,r){if("function"!=typeof e)throw new TypeError("Argument is not a function");return Function.prototype.apply.call(e,t,r)}function Xc(e,t,r){try{return Nc(Yc(e,t,r))}catch(e){return jc(e)}}class Qc{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size}shift(){const e=this._front;let t=e;const r=this._cursor;let i=r+1;const n=e._elements,a=n[r];return 16384===i&&(t=e._next,i=0),--this._size,this._cursor=i,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,i=r._elements;for(;!(t===i.length&&void 0===r._next||t===i.length&&(r=r._next,i=r._elements,t=0,0===i.length));)e(i[t]),++t}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}function Jc(e,t){e._ownerReadableStream=t,t._reader=e,"readable"===t._state?iu(e):"closed"===t._state?function(e){iu(e),su(e)}(e):nu(e,t._storedError)}function eu(e,t){return qf(e._ownerReadableStream,t)}function tu(e){"readable"===e._ownerReadableStream._state?au(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):function(e,t){nu(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 ru(e){return new TypeError("Cannot "+e+" a stream using a released reader")}function iu(e){e._closedPromise=Fc(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r}))}function nu(e,t){iu(e),au(e,t)}function au(e,t){void 0!==e._closedPromise_reject&&($c(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}function su(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}const ou=Dc("[[AbortSteps]]"),cu=Dc("[[ErrorSteps]]"),uu=Dc("[[CancelSteps]]"),hu=Dc("[[PullSteps]]"),fu=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},du=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function lu(e,t){if(void 0!==e&&("object"!=typeof(r=e)&&"function"!=typeof r))throw new TypeError(t+" is not an object.");var r}function pu(e,t){if("function"!=typeof e)throw new TypeError(t+" is not a function.")}function yu(e,t){if(!function(e){return"object"==typeof e&&null!==e||"function"==typeof e}(e))throw new TypeError(t+" is not an object.")}function bu(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function mu(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function gu(e){return Number(e)}function wu(e){return 0===e?0:e}function vu(e,t){const r=Number.MAX_SAFE_INTEGER;let i=Number(e);if(i=wu(i),!fu(i))throw new TypeError(t+" is not a finite number");if(i=function(e){return wu(du(e))}(i),i<0||i>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return fu(i)&&0!==i?i:0}function _u(e,t){if(!Tf(e))throw new TypeError(t+" is not a ReadableStream.")}function ku(e){return new xu(e)}function Au(e,t){e._reader._readRequests.push(t)}function Su(e,t,r){const i=e._reader._readRequests.shift();r?i._closeSteps():i._chunkSteps(t)}function Eu(e){return e._reader._readRequests.length}function Pu(e){const t=e._reader;return void 0!==t&&!!Mu(t)}class xu{constructor(e){if(bu(e,1,"ReadableStreamDefaultReader"),_u(e,"First parameter"),zf(e))throw new TypeError("This stream has already been locked for exclusive reading by another reader");Jc(this,e),this._readRequests=new Qc}get closed(){return Mu(this)?this._closedPromise:jc(Ku("closed"))}cancel(e){return Mu(this)?void 0===this._ownerReadableStream?jc(ru("cancel")):eu(this,e):jc(Ku("cancel"))}read(){if(!Mu(this))return jc(Ku("read"));if(void 0===this._ownerReadableStream)return jc(ru("read from"));let e,t;const r=Fc(((r,i)=>{e=r,t=i}));return Cu(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!Mu(this))throw Ku("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");tu(this)}}}function Mu(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readRequests")}function Cu(e,t){const r=e._ownerReadableStream;r._disturbed=!0,"closed"===r._state?t._closeSteps():"errored"===r._state?t._errorSteps(r._storedError):r._readableStreamController[hu](t)}function Ku(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}let Du;Object.defineProperties(xu.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(xu.prototype,Dc.toStringTag,{value:"ReadableStreamDefaultReader",configurable:!0}),"symbol"==typeof Dc.asyncIterator&&(Du={[Dc.asyncIterator](){return this}},Object.defineProperty(Du,Dc.asyncIterator,{enumerable:!1}));class Ru{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?Vc(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?Vc(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;if(void 0===e._ownerReadableStream)return jc(ru("iterate"));let t,r;const i=Fc(((e,i)=>{t=e,r=i}));return Cu(e,{_chunkSteps:e=>{this._ongoingPromise=void 0,Zc((()=>t({value:e,done:!1})))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,tu(e),t({value:void 0,done:!0})},_errorSteps:t=>{this._ongoingPromise=void 0,this._isFinished=!0,tu(e),r(t)}}),i}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(void 0===t._ownerReadableStream)return jc(ru("finish iterating"));if(!this._preventCancel){const r=eu(t,e);return tu(t),Vc(r,(()=>({value:e,done:!0})))}return tu(t),Nc({value:e,done:!0})}}const Iu={next(){return Uu(this)?this._asyncIteratorImpl.next():jc(Bu("next"))},return(e){return Uu(this)?this._asyncIteratorImpl.return(e):jc(Bu("return"))}};function Uu(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_asyncIteratorImpl")}function Bu(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}void 0!==Du&&Object.setPrototypeOf(Iu,Du);const Tu=Number.isNaN||function(e){return e!=e};function zu(e){return!!function(e){if("number"!=typeof e)return!1;if(Tu(e))return!1;if(e<0)return!1;return!0}(e)&&e!==1/0}function qu(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function Ou(e,t,r){if(!zu(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 Fu(e){e._queue=new Qc,e._queueTotalSize=0}function Nu(e){return e.slice()}class ju{constructor(){throw new TypeError("Illegal constructor")}get view(){if(!Hu(this))throw oh("view");return this._view}respond(e){if(!Hu(this))throw oh("respond");if(bu(e,1,"respond"),e=vu(e,"First parameter"),void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");this._view.buffer,function(e,t){if(!zu(t=Number(t)))throw new RangeError("bytesWritten must be a finite");th(e,t)}(this._associatedReadableByteStreamController,e)}respondWithNewView(e){if(!Hu(this))throw oh("respondWithNewView");if(bu(e,1,"respondWithNewView"),!ArrayBuffer.isView(e))throw new TypeError("You can only respond with array buffer views");if(0===e.byteLength)throw new TypeError("chunk must have non-zero byteLength");if(0===e.buffer.byteLength)throw new TypeError("chunk's buffer must have non-zero byteLength");if(void 0===this._associatedReadableByteStreamController)throw new TypeError("This BYOB request has been invalidated");!function(e,t){const r=e._pendingPullIntos.peek();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,th(e,t.byteLength)}(this._associatedReadableByteStreamController,e)}}Object.defineProperties(ju.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(ju.prototype,Dc.toStringTag,{value:"ReadableStreamBYOBRequest",configurable:!0});class Lu{constructor(){throw new TypeError("Illegal constructor")}get byobRequest(){if(!Wu(this))throw ch("byobRequest");if(null===this._byobRequest&&this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek(),t=new Uint8Array(e.buffer,e.byteOffset+e.bytesFilled,e.byteLength-e.bytesFilled),r=Object.create(ju.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(r,this,t),this._byobRequest=r}return this._byobRequest}get desiredSize(){if(!Wu(this))throw ch("desiredSize");return ah(this)}close(){if(!Wu(this))throw ch("close");if(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._closeRequested||"readable"!==t._state)return;if(e._queueTotalSize>0)return void(e._closeRequested=!0);if(e._pendingPullIntos.length>0){if(e._pendingPullIntos.peek().bytesFilled>0){const t=new TypeError("Insufficient bytes to fill elements in the given buffer");throw nh(e,t),t}}ih(e),Of(t)}(this)}enqueue(e){if(!Wu(this))throw ch("enqueue");if(bu(e,1,"enqueue"),!ArrayBuffer.isView(e))throw new TypeError("chunk must be an array buffer view");if(0===e.byteLength)throw new TypeError("chunk must have non-zero byteLength");if(0===e.buffer.byteLength)throw new TypeError("chunk's buffer must have non-zero byteLength");if(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`);!function(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||"readable"!==r._state)return;const i=t.buffer,n=t.byteOffset,a=t.byteLength,s=i;if(Pu(r))if(0===Eu(r))Zu(e,s,n,a);else{Su(r,new Uint8Array(s,n,a),!1)}else fh(r)?(Zu(e,s,n,a),eh(e)):Zu(e,s,n,a);Gu(e)}(this,e)}error(e){if(!Wu(this))throw ch("error");nh(this,e)}[uu](e){if(this._pendingPullIntos.length>0){this._pendingPullIntos.peek().bytesFilled=0}Fu(this);const t=this._cancelAlgorithm(e);return ih(this),t}[hu](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0){const t=this._queue.shift();this._queueTotalSize-=t.byteLength,Qu(this);const r=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return void e._chunkSteps(r)}const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r)}catch(t){return void e._errorSteps(t)}const i={buffer:t,byteOffset:0,byteLength:r,bytesFilled:0,elementSize:1,viewConstructor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(i)}Au(t,e),Gu(this)}}function Wu(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")}function Hu(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")}function Gu(e){if(!function(e){const t=e._controlledReadableByteStream;if("readable"!==t._state)return!1;if(e._closeRequested)return!1;if(!e._started)return!1;if(Pu(t)&&Eu(t)>0)return!0;if(fh(t)&&hh(t)>0)return!0;if(ah(e)>0)return!0;return!1}(e))return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;Wc(e._pullAlgorithm(),(()=>{e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,Gu(e))}),(t=>{nh(e,t)}))}function Vu(e,t){let r=!1;"closed"===e._state&&(r=!0);const i=$u(t);"default"===t.readerType?Su(e,i,r):function(e,t,r){const i=e._reader._readIntoRequests.shift();r?i._closeSteps(t):i._chunkSteps(t)}(e,i,r)}function $u(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function Zu(e,t,r,i){e._queue.push({buffer:t,byteOffset:r,byteLength:i}),e._queueTotalSize+=i}function Yu(e,t){const r=t.elementSize,i=t.bytesFilled-t.bytesFilled%r,n=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+n,s=a-a%r;let o=n,c=!1;s>i&&(o=s-t.bytesFilled,c=!0);const u=e._queue;for(;o>0;){const r=u.peek(),i=Math.min(o,r.byteLength),n=t.byteOffset+t.bytesFilled;h=t.buffer,f=n,d=r.buffer,l=r.byteOffset,p=i,new Uint8Array(h).set(new Uint8Array(d,l,p),f),r.byteLength===i?u.shift():(r.byteOffset+=i,r.byteLength-=i),e._queueTotalSize-=i,Xu(e,i,t),o-=i}var h,f,d,l,p;return c}function Xu(e,t,r){Ju(e),r.bytesFilled+=t}function Qu(e){0===e._queueTotalSize&&e._closeRequested?(ih(e),Of(e._controlledReadableByteStream)):Gu(e)}function Ju(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}function eh(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();Yu(e,t)&&(rh(e),Vu(e._controlledReadableByteStream,t))}}function th(e,t){const r=e._pendingPullIntos.peek();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(fh(r))for(;hh(r)>0;)Vu(r,rh(e))}(e,r)}else!function(e,t,r){if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range");if(Xu(e,t,r),r.bytesFilled<r.elementSize)return;rh(e);const i=r.bytesFilled%r.elementSize;if(i>0){const t=r.byteOffset+r.bytesFilled,n=r.buffer.slice(t-i,t);Zu(e,n,0,n.byteLength)}r.buffer=r.buffer,r.bytesFilled-=i,Vu(e._controlledReadableByteStream,r),eh(e)}(e,t,r);Gu(e)}function rh(e){const t=e._pendingPullIntos.shift();return Ju(e),t}function ih(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function nh(e,t){const r=e._controlledReadableByteStream;"readable"===r._state&&(!function(e){Ju(e),e._pendingPullIntos=new Qc}(e),Fu(e),ih(e),Ff(r,t))}function ah(e){const t=e._controlledReadableByteStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function sh(e,t,r){const i=Object.create(Lu.prototype);let n=()=>{},a=()=>Nc(void 0),s=()=>Nc(void 0);void 0!==t.start&&(n=()=>t.start(i)),void 0!==t.pull&&(a=()=>t.pull(i)),void 0!==t.cancel&&(s=e=>t.cancel(e));const o=t.autoAllocateChunkSize;if(0===o)throw new TypeError("autoAllocateChunkSize must be greater than 0");!function(e,t,r,i,n,a,s){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,Fu(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=i,t._cancelAlgorithm=n,t._autoAllocateChunkSize=s,t._pendingPullIntos=new Qc,e._readableStreamController=t,Wc(Nc(r()),(()=>{t._started=!0,Gu(t)}),(e=>{nh(t,e)}))}(e,i,n,a,s,r,o)}function oh(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function ch(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function uh(e,t){e._reader._readIntoRequests.push(t)}function hh(e){return e._reader._readIntoRequests.length}function fh(e){const t=e._reader;return void 0!==t&&!!lh(t)}Object.defineProperties(Lu.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(Lu.prototype,Dc.toStringTag,{value:"ReadableByteStreamController",configurable:!0});class dh{constructor(e){if(bu(e,1,"ReadableStreamBYOBReader"),_u(e,"First parameter"),zf(e))throw new TypeError("This stream has already been locked for exclusive reading by another reader");if(!Wu(e._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");Jc(this,e),this._readIntoRequests=new Qc}get closed(){return lh(this)?this._closedPromise:jc(ph("closed"))}cancel(e){return lh(this)?void 0===this._ownerReadableStream?jc(ru("cancel")):eu(this,e):jc(ph("cancel"))}read(e){if(!lh(this))return jc(ph("read"));if(!ArrayBuffer.isView(e))return jc(new TypeError("view must be an array buffer view"));if(0===e.byteLength)return jc(new TypeError("view must have non-zero byteLength"));if(0===e.buffer.byteLength)return jc(new TypeError("view's buffer must have non-zero byteLength"));if(void 0===this._ownerReadableStream)return jc(ru("read from"));let t,r;const i=Fc(((e,i)=>{t=e,r=i}));return function(e,t,r){const i=e._ownerReadableStream;i._disturbed=!0,"errored"===i._state?r._errorSteps(i._storedError):function(e,t,r){const i=e._controlledReadableByteStream;let n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);const a=t.constructor,s={buffer:t.buffer,byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,viewConstructor:a,readerType:"byob"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(s),void uh(i,r);if("closed"!==i._state){if(e._queueTotalSize>0){if(Yu(e,s)){const t=$u(s);return Qu(e),void r._chunkSteps(t)}if(e._closeRequested){const t=new TypeError("Insufficient bytes to fill elements in the given buffer");return nh(e,t),void r._errorSteps(t)}}e._pendingPullIntos.push(s),uh(i,r),Gu(e)}else{const e=new a(s.buffer,s.byteOffset,0);r._closeSteps(e)}}(i._readableStreamController,t,r)}(this,e,{_chunkSteps:e=>t({value:e,done:!1}),_closeSteps:e=>t({value:e,done:!0}),_errorSteps:e=>r(e)}),i}releaseLock(){if(!lh(this))throw ph("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");tu(this)}}}function lh(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")}function ph(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function yh(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(Tu(r)||r<0)throw new RangeError("Invalid highWaterMark");return r}function bh(e){const{size:t}=e;return t||(()=>1)}function mh(e,t){lu(e,t);const r=null==e?void 0:e.highWaterMark,i=null==e?void 0:e.size;return{highWaterMark:void 0===r?void 0:gu(r),size:void 0===i?void 0:gh(i,t+" has member 'size' that")}}function gh(e,t){return pu(e,t),t=>gu(e(t))}function wh(e,t,r){return pu(e,r),r=>Xc(e,t,[r])}function vh(e,t,r){return pu(e,r),()=>Xc(e,t,[])}function _h(e,t,r){return pu(e,r),r=>Yc(e,t,[r])}function kh(e,t,r){return pu(e,r),(r,i)=>Xc(e,t,[r,i])}function Ah(e,t){if(!xh(e))throw new TypeError(t+" is not a WritableStream.")}Object.defineProperties(dh.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(dh.prototype,Dc.toStringTag,{value:"ReadableStreamBYOBReader",configurable:!0});class Sh{constructor(e={},t={}){void 0===e?e=null:yu(e,"First parameter");const r=mh(t,"Second parameter"),i=function(e,t){lu(e,t);const r=null==e?void 0:e.abort,i=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,s=null==e?void 0:e.write;return{abort:void 0===r?void 0:wh(r,e,t+" has member 'abort' that"),close:void 0===i?void 0:vh(i,e,t+" has member 'close' that"),start:void 0===n?void 0:_h(n,e,t+" has member 'start' that"),write:void 0===s?void 0:kh(s,e,t+" has member 'write' that"),type:a}}(e,"First parameter");Ph(this);if(void 0!==i.type)throw new RangeError("Invalid type is specified");const n=bh(r);!function(e,t,r,i){const n=Object.create(Hh.prototype);let a=()=>{},s=()=>Nc(void 0),o=()=>Nc(void 0),c=()=>Nc(void 0);void 0!==t.start&&(a=()=>t.start(n));void 0!==t.write&&(s=e=>t.write(e,n));void 0!==t.close&&(o=()=>t.close());void 0!==t.abort&&(c=e=>t.abort(e));Gh(e,n,a,s,o,c,r,i)}(this,i,yh(r,1),n)}get locked(){if(!xh(this))throw Jh("locked");return Mh(this)}abort(e){return xh(this)?Mh(this)?jc(new TypeError("Cannot abort a stream that already has a writer")):Ch(this,e):jc(Jh("abort"))}close(){return xh(this)?Mh(this)?jc(new TypeError("Cannot close a stream that already has a writer")):Uh(this)?jc(new TypeError("Cannot close an already-closing stream")):Kh(this):jc(Jh("close"))}getWriter(){if(!xh(this))throw Jh("getWriter");return Eh(this)}}function Eh(e){return new zh(e)}function Ph(e){e._state="writable",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=new Qc,e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function xh(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")}function Mh(e){return void 0!==e._writer}function Ch(e,t){const r=e._state;if("closed"===r||"errored"===r)return Nc(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let i=!1;"erroring"===r&&(i=!0,t=void 0);const n=Fc(((r,n)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:n,_reason:t,_wasAlreadyErroring:i}}));return e._pendingAbortRequest._promise=n,i||Rh(e,t),n}function Kh(e){const t=e._state;if("closed"===t||"errored"===t)return jc(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=Fc(((t,r)=>{const i={_resolve:t,_reject:r};e._closeRequest=i})),i=e._writer;var n;return void 0!==i&&e._backpressure&&"writable"===t&&ff(i),Ou(n=e._writableStreamController,Wh,0),Zh(n),r}function Dh(e,t){"writable"!==e._state?Ih(e):Rh(e,t)}function Rh(e,t){const r=e._writableStreamController;e._state="erroring",e._storedError=t;const i=e._writer;void 0!==i&&Nh(i,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return!1;return!0}(e)&&r._started&&Ih(e)}function Ih(e){e._state="errored",e._writableStreamController[cu]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t)})),e._writeRequests=new Qc,void 0===e._pendingAbortRequest)return void Bh(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void Bh(e);Wc(e._writableStreamController[ou](r._reason),(()=>{r._resolve(),Bh(e)}),(t=>{r._reject(t),Bh(e)}))}function Uh(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function Bh(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&af(t,e._storedError)}function Th(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){of(e)}(r):ff(r)),e._backpressure=t}Object.defineProperties(Sh.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(Sh.prototype,Dc.toStringTag,{value:"WritableStream",configurable:!0});class zh{constructor(e){if(bu(e,1,"WritableStreamDefaultWriter"),Ah(e,"First parameter"),Mh(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)!Uh(e)&&e._backpressure?of(this):uf(this),rf(this);else if("erroring"===t)cf(this,e._storedError),rf(this);else if("closed"===t)uf(this),rf(r=this),sf(r);else{const t=e._storedError;cf(this,t),nf(this,t)}var r}get closed(){return qh(this)?this._closedPromise:jc(ef("closed"))}get desiredSize(){if(!qh(this))throw ef("desiredSize");if(void 0===this._ownerWritableStream)throw tf("desiredSize");return function(e){const t=e._ownerWritableStream,r=t._state;if("errored"===r||"erroring"===r)return null;if("closed"===r)return 0;return $h(t._writableStreamController)}(this)}get ready(){return qh(this)?this._readyPromise:jc(ef("ready"))}abort(e){return qh(this)?void 0===this._ownerWritableStream?jc(tf("abort")):function(e,t){return Ch(e._ownerWritableStream,t)}(this,e):jc(ef("abort"))}close(){if(!qh(this))return jc(ef("close"));const e=this._ownerWritableStream;return void 0===e?jc(tf("close")):Uh(e)?jc(new TypeError("Cannot close an already-closing stream")):Oh(this)}releaseLock(){if(!qh(this))throw ef("releaseLock");void 0!==this._ownerWritableStream&&jh(this)}write(e){return qh(this)?void 0===this._ownerWritableStream?jc(tf("write to")):Lh(this,e):jc(ef("write"))}}function qh(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")}function Oh(e){return Kh(e._ownerWritableStream)}function Fh(e,t){"pending"===e._closedPromiseState?af(e,t):function(e,t){nf(e,t)}(e,t)}function Nh(e,t){"pending"===e._readyPromiseState?hf(e,t):function(e,t){cf(e,t)}(e,t)}function jh(e){const t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");Nh(e,r),Fh(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function Lh(e,t){const r=e._ownerWritableStream,i=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return Yh(e,t),1}}(i,t);if(r!==e._ownerWritableStream)return jc(tf("write to"));const a=r._state;if("errored"===a)return jc(r._storedError);if(Uh(r)||"closed"===a)return jc(new TypeError("The stream is closing or closed and cannot be written to"));if("erroring"===a)return jc(r._storedError);const s=function(e){return Fc(((t,r)=>{const i={_resolve:t,_reject:r};e._writeRequests.push(i)}))}(r);return function(e,t,r){try{Ou(e,t,r)}catch(t){return void Yh(e,t)}const i=e._controlledWritableStream;if(!Uh(i)&&"writable"===i._state){Th(i,Xh(e))}Zh(e)}(i,t,n),s}Object.defineProperties(zh.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(zh.prototype,Dc.toStringTag,{value:"WritableStreamDefaultWriter",configurable:!0});const Wh={};class Hh{constructor(){throw new TypeError("Illegal constructor")}error(e){if(!function(e){if(!Uc(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&&Qh(this,e)}[ou](e){const t=this._abortAlgorithm(e);return Vh(this),t}[cu](){Fu(this)}}function Gh(e,t,r,i,n,a,s,o){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,Fu(t),t._started=!1,t._strategySizeAlgorithm=o,t._strategyHWM=s,t._writeAlgorithm=i,t._closeAlgorithm=n,t._abortAlgorithm=a;const c=Xh(t);Th(e,c);Wc(Nc(r()),(()=>{t._started=!0,Zh(t)}),(r=>{t._started=!0,Dh(e,r)}))}function Vh(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function $h(e){return e._strategyHWM-e._queueTotalSize}function Zh(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if("erroring"===t._state)return void Ih(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===Wh?function(e){const t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),qu(e);const r=e._closeAlgorithm();Vh(e),Wc(r,(()=>{!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&&sf(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),Dh(e,t)}(t,e)}))}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift()}(r);Wc(e._writeAlgorithm(t),(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);const t=r._state;if(qu(e),!Uh(r)&&"writable"===t){const t=Xh(e);Th(r,t)}Zh(e)}),(t=>{"writable"===r._state&&Vh(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Dh(e,t)}(r,t)}))}(e,r)}function Yh(e,t){"writable"===e._controlledWritableStream._state&&Qh(e,t)}function Xh(e){return $h(e)<=0}function Qh(e,t){const r=e._controlledWritableStream;Vh(e),Rh(r,t)}function Jh(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function ef(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function tf(e){return new TypeError("Cannot "+e+" a stream using a released writer")}function rf(e){e._closedPromise=Fc(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending"}))}function nf(e,t){rf(e),af(e,t)}function af(e,t){void 0!==e._closedPromise_reject&&($c(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected")}function sf(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved")}function of(e){e._readyPromise=Fc(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState="pending"}function cf(e,t){of(e),hf(e,t)}function uf(e){of(e),ff(e)}function hf(e,t){void 0!==e._readyPromise_reject&&($c(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected")}function ff(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled")}Object.defineProperties(Hh.prototype,{error:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(Hh.prototype,Dc.toStringTag,{value:"WritableStreamDefaultController",configurable:!0});const df="undefined"!=typeof DOMException?DOMException:void 0;const lf=function(e){if("function"!=typeof e&&"object"!=typeof e)return!1;try{return new e,!0}catch(e){return!1}}(df)?df:function(){const e=function(e,t){this.message=e||"",this.name=t||"Error",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return Object.defineProperty(e.prototype=Object.create(Error.prototype),"constructor",{value:e,writable:!0,configurable:!0}),e}();function pf(e,t,r,i,n,a){const s=ku(e),o=Eh(t);e._disturbed=!0;let c=!1,u=Nc(void 0);return Fc(((h,f)=>{let d;if(void 0!==a){if(d=()=>{const r=new lf("Aborted","AbortError"),a=[];i||a.push((()=>"writable"===t._state?Ch(t,r):Nc(void 0))),n||a.push((()=>"readable"===e._state?qf(e,r):Nc(void 0))),y((()=>Promise.all(a.map((e=>e())))),!0,r)},a.aborted)return void d();a.addEventListener("abort",d)}if(p(e,s._closedPromise,(e=>{i?b(!0,e):y((()=>Ch(t,e)),!0,e)})),p(t,o._closedPromise,(t=>{n?b(!0,t):y((()=>qf(e,t)),!0,t)})),function(e,t,r){"closed"===e._state?r():Hc(t,r)}(e,s._closedPromise,(()=>{r?b():y((()=>function(e){const t=e._ownerWritableStream,r=t._state;return Uh(t)||"closed"===r?Nc(void 0):"errored"===r?jc(t._storedError):Oh(e)}(o)))})),Uh(t)||"closed"===t._state){const t=new TypeError("the destination writable stream closed before all data could be piped to it");n?b(!0,t):y((()=>qf(e,t)),!0,t)}function l(){const e=u;return Lc(u,(()=>e!==u?l():void 0))}function p(e,t,r){"errored"===e._state?r(e._storedError):Gc(t,r)}function y(e,r,i){function n(){Wc(e(),(()=>m(r,i)),(e=>m(!0,e)))}c||(c=!0,"writable"!==t._state||Uh(t)?n():Hc(l(),n))}function b(e,r){c||(c=!0,"writable"!==t._state||Uh(t)?m(e,r):Hc(l(),(()=>m(e,r))))}function m(e,t){jh(o),tu(s),void 0!==a&&a.removeEventListener("abort",d),e?f(t):h(void 0)}$c(Fc(((e,t)=>{!function r(i){i?e():Lc(c?Nc(!0):Lc(o._readyPromise,(()=>Fc(((e,t)=>{Cu(s,{_chunkSteps:t=>{u=Lc(Lh(o,t),void 0,Rc),e(!1)},_closeSteps:()=>e(!0),_errorSteps:t})})))),r,t)}(!1)})))}))}class yf{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!bf(this))throw Pf("desiredSize");return Af(this)}close(){if(!bf(this))throw Pf("close");if(!Sf(this))throw new TypeError("The stream is not in a state that permits close");vf(this)}enqueue(e){if(!bf(this))throw Pf("enqueue");if(!Sf(this))throw new TypeError("The stream is not in a state that permits enqueue");return _f(this,e)}error(e){if(!bf(this))throw Pf("error");kf(this,e)}[uu](e){Fu(this);const t=this._cancelAlgorithm(e);return wf(this),t}[hu](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=qu(this);this._closeRequested&&0===this._queue.length?(wf(this),Of(t)):mf(this),e._chunkSteps(r)}else Au(t,e),mf(this)}}function bf(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")}function mf(e){if(!gf(e))return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;Wc(e._pullAlgorithm(),(()=>{e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,mf(e))}),(t=>{kf(e,t)}))}function gf(e){const t=e._controlledReadableStream;if(!Sf(e))return!1;if(!e._started)return!1;if(zf(t)&&Eu(t)>0)return!0;return Af(e)>0}function wf(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function vf(e){if(!Sf(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(wf(e),Of(t))}function _f(e,t){if(!Sf(e))return;const r=e._controlledReadableStream;if(zf(r)&&Eu(r)>0)Su(r,t,!1);else{let r;try{r=e._strategySizeAlgorithm(t)}catch(t){throw kf(e,t),t}try{Ou(e,t,r)}catch(t){throw kf(e,t),t}}mf(e)}function kf(e,t){const r=e._controlledReadableStream;"readable"===r._state&&(Fu(e),wf(e),Ff(r,t))}function Af(e){const t=e._controlledReadableStream._state;return"errored"===t?null:"closed"===t?0:e._strategyHWM-e._queueTotalSize}function Sf(e){const t=e._controlledReadableStream._state;return!e._closeRequested&&"readable"===t}function Ef(e,t,r,i,n,a,s){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,Fu(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=s,t._strategyHWM=a,t._pullAlgorithm=i,t._cancelAlgorithm=n,e._readableStreamController=t;Wc(Nc(r()),(()=>{t._started=!0,mf(t)}),(e=>{kf(t,e)}))}function Pf(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function xf(e,t,r){return pu(e,r),r=>Xc(e,t,[r])}function Mf(e,t,r){return pu(e,r),r=>Xc(e,t,[r])}function Cf(e,t,r){return pu(e,r),r=>Yc(e,t,[r])}function Kf(e,t){if("bytes"!==(e=""+e))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function Df(e,t){if("byob"!==(e=""+e))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function Rf(e,t){lu(e,t);const r=null==e?void 0:e.preventAbort,i=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if("object"!=typeof e||null===e)return!1;try{return"boolean"==typeof e.aborted}catch(e){return!1}}(e))throw new TypeError(t+" is not an AbortSignal.")}(a,t+" has member 'signal' that"),{preventAbort:!!r,preventCancel:!!i,preventClose:!!n,signal:a}}Object.defineProperties(yf.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(yf.prototype,Dc.toStringTag,{value:"ReadableStreamDefaultController",configurable:!0});class If{constructor(e={},t={}){void 0===e?e=null:yu(e,"First parameter");const r=mh(t,"Second parameter"),i=function(e,t){lu(e,t);const r=e,i=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,s=null==r?void 0:r.start,o=null==r?void 0:r.type;return{autoAllocateChunkSize:void 0===i?void 0:vu(i,t+" has member 'autoAllocateChunkSize' that"),cancel:void 0===n?void 0:xf(n,r,t+" has member 'cancel' that"),pull:void 0===a?void 0:Mf(a,r,t+" has member 'pull' that"),start:void 0===s?void 0:Cf(s,r,t+" has member 'start' that"),type:void 0===o?void 0:Kf(o,t+" has member 'type' that")}}(e,"First parameter");if(Bf(this),"bytes"===i.type){if(void 0!==r.size)throw new RangeError("The strategy for a byte stream cannot have a size function");sh(this,i,yh(r,0))}else{const e=bh(r);!function(e,t,r,i){const n=Object.create(yf.prototype);let a=()=>{},s=()=>Nc(void 0),o=()=>Nc(void 0);void 0!==t.start&&(a=()=>t.start(n)),void 0!==t.pull&&(s=()=>t.pull(n)),void 0!==t.cancel&&(o=e=>t.cancel(e)),Ef(e,n,a,s,o,r,i)}(this,i,yh(r,1),e)}}get locked(){if(!Tf(this))throw Nf("locked");return zf(this)}cancel(e){return Tf(this)?zf(this)?jc(new TypeError("Cannot cancel a stream that already has a reader")):qf(this,e):jc(Nf("cancel"))}getReader(e){if(!Tf(this))throw Nf("getReader");return void 0===function(e,t){lu(e,t);const r=null==e?void 0:e.mode;return{mode:void 0===r?void 0:Df(r,t+" has member 'mode' that")}}(e,"First parameter").mode?ku(this):function(e){return new dh(e)}(this)}pipeThrough(e,t={}){if(!Tf(this))throw Nf("pipeThrough");bu(e,1,"pipeThrough");const r=function(e,t){lu(e,t);const r=null==e?void 0:e.readable;mu(r,"readable","ReadableWritablePair"),_u(r,t+" has member 'readable' that");const i=null==e?void 0:e.writable;return mu(i,"writable","ReadableWritablePair"),Ah(i,t+" has member 'writable' that"),{readable:r,writable:i}}(e,"First parameter"),i=Rf(t,"Second parameter");if(zf(this))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(Mh(r.writable))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");return $c(pf(this,r.writable,i.preventClose,i.preventAbort,i.preventCancel,i.signal)),r.readable}pipeTo(e,t={}){if(!Tf(this))return jc(Nf("pipeTo"));if(void 0===e)return jc("Parameter 1 is required in 'pipeTo'.");if(!xh(e))return jc(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));let r;try{r=Rf(t,"Second parameter")}catch(e){return jc(e)}return zf(this)?jc(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):Mh(e)?jc(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):pf(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!Tf(this))throw Nf("tee");const e=function(e,t){const r=ku(e);let i,n,a,s,o,c=!1,u=!1,h=!1;const f=Fc((e=>{o=e}));function d(){return c||(c=!0,Cu(r,{_chunkSteps:e=>{Zc((()=>{c=!1;const t=e,r=e;u||_f(a._readableStreamController,t),h||_f(s._readableStreamController,r)}))},_closeSteps:()=>{c=!1,u||vf(a._readableStreamController),h||vf(s._readableStreamController),u&&h||o(void 0)},_errorSteps:()=>{c=!1}})),Nc(void 0)}function l(){}return a=Uf(l,d,(function(t){if(u=!0,i=t,h){const t=Nu([i,n]),r=qf(e,t);o(r)}return f})),s=Uf(l,d,(function(t){if(h=!0,n=t,u){const t=Nu([i,n]),r=qf(e,t);o(r)}return f})),Gc(r._closedPromise,(e=>{kf(a._readableStreamController,e),kf(s._readableStreamController,e),u&&h||o(void 0)})),[a,s]}(this);return Nu(e)}values(e){if(!Tf(this))throw Nf("values");return function(e,t){const r=ku(e),i=new Ru(r,t),n=Object.create(Iu);return n._asyncIteratorImpl=i,n}(this,function(e,t){return lu(e,t),{preventCancel:!!(null==e?void 0:e.preventCancel)}}(e,"First parameter").preventCancel)}}function Uf(e,t,r,i=1,n=(()=>1)){const a=Object.create(If.prototype);Bf(a);return Ef(a,Object.create(yf.prototype),e,t,r,i,n),a}function Bf(e){e._state="readable",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function Tf(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")}function zf(e){return void 0!==e._reader}function qf(e,t){if(e._disturbed=!0,"closed"===e._state)return Nc(void 0);if("errored"===e._state)return jc(e._storedError);Of(e);return Vc(e._readableStreamController[uu](t),Rc)}function Of(e){e._state="closed";const t=e._reader;void 0!==t&&(su(t),Mu(t)&&(t._readRequests.forEach((e=>{e._closeSteps()})),t._readRequests=new Qc))}function Ff(e,t){e._state="errored",e._storedError=t;const r=e._reader;void 0!==r&&(au(r,t),Mu(r)?(r._readRequests.forEach((e=>{e._errorSteps(t)})),r._readRequests=new Qc):(r._readIntoRequests.forEach((e=>{e._errorSteps(t)})),r._readIntoRequests=new Qc))}function Nf(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function jf(e,t){lu(e,t);const r=null==e?void 0:e.highWaterMark;return mu(r,"highWaterMark","QueuingStrategyInit"),{highWaterMark:gu(r)}}Object.defineProperties(If.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(If.prototype,Dc.toStringTag,{value:"ReadableStream",configurable:!0}),"symbol"==typeof Dc.asyncIterator&&Object.defineProperty(If.prototype,Dc.asyncIterator,{value:If.prototype.values,writable:!0,configurable:!0});const Lf=function(e){return e.byteLength};class Wf{constructor(e){bu(e,1,"ByteLengthQueuingStrategy"),e=jf(e,"First parameter"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!Gf(this))throw Hf("highWaterMark");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!Gf(this))throw Hf("size");return Lf}}function Hf(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function Gf(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_byteLengthQueuingStrategyHighWaterMark")}Object.defineProperties(Wf.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(Wf.prototype,Dc.toStringTag,{value:"ByteLengthQueuingStrategy",configurable:!0});const Vf=function(){return 1};class $f{constructor(e){bu(e,1,"CountQueuingStrategy"),e=jf(e,"First parameter"),this._countQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!Yf(this))throw Zf("highWaterMark");return this._countQueuingStrategyHighWaterMark}get size(){if(!Yf(this))throw Zf("size");return Vf}}function Zf(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function Yf(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_countQueuingStrategyHighWaterMark")}function Xf(e,t,r){return pu(e,r),r=>Xc(e,t,[r])}function Qf(e,t,r){return pu(e,r),r=>Yc(e,t,[r])}function Jf(e,t,r){return pu(e,r),(r,i)=>Xc(e,t,[r,i])}Object.defineProperties($f.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty($f.prototype,Dc.toStringTag,{value:"CountQueuingStrategy",configurable:!0});class ed{constructor(e={},t={},r={}){void 0===e&&(e=null);const i=mh(t,"Second parameter"),n=mh(r,"Third parameter"),a=function(e,t){lu(e,t);const r=null==e?void 0:e.flush,i=null==e?void 0:e.readableType,n=null==e?void 0:e.start,a=null==e?void 0:e.transform,s=null==e?void 0:e.writableType;return{flush:void 0===r?void 0:Xf(r,e,t+" has member 'flush' that"),readableType:i,start:void 0===n?void 0:Qf(n,e,t+" has member 'start' that"),transform:void 0===a?void 0:Jf(a,e,t+" has member 'transform' that"),writableType:s}}(e,"First parameter");if(void 0!==a.readableType)throw new RangeError("Invalid readableType specified");if(void 0!==a.writableType)throw new RangeError("Invalid writableType specified");const s=yh(n,0),o=bh(n),c=yh(i,1),u=bh(i);let h;!function(e,t,r,i,n,a){function s(){return t}function o(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return Vc(e._backpressureChangePromise,(()=>{const i=e._writable;if("erroring"===i._state)throw i._storedError;return ud(r,t)}))}return ud(r,t)}(e,t)}function c(t){return function(e,t){return rd(e,t),Nc(void 0)}(e,t)}function u(){return function(e){const t=e._readable,r=e._transformStreamController,i=r._flushAlgorithm();return od(r),Vc(i,(()=>{if("errored"===t._state)throw t._storedError;vf(t._readableStreamController)}),(r=>{throw rd(e,r),t._storedError}))}(e)}function h(){return function(e){return nd(e,!1),e._backpressureChangePromise}(e)}function f(t){return id(e,t),Nc(void 0)}e._writable=function(e,t,r,i,n=1,a=(()=>1)){const s=Object.create(Sh.prototype);return Ph(s),Gh(s,Object.create(Hh.prototype),e,t,r,i,n,a),s}(s,o,u,c,r,i),e._readable=Uf(s,h,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,nd(e,!0),e._transformStreamController=void 0}(this,Fc((e=>{h=e})),c,u,s,o),function(e,t){const r=Object.create(ad.prototype);let i=e=>{try{return cd(r,e),Nc(void 0)}catch(e){return jc(e)}},n=()=>Nc(void 0);void 0!==t.transform&&(i=e=>t.transform(e,r));void 0!==t.flush&&(n=()=>t.flush(r));!function(e,t,r,i){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=i}(e,r,i,n)}(this,a),void 0!==a.start?h(a.start(this._transformStreamController)):h(void 0)}get readable(){if(!td(this))throw fd("readable");return this._readable}get writable(){if(!td(this))throw fd("writable");return this._writable}}function td(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")}function rd(e,t){kf(e._readable._readableStreamController,t),id(e,t)}function id(e,t){od(e._transformStreamController),Yh(e._writable._writableStreamController,t),e._backpressure&&nd(e,!1)}function nd(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=Fc((t=>{e._backpressureChangePromise_resolve=t})),e._backpressure=t}Object.defineProperties(ed.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(ed.prototype,Dc.toStringTag,{value:"TransformStream",configurable:!0});class ad{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!sd(this))throw hd("desiredSize");return Af(this._controlledTransformStream._readable._readableStreamController)}enqueue(e){if(!sd(this))throw hd("enqueue");cd(this,e)}error(e){if(!sd(this))throw hd("error");var t;t=e,rd(this._controlledTransformStream,t)}terminate(){if(!sd(this))throw hd("terminate");!function(e){const t=e._controlledTransformStream;vf(t._readable._readableStreamController);id(t,new TypeError("TransformStream terminated"))}(this)}}function sd(e){return!!Uc(e)&&!!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")}function od(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0}function cd(e,t){const r=e._controlledTransformStream,i=r._readable._readableStreamController;if(!Sf(i))throw new TypeError("Readable side is not in a state that permits enqueue");try{_f(i,t)}catch(e){throw id(r,e),r._readable._storedError}(function(e){return!gf(e)})(i)!==r._backpressure&&nd(r,!0)}function ud(e,t){return Vc(e._transformAlgorithm(t),void 0,(t=>{throw rd(e._controlledTransformStream,t),t}))}function hd(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function fd(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}Object.defineProperties(ad.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),"symbol"==typeof Dc.toStringTag&&Object.defineProperty(ad.prototype,Dc.toStringTag,{value:"TransformStreamDefaultController",configurable:!0});var dd=/*#__PURE__*/Object.freeze({__proto__:null,ByteLengthQueuingStrategy:Wf,CountQueuingStrategy:$f,ReadableByteStreamController:Lu,ReadableStream:If,ReadableStreamBYOBReader:dh,ReadableStreamBYOBRequest:ju,ReadableStreamDefaultController:yf,ReadableStreamDefaultReader:xu,TransformStream:ed,TransformStreamDefaultController:ad,WritableStream:Sh,WritableStreamDefaultController:Hh,WritableStreamDefaultWriter:zh}),ld=function(e,t){return(ld=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function pd(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+t+" is not a constructor or null");function r(){this.constructor=e}ld(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function yd(e){if(!e)throw new TypeError("Assertion failed")}function bd(){}function md(e){return"object"==typeof e&&null!==e||"function"==typeof e}function gd(e){if("function"!=typeof e)return!1;var t=!1;try{new e({start:function(){t=!0}})}catch(e){}return t}function wd(e){return!!md(e)&&"function"==typeof e.getReader}function vd(e){return!!md(e)&&"function"==typeof e.getWriter}function _d(e){return!!md(e)&&(!!wd(e.readable)&&!!vd(e.writable))}function kd(e){try{return e.getReader({mode:"byob"}).releaseLock(),!0}catch(e){return!1}}function Ad(e,t){var r=(void 0===t?{}:t).type;return yd(wd(e)),yd(!1===e.locked),"bytes"===(r=Sd(r))?new Md(e):new Pd(e)}function Sd(e){var t=e+"";if("bytes"===t)return t;if(void 0===e)return e;throw new RangeError("Invalid type is specified")}var Ed=function(){function e(e){this._underlyingReader=void 0,this._readerMode=void 0,this._readableStreamController=void 0,this._pendingRead=void 0,this._underlyingStream=e,this._attachDefaultReader()}return e.prototype.start=function(e){this._readableStreamController=e},e.prototype.cancel=function(e){return yd(void 0!==this._underlyingReader),this._underlyingReader.cancel(e)},e.prototype._attachDefaultReader=function(){if("default"!==this._readerMode){this._detachReader();var e=this._underlyingStream.getReader();this._readerMode="default",this._attachReader(e)}},e.prototype._attachReader=function(e){var t=this;yd(void 0===this._underlyingReader),this._underlyingReader=e;var r=this._underlyingReader.closed;r&&r.then((function(){return t._finishPendingRead()})).then((function(){e===t._underlyingReader&&t._readableStreamController.close()}),(function(r){e===t._underlyingReader&&t._readableStreamController.error(r)})).catch(bd)},e.prototype._detachReader=function(){void 0!==this._underlyingReader&&(this._underlyingReader.releaseLock(),this._underlyingReader=void 0,this._readerMode=void 0)},e.prototype._pullWithDefaultReader=function(){var e=this;this._attachDefaultReader();var t=this._underlyingReader.read().then((function(t){var r=e._readableStreamController;t.done?e._tryClose():r.enqueue(t.value)}));return this._setPendingRead(t),t},e.prototype._tryClose=function(){try{this._readableStreamController.close()}catch(e){}},e.prototype._setPendingRead=function(e){var t,r=this,i=function(){r._pendingRead===t&&(r._pendingRead=void 0)};this._pendingRead=t=e.then(i,i)},e.prototype._finishPendingRead=function(){var e=this;if(this._pendingRead){var t=function(){return e._finishPendingRead()};return this._pendingRead.then(t,t)}},e}(),Pd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return pd(t,e),t.prototype.pull=function(){return this._pullWithDefaultReader()},t}(Ed);function xd(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}var Md=function(e){function t(t){var r=this,i=kd(t);return(r=e.call(this,t)||this)._supportsByob=i,r}return pd(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return"bytes"},enumerable:!1,configurable:!0}),t.prototype._attachByobReader=function(){if("byob"!==this._readerMode){yd(this._supportsByob),this._detachReader();var e=this._underlyingStream.getReader({mode:"byob"});this._readerMode="byob",this._attachReader(e)}},t.prototype.pull=function(){if(this._supportsByob){var e=this._readableStreamController.byobRequest;if(e)return this._pullWithByobRequest(e)}return this._pullWithDefaultReader()},t.prototype._pullWithByobRequest=function(e){var t=this;this._attachByobReader();var r=new Uint8Array(e.view.byteLength),i=this._underlyingReader.read(r).then((function(r){var i,n,a;t._readableStreamController,r.done?(t._tryClose(),e.respond(0)):(i=r.value,n=e.view,a=xd(i),xd(n).set(a,0),e.respond(r.value.byteLength))}));return this._setPendingRead(i),i},t}(Ed);function Cd(e){yd(vd(e)),yd(!1===e.locked);var t=e.getWriter();return new Kd(t)}var Kd=function(){function e(e){var t=this;this._writableStreamController=void 0,this._pendingWrite=void 0,this._state="writable",this._storedError=void 0,this._underlyingWriter=e,this._errorPromise=new Promise((function(e,r){t._errorPromiseReject=r})),this._errorPromise.catch(bd)}return e.prototype.start=function(e){var t=this;this._writableStreamController=e,this._underlyingWriter.closed.then((function(){t._state="closed"})).catch((function(e){return t._finishErroring(e)}))},e.prototype.write=function(e){var t=this,r=this._underlyingWriter;if(null===r.desiredSize)return r.ready;var i=r.write(e);i.catch((function(e){return t._finishErroring(e)})),r.ready.catch((function(e){return t._startErroring(e)}));var n=Promise.race([i,this._errorPromise]);return this._setPendingWrite(n),n},e.prototype.close=function(){var e=this;return void 0===this._pendingWrite?this._underlyingWriter.close():this._finishPendingWrite().then((function(){return e.close()}))},e.prototype.abort=function(e){if("errored"!==this._state)return this._underlyingWriter.abort(e)},e.prototype._setPendingWrite=function(e){var t,r=this,i=function(){r._pendingWrite===t&&(r._pendingWrite=void 0)};this._pendingWrite=t=e.then(i,i)},e.prototype._finishPendingWrite=function(){var e=this;if(void 0===this._pendingWrite)return Promise.resolve();var t=function(){return e._finishPendingWrite()};return this._pendingWrite.then(t,t)},e.prototype._startErroring=function(e){var t=this;if("writable"===this._state){this._state="erroring",this._storedError=e;var r=function(){return t._finishErroring(e)};void 0===this._pendingWrite?r():this._finishPendingWrite().then(r,r),this._writableStreamController.error(e)}},e.prototype._finishErroring=function(e){"writable"===this._state&&this._startErroring(e),"erroring"===this._state&&(this._state="errored",this._errorPromiseReject(this._storedError))},e}();function Dd(e){yd(_d(e));var t=e.readable,r=e.writable;yd(!1===t.locked),yd(!1===r.locked);var i,n=t.getReader();try{i=r.getWriter()}catch(e){throw n.releaseLock(),e}return new Rd(n,i)}var Rd=function(){function e(e,t){var r=this;this._transformStreamController=void 0,this._onRead=function(e){if(!e.done)return r._transformStreamController.enqueue(e.value),r._reader.read().then(r._onRead)},this._onError=function(e){r._flushReject(e),r._transformStreamController.error(e),r._reader.cancel(e).catch(bd),r._writer.abort(e).catch(bd)},this._onTerminate=function(){r._flushResolve(),r._transformStreamController.terminate();var e=new TypeError("TransformStream terminated");r._writer.abort(e).catch(bd)},this._reader=e,this._writer=t,this._flushPromise=new Promise((function(e,t){r._flushResolve=e,r._flushReject=t}))}return e.prototype.start=function(e){this._transformStreamController=e,this._reader.read().then(this._onRead).then(this._onTerminate,this._onError);var t=this._reader.closed;t&&t.then(this._onTerminate,this._onError)},e.prototype.transform=function(e){return this._writer.write(e)},e.prototype.flush=function(){var e=this;return this._writer.close().then((function(){return e._flushPromise}))},e}(),Id=/*#__PURE__*/Object.freeze({__proto__:null,createReadableStreamWrapper:function(e){yd(function(e){return!!gd(e)&&!!wd(new e)}(e));var t=function(e){try{return new e({type:"bytes"}),!0}catch(e){return!1}}(e);return function(r,i){var n=(void 0===i?{}:i).type;if("bytes"!==(n=Sd(n))||t||(n=void 0),r.constructor===e&&("bytes"!==n||kd(r)))return r;if("bytes"===n){var a=Ad(r,{type:n});return new e(a)}a=Ad(r);return new e(a)}},createTransformStreamWrapper:function(e){return yd(function(e){return!!gd(e)&&!!_d(new e)}(e)),function(t){if(t.constructor===e)return t;var r=Dd(t);return new e(r)}},createWrappingReadableSource:Ad,createWrappingTransformer:Dd,createWrappingWritableSink:Cd,createWritableStreamWrapper:function(e){return yd(function(e){return!!gd(e)&&!!vd(new e)}(e)),function(t){if(t.constructor===e)return t;var r=Cd(t);return new e(r)}}}),Ud=tt((function(e){!function(e,t){function r(e,t){if(!e)throw Error(t||"Assertion failed")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function n(e,t,r){if(n.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var a;"object"==typeof e?e.exports=n:t.BN=n,n.BN=n,n.wordSize=26;try{a=void 0}catch(e){}function s(e,t,r){for(var i=0,n=Math.min(e.length,r),a=t;a<n;a++){var s=e.charCodeAt(a)-48;i<<=4,i|=s>=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function o(e,t,r,i){for(var n=0,a=Math.min(e.length,r),s=t;s<a;s++){var o=e.charCodeAt(s)-48;n*=i,n+=o>=49?o-49+10:o>=17?o-17+10:o}return n}n.isBN=function(e){return e instanceof n||null!==e&&"object"==typeof e&&e.constructor.wordSize===n.wordSize&&Array.isArray(e.words)},n.max=function(e,t){return e.cmp(t)>0?e:t},n.min=function(e,t){return e.cmp(t)<0?e:t},n.prototype._init=function(e,t,i){if("number"==typeof e)return this._initNumber(e,t,i);if("object"==typeof e)return this._initArray(e,t,i);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&n++,16===t?this._parseHex(e,n):this._parseBase(e,t,n),"-"===e[0]&&(this.negative=1),this.strip(),"le"===i&&this._initArray(this.toArray(),t,i)},n.prototype._initNumber=function(e,t,i){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===i&&this._initArray(this.toArray(),t,i)},n.prototype._initArray=function(e,t,i){if(r("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var a,s,o=0;if("be"===i)for(n=e.length-1,a=0;n>=0;n-=3)s=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=s<<o&67108863,this.words[a+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,a++);else if("le"===i)for(n=0,a=0;n<e.length;n+=3)s=e[n]|e[n+1]<<8|e[n+2]<<16,this.words[a]|=s<<o&67108863,this.words[a+1]=s>>>26-o&67108863,(o+=24)>=26&&(o-=26,a++);return this.strip()},n.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var i,n,a=0;for(r=e.length-6,i=0;r>=t;r-=6)n=s(e,r,r+6),this.words[i]|=n<<a&67108863,this.words[i+1]|=n>>>26-a&4194303,(a+=24)>=26&&(a-=26,i++);r+6!==t&&(n=s(e,t,r+6),this.words[i]|=n<<a&67108863,this.words[i+1]|=n>>>26-a&4194303),this.strip()},n.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,s=a%i,c=Math.min(a,a-s)+r,u=0,h=r;h<c;h+=i)u=o(e,h,h+i,t),this.imuln(n),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u);if(0!==s){var f=1;for(u=o(e,h,e.length,t),h=0;h<s;h++)f*=t;this.imuln(f),this.words[0]+u<67108864?this.words[0]+=u:this._iaddn(u)}},n.prototype.copy=function(e){e.words=Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},n.prototype.clone=function(){var e=new n(null);return this.copy(e),e},n.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},n.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},n.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],s=n*a,o=67108863&s,c=s/67108864|0;r.words[0]=o;for(var u=1;u<i;u++){for(var h=c>>>26,f=67108863&c,d=Math.min(u,t.length-1),l=Math.max(0,u-e.length+1);l<=d;l++){var p=u-l|0;h+=(s=(n=0|e.words[p])*(a=0|t.words[l])+f)/67108864|0,f=67108863&s}r.words[u]=0|f,c=0|h}return 0!==c?r.words[u]=0|c:r.length--,r.strip()}n.prototype.toString=function(e,t){var i;if(t=0|t||1,16===(e=e||10)||"hex"===e){i="";for(var n=0,a=0,s=0;s<this.length;s++){var o=this.words[s],f=(16777215&(o<<n|a)).toString(16);i=0!==(a=o>>>24-n&16777215)||s!==this.length-1?c[6-f.length]+f+i:f+i,(n+=2)>=26&&(n-=26,s--)}for(0!==a&&(i=a.toString(16)+i);i.length%t!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}if(e===(0|e)&&e>=2&&e<=36){var d=u[e],l=h[e];i="";var p=this.clone();for(p.negative=0;!p.isZero();){var y=p.modn(l).toString(e);i=(p=p.idivn(l)).isZero()?y+i:c[d-y.length]+y+i}for(this.isZero()&&(i="0"+i);i.length%t!=0;)i="0"+i;return 0!==this.negative&&(i="-"+i),i}r(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(e,t){return r(void 0!==a),this.toArrayLike(a,e,t)},n.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},n.prototype.toArrayLike=function(e,t,i){var n=this.byteLength(),a=i||Math.max(1,n);r(n<=a,"byte array longer than desired length"),r(a>0,"Requested array length <= 0"),this.strip();var s,o,c="le"===t,u=new e(a),h=this.clone();if(c){for(o=0;!h.isZero();o++)s=h.andln(255),h.iushrn(8),u[o]=s;for(;o<a;o++)u[o]=0}else{for(o=0;o<a-n;o++)u[o]=0;for(o=0;!h.isZero();o++)s=h.andln(255),h.iushrn(8),u[a-o-1]=s}return u},n.prototype._countBits=Math.clz32?function(e){return 32-Math.clz32(e)}:function(e){var t=e,r=0;return t>=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},n.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},n.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);if(e+=r,26!==r)break}return e},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},n.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return 0!==this.negative},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this.strip()},n.prototype.ior=function(e){return r(0==(this.negative|e.negative)),this.iuor(e)},n.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},n.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},n.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;r<t.length;r++)this.words[r]=this.words[r]&e.words[r];return this.length=t.length,this.strip()},n.prototype.iand=function(e){return r(0==(this.negative|e.negative)),this.iuand(e)},n.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},n.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},n.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;i<r.length;i++)this.words[i]=t.words[i]^r.words[i];if(this!==t)for(;i<t.length;i++)this.words[i]=t.words[i];return this.length=t.length,this.strip()},n.prototype.ixor=function(e){return r(0==(this.negative|e.negative)),this.iuxor(e)},n.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},n.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},n.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),i=e%26;this._expand(t),i>0&&t--;for(var n=0;n<t;n++)this.words[n]=67108863&~this.words[n];return i>0&&(this.words[n]=~this.words[n]&67108863>>26-i),this.strip()},n.prototype.notn=function(e){return this.clone().inotn(e)},n.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var i=e/26|0,n=e%26;return this._expand(i+1),this.words[i]=t?this.words[i]|1<<n:this.words[i]&~(1<<n),this.strip()},n.prototype.iadd=function(e){var t,r,i;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a<i.length;a++)t=(0|r.words[a])+(0|i.words[a])+n,this.words[a]=67108863&t,n=t>>>26;for(;0!==n&&a<r.length;a++)t=(0|r.words[a])+n,this.words[a]=67108863&t,n=t>>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;a<r.length;a++)this.words[a]=r.words[a];return this},n.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},n.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,s=0;s<i.length;s++)a=(t=(0|r.words[s])-(0|i.words[s])+a)>>26,this.words[s]=67108863&t;for(;0!==a&&s<r.length;s++)a=(t=(0|r.words[s])+a)>>26,this.words[s]=67108863&t;if(0===a&&s<r.length&&r!==this)for(;s<r.length;s++)this.words[s]=r.words[s];return this.length=Math.max(this.length,s),r!==this&&(this.negative=1),this.strip()},n.prototype.sub=function(e){return this.clone().isub(e)};var d=function(e,t,r){var i,n,a,s=e.words,o=t.words,c=r.words,u=0,h=0|s[0],f=8191&h,d=h>>>13,l=0|s[1],p=8191&l,y=l>>>13,b=0|s[2],m=8191&b,g=b>>>13,w=0|s[3],v=8191&w,_=w>>>13,k=0|s[4],A=8191&k,S=k>>>13,E=0|s[5],P=8191&E,x=E>>>13,M=0|s[6],C=8191&M,K=M>>>13,D=0|s[7],R=8191&D,I=D>>>13,U=0|s[8],B=8191&U,T=U>>>13,z=0|s[9],q=8191&z,O=z>>>13,F=0|o[0],N=8191&F,j=F>>>13,L=0|o[1],W=8191&L,H=L>>>13,G=0|o[2],V=8191&G,$=G>>>13,Z=0|o[3],Y=8191&Z,X=Z>>>13,Q=0|o[4],J=8191&Q,ee=Q>>>13,te=0|o[5],re=8191&te,ie=te>>>13,ne=0|o[6],ae=8191&ne,se=ne>>>13,oe=0|o[7],ce=8191&oe,ue=oe>>>13,he=0|o[8],fe=8191&he,de=he>>>13,le=0|o[9],pe=8191&le,ye=le>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(u+(i=Math.imul(f,N))|0)+((8191&(n=(n=Math.imul(f,j))+Math.imul(d,N)|0))<<13)|0;u=((a=Math.imul(d,j))+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(p,N),n=(n=Math.imul(p,j))+Math.imul(y,N)|0,a=Math.imul(y,j);var me=(u+(i=i+Math.imul(f,W)|0)|0)+((8191&(n=(n=n+Math.imul(f,H)|0)+Math.imul(d,W)|0))<<13)|0;u=((a=a+Math.imul(d,H)|0)+(n>>>13)|0)+(me>>>26)|0,me&=67108863,i=Math.imul(m,N),n=(n=Math.imul(m,j))+Math.imul(g,N)|0,a=Math.imul(g,j),i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(y,W)|0,a=a+Math.imul(y,H)|0;var ge=(u+(i=i+Math.imul(f,V)|0)|0)+((8191&(n=(n=n+Math.imul(f,$)|0)+Math.imul(d,V)|0))<<13)|0;u=((a=a+Math.imul(d,$)|0)+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(v,N),n=(n=Math.imul(v,j))+Math.imul(_,N)|0,a=Math.imul(_,j),i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(g,W)|0,a=a+Math.imul(g,H)|0,i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,$)|0)+Math.imul(y,V)|0,a=a+Math.imul(y,$)|0;var we=(u+(i=i+Math.imul(f,Y)|0)|0)+((8191&(n=(n=n+Math.imul(f,X)|0)+Math.imul(d,Y)|0))<<13)|0;u=((a=a+Math.imul(d,X)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(A,N),n=(n=Math.imul(A,j))+Math.imul(S,N)|0,a=Math.imul(S,j),i=i+Math.imul(v,W)|0,n=(n=n+Math.imul(v,H)|0)+Math.imul(_,W)|0,a=a+Math.imul(_,H)|0,i=i+Math.imul(m,V)|0,n=(n=n+Math.imul(m,$)|0)+Math.imul(g,V)|0,a=a+Math.imul(g,$)|0,i=i+Math.imul(p,Y)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(y,Y)|0,a=a+Math.imul(y,X)|0;var ve=(u+(i=i+Math.imul(f,J)|0)|0)+((8191&(n=(n=n+Math.imul(f,ee)|0)+Math.imul(d,J)|0))<<13)|0;u=((a=a+Math.imul(d,ee)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(P,N),n=(n=Math.imul(P,j))+Math.imul(x,N)|0,a=Math.imul(x,j),i=i+Math.imul(A,W)|0,n=(n=n+Math.imul(A,H)|0)+Math.imul(S,W)|0,a=a+Math.imul(S,H)|0,i=i+Math.imul(v,V)|0,n=(n=n+Math.imul(v,$)|0)+Math.imul(_,V)|0,a=a+Math.imul(_,$)|0,i=i+Math.imul(m,Y)|0,n=(n=n+Math.imul(m,X)|0)+Math.imul(g,Y)|0,a=a+Math.imul(g,X)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,ee)|0)+Math.imul(y,J)|0,a=a+Math.imul(y,ee)|0;var _e=(u+(i=i+Math.imul(f,re)|0)|0)+((8191&(n=(n=n+Math.imul(f,ie)|0)+Math.imul(d,re)|0))<<13)|0;u=((a=a+Math.imul(d,ie)|0)+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(C,N),n=(n=Math.imul(C,j))+Math.imul(K,N)|0,a=Math.imul(K,j),i=i+Math.imul(P,W)|0,n=(n=n+Math.imul(P,H)|0)+Math.imul(x,W)|0,a=a+Math.imul(x,H)|0,i=i+Math.imul(A,V)|0,n=(n=n+Math.imul(A,$)|0)+Math.imul(S,V)|0,a=a+Math.imul(S,$)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(_,Y)|0,a=a+Math.imul(_,X)|0,i=i+Math.imul(m,J)|0,n=(n=n+Math.imul(m,ee)|0)+Math.imul(g,J)|0,a=a+Math.imul(g,ee)|0,i=i+Math.imul(p,re)|0,n=(n=n+Math.imul(p,ie)|0)+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0;var ke=(u+(i=i+Math.imul(f,ae)|0)|0)+((8191&(n=(n=n+Math.imul(f,se)|0)+Math.imul(d,ae)|0))<<13)|0;u=((a=a+Math.imul(d,se)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(R,N),n=(n=Math.imul(R,j))+Math.imul(I,N)|0,a=Math.imul(I,j),i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(K,W)|0,a=a+Math.imul(K,H)|0,i=i+Math.imul(P,V)|0,n=(n=n+Math.imul(P,$)|0)+Math.imul(x,V)|0,a=a+Math.imul(x,$)|0,i=i+Math.imul(A,Y)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(S,Y)|0,a=a+Math.imul(S,X)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(_,J)|0,a=a+Math.imul(_,ee)|0,i=i+Math.imul(m,re)|0,n=(n=n+Math.imul(m,ie)|0)+Math.imul(g,re)|0,a=a+Math.imul(g,ie)|0,i=i+Math.imul(p,ae)|0,n=(n=n+Math.imul(p,se)|0)+Math.imul(y,ae)|0,a=a+Math.imul(y,se)|0;var Ae=(u+(i=i+Math.imul(f,ce)|0)|0)+((8191&(n=(n=n+Math.imul(f,ue)|0)+Math.imul(d,ce)|0))<<13)|0;u=((a=a+Math.imul(d,ue)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(B,N),n=(n=Math.imul(B,j))+Math.imul(T,N)|0,a=Math.imul(T,j),i=i+Math.imul(R,W)|0,n=(n=n+Math.imul(R,H)|0)+Math.imul(I,W)|0,a=a+Math.imul(I,H)|0,i=i+Math.imul(C,V)|0,n=(n=n+Math.imul(C,$)|0)+Math.imul(K,V)|0,a=a+Math.imul(K,$)|0,i=i+Math.imul(P,Y)|0,n=(n=n+Math.imul(P,X)|0)+Math.imul(x,Y)|0,a=a+Math.imul(x,X)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,ee)|0)+Math.imul(S,J)|0,a=a+Math.imul(S,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(_,re)|0,a=a+Math.imul(_,ie)|0,i=i+Math.imul(m,ae)|0,n=(n=n+Math.imul(m,se)|0)+Math.imul(g,ae)|0,a=a+Math.imul(g,se)|0,i=i+Math.imul(p,ce)|0,n=(n=n+Math.imul(p,ue)|0)+Math.imul(y,ce)|0,a=a+Math.imul(y,ue)|0;var Se=(u+(i=i+Math.imul(f,fe)|0)|0)+((8191&(n=(n=n+Math.imul(f,de)|0)+Math.imul(d,fe)|0))<<13)|0;u=((a=a+Math.imul(d,de)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(q,N),n=(n=Math.imul(q,j))+Math.imul(O,N)|0,a=Math.imul(O,j),i=i+Math.imul(B,W)|0,n=(n=n+Math.imul(B,H)|0)+Math.imul(T,W)|0,a=a+Math.imul(T,H)|0,i=i+Math.imul(R,V)|0,n=(n=n+Math.imul(R,$)|0)+Math.imul(I,V)|0,a=a+Math.imul(I,$)|0,i=i+Math.imul(C,Y)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(K,Y)|0,a=a+Math.imul(K,X)|0,i=i+Math.imul(P,J)|0,n=(n=n+Math.imul(P,ee)|0)+Math.imul(x,J)|0,a=a+Math.imul(x,ee)|0,i=i+Math.imul(A,re)|0,n=(n=n+Math.imul(A,ie)|0)+Math.imul(S,re)|0,a=a+Math.imul(S,ie)|0,i=i+Math.imul(v,ae)|0,n=(n=n+Math.imul(v,se)|0)+Math.imul(_,ae)|0,a=a+Math.imul(_,se)|0,i=i+Math.imul(m,ce)|0,n=(n=n+Math.imul(m,ue)|0)+Math.imul(g,ce)|0,a=a+Math.imul(g,ue)|0,i=i+Math.imul(p,fe)|0,n=(n=n+Math.imul(p,de)|0)+Math.imul(y,fe)|0,a=a+Math.imul(y,de)|0;var Ee=(u+(i=i+Math.imul(f,pe)|0)|0)+((8191&(n=(n=n+Math.imul(f,ye)|0)+Math.imul(d,pe)|0))<<13)|0;u=((a=a+Math.imul(d,ye)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(q,W),n=(n=Math.imul(q,H))+Math.imul(O,W)|0,a=Math.imul(O,H),i=i+Math.imul(B,V)|0,n=(n=n+Math.imul(B,$)|0)+Math.imul(T,V)|0,a=a+Math.imul(T,$)|0,i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,X)|0)+Math.imul(I,Y)|0,a=a+Math.imul(I,X)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,ee)|0)+Math.imul(K,J)|0,a=a+Math.imul(K,ee)|0,i=i+Math.imul(P,re)|0,n=(n=n+Math.imul(P,ie)|0)+Math.imul(x,re)|0,a=a+Math.imul(x,ie)|0,i=i+Math.imul(A,ae)|0,n=(n=n+Math.imul(A,se)|0)+Math.imul(S,ae)|0,a=a+Math.imul(S,se)|0,i=i+Math.imul(v,ce)|0,n=(n=n+Math.imul(v,ue)|0)+Math.imul(_,ce)|0,a=a+Math.imul(_,ue)|0,i=i+Math.imul(m,fe)|0,n=(n=n+Math.imul(m,de)|0)+Math.imul(g,fe)|0,a=a+Math.imul(g,de)|0;var Pe=(u+(i=i+Math.imul(p,pe)|0)|0)+((8191&(n=(n=n+Math.imul(p,ye)|0)+Math.imul(y,pe)|0))<<13)|0;u=((a=a+Math.imul(y,ye)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,i=Math.imul(q,V),n=(n=Math.imul(q,$))+Math.imul(O,V)|0,a=Math.imul(O,$),i=i+Math.imul(B,Y)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(T,Y)|0,a=a+Math.imul(T,X)|0,i=i+Math.imul(R,J)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(I,J)|0,a=a+Math.imul(I,ee)|0,i=i+Math.imul(C,re)|0,n=(n=n+Math.imul(C,ie)|0)+Math.imul(K,re)|0,a=a+Math.imul(K,ie)|0,i=i+Math.imul(P,ae)|0,n=(n=n+Math.imul(P,se)|0)+Math.imul(x,ae)|0,a=a+Math.imul(x,se)|0,i=i+Math.imul(A,ce)|0,n=(n=n+Math.imul(A,ue)|0)+Math.imul(S,ce)|0,a=a+Math.imul(S,ue)|0,i=i+Math.imul(v,fe)|0,n=(n=n+Math.imul(v,de)|0)+Math.imul(_,fe)|0,a=a+Math.imul(_,de)|0;var xe=(u+(i=i+Math.imul(m,pe)|0)|0)+((8191&(n=(n=n+Math.imul(m,ye)|0)+Math.imul(g,pe)|0))<<13)|0;u=((a=a+Math.imul(g,ye)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(q,Y),n=(n=Math.imul(q,X))+Math.imul(O,Y)|0,a=Math.imul(O,X),i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,ee)|0)+Math.imul(T,J)|0,a=a+Math.imul(T,ee)|0,i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(I,re)|0,a=a+Math.imul(I,ie)|0,i=i+Math.imul(C,ae)|0,n=(n=n+Math.imul(C,se)|0)+Math.imul(K,ae)|0,a=a+Math.imul(K,se)|0,i=i+Math.imul(P,ce)|0,n=(n=n+Math.imul(P,ue)|0)+Math.imul(x,ce)|0,a=a+Math.imul(x,ue)|0,i=i+Math.imul(A,fe)|0,n=(n=n+Math.imul(A,de)|0)+Math.imul(S,fe)|0,a=a+Math.imul(S,de)|0;var Me=(u+(i=i+Math.imul(v,pe)|0)|0)+((8191&(n=(n=n+Math.imul(v,ye)|0)+Math.imul(_,pe)|0))<<13)|0;u=((a=a+Math.imul(_,ye)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(q,J),n=(n=Math.imul(q,ee))+Math.imul(O,J)|0,a=Math.imul(O,ee),i=i+Math.imul(B,re)|0,n=(n=n+Math.imul(B,ie)|0)+Math.imul(T,re)|0,a=a+Math.imul(T,ie)|0,i=i+Math.imul(R,ae)|0,n=(n=n+Math.imul(R,se)|0)+Math.imul(I,ae)|0,a=a+Math.imul(I,se)|0,i=i+Math.imul(C,ce)|0,n=(n=n+Math.imul(C,ue)|0)+Math.imul(K,ce)|0,a=a+Math.imul(K,ue)|0,i=i+Math.imul(P,fe)|0,n=(n=n+Math.imul(P,de)|0)+Math.imul(x,fe)|0,a=a+Math.imul(x,de)|0;var Ce=(u+(i=i+Math.imul(A,pe)|0)|0)+((8191&(n=(n=n+Math.imul(A,ye)|0)+Math.imul(S,pe)|0))<<13)|0;u=((a=a+Math.imul(S,ye)|0)+(n>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,i=Math.imul(q,re),n=(n=Math.imul(q,ie))+Math.imul(O,re)|0,a=Math.imul(O,ie),i=i+Math.imul(B,ae)|0,n=(n=n+Math.imul(B,se)|0)+Math.imul(T,ae)|0,a=a+Math.imul(T,se)|0,i=i+Math.imul(R,ce)|0,n=(n=n+Math.imul(R,ue)|0)+Math.imul(I,ce)|0,a=a+Math.imul(I,ue)|0,i=i+Math.imul(C,fe)|0,n=(n=n+Math.imul(C,de)|0)+Math.imul(K,fe)|0,a=a+Math.imul(K,de)|0;var Ke=(u+(i=i+Math.imul(P,pe)|0)|0)+((8191&(n=(n=n+Math.imul(P,ye)|0)+Math.imul(x,pe)|0))<<13)|0;u=((a=a+Math.imul(x,ye)|0)+(n>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,i=Math.imul(q,ae),n=(n=Math.imul(q,se))+Math.imul(O,ae)|0,a=Math.imul(O,se),i=i+Math.imul(B,ce)|0,n=(n=n+Math.imul(B,ue)|0)+Math.imul(T,ce)|0,a=a+Math.imul(T,ue)|0,i=i+Math.imul(R,fe)|0,n=(n=n+Math.imul(R,de)|0)+Math.imul(I,fe)|0,a=a+Math.imul(I,de)|0;var De=(u+(i=i+Math.imul(C,pe)|0)|0)+((8191&(n=(n=n+Math.imul(C,ye)|0)+Math.imul(K,pe)|0))<<13)|0;u=((a=a+Math.imul(K,ye)|0)+(n>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(q,ce),n=(n=Math.imul(q,ue))+Math.imul(O,ce)|0,a=Math.imul(O,ue),i=i+Math.imul(B,fe)|0,n=(n=n+Math.imul(B,de)|0)+Math.imul(T,fe)|0,a=a+Math.imul(T,de)|0;var Re=(u+(i=i+Math.imul(R,pe)|0)|0)+((8191&(n=(n=n+Math.imul(R,ye)|0)+Math.imul(I,pe)|0))<<13)|0;u=((a=a+Math.imul(I,ye)|0)+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(q,fe),n=(n=Math.imul(q,de))+Math.imul(O,fe)|0,a=Math.imul(O,de);var Ie=(u+(i=i+Math.imul(B,pe)|0)|0)+((8191&(n=(n=n+Math.imul(B,ye)|0)+Math.imul(T,pe)|0))<<13)|0;u=((a=a+Math.imul(T,ye)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863;var Ue=(u+(i=Math.imul(q,pe))|0)+((8191&(n=(n=Math.imul(q,ye))+Math.imul(O,pe)|0))<<13)|0;return u=((a=Math.imul(O,ye))+(n>>>13)|0)+(Ue>>>26)|0,Ue&=67108863,c[0]=be,c[1]=me,c[2]=ge,c[3]=we,c[4]=ve,c[5]=_e,c[6]=ke,c[7]=Ae,c[8]=Se,c[9]=Ee,c[10]=Pe,c[11]=xe,c[12]=Me,c[13]=Ce,c[14]=Ke,c[15]=De,c[16]=Re,c[17]=Ie,c[18]=Ue,0!==u&&(c[19]=u,r.length++),r};function l(e,t,r){return(new p).mulp(e,t,r)}function p(e,t){this.x=e,this.y=t}Math.imul||(d=f),n.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?d(this,e,t):r<63?f(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a<r.length-1;a++){var s=n;n=0;for(var o=67108863&i,c=Math.min(a,t.length-1),u=Math.max(0,a-e.length+1);u<=c;u++){var h=a-u,f=(0|e.words[h])*(0|t.words[u]),d=67108863&f;o=67108863&(d=d+o|0),n+=(s=(s=s+(f/67108864|0)|0)+(d>>>26)|0)>>>26,s&=67108863}r.words[a]=o,i=s,s=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}(this,e,t):l(this,e,t)},p.prototype.makeRBT=function(e){for(var t=Array(e),r=n.prototype._countBits(e)-1,i=0;i<e;i++)t[i]=this.revBin(i,r,e);return t},p.prototype.revBin=function(e,t,r){if(0===e||e===r-1)return e;for(var i=0,n=0;n<t;n++)i|=(1&e)<<t-n-1,e>>=1;return i},p.prototype.permute=function(e,t,r,i,n,a){for(var s=0;s<a;s++)i[s]=t[e[s]],n[s]=r[e[s]]},p.prototype.transform=function(e,t,r,i,n,a){this.permute(a,e,t,r,i,n);for(var s=1;s<n;s<<=1)for(var o=s<<1,c=Math.cos(2*Math.PI/o),u=Math.sin(2*Math.PI/o),h=0;h<n;h+=o)for(var f=c,d=u,l=0;l<s;l++){var p=r[h+l],y=i[h+l],b=r[h+l+s],m=i[h+l+s],g=f*b-d*m;m=f*m+d*b,b=g,r[h+l]=p+b,i[h+l]=y+m,r[h+l+s]=p-b,i[h+l+s]=y-m,l!==o&&(g=c*f-u*d,d=c*d+u*f,f=g)}},p.prototype.guessLen13b=function(e,t){var r=1|Math.max(t,e),i=1&r,n=0;for(r=r/2|0;r;r>>>=1)n++;return 1<<n+1+i},p.prototype.conjugate=function(e,t,r){if(!(r<=1))for(var i=0;i<r/2;i++){var n=e[i];e[i]=e[r-i-1],e[r-i-1]=n,n=t[i],t[i]=-t[r-i-1],t[r-i-1]=-n}},p.prototype.normalize13b=function(e,t){for(var r=0,i=0;i<t/2;i++){var n=8192*Math.round(e[2*i+1]/t)+Math.round(e[2*i]/t)+r;e[i]=67108863&n,r=n<67108864?0:n/67108864|0}return e},p.prototype.convert13b=function(e,t,i,n){for(var a=0,s=0;s<t;s++)a+=0|e[s],i[2*s]=8191&a,a>>>=13,i[2*s+1]=8191&a,a>>>=13;for(s=2*t;s<n;++s)i[s]=0;r(0===a),r(0==(-8192&a))},p.prototype.stub=function(e){for(var t=Array(e),r=0;r<e;r++)t[r]=0;return t},p.prototype.mulp=function(e,t,r){var i=2*this.guessLen13b(e.length,t.length),n=this.makeRBT(i),a=this.stub(i),s=Array(i),o=Array(i),c=Array(i),u=Array(i),h=Array(i),f=Array(i),d=r.words;d.length=i,this.convert13b(e.words,e.length,s,i),this.convert13b(t.words,t.length,u,i),this.transform(s,a,o,c,i,n),this.transform(u,a,h,f,i,n);for(var l=0;l<i;l++){var p=o[l]*h[l]-c[l]*f[l];c[l]=o[l]*f[l]+c[l]*h[l],o[l]=p}return this.conjugate(o,c,i),this.transform(o,c,d,a,i,n),this.conjugate(d,a,i),this.normalize13b(d,i),r.negative=e.negative^t.negative,r.length=e.length+t.length,r.strip()},n.prototype.mul=function(e){var t=new n(null);return t.words=Array(this.length+e.length),this.mulTo(e,t)},n.prototype.mulf=function(e){var t=new n(null);return t.words=Array(this.length+e.length),l(this,e,t)},n.prototype.imul=function(e){return this.clone().mulTo(e,this)},n.prototype.imuln=function(e){r("number"==typeof e),r(e<67108864);for(var t=0,i=0;i<this.length;i++){var n=(0|this.words[i])*e,a=(67108863&n)+(67108863&t);t>>=26,t+=n/67108864|0,t+=a>>>26,this.words[i]=67108863&a}return 0!==t&&(this.words[i]=t,this.length++),this},n.prototype.muln=function(e){return this.clone().imuln(e)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(e){var t=function(e){for(var t=Array(e.bitLength()),r=0;r<t.length;r++){var i=r/26|0,n=r%26;t[r]=(e.words[i]&1<<n)>>>n}return t}(e);if(0===t.length)return new n(1);for(var r=this,i=0;i<t.length&&0===t[i];i++,r=r.sqr());if(++i<t.length)for(var a=r.sqr();i<t.length;i++,a=a.sqr())0!==t[i]&&(r=r.mul(a));return r},n.prototype.iushln=function(e){r("number"==typeof e&&e>=0);var t,i=e%26,n=(e-i)/26,a=67108863>>>26-i<<26-i;if(0!==i){var s=0;for(t=0;t<this.length;t++){var o=this.words[t]&a,c=(0|this.words[t])-o<<i;this.words[t]=c|s,s=o>>>26-i}s&&(this.words[t]=s,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t<n;t++)this.words[t]=0;this.length+=n}return this.strip()},n.prototype.ishln=function(e){return r(0===this.negative),this.iushln(e)},n.prototype.iushrn=function(e,t,i){var n;r("number"==typeof e&&e>=0),n=t?(t-t%26)/26:0;var a=e%26,s=Math.min((e-a)/26,this.length),o=67108863^67108863>>>a<<a,c=i;if(n=Math.max(0,n-=s),c){for(var u=0;u<s;u++)c.words[u]=this.words[u];c.length=s}if(0===s);else if(this.length>s)for(this.length-=s,u=0;u<this.length;u++)this.words[u]=this.words[u+s];else this.words[0]=0,this.length=1;var h=0;for(u=this.length-1;u>=0&&(0!==h||u>=n);u--){var f=0|this.words[u];this.words[u]=h<<26-a|f>>>a,h=f&o}return c&&0!==h&&(c.words[c.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(e,t,i){return r(0===this.negative),this.iushrn(e,t,i)},n.prototype.shln=function(e){return this.clone().ishln(e)},n.prototype.ushln=function(e){return this.clone().iushln(e)},n.prototype.shrn=function(e){return this.clone().ishrn(e)},n.prototype.ushrn=function(e){return this.clone().iushrn(e)},n.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,i=(e-t)/26,n=1<<t;return!(this.length<=i)&&!!(this.words[i]&n)},n.prototype.imaskn=function(e){r("number"==typeof e&&e>=0);var t=e%26,i=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=i)return this;if(0!==t&&i++,this.length=Math.min(i,this.length),0!==t){var n=67108863^67108863>>>t<<t;this.words[this.length-1]&=n}return this.strip()},n.prototype.maskn=function(e){return this.clone().imaskn(e)},n.prototype.iaddn=function(e){return r("number"==typeof e),r(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},n.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},n.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()},n.prototype.addn=function(e){return this.clone().iaddn(e)},n.prototype.subn=function(e){return this.clone().isubn(e)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(e,t,i){var n,a,s=e.length+i;this._expand(s);var o=0;for(n=0;n<e.length;n++){a=(0|this.words[n+i])+o;var c=(0|e.words[n])*t;o=((a-=67108863&c)>>26)-(c/67108864|0),this.words[n+i]=67108863&a}for(;n<this.length-i;n++)o=(a=(0|this.words[n+i])+o)>>26,this.words[n+i]=67108863&a;if(0===o)return this.strip();for(r(-1===o),o=0,n=0;n<this.length;n++)o=(a=-(0|this.words[n])+o)>>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},n.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),a=e,s=0|a.words[a.length-1];0!==(r=26-this._countBits(s))&&(a=a.ushln(r),i.iushln(r),s=0|a.words[a.length-1]);var o,c=i.length-a.length;if("mod"!==t){(o=new n(null)).length=c+1,o.words=Array(o.length);for(var u=0;u<o.length;u++)o.words[u]=0}var h=i.clone()._ishlnsubmul(a,1,c);0===h.negative&&(i=h,o&&(o.words[c]=1));for(var f=c-1;f>=0;f--){var d=67108864*(0|i.words[a.length+f])+(0|i.words[a.length+f-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(a,d,f);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(a,1,f),i.isZero()||(i.negative^=1);o&&(o.words[f]=d)}return o&&o.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:o||null,mod:i}},n.prototype.divmod=function(e,t,i){return r(!e.isZero()),this.isZero()?{div:new n(0),mod:new n(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(a=o.div.neg()),"div"!==t&&(s=o.mod.neg(),i&&0!==s.negative&&s.iadd(e)),{div:a,mod:s}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(a=o.div.neg()),{div:a,mod:o.mod}):0!=(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(s=o.mod.neg(),i&&0!==s.negative&&s.isub(e)),{div:o.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new n(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new n(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new n(this.modn(e.words[0]))}:this._wordDiv(e,t);var a,s,o},n.prototype.div=function(e){return this.divmod(e,"div",!1).div},n.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},n.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},n.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},n.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,i=0,n=this.length-1;n>=0;n--)i=(t*i+(0|this.words[n]))%e;return i},n.prototype.idivn=function(e){r(e<=67108863);for(var t=0,i=this.length-1;i>=0;i--){var n=(0|this.words[i])+67108864*t;this.words[i]=n/e|0,t=n%e}return this.strip()},n.prototype.divn=function(e){return this.clone().idivn(e)},n.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,i=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new n(1),s=new n(0),o=new n(0),c=new n(1),u=0;t.isEven()&&i.isEven();)t.iushrn(1),i.iushrn(1),++u;for(var h=i.clone(),f=t.clone();!t.isZero();){for(var d=0,l=1;0==(t.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(t.iushrn(d);d-- >0;)(a.isOdd()||s.isOdd())&&(a.iadd(h),s.isub(f)),a.iushrn(1),s.iushrn(1);for(var p=0,y=1;0==(i.words[0]&y)&&p<26;++p,y<<=1);if(p>0)for(i.iushrn(p);p-- >0;)(o.isOdd()||c.isOdd())&&(o.iadd(h),c.isub(f)),o.iushrn(1),c.iushrn(1);t.cmp(i)>=0?(t.isub(i),a.isub(o),s.isub(c)):(i.isub(t),o.isub(a),c.isub(s))}return{a:o,b:c,gcd:i.iushln(u)}},n.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,i=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,s=new n(1),o=new n(0),c=i.clone();t.cmpn(1)>0&&i.cmpn(1)>0;){for(var u=0,h=1;0==(t.words[0]&h)&&u<26;++u,h<<=1);if(u>0)for(t.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);for(var f=0,d=1;0==(i.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(i.iushrn(f);f-- >0;)o.isOdd()&&o.iadd(c),o.iushrn(1);t.cmp(i)>=0?(t.isub(i),s.isub(o)):(i.isub(t),o.isub(s))}return(a=0===t.cmpn(1)?s:o).cmpn(0)<0&&a.iadd(e),a},n.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},n.prototype.invm=function(e){return this.egcd(e).a.umod(e)},n.prototype.isEven=function(){return 0==(1&this.words[0])},n.prototype.isOdd=function(){return 1==(1&this.words[0])},n.prototype.andln=function(e){return this.words[0]&e},n.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,i=(e-t)/26,n=1<<t;if(this.length<=i)return this._expand(i+1),this.words[i]|=n,this;for(var a=n,s=i;0!==a&&s<this.length;s++){var o=0|this.words[s];a=(o+=a)>>>26,o&=67108863,this.words[s]=o}return 0!==a&&(this.words[s]=a,this.length++),this},n.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},n.prototype.cmpn=function(e){var t,i=e<0;if(0!==this.negative&&!i)return-1;if(0===this.negative&&i)return 1;if(this.strip(),this.length>1)t=1;else{i&&(e=-e),r(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:n<e?-1:1}return 0!==this.negative?0|-t:t},n.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},n.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,r=this.length-1;r>=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){i<n?t=-1:i>n&&(t=1);break}}return t},n.prototype.gtn=function(e){return 1===this.cmpn(e)},n.prototype.gt=function(e){return 1===this.cmp(e)},n.prototype.gten=function(e){return this.cmpn(e)>=0},n.prototype.gte=function(e){return this.cmp(e)>=0},n.prototype.ltn=function(e){return-1===this.cmpn(e)},n.prototype.lt=function(e){return-1===this.cmp(e)},n.prototype.lten=function(e){return this.cmpn(e)<=0},n.prototype.lte=function(e){return this.cmp(e)<=0},n.prototype.eqn=function(e){return 0===this.cmpn(e)},n.prototype.eq=function(e){return 0===this.cmp(e)},n.red=function(e){return new _(e)},n.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},n.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(e){return this.red=e,this},n.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},n.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},n.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},n.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},n.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},n.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},n.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},n.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},n.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function b(e,t){this.name=e,this.p=new n(t,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function m(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function g(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function v(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(e){if("string"==typeof e){var t=n._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function k(e){_.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var e=new n(null);return e.words=Array(Math.ceil(this.n/13)),e},b.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t<this.n?-1:r.ucmp(this.p);return 0===i?(r.words[0]=0,r.length=1):i>0?r.isub(this.p):r.strip(),r},b.prototype.split=function(e,t){e.iushrn(this.n,0,t)},b.prototype.imulK=function(e){return e.imul(this.k)},i(m,b),m.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n<i;n++)t.words[n]=e.words[n];if(t.length=i,e.length<=9)return e.words[0]=0,void(e.length=1);var a=e.words[9];for(t.words[t.length++]=a&r,n=10;n<e.length;n++){var s=0|e.words[n];e.words[n-10]=(s&r)<<4|a>>>22,a=s}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},m.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r<e.length;r++){var i=0|e.words[r];t+=977*i,e.words[r]=67108863&t,t=64*i+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},i(g,b),i(w,b),i(v,b),v.prototype.imulK=function(e){for(var t=0,r=0;r<e.length;r++){var i=19*(0|e.words[r])+t,n=67108863&i;i>>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},n._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new m;else if("p224"===e)t=new g;else if("p192"===e)t=new w;else{if("p25519"!==e)throw Error("Unknown prime "+e);t=new v}return y[e]=t,t},_.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){r(0==(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},_.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var i=this.m.add(new n(1)).iushrn(2);return this.pow(e,i)}for(var a=this.m.subn(1),s=0;!a.isZero()&&0===a.andln(1);)s++,a.iushrn(1);r(!a.isZero());var o=new n(1).toRed(this),c=o.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new n(2*h*h).toRed(this);0!==this.pow(h,u).cmp(c);)h.redIAdd(c);for(var f=this.pow(h,a),d=this.pow(e,a.addn(1).iushrn(1)),l=this.pow(e,a),p=s;0!==l.cmp(o);){for(var y=l,b=0;0!==y.cmp(o);b++)y=y.redSqr();r(b<p);var m=this.pow(f,new n(1).iushln(p-b-1));d=d.redMul(m),f=m.redSqr(),l=l.redMul(f),p=b}return d},_.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},_.prototype.pow=function(e,t){if(t.isZero())return new n(1).toRed(this);if(0===t.cmpn(1))return e.clone();var r=Array(16);r[0]=new n(1).toRed(this),r[1]=e;for(var i=2;i<r.length;i++)r[i]=this.mul(r[i-1],e);var a=r[0],s=0,o=0,c=t.bitLength()%26;for(0===c&&(c=26),i=t.length-1;i>=0;i--){for(var u=t.words[i],h=c-1;h>=0;h--){var f=u>>h&1;a!==r[0]&&(a=this.sqr(a)),0!==f||0!==s?(s<<=1,s|=f,(4===++o||0===i&&0===h)&&(a=this.mul(a,r[s]),o=0,s=0)):o=0}c=26}return a},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},n.mont=function(e){return new k(e)},i(k,_),k.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},k.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},k.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},k.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new n(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=r.isub(i).iushrn(this.shift),s=a;return a.cmp(this.m)>=0?s=a.isub(this.m):a.cmpn(0)<0&&(s=a.iadd(this.m)),s._forceRed(this)},k.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,et)})),Bd=/*#__PURE__*/Object.freeze({__proto__:null,default:Ud,__moduleExports:Ud});class Td{constructor(e){if(void 0===e)throw Error("Invalid BigInteger input");this.value=new Ud(e)}clone(){const e=new Td(null);return this.value.copy(e.value),e}iinc(){return this.value.iadd(new Ud(1)),this}inc(){return this.clone().iinc()}idec(){return this.value.isub(new Ud(1)),this}dec(){return this.clone().idec()}iadd(e){return this.value.iadd(e.value),this}add(e){return this.clone().iadd(e)}isub(e){return this.value.isub(e.value),this}sub(e){return this.clone().isub(e)}imul(e){return this.value.imul(e.value),this}mul(e){return this.clone().imul(e)}imod(e){return this.value=this.value.umod(e.value),this}mod(e){return this.clone().imod(e)}modExp(e,t){const r=t.isEven()?Ud.red(t.value):Ud.mont(t.value),i=this.clone();return i.value=i.value.toRed(r).redPow(e.value).fromRed(),i}modInv(e){if(!this.gcd(e).isOne())throw Error("Inverse does not exist");return new Td(this.value.invm(e.value))}gcd(e){return new Td(this.value.gcd(e.value))}ileftShift(e){return this.value.ishln(e.value.toNumber()),this}leftShift(e){return this.clone().ileftShift(e)}irightShift(e){return this.value.ishrn(e.value.toNumber()),this}rightShift(e){return this.clone().irightShift(e)}equal(e){return this.value.eq(e.value)}lt(e){return this.value.lt(e.value)}lte(e){return this.value.lte(e.value)}gt(e){return this.value.gt(e.value)}gte(e){return this.value.gte(e.value)}isZero(){return this.value.isZero()}isOne(){return this.value.eq(new Ud(1))}isNegative(){return this.value.isNeg()}isEven(){return this.value.isEven()}abs(){const e=this.clone();return e.value=e.value.abs(),e}toString(){return this.value.toString()}toNumber(){return this.value.toNumber()}getBit(e){return this.value.testn(e)?1:0}bitLength(){return this.value.bitLength()}byteLength(){return this.value.byteLength()}toUint8Array(e="be",t){return this.value.toArrayLike(Uint8Array,e,t)}}var zd,qd=/*#__PURE__*/Object.freeze({__proto__:null,default:Td}),Od=tt((function(e,t){var r=t;function i(e){return 1===e.length?"0"+e:e}function n(e){for(var t="",r=0;r<e.length;r++)t+=i(e[r].toString(16));return t}r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"!=typeof e){for(var i=0;i<e.length;i++)r[i]=0|e[i];return r}if("hex"===t){(e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e);for(i=0;i<e.length;i+=2)r.push(parseInt(e[i]+e[i+1],16))}else for(i=0;i<e.length;i++){var n=e.charCodeAt(i),a=n>>8,s=255&n;a?r.push(a,s):r.push(s)}return r},r.zero2=i,r.toHex=n,r.encode=function(e,t){return"hex"===t?n(e):e}})),Fd=tt((function(e,t){var r=t;r.assert=Qe,r.toArray=Od.toArray,r.zero2=Od.zero2,r.toHex=Od.toHex,r.encode=Od.encode,r.getNAF=function(e,t){for(var r=[],i=1<<t+1,n=e.clone();n.cmpn(1)>=0;){var a;if(n.isOdd()){var s=n.andln(i-1);a=s>(i>>1)-1?(i>>1)-s:s,n.isubn(a)}else a=0;r.push(a);for(var o=0!==n.cmpn(0)&&0===n.andln(i-1)?t+1:1,c=1;c<o;c++)r.push(0);n.iushrn(o)}return r},r.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var i=0,n=0;e.cmpn(-i)>0||t.cmpn(-n)>0;){var a,s,o,c=e.andln(3)+i&3,u=t.andln(3)+n&3;if(3===c&&(c=-1),3===u&&(u=-1),0==(1&c))a=0;else a=3!==(o=e.andln(7)+i&7)&&5!==o||2!==u?c:-c;if(r[0].push(a),0==(1&u))s=0;else s=3!==(o=t.andln(7)+n&7)&&5!==o||2!==c?u:-u;r[1].push(s),2*i===a+1&&(i=1-i),2*n===s+1&&(n=1-n),e.iushrn(1),t.iushrn(1)}return r},r.cachedProperty=function(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},r.parseBytes=function(e){return"string"==typeof e?r.toArray(e,"hex"):e},r.intFromLE=function(e){return new Ud(e,"hex","le")}})),Nd=function(e){return zd||(zd=new jd(null)),zd.generate(e)};function jd(e){this.rand=e}var Ld=jd;if(jd.prototype.generate=function(e){return this._rand(e)},jd.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r<t.length;r++)t[r]=this.rand.getByte();return t},"object"==typeof self)self.crypto&&self.crypto.getRandomValues?jd.prototype._rand=function(e){var t=new Uint8Array(e);return self.crypto.getRandomValues(t),t}:self.msCrypto&&self.msCrypto.getRandomValues?jd.prototype._rand=function(e){var t=new Uint8Array(e);return self.msCrypto.getRandomValues(t),t}:"object"==typeof window&&(jd.prototype._rand=function(){throw Error("Not implemented yet")});else try{if("function"!=typeof undefined.randomBytes)throw Error("Not supported");jd.prototype._rand=function(e){return undefined.randomBytes(e)}}catch(e){}Nd.Rand=Ld;var Wd=Fd.getNAF,Hd=Fd.getJSF,Gd=Fd.assert;function Vd(e,t){this.type=e,this.p=new Ud(t.p,16),this.red=t.prime?Ud.red(t.prime):Ud.mont(this.p),this.zero=new Ud(0).toRed(this.red),this.one=new Ud(1).toRed(this.red),this.two=new Ud(2).toRed(this.red),this.n=t.n&&new Ud(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=[,,,,],this._wnafT2=[,,,,],this._wnafT3=[,,,,],this._wnafT4=[,,,,];var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var $d=Vd;function Zd(e,t){this.curve=e,this.type=t,this.precomputed=null}Vd.prototype.point=function(){throw Error("Not implemented")},Vd.prototype.validate=function(){throw Error("Not implemented")},Vd.prototype._fixedNafMul=function(e,t){Gd(e.precomputed);var r=e._getDoubles(),i=Wd(t,1),n=(1<<r.step+1)-(r.step%2==0?2:1);n/=3;for(var a=[],s=0;s<i.length;s+=r.step){var o=0;for(t=s+r.step-1;t>=s;t--)o=(o<<1)+i[t];a.push(o)}for(var c=this.jpoint(null,null,null),u=this.jpoint(null,null,null),h=n;h>0;h--){for(s=0;s<a.length;s++){(o=a[s])===h?u=u.mixedAdd(r.points[s]):o===-h&&(u=u.mixedAdd(r.points[s].neg()))}c=c.add(u)}return c.toP()},Vd.prototype._wnafMul=function(e,t){var r=4,i=e._getNAFPoints(r);r=i.wnd;for(var n=i.points,a=Wd(t,r),s=this.jpoint(null,null,null),o=a.length-1;o>=0;o--){for(t=0;o>=0&&0===a[o];o--)t++;if(o>=0&&t++,s=s.dblp(t),o<0)break;var c=a[o];Gd(0!==c),s="affine"===e.type?c>0?s.mixedAdd(n[c-1>>1]):s.mixedAdd(n[-c-1>>1].neg()):c>0?s.add(n[c-1>>1]):s.add(n[-c-1>>1].neg())}return"affine"===e.type?s.toP():s},Vd.prototype._wnafMulAdd=function(e,t,r,i,n){for(var a=this._wnafT1,s=this._wnafT2,o=this._wnafT3,c=0,u=0;u<i;u++){var h=(A=t[u])._getNAFPoints(e);a[u]=h.wnd,s[u]=h.points}for(u=i-1;u>=1;u-=2){var f=u-1,d=u;if(1===a[f]&&1===a[d]){var l=[t[f],null,null,t[d]];0===t[f].y.cmp(t[d].y)?(l[1]=t[f].add(t[d]),l[2]=t[f].toJ().mixedAdd(t[d].neg())):0===t[f].y.cmp(t[d].y.redNeg())?(l[1]=t[f].toJ().mixedAdd(t[d]),l[2]=t[f].add(t[d].neg())):(l[1]=t[f].toJ().mixedAdd(t[d]),l[2]=t[f].toJ().mixedAdd(t[d].neg()));var p=[-3,-1,-5,-7,0,7,5,1,3],y=Hd(r[f],r[d]);c=Math.max(y[0].length,c),o[f]=Array(c),o[d]=Array(c);for(var b=0;b<c;b++){var m=0|y[0][b],g=0|y[1][b];o[f][b]=p[3*(m+1)+(g+1)],o[d][b]=0,s[f]=l}}else o[f]=Wd(r[f],a[f]),o[d]=Wd(r[d],a[d]),c=Math.max(o[f].length,c),c=Math.max(o[d].length,c)}var w=this.jpoint(null,null,null),v=this._wnafT4;for(u=c;u>=0;u--){for(var _=0;u>=0;){var k=!0;for(b=0;b<i;b++)v[b]=0|o[b][u],0!==v[b]&&(k=!1);if(!k)break;_++,u--}if(u>=0&&_++,w=w.dblp(_),u<0)break;for(b=0;b<i;b++){var A,S=v[b];0!==S&&(S>0?A=s[b][S-1>>1]:S<0&&(A=s[b][-S-1>>1].neg()),w="affine"===A.type?w.mixedAdd(A):w.add(A))}}for(u=0;u<i;u++)s[u]=null;return n?w:w.toP()},Vd.BasePoint=Zd,Zd.prototype.eq=function(){throw Error("Not implemented")},Zd.prototype.validate=function(){return this.curve.validate(this)},Vd.prototype.decodePoint=function(e,t){e=Fd.toArray(e,t);var r=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*r)return 6===e[0]?Gd(e[e.length-1]%2==0):7===e[0]&&Gd(e[e.length-1]%2==1),this.point(e.slice(1,1+r),e.slice(1+r,1+2*r));if((2===e[0]||3===e[0])&&e.length-1===r)return this.pointFromX(e.slice(1,1+r),3===e[0]);throw Error("Unknown point format")},Zd.prototype.encodeCompressed=function(e){return this.encode(e,!0)},Zd.prototype._encode=function(e){var t=this.curve.p.byteLength(),r=this.getX().toArray("be",t);return e?[this.getY().isEven()?2:3].concat(r):[4].concat(r,this.getY().toArray("be",t))},Zd.prototype.encode=function(e,t){return Fd.encode(this._encode(t),e)},Zd.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},Zd.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},Zd.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n<t;n+=e){for(var a=0;a<e;a++)i=i.dbl();r.push(i)}return{step:e,points:r}},Zd.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],r=(1<<e)-1,i=1===r?null:this.dbl(),n=1;n<r;n++)t[n]=t[n-1].add(i);return{wnd:e,points:t}},Zd.prototype._getBeta=function(){return null},Zd.prototype.dblp=function(e){for(var t=this,r=0;r<e;r++)t=t.dbl();return t};var Yd=Fd.assert;function Xd(e){$d.call(this,"short",e),this.a=new Ud(e.a,16).toRed(this.red),this.b=new Ud(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=[,,,,],this._endoWnafT2=[,,,,]}rt(Xd,$d);var Qd=Xd;function Jd(e,t,r,i){$d.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new Ud(t,16),this.y=new Ud(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function el(e,t,r,i){$d.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new Ud(0)):(this.x=new Ud(t,16),this.y=new Ud(r,16),this.z=new Ud(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}function tl(e){$d.call(this,"mont",e),this.a=new Ud(e.a,16).toRed(this.red),this.b=new Ud(e.b,16).toRed(this.red),this.i4=new Ud(4).toRed(this.red).redInvm(),this.two=new Ud(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Xd.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new Ud(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=(t=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(e.lambda)r=new Ud(e.lambda,16);else{var n=this._getEndoRoots(this.n);0===this.g.mul(n[0]).x.cmp(this.g.x.redMul(t))?r=n[0]:(r=n[1],Yd(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new Ud(e.a,16),b:new Ud(e.b,16)}})):this._getEndoBasis(r)}}},Xd.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:Ud.mont(e),r=new Ud(2).toRed(t).redInvm(),i=r.redNeg(),n=new Ud(3).toRed(t).redNeg().redSqrt().redMul(r);return[i.redAdd(n).fromRed(),i.redSub(n).fromRed()]},Xd.prototype._getEndoBasis=function(e){for(var t,r,i,n,a,s,o,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),f=e,d=this.n.clone(),l=new Ud(1),p=new Ud(0),y=new Ud(0),b=new Ud(1),m=0;0!==f.cmpn(0);){var g=d.div(f);c=d.sub(g.mul(f)),u=y.sub(g.mul(l));var w=b.sub(g.mul(p));if(!i&&c.cmp(h)<0)t=o.neg(),r=l,i=c.neg(),n=u;else if(i&&2==++m)break;o=c,d=f,f=c,y=l,l=u,b=p,p=w}a=c.neg(),s=u;var v=i.sqr().add(n.sqr());return a.sqr().add(s.sqr()).cmp(v)>=0&&(a=t,s=r),i.negative&&(i=i.neg(),n=n.neg()),a.negative&&(a=a.neg(),s=s.neg()),[{a:i,b:n},{a,b:s}]},Xd.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),a=r.b.neg().mul(e).divRound(this.n),s=n.mul(r.a),o=a.mul(i.a),c=n.mul(r.b),u=a.mul(i.b);return{k1:e.sub(s).sub(o),k2:c.add(u).neg()}},Xd.prototype.pointFromX=function(e,t){(e=new Ud(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw Error("invalid point");var n=i.fromRed().isOdd();return(t&&!n||!t&&n)&&(i=i.redNeg()),this.point(e,i)},Xd.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},Xd.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a<e.length;a++){var s=this._endoSplit(t[a]),o=e[a],c=o._getBeta();s.k1.negative&&(s.k1.ineg(),o=o.neg(!0)),s.k2.negative&&(s.k2.ineg(),c=c.neg(!0)),i[2*a]=o,i[2*a+1]=c,n[2*a]=s.k1,n[2*a+1]=s.k2}for(var u=this._wnafMulAdd(1,i,n,2*a,r),h=0;h<2*a;h++)i[h]=null,n[h]=null;return u},rt(Jd,$d.BasePoint),Xd.prototype.point=function(e,t,r){return new Jd(this,e,t,r)},Xd.prototype.pointFromJSON=function(e,t){return Jd.fromJSON(this,e,t)},Jd.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var r=this.curve,i=function(e){return r.point(e.x.redMul(r.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(i)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(i)}}}return t}},Jd.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},Jd.fromJSON=function(e,t,r){"string"==typeof t&&(t=JSON.parse(t));var i=e.point(t[0],t[1],r);if(!t[2])return i;function n(t){return e.point(t[0],t[1],r)}var a=t[2];return i.precomputed={beta:null,doubles:a.doubles&&{step:a.doubles.step,points:[i].concat(a.doubles.points.map(n))},naf:a.naf&&{wnd:a.naf.wnd,points:[i].concat(a.naf.points.map(n))}},i},Jd.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},Jd.prototype.isInfinity=function(){return this.inf},Jd.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},Jd.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,s)},Jd.prototype.getX=function(){return this.x.fromRed()},Jd.prototype.getY=function(){return this.y.fromRed()},Jd.prototype.mul=function(e){return e=new Ud(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},Jd.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},Jd.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},Jd.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},Jd.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},Jd.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},rt(el,$d.BasePoint),Xd.prototype.jpoint=function(e,t,r){return new el(this,e,t,r)},el.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},el.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},el.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),a=this.y.redMul(t.redMul(e.z)),s=e.y.redMul(r.redMul(this.z)),o=i.redSub(n),c=a.redSub(s);if(0===o.cmpn(0))return 0!==c.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=o.redSqr(),h=u.redMul(o),f=i.redMul(u),d=c.redSqr().redIAdd(h).redISub(f).redISub(f),l=c.redMul(f.redISub(d)).redISub(a.redMul(h)),p=this.z.redMul(e.z).redMul(o);return this.curve.jpoint(d,l,p)},el.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,a=e.y.redMul(t).redMul(this.z),s=r.redSub(i),o=n.redSub(a);if(0===s.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),u=c.redMul(s),h=r.redMul(c),f=o.redSqr().redIAdd(u).redISub(h).redISub(h),d=o.redMul(h.redISub(f)).redISub(n.redMul(u)),l=this.z.redMul(s);return this.curve.jpoint(f,d,l)},el.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r<e;r++)t=t.dbl();return t}var i=this.curve.a,n=this.curve.tinv,a=this.x,s=this.y,o=this.z,c=o.redSqr().redSqr(),u=s.redAdd(s);for(r=0;r<e;r++){var h=a.redSqr(),f=u.redSqr(),d=f.redSqr(),l=h.redAdd(h).redIAdd(h).redIAdd(i.redMul(c)),p=a.redMul(f),y=l.redSqr().redISub(p.redAdd(p)),b=p.redISub(y),m=l.redMul(b);m=m.redIAdd(m).redISub(d);var g=u.redMul(o);r+1<e&&(c=c.redMul(d)),a=y,o=g,u=m}return this.curve.jpoint(a,u.redMul(n),o)},el.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},el.prototype._zeroDbl=function(){var e,t,r;if(this.zOne){var i=this.x.redSqr(),n=this.y.redSqr(),a=n.redSqr(),s=this.x.redAdd(n).redSqr().redISub(i).redISub(a);s=s.redIAdd(s);var o=i.redAdd(i).redIAdd(i),c=o.redSqr().redISub(s).redISub(s),u=a.redIAdd(a);u=(u=u.redIAdd(u)).redIAdd(u),e=c,t=o.redMul(s.redISub(c)).redISub(u),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),f=this.y.redSqr(),d=f.redSqr(),l=this.x.redAdd(f).redSqr().redISub(h).redISub(d);l=l.redIAdd(l);var p=h.redAdd(h).redIAdd(h),y=p.redSqr(),b=d.redIAdd(d);b=(b=b.redIAdd(b)).redIAdd(b),e=y.redISub(l).redISub(l),t=p.redMul(l.redISub(e)).redISub(b),r=(r=this.y.redMul(this.z)).redIAdd(r)}return this.curve.jpoint(e,t,r)},el.prototype._threeDbl=function(){var e,t,r;if(this.zOne){var i=this.x.redSqr(),n=this.y.redSqr(),a=n.redSqr(),s=this.x.redAdd(n).redSqr().redISub(i).redISub(a);s=s.redIAdd(s);var o=i.redAdd(i).redIAdd(i).redIAdd(this.curve.a),c=o.redSqr().redISub(s).redISub(s);e=c;var u=a.redIAdd(a);u=(u=u.redIAdd(u)).redIAdd(u),t=o.redMul(s.redISub(c)).redISub(u),r=this.y.redAdd(this.y)}else{var h=this.z.redSqr(),f=this.y.redSqr(),d=this.x.redMul(f),l=this.x.redSub(h).redMul(this.x.redAdd(h));l=l.redAdd(l).redIAdd(l);var p=d.redIAdd(d),y=(p=p.redIAdd(p)).redAdd(p);e=l.redSqr().redISub(y),r=this.y.redAdd(this.z).redSqr().redISub(f).redISub(h);var b=f.redSqr();b=(b=(b=b.redIAdd(b)).redIAdd(b)).redIAdd(b),t=l.redMul(p.redISub(e)).redISub(b)}return this.curve.jpoint(e,t,r)},el.prototype._dbl=function(){var e=this.curve.a,t=this.x,r=this.y,i=this.z,n=i.redSqr().redSqr(),a=t.redSqr(),s=r.redSqr(),o=a.redAdd(a).redIAdd(a).redIAdd(e.redMul(n)),c=t.redAdd(t),u=(c=c.redIAdd(c)).redMul(s),h=o.redSqr().redISub(u.redAdd(u)),f=u.redISub(h),d=s.redSqr();d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var l=o.redMul(f).redISub(d),p=r.redAdd(r).redMul(i);return this.curve.jpoint(h,l,p)},el.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr(),i=t.redSqr(),n=e.redAdd(e).redIAdd(e),a=n.redSqr(),s=this.x.redAdd(t).redSqr().redISub(e).redISub(i),o=(s=(s=(s=s.redIAdd(s)).redAdd(s).redIAdd(s)).redISub(a)).redSqr(),c=i.redIAdd(i);c=(c=(c=c.redIAdd(c)).redIAdd(c)).redIAdd(c);var u=n.redIAdd(s).redSqr().redISub(a).redISub(o).redISub(c),h=t.redMul(u);h=(h=h.redIAdd(h)).redIAdd(h);var f=this.x.redMul(o).redISub(h);f=(f=f.redIAdd(f)).redIAdd(f);var d=this.y.redMul(u.redMul(c.redISub(u)).redISub(s.redMul(o)));d=(d=(d=d.redIAdd(d)).redIAdd(d)).redIAdd(d);var l=this.z.redAdd(s).redSqr().redISub(r).redISub(o);return this.curve.jpoint(f,d,l)},el.prototype.mul=function(e,t){return e=new Ud(e,t),this.curve._wnafMul(this,e)},el.prototype.eq=function(e){if("affine"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),r=e.z.redSqr();if(0!==this.x.redMul(r).redISub(e.x.redMul(t)).cmpn(0))return!1;var i=t.redMul(this.z),n=r.redMul(e.z);return 0===this.y.redMul(n).redISub(e.y.redMul(i)).cmpn(0)},el.prototype.eqXToP=function(e){var t=this.z.redSqr(),r=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(r))return!0;for(var i=e.clone(),n=this.curve.redN.redMul(t);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},el.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},el.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},rt(tl,$d);var rl=tl;function il(e,t,r){$d.BasePoint.call(this,e,"projective"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ud(t,16),this.z=new Ud(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}tl.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===i.redSqrt().redSqr().cmp(i)},rt(il,$d.BasePoint),tl.prototype.decodePoint=function(e,t){if(33===(e=Fd.toArray(e,t)).length&&64===e[0]&&(e=e.slice(1,33).reverse()),32!==e.length)throw Error("Unknown point compression format");return this.point(e,1)},tl.prototype.point=function(e,t){return new il(this,e,t)},tl.prototype.pointFromJSON=function(e){return il.fromJSON(this,e)},il.prototype.precompute=function(){},il.prototype._encode=function(e){var t=this.curve.p.byteLength();return e?[64].concat(this.getX().toArray("le",t)):this.getX().toArray("be",t)},il.fromJSON=function(e,t){return new il(e,t[0],t[1]||e.one)},il.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},il.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},il.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),i=e.redMul(t),n=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},il.prototype.add=function(){throw Error("Not supported on Montgomery curve")},il.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),a=e.x.redSub(e.z).redMul(r),s=n.redMul(i),o=t.z.redMul(a.redAdd(s).redSqr()),c=t.x.redMul(a.redISub(s).redSqr());return this.curve.point(o,c)},il.prototype.mul=function(e){for(var t=(e=new Ud(e,16)).clone(),r=this,i=this.curve.point(null,null),n=[];0!==t.cmpn(0);t.iushrn(1))n.push(t.andln(1));for(var a=n.length-1;a>=0;a--)0===n[a]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},il.prototype.mulAdd=function(){throw Error("Not supported on Montgomery curve")},il.prototype.jumlAdd=function(){throw Error("Not supported on Montgomery curve")},il.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},il.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},il.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var nl=Fd.assert;function al(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,$d.call(this,"edwards",e),this.a=new Ud(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ud(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ud(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),nl(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}rt(al,$d);var sl=al;function ol(e,t,r,i,n){$d.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ud(t,16),this.y=new Ud(r,16),this.z=i?new Ud(i,16):this.curve.one,this.t=n&&new Ud(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}al.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},al.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},al.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},al.prototype.pointFromX=function(e,t){(e=new Ud(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),n=this.one.redSub(this.c2.redMul(this.d).redMul(r)),a=i.redMul(n.redInvm()),s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw Error("invalid point");var o=s.fromRed().isOdd();return(t&&!o||!t&&o)&&(s=s.redNeg()),this.point(e,s)},al.prototype.pointFromY=function(e,t){(e=new Ud(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),n=r.redMul(this.d).redMul(this.c2).redSub(this.a),a=i.redMul(n.redInvm());if(0===a.cmp(this.zero)){if(t)throw Error("invalid point");return this.point(this.zero,e)}var s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw Error("invalid point");return s.fromRed().isOdd()!==t&&(s=s.redNeg()),this.point(s,e)},al.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},rt(ol,$d.BasePoint),al.prototype.pointFromJSON=function(e){return ol.fromJSON(this,e)},al.prototype.point=function(e,t,r,i){return new ol(this,e,t,r,i)},ol.fromJSON=function(e,t){return new ol(e,t[0],t[1],t[2])},ol.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},ol.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},ol.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),s=a.redSub(r),o=i.redSub(t),c=n.redMul(s),u=a.redMul(o),h=n.redMul(o),f=s.redMul(a);return this.curve.point(c,u,f,h)},ol.prototype._projDbl=function(){var e,t,r,i=this.x.redAdd(this.y).redSqr(),n=this.x.redSqr(),a=this.y.redSqr();if(this.curve.twisted){var s=(u=this.curve._mulA(n)).redAdd(a);if(this.zOne)e=i.redSub(n).redSub(a).redMul(s.redSub(this.curve.two)),t=s.redMul(u.redSub(a)),r=s.redSqr().redSub(s).redSub(s);else{var o=this.z.redSqr(),c=s.redSub(o).redISub(o);e=i.redSub(n).redISub(a).redMul(c),t=s.redMul(u.redSub(a)),r=s.redMul(c)}}else{var u=n.redAdd(a);o=this.curve._mulC(this.z).redSqr(),c=u.redSub(o).redSub(o);e=this.curve._mulC(i.redISub(u)).redMul(c),t=this.curve._mulC(u).redMul(n.redISub(a)),r=u.redMul(c)}return this.curve.point(e,t,r)},ol.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},ol.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),a=r.redSub(t),s=n.redSub(i),o=n.redAdd(i),c=r.redAdd(t),u=a.redMul(s),h=o.redMul(c),f=a.redMul(c),d=s.redMul(o);return this.curve.point(u,h,d,f)},ol.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),a=this.x.redMul(e.x),s=this.y.redMul(e.y),o=this.curve.d.redMul(a).redMul(s),c=n.redSub(o),u=n.redAdd(o),h=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(a).redISub(s),f=i.redMul(c).redMul(h);return this.curve.twisted?(t=i.redMul(u).redMul(s.redSub(this.curve._mulA(a))),r=c.redMul(u)):(t=i.redMul(u).redMul(s.redSub(a)),r=this.curve._mulC(c).redMul(u)),this.curve.point(f,t,r)},ol.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},ol.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},ol.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},ol.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},ol.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},ol.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},ol.prototype.getX=function(){return this.normalize(),this.x.fromRed()},ol.prototype.getY=function(){return this.normalize(),this.y.fromRed()},ol.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},ol.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},ol.prototype.toP=ol.prototype.normalize,ol.prototype.mixedAdd=ol.prototype.add;var cl=tt((function(e,t){var r=t;r.base=$d,r.short=Qd,r.mont=rl,r.edwards=sl})),ul=st.rotl32,hl=st.sum32,fl=st.sum32_5,dl=pt.ft_1,ll=ut.BlockHash,pl=[1518500249,1859775393,2400959708,3395469782];function yl(){if(!(this instanceof yl))return new yl;ll.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=Array(80)}st.inherits(yl,ll);var bl=yl;yl.blockSize=512,yl.outSize=160,yl.hmacStrength=80,yl.padLength=64,yl.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i<r.length;i++)r[i]=ul(r[i-3]^r[i-8]^r[i-14]^r[i-16],1);var n=this.h[0],a=this.h[1],s=this.h[2],o=this.h[3],c=this.h[4];for(i=0;i<r.length;i++){var u=~~(i/20),h=fl(ul(n,5),dl(u,a,s,o),c,r[i],pl[u]);c=o,o=s,s=ul(a,30),a=n,n=h}this.h[0]=hl(this.h[0],n),this.h[1]=hl(this.h[1],a),this.h[2]=hl(this.h[2],s),this.h[3]=hl(this.h[3],o),this.h[4]=hl(this.h[4],c)},yl.prototype._digest=function(e){return"hex"===e?st.toHex32(this.h,"big"):st.split32(this.h,"big")};var ml={sha1:bl,sha224:Ct,sha256:xt,sha384:nr,sha512:Wt};function gl(e,t,r){if(!(this instanceof gl))return new gl(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(st.toArray(t,r))}var wl=gl;gl.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),Qe(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;for(this.inner=(new this.Hash).update(e),t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)},gl.prototype.update=function(e,t){return this.inner.update(e,t),this},gl.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)};var vl=tt((function(e,t){var r=t;r.utils=st,r.common=ut,r.sha=ml,r.ripemd=wr,r.hmac=wl,r.sha1=r.sha.sha1,r.sha256=r.sha.sha256,r.sha224=r.sha.sha224,r.sha384=r.sha.sha384,r.sha512=r.sha.sha512,r.ripemd160=r.ripemd.ripemd160})),_l={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}},kl=tt((function(e,t){var r,i=t,n=Fd.assert;function a(e){if("short"===e.type)this.curve=new cl.short(e);else if("edwards"===e.type)this.curve=new cl.edwards(e);else{if("mont"!==e.type)throw Error("Unknown curve type.");this.curve=new cl.mont(e)}this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, n*G != O")}function s(e,t){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var r=new a(t);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:r}),r}})}i.PresetCurve=a,s("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:vl.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),s("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:vl.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),s("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:vl.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),s("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:vl.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),s("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:vl.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),s("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",cofactor:"8",hash:vl.sha256,gRed:!1,g:["9"]}),s("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",cofactor:"8",hash:vl.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]}),s("brainpoolP256r1",{type:"short",prime:null,p:"A9FB57DB A1EEA9BC 3E660A90 9D838D72 6E3BF623 D5262028 2013481D 1F6E5377",a:"7D5A0975 FC2C3057 EEF67530 417AFFE7 FB8055C1 26DC5C6C E94A4B44 F330B5D9",b:"26DC5C6C E94A4B44 F330B5D9 BBD77CBF 95841629 5CF7E1CE 6BCCDC18 FF8C07B6",n:"A9FB57DB A1EEA9BC 3E660A90 9D838D71 8C397AA3 B561A6F7 901E0E82 974856A7",hash:vl.sha256,gRed:!1,g:["8BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262","547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997"]}),s("brainpoolP384r1",{type:"short",prime:null,p:"8CB91E82 A3386D28 0F5D6F7E 50E641DF 152F7109 ED5456B4 12B1DA19 7FB71123ACD3A729 901D1A71 87470013 3107EC53",a:"7BC382C6 3D8C150C 3C72080A CE05AFA0 C2BEA28E 4FB22787 139165EF BA91F90F8AA5814A 503AD4EB 04A8C7DD 22CE2826",b:"04A8C7DD 22CE2826 8B39B554 16F0447C 2FB77DE1 07DCD2A6 2E880EA5 3EEB62D57CB43902 95DBC994 3AB78696 FA504C11",n:"8CB91E82 A3386D28 0F5D6F7E 50E641DF 152F7109 ED5456B3 1F166E6C AC0425A7CF3AB6AF 6B7FC310 3B883202 E9046565",hash:vl.sha384,gRed:!1,g:["1D1C64F068CF45FFA2A63A81B7C13F6B8847A3E77EF14FE3DB7FCAFE0CBD10E8E826E03436D646AAEF87B2E247D4AF1E","8ABE1D7520F9C2A45CB1EB8E95CFD55262B70B29FEEC5864E19C054FF99129280E4646217791811142820341263C5315"]}),s("brainpoolP512r1",{type:"short",prime:null,p:"AADD9DB8 DBE9C48B 3FD4E6AE 33C9FC07 CB308DB3 B3C9D20E D6639CCA 703308717D4D9B00 9BC66842 AECDA12A E6A380E6 2881FF2F 2D82C685 28AA6056 583A48F3",a:"7830A331 8B603B89 E2327145 AC234CC5 94CBDD8D 3DF91610 A83441CA EA9863BC2DED5D5A A8253AA1 0A2EF1C9 8B9AC8B5 7F1117A7 2BF2C7B9 E7C1AC4D 77FC94CA",b:"3DF91610 A83441CA EA9863BC 2DED5D5A A8253AA1 0A2EF1C9 8B9AC8B5 7F1117A72BF2C7B9 E7C1AC4D 77FC94CA DC083E67 984050B7 5EBAE5DD 2809BD63 8016F723",n:"AADD9DB8 DBE9C48B 3FD4E6AE 33C9FC07 CB308DB3 B3C9D20E D6639CCA 70330870553E5C41 4CA92619 41866119 7FAC1047 1DB1D381 085DDADD B5879682 9CA90069",hash:vl.sha512,gRed:!1,g:["81AEE4BDD82ED9645A21322E9C4C6A9385ED9F70B5D916C1B43B62EEF4D0098EFF3B1F78E2D0D48D50D1687B93B97D5F7C6D5047406A5E688B352209BCB9F822","7DDE385D566332ECC0EABFA9CF7822FDF209F70024A57B1AA000C55B881F8111B2DCDE494A5F485E5BCA4BD88A2763AED1CA2B2FA8F0540678CD1E0F3AD80892"]});try{r=_l}catch(e){r=void 0}s("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:vl.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})}));function Al(e){if(!(this instanceof Al))return new Al(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=Od.toArray(e.entropy,e.entropyEnc||"hex"),r=Od.toArray(e.nonce,e.nonceEnc||"hex"),i=Od.toArray(e.pers,e.persEnc||"hex");Qe(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Sl=Al;Al.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=Array(this.outLen/8),this.V=Array(this.outLen/8);for(var n=0;n<this.V.length;n++)this.K[n]=0,this.V[n]=1;this._update(i),this._reseed=1,this.reseedInterval=281474976710656},Al.prototype._hmac=function(){return new vl.hmac(this.hash,this.K)},Al.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},Al.prototype.reseed=function(e,t,r,i){"string"!=typeof t&&(i=r,r=t,t=null),e=Od.toArray(e,t),r=Od.toArray(r,i),Qe(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},Al.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw Error("Reseed is required");"string"!=typeof t&&(i=r,r=t,t=null),r&&(r=Od.toArray(r,i||"hex"),this._update(r));for(var n=[];n.length<e;)this.V=this._hmac().update(this.V).digest(),n=n.concat(this.V);var a=n.slice(0,e);return this._update(r),this._reseed++,Od.encode(a,t)};var El=Fd.assert;function Pl(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}var xl=Pl;Pl.fromPublic=function(e,t,r){return t instanceof Pl?t:new Pl(e,{pub:t,pubEnc:r})},Pl.fromPrivate=function(e,t,r){return t instanceof Pl?t:new Pl(e,{priv:t,privEnc:r})},Pl.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},Pl.prototype.getPublic=function(e,t){return this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},Pl.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},Pl.prototype._importPrivate=function(e,t){if(this.priv=new Ud(e,t||16),"mont"===this.ec.curve.type){var r=this.ec.curve.one,i=r.ushln(252).sub(r).ushln(3);this.priv=this.priv.or(r.ushln(254)),this.priv=this.priv.and(i)}else this.priv=this.priv.umod(this.ec.curve.n)},Pl.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?El(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||El(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},Pl.prototype.derive=function(e){return e.mul(this.priv).getX()},Pl.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},Pl.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},Pl.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"};var Ml=Fd.assert;function Cl(e,t){if(e instanceof Cl)return e;this._importDER(e,t)||(Ml(e.r&&e.s,"Signature without r or s"),this.r=new Ud(e.r,16),this.s=new Ud(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var Kl=Cl;function Dl(){this.place=0}function Rl(e,t){var r=e[t.place++];if(!(128&r))return r;for(var i=15&r,n=0,a=0,s=t.place;a<i;a++,s++)n<<=8,n|=e[s];return t.place=s,n}function Il(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t<r;)t++;return 0===t?e:e.slice(t)}function Ul(e,t){if(t<128)e.push(t);else{var r=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}Cl.prototype._importDER=function(e,t){e=Fd.toArray(e,t);var r=new Dl;if(48!==e[r.place++])return!1;if(Rl(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var i=Rl(e,r),n=e.slice(r.place,i+r.place);if(r.place+=i,2!==e[r.place++])return!1;var a=Rl(e,r);if(e.length!==a+r.place)return!1;var s=e.slice(r.place,a+r.place);return 0===n[0]&&128&n[1]&&(n=n.slice(1)),0===s[0]&&128&s[1]&&(s=s.slice(1)),this.r=new Ud(n),this.s=new Ud(s),this.recoveryParam=null,!0},Cl.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=Il(t),r=Il(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];Ul(i,t.length),(i=i.concat(t)).push(2),Ul(i,r.length);var n=i.concat(r),a=[48];return Ul(a,n.length),a=a.concat(n),Fd.encode(a,e)};var Bl=Fd.assert;function Tl(e){if(!(this instanceof Tl))return new Tl(e);"string"==typeof e&&(Bl(kl.hasOwnProperty(e),"Unknown curve "+e),e=kl[e]),e instanceof kl.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var zl=Tl;Tl.prototype.keyPair=function(e){return new xl(this,e)},Tl.prototype.keyFromPrivate=function(e,t){return xl.fromPrivate(this,e,t)},Tl.prototype.keyFromPublic=function(e,t){return xl.fromPublic(this,e,t)},Tl.prototype.genKeyPair=function(e){e||(e={});var t=new Sl({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Nd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()});if("mont"===this.curve.type){var r=new Ud(t.generate(32));return this.keyFromPrivate(r)}for(var i=this.n.byteLength(),n=this.n.sub(new Ud(2));;){if(!((r=new Ud(t.generate(i))).cmp(n)>0))return r.iaddn(1),this.keyFromPrivate(r)}},Tl.prototype._truncateToN=function(e,t,r){var i=(r=r||8*e.byteLength())-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},Tl.prototype.truncateMsg=function(e){var t;return e instanceof Uint8Array?(t=8*e.byteLength,e=this._truncateToN(new Ud(e,16),!1,t)):"string"==typeof e?(t=4*e.length,e=this._truncateToN(new Ud(e,16),!1,t)):e=this._truncateToN(new Ud(e,16)),e},Tl.prototype.sign=function(e,t,r,i){"object"==typeof r&&(i=r,r=null),i||(i={}),t=this.keyFromPrivate(t,r),e=this.truncateMsg(e);for(var n=this.n.byteLength(),a=t.getPrivate().toArray("be",n),s=e.toArray("be",n),o=new Sl({hash:this.hash,entropy:a,nonce:s,pers:i.pers,persEnc:i.persEnc||"utf8"}),c=this.n.sub(new Ud(1)),u=0;;u++){var h=i.k?i.k(u):new Ud(o.generate(this.n.byteLength()));if(!((h=this._truncateToN(h,!0)).cmpn(1)<=0||h.cmp(c)>=0)){var f=this.g.mul(h);if(!f.isInfinity()){var d=f.getX(),l=d.umod(this.n);if(0!==l.cmpn(0)){var p=h.invm(this.n).mul(l.mul(t.getPrivate()).iadd(e));if(0!==(p=p.umod(this.n)).cmpn(0)){var y=(f.getY().isOdd()?1:0)|(0!==d.cmp(l)?2:0);return i.canonical&&p.cmp(this.nh)>0&&(p=this.n.sub(p),y^=1),new Kl({r:l,s:p,recoveryParam:y})}}}}}},Tl.prototype.verify=function(e,t,r,i){return r=this.keyFromPublic(r,i),t=new Kl(t,"hex"),this._verify(this.truncateMsg(e),t,r)||this._verify(this._truncateToN(new Ud(e,16)),t,r)},Tl.prototype._verify=function(e,t,r){var i=t.r,n=t.s;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;if(n.cmpn(1)<0||n.cmp(this.n)>=0)return!1;var a,s=n.invm(this.n),o=s.mul(e).umod(this.n),c=s.mul(i).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(o,r.getPublic(),c)).isInfinity()&&a.eqXToP(i):!(a=this.g.mulAdd(o,r.getPublic(),c)).isInfinity()&&0===a.getX().umod(this.n).cmp(i)},Tl.prototype.recoverPubKey=function(e,t,r,i){Bl((3&r)===r,"The recovery param is more than two bits"),t=new Kl(t,i);var n=this.n,a=new Ud(e),s=t.r,o=t.s,c=1&r,u=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw Error("Unable to find sencond key candinate");s=u?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var h=t.r.invm(n),f=n.sub(a).mul(h).umod(n),d=o.mul(h).umod(n);return this.g.mulAdd(f,s,d)},Tl.prototype.getKeyRecoveryParam=function(e,t,r,i){if(null!==(t=new Kl(t,i)).recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw Error("Unable to find valid recovery factor")};var ql=Fd.assert,Ol=Fd.parseBytes,Fl=Fd.cachedProperty;function Nl(e,t){if(this.eddsa=e,t.hasOwnProperty("secret")&&(this._secret=Ol(t.secret)),e.isPoint(t.pub))this._pub=t.pub;else if(this._pubBytes=Ol(t.pub),this._pubBytes&&33===this._pubBytes.length&&64===this._pubBytes[0]&&(this._pubBytes=this._pubBytes.slice(1,33)),this._pubBytes&&32!==this._pubBytes.length)throw Error("Unknown point compression format")}Nl.fromPublic=function(e,t){return t instanceof Nl?t:new Nl(e,{pub:t})},Nl.fromSecret=function(e,t){return t instanceof Nl?t:new Nl(e,{secret:t})},Nl.prototype.secret=function(){return this._secret},Fl(Nl,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),Fl(Nl,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),Fl(Nl,"privBytes",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,i=t.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),Fl(Nl,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),Fl(Nl,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),Fl(Nl,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),Nl.prototype.sign=function(e){return ql(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},Nl.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},Nl.prototype.getSecret=function(e){return ql(this._secret,"KeyPair is public only"),Fd.encode(this.secret(),e)},Nl.prototype.getPublic=function(e,t){return Fd.encode((t?[64]:[]).concat(this.pubBytes()),e)};var jl=Nl,Ll=Fd.assert,Wl=Fd.cachedProperty,Hl=Fd.parseBytes;function Gl(e,t){this.eddsa=e,"object"!=typeof t&&(t=Hl(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),Ll(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof Ud&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}Wl(Gl,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),Wl(Gl,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),Wl(Gl,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),Wl(Gl,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),Gl.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},Gl.prototype.toHex=function(){return Fd.encode(this.toBytes(),"hex").toUpperCase()};var Vl=Gl,$l=Fd.assert,Zl=Fd.parseBytes;function Yl(e){if($l("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof Yl))return new Yl(e);e=kl[e].curve;this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=vl.sha512}var Xl=Yl;Yl.prototype.sign=function(e,t){e=Zl(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),a=this.encodePoint(n),s=this.hashInt(a,r.pubBytes(),e).mul(r.priv()),o=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:o,Rencoded:a})},Yl.prototype.verify=function(e,t,r){e=Zl(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S());return t.R().add(i.pub().mul(n)).eq(a)},Yl.prototype.hashInt=function(){for(var e=this.hash(),t=0;t<arguments.length;t++)e.update(arguments[t]);return Fd.intFromLE(e.digest()).umod(this.curve.n)},Yl.prototype.keyPair=function(e){return new jl(this,e)},Yl.prototype.keyFromPublic=function(e){return jl.fromPublic(this,e)},Yl.prototype.keyFromSecret=function(e){return jl.fromSecret(this,e)},Yl.prototype.genKeyPair=function(e){e||(e={});var t=new Sl({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Nd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.curve.n.toArray()});return this.keyFromSecret(t.generate(32))},Yl.prototype.makeSignature=function(e){return e instanceof Vl?e:new Vl(this,e)},Yl.prototype.encodePoint=function(e){var t=e.getY().toArray("le",this.encodingLength);return t[this.encodingLength-1]|=e.getX().isOdd()?128:0,t},Yl.prototype.decodePoint=function(e){var t=(e=Fd.parseBytes(e)).length-1,r=e.slice(0,t).concat(-129&e[t]),i=0!=(128&e[t]),n=Fd.intFromLE(r);return this.curve.pointFromY(n,i)},Yl.prototype.encodeInt=function(e){return e.toArray("le",this.encodingLength)},Yl.prototype.decodeInt=function(e){return Fd.intFromLE(e)},Yl.prototype.isPoint=function(e){return e instanceof this.pointClass};var Ql=tt((function(e,t){var r=t;r.utils=Fd,r.rand=Nd,r.curve=cl,r.curves=kl,r.ec=zl,r.eddsa=Xl})),Jl=/*#__PURE__*/Object.freeze({__proto__:null,default:Ql,__moduleExports:Ql});export{io as AEADEncryptedDataPacket,oc as CleartextMessage,Gs as CompressedDataPacket,Cs as LiteralDataPacket,ho as MarkerPacket,tc as Message,js as OnePassSignaturePacket,Ws as PacketList,Ho as PrivateKey,Wo as PublicKey,no as PublicKeyEncryptedSessionKeyPacket,oo as PublicKeyPacket,fo as PublicSubkeyPacket,po as SecretKeyPacket,go as SecretSubkeyPacket,_o as Signature,Fs as SignaturePacket,Fo as Subkey,to as SymEncryptedIntegrityProtectedDataPacket,so as SymEncryptedSessionKeyPacket,uo as SymmetricallyEncryptedDataPacket,wo as TrustPacket,lo as UserAttributePacket,mo as UserIDPacket,de as armor,ie as config,uc as createCleartextMessage,ac as createMessage,bc as decrypt,lc as decryptKey,_c as decryptSessionKeys,yc as encrypt,pc as encryptKey,vc as encryptSessionKey,re as enums,hc as generateKey,wc as generateSessionKey,cc as readCleartextMessage,$o as readKey,Yo as readKeys,nc as readMessage,Zo as readPrivateKey,Xo as readPrivateKeys,ko as readSignature,fc as reformatKey,dc as revokeKey,mc as sign,fe as unarmor,gc as verify};
//# sourceMappingURL=openpgp.min.mjs.map

A  => src/static/openpgp.min.mjs.map +1 -0
@@ 1,1 @@
{"version":3,"file":"openpgp.min.mjs","sources":["../node_modules/@openpgp/web-stream-tools/lib/writer.js","../node_modules/@openpgp/web-stream-tools/lib/util.js","../node_modules/@openpgp/web-stream-tools/lib/node-conversions.js","../node_modules/@openpgp/web-stream-tools/lib/reader.js","../node_modules/@openpgp/web-stream-tools/lib/streams.js","../src/biginteger/native.interface.js","../src/util.js","../src/biginteger/index.js","../src/encoding/base64.js","../src/enums.js","../src/config/config.js","../src/encoding/armor.js","../src/type/keyid.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/aes.asm.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/other/utils.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/other/errors.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/aes.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/ecb.js","../src/crypto/cipher/aes.js","../src/crypto/cipher/des.js","../src/crypto/cipher/cast5.js","../src/crypto/cipher/twofish.js","../src/crypto/cipher/blowfish.js","../src/crypto/cipher/index.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/hash/sha1/sha1.asm.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/hash/hash.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/hash/sha1/sha1.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/hash/sha256/sha256.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/hash/sha256/sha256.asm.js","../node_modules/minimalistic-assert/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/ripemd.js","../src/crypto/hash/md5.js","../src/crypto/hash/index.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/cfb.js","../src/crypto/mode/cfb.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/ctr.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/cbc.js","../src/crypto/cmac.js","../src/crypto/mode/eax.js","../src/crypto/mode/ocb.js","../node_modules/@openpgp/asmcrypto.js/dist_es8/aes/gcm.js","../src/crypto/mode/gcm.js","../src/crypto/mode/index.js","../node_modules/@openpgp/tweetnacl/nacl-fast-light.js","../src/crypto/random.js","../src/crypto/public_key/prime.js","../src/crypto/pkcs1.js","../src/crypto/public_key/rsa.js","../src/crypto/public_key/elgamal.js","../src/type/oid.js","../src/crypto/public_key/elliptic/indutnyKey.js","../src/crypto/public_key/elliptic/curves.js","../src/crypto/public_key/elliptic/ecdsa.js","../src/crypto/public_key/elliptic/eddsa.js","../src/crypto/aes_kw.js","../src/crypto/pkcs5.js","../src/type/ecdh_symkey.js","../src/type/kdf_params.js","../src/crypto/crypto.js","../src/crypto/public_key/elliptic/ecdh.js","../src/crypto/public_key/index.js","../src/crypto/public_key/dsa.js","../src/crypto/signature.js","../src/crypto/index.js","../node_modules/@openpgp/pako/lib/utils/common.js","../node_modules/@openpgp/pako/lib/zlib/trees.js","../node_modules/@openpgp/pako/lib/zlib/constants.js","../node_modules/@openpgp/pako/lib/zlib/adler32.js","../node_modules/@openpgp/pako/lib/zlib/crc32.js","../node_modules/@openpgp/pako/lib/zlib/messages.js","../node_modules/@openpgp/pako/lib/zlib/deflate.js","../node_modules/@openpgp/pako/lib/utils/strings.js","../node_modules/@openpgp/pako/lib/zlib/zstream.js","../node_modules/@openpgp/pako/lib/deflate.js","../node_modules/@openpgp/pako/lib/zlib/inffast.js","../node_modules/@openpgp/pako/lib/zlib/inftrees.js","../node_modules/@openpgp/pako/lib/zlib/inflate.js","../node_modules/@openpgp/pako/lib/zlib/gzheader.js","../node_modules/@openpgp/pako/lib/inflate.js","../node_modules/@openpgp/seek-bzip/lib/bitreader.js","../node_modules/@openpgp/seek-bzip/lib/stream.js","../node_modules/@openpgp/seek-bzip/lib/crc32.js","../node_modules/@openpgp/seek-bzip/lib/index.js","../src/packet/literal_data.js","../src/packet/packet.js","../src/packet/signature.js","../src/packet/one_pass_signature.js","../src/packet/packetlist.js","../src/packet/compressed_data.js","../src/packet/sym_encrypted_integrity_protected_data.js","../src/packet/aead_encrypted_data.js","../src/packet/public_key_encrypted_session_key.js","../src/type/s2k.js","../src/packet/sym_encrypted_session_key.js","../src/packet/public_key.js","../src/packet/symmetrically_encrypted_data.js","../src/packet/marker.js","../src/packet/public_subkey.js","../src/packet/user_attribute.js","../src/packet/secret_key.js","../node_modules/email-addresses/lib/email-addresses.js","../src/packet/userid.js","../src/packet/secret_subkey.js","../src/packet/trust.js","../src/signature.js","../src/key/helper.js","../src/key/user.js","../src/key/subkey.js","../src/key/key.js","../src/key/public_key.js","../src/key/private_key.js","../src/key/factory.js","../src/message.js","../src/cleartext.js","../src/openpgp.js","../node_modules/web-streams-polyfill/dist/ponyfill.es6.mjs","../node_modules/@mattiasbuelens/web-streams-adapter/dist/web-streams-adapter.mjs","../node_modules/bn.js/lib/bn.js","../src/biginteger/bn.interface.js","../node_modules/brorand/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/@openpgp/elliptic/lib/elliptic/utils.js","../node_modules/@openpgp/elliptic/lib/elliptic/curve/base.js","../node_modules/@openpgp/elliptic/lib/elliptic/curve/short.js","../node_modules/@openpgp/elliptic/lib/elliptic/curve/mont.js","../node_modules/@openpgp/elliptic/lib/elliptic/curve/edwards.js","../node_modules/@openpgp/elliptic/lib/elliptic/curve/index.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash.js","../node_modules/@openpgp/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/@openpgp/elliptic/lib/elliptic/curves.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/@openpgp/elliptic/lib/elliptic/ec/key.js","../node_modules/@openpgp/elliptic/lib/elliptic/ec/signature.js","../node_modules/@openpgp/elliptic/lib/elliptic/ec/index.js","../node_modules/@openpgp/elliptic/lib/elliptic/eddsa/key.js","../node_modules/@openpgp/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/@openpgp/elliptic/lib/elliptic/eddsa/index.js","../node_modules/@openpgp/elliptic/lib/elliptic.js"],"sourcesContent":["const doneWritingPromise = Symbol('doneWritingPromise');\nconst doneWritingResolve = Symbol('doneWritingResolve');\nconst doneWritingReject = Symbol('doneWritingReject');\n\nconst readingIndex = Symbol('readingIndex');\n\nclass ArrayStream extends Array {\n  constructor() {\n    super();\n    this[doneWritingPromise] = new Promise((resolve, reject) => {\n      this[doneWritingResolve] = resolve;\n      this[doneWritingReject] = reject;\n    });\n    this[doneWritingPromise].catch(() => {});\n  }\n}\n\nArrayStream.prototype.getReader = function() {\n  if (this[readingIndex] === undefined) {\n    this[readingIndex] = 0;\n  }\n  return {\n    read: async () => {\n      await this[doneWritingPromise];\n      if (this[readingIndex] === this.length) {\n        return { value: undefined, done: true };\n      }\n      return { value: this[this[readingIndex]++], done: false };\n    }\n  };\n};\n\nArrayStream.prototype.readToEnd = async function(join) {\n  await this[doneWritingPromise];\n  const result = join(this.slice(this[readingIndex]));\n  this.length = 0;\n  return result;\n};\n\nArrayStream.prototype.clone = function() {\n  const clone = new ArrayStream();\n  clone[doneWritingPromise] = this[doneWritingPromise].then(() => {\n    clone.push(...this);\n  });\n  return clone;\n};\n\n/**\n * Check whether data is an ArrayStream\n * @param {Any} input  data to check\n * @returns {boolean}\n */\nfunction isArrayStream(input) {\n  return input && input.getReader && Array.isArray(input);\n}\n\n/**\n * A wrapper class over the native WritableStreamDefaultWriter.\n * It also lets you \"write data to\" array streams instead of streams.\n * @class\n */\nfunction Writer(input) {\n  if (!isArrayStream(input)) {\n    const writer = input.getWriter();\n    const releaseLock = writer.releaseLock;\n    writer.releaseLock = () => {\n      writer.closed.catch(function() {});\n      releaseLock.call(writer);\n    };\n    return writer;\n  }\n  this.stream = input;\n}\n\n/**\n * Write a chunk of data.\n * @returns {Promise<undefined>}\n * @async\n */\nWriter.prototype.write = async function(chunk) {\n  this.stream.push(chunk);\n};\n\n/**\n * Close the stream.\n * @returns {Promise<undefined>}\n * @async\n */\nWriter.prototype.close = async function() {\n  this.stream[doneWritingResolve]();\n};\n\n/**\n * Error the stream.\n * @returns {Promise<Object>}\n * @async\n */\nWriter.prototype.abort = async function(reason) {\n  this.stream[doneWritingReject](reason);\n  return reason;\n};\n\n/**\n * Release the writer's lock.\n * @returns {undefined}\n * @async\n */\nWriter.prototype.releaseLock = function() {};\n\n\nexport { ArrayStream, isArrayStream, Writer, doneWritingPromise };\n","import * as streams from './streams';\nimport { isArrayStream } from './writer';\n\nconst isNode = typeof globalThis.process === 'object' &&\n  typeof globalThis.process.versions === 'object';\n\nconst NodeReadableStream = isNode && require('stream').Readable;\n\n/**\n * Check whether data is a Stream, and if so of which type\n * @param {Any} input  data to check\n * @returns {'web'|'ponyfill'|'node'|'array'|'web-like'|false}\n */\nfunction isStream(input) {\n  if (isArrayStream(input)) {\n    return 'array';\n  }\n  if (globalThis.ReadableStream && globalThis.ReadableStream.prototype.isPrototypeOf(input)) {\n    return 'web';\n  }\n  if (streams.ReadableStream && streams.ReadableStream.prototype.isPrototypeOf(input)) {\n    return 'ponyfill';\n  }\n  if (NodeReadableStream && NodeReadableStream.prototype.isPrototypeOf(input)) {\n    return 'node';\n  }\n  if (input && input.getReader) {\n    return 'web-like';\n  }\n  return false;\n}\n\n/**\n * Check whether data is a Uint8Array\n * @param {Any} input  data to check\n * @returns {Boolean}\n */\nfunction isUint8Array(input) {\n  return Uint8Array.prototype.isPrototypeOf(input);\n}\n\n/**\n * Concat Uint8Arrays\n * @param {Array<Uint8array>} Array of Uint8Arrays to concatenate\n * @returns {Uint8array} Concatenated array\n */\nfunction concatUint8Array(arrays) {\n  if (arrays.length === 1) return arrays[0];\n\n  let totalLength = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    if (!isUint8Array(arrays[i])) {\n      throw new Error('concatUint8Array: Data must be in the form of a Uint8Array');\n    }\n\n    totalLength += arrays[i].length;\n  }\n\n  const result = new Uint8Array(totalLength);\n  let pos = 0;\n  arrays.forEach(function (element) {\n    result.set(element, pos);\n    pos += element.length;\n  });\n\n  return result;\n}\n\nexport { isNode, isStream, isArrayStream, isUint8Array, concatUint8Array };\n","import { isNode } from './util';\nimport * as streams from './streams';\n\nconst NodeBuffer = isNode && require('buffer').Buffer;\nconst NodeReadableStream = isNode && require('stream').Readable;\n\n/**\n * Web / node stream conversion functions\n * From https://github.com/gwicke/node-web-streams\n */\n\nlet nodeToWeb;\nlet webToNode;\n\nif (NodeReadableStream) {\n\n  /**\n   * Convert a Node Readable Stream to a Web ReadableStream\n   * @param {Readable} nodeStream\n   * @returns {ReadableStream}\n   */\n  nodeToWeb = function(nodeStream) {\n    let canceled = false;\n    return new streams.ReadableStream({\n      start(controller) {\n        nodeStream.pause();\n        nodeStream.on('data', chunk => {\n          if (canceled) {\n            return;\n          }\n          if (NodeBuffer.isBuffer(chunk)) {\n            chunk = new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n          }\n          controller.enqueue(chunk);\n          nodeStream.pause();\n        });\n        nodeStream.on('end', () => {\n          if (canceled) {\n            return;\n          }\n          controller.close();\n        });\n        nodeStream.on('error', e => controller.error(e));\n      },\n      pull() {\n        nodeStream.resume();\n      },\n      cancel(reason) {\n        canceled = true;\n        nodeStream.destroy(reason);\n      }\n    });\n  };\n\n\n  class NodeReadable extends NodeReadableStream {\n    constructor(webStream, options) {\n      super(options);\n      this._reader = streams.getReader(webStream);\n    }\n\n    async _read(size) {\n      try {\n        while (true) {\n          const { done, value } = await this._reader.read()\n          if (done) {\n            this.push(null);\n            break;\n          }\n          if (!this.push(value) || this._cancelling) {\n            this._reading = false;\n            break;\n          }\n        }\n      } catch(e) {\n        this.emit('error', e);\n      }\n    }\n\n    _destroy(reason) {\n      this._reader.cancel(reason);\n    }\n  }\n\n  /**\n   * Convert a Web ReadableStream to a Node Readable Stream\n   * @param {ReadableStream} webStream\n   * @param {Object} options\n   * @returns {Readable}\n   */\n  webToNode = function(webStream, options) {\n    return new NodeReadable(webStream, options);\n  };\n\n}\n\nexport { nodeToWeb, webToNode };\n","import * as streams from './streams';\nimport { isUint8Array } from './util';\n\nconst doneReadingSet = new WeakSet();\nconst externalBuffer = Symbol('externalBuffer');\n\n/**\n * A wrapper class over the native ReadableStreamDefaultReader.\n * This additionally implements pushing back data on the stream, which\n * lets us implement peeking and a host of convenience functions.\n * It also lets you read data other than streams, such as a Uint8Array.\n * @class\n */\nfunction Reader(input) {\n  this.stream = input;\n  if (input[externalBuffer]) {\n    this[externalBuffer] = input[externalBuffer].slice();\n  }\n  if (streams.isArrayStream(input)) {\n    const reader = input.getReader();\n    this._read = reader.read.bind(reader);\n    this._releaseLock = () => {};\n    this._cancel = () => {};\n    return;\n  }\n  let streamType = streams.isStream(input);\n  if (streamType === 'node') {\n    input = streams.nodeToWeb(input);\n  }\n  if (streamType) {\n    const reader = input.getReader();\n    this._read = reader.read.bind(reader);\n    this._releaseLock = () => {\n      reader.closed.catch(function() {});\n      reader.releaseLock();\n    };\n    this._cancel = reader.cancel.bind(reader);\n    return;\n  }\n  let doneReading = false;\n  this._read = async () => {\n    if (doneReading || doneReadingSet.has(input)) {\n      return { value: undefined, done: true };\n    }\n    doneReading = true;\n    return { value: input, done: false };\n  };\n  this._releaseLock = () => {\n    if (doneReading) {\n      try {\n        doneReadingSet.add(input);\n      } catch(e) {}\n    }\n  };\n}\n\n/**\n * Read a chunk of data.\n * @returns {Promise<Object>} Either { done: false, value: Uint8Array | String } or { done: true, value: undefined }\n * @async\n */\nReader.prototype.read = async function() {\n  if (this[externalBuffer] && this[externalBuffer].length) {\n    const value = this[externalBuffer].shift();\n    return { done: false, value };\n  }\n  return this._read();\n};\n\n/**\n * Allow others to read the stream.\n */\nReader.prototype.releaseLock = function() {\n  if (this[externalBuffer]) {\n    this.stream[externalBuffer] = this[externalBuffer];\n  }\n  this._releaseLock();\n};\n\n/**\n * Cancel the stream.\n */\nReader.prototype.cancel = function(reason) {\n  return this._cancel(reason);\n};\n\n/**\n * Read up to and including the first \\n character.\n * @returns {Promise<String|Undefined>}\n * @async\n */\nReader.prototype.readLine = async function() {\n  let buffer = [];\n  let returnVal;\n  while (!returnVal) {\n    let { done, value } = await this.read();\n    value += '';\n    if (done) {\n      if (buffer.length) return streams.concat(buffer);\n      return;\n    }\n    const lineEndIndex = value.indexOf('\\n') + 1;\n    if (lineEndIndex) {\n      returnVal = streams.concat(buffer.concat(value.substr(0, lineEndIndex)));\n      buffer = [];\n    }\n    if (lineEndIndex !== value.length) {\n      buffer.push(value.substr(lineEndIndex));\n    }\n  }\n  this.unshift(...buffer);\n  return returnVal;\n};\n\n/**\n * Read a single byte/character.\n * @returns {Promise<Number|String|Undefined>}\n * @async\n */\nReader.prototype.readByte = async function() {\n  const { done, value } = await this.read();\n  if (done) return;\n  const byte = value[0];\n  this.unshift(streams.slice(value, 1));\n  return byte;\n};\n\n/**\n * Read a specific amount of bytes/characters, unless the stream ends before that amount.\n * @returns {Promise<Uint8Array|String|Undefined>}\n * @async\n */\nReader.prototype.readBytes = async function(length) {\n  const buffer = [];\n  let bufferLength = 0;\n  while (true) {\n    const { done, value } = await this.read();\n    if (done) {\n      if (buffer.length) return streams.concat(buffer);\n      return;\n    }\n    buffer.push(value);\n    bufferLength += value.length;\n    if (bufferLength >= length) {\n      const bufferConcat = streams.concat(buffer);\n      this.unshift(streams.slice(bufferConcat, length));\n      return streams.slice(bufferConcat, 0, length);\n    }\n  }\n};\n\n/**\n * Peek (look ahead) a specific amount of bytes/characters, unless the stream ends before that amount.\n * @returns {Promise<Uint8Array|String|Undefined>}\n * @async\n */\nReader.prototype.peekBytes = async function(length) {\n  const bytes = await this.readBytes(length);\n  this.unshift(bytes);\n  return bytes;\n};\n\n/**\n * Push data to the front of the stream.\n * Data must have been read in the last call to read*.\n * @param {...(Uint8Array|String|Undefined)} values\n */\nReader.prototype.unshift = function(...values) {\n  if (!this[externalBuffer]) {\n    this[externalBuffer] = [];\n  }\n  if (\n    values.length === 1 && isUint8Array(values[0]) &&\n    this[externalBuffer].length && values[0].length &&\n    this[externalBuffer][0].byteOffset >= values[0].length\n  ) {\n    this[externalBuffer][0] = new Uint8Array(\n      this[externalBuffer][0].buffer,\n      this[externalBuffer][0].byteOffset - values[0].length,\n      this[externalBuffer][0].byteLength + values[0].length\n    );\n    return;\n  }\n  this[externalBuffer].unshift(...values.filter(value => value && value.length));\n};\n\n/**\n * Read the stream to the end and return its contents, concatenated by the join function (defaults to streams.concat).\n * @param {Function} join\n * @returns {Promise<Uint8array|String|Any>} the return value of join()\n * @async\n */\nReader.prototype.readToEnd = async function(join=streams.concat) {\n  const result = [];\n  while (true) {\n    const { done, value } = await this.read();\n    if (done) break;\n    result.push(value);\n  }\n  return join(result);\n};\n\nexport { Reader, externalBuffer };\n","import { isNode, isStream, isArrayStream, isUint8Array, concatUint8Array } from './util';\nimport { nodeToWeb, webToNode } from './node-conversions';\nimport { Reader, externalBuffer } from './reader';\nimport { ArrayStream, Writer } from './writer';\n\nlet { ReadableStream, WritableStream, TransformStream } = globalThis;\n\nlet toPonyfillReadable, toNativeReadable;\n\nasync function loadStreamsPonyfill() {\n  if (TransformStream) {\n    return;\n  }\n\n  const [ponyfill, adapter] = await Promise.all([\n    import('web-streams-polyfill/ponyfill/es6'),\n    import('@mattiasbuelens/web-streams-adapter')\n  ]);\n\n  ({ ReadableStream, WritableStream, TransformStream } = ponyfill);\n\n  const { createReadableStreamWrapper } = adapter;\n\n  if (globalThis.ReadableStream && ReadableStream !== globalThis.ReadableStream) {\n    toPonyfillReadable = createReadableStreamWrapper(ReadableStream);\n    toNativeReadable = createReadableStreamWrapper(globalThis.ReadableStream);\n  }\n}\n\nconst NodeBuffer = isNode && require('buffer').Buffer;\n\n/**\n * Convert data to Stream\n * @param {ReadableStream|Uint8array|String} input  data to convert\n * @returns {ReadableStream} Converted data\n */\nfunction toStream(input) {\n  let streamType = isStream(input);\n  if (streamType === 'node') {\n    return nodeToWeb(input);\n  }\n  if (streamType === 'web' && toPonyfillReadable) {\n    return toPonyfillReadable(input);\n  }\n  if (streamType) {\n    return input;\n  }\n  return new ReadableStream({\n    start(controller) {\n      controller.enqueue(input);\n      controller.close();\n    }\n  });\n}\n\n/**\n * Convert data to ArrayStream\n * @param {Object} input  data to convert\n * @returns {ArrayStream} Converted data\n */\nfunction toArrayStream(input) {\n  if (isStream(input)) {\n    return input;\n  }\n  const stream = new ArrayStream();\n  (async () => {\n    const writer = getWriter(stream);\n    await writer.write(input);\n    await writer.close();\n  })();\n  return stream;\n}\n\n/**\n * Concat a list of Uint8Arrays, Strings or Streams\n * The caller should not mix Uint8Arrays with Strings, but may mix Streams with non-Streams.\n * @param {Array<Uint8array|String|ReadableStream>} Array of Uint8Arrays/Strings/Streams to concatenate\n * @returns {Uint8array|String|ReadableStream} Concatenated array\n */\nfunction concat(list) {\n  if (list.some(stream => isStream(stream) && !isArrayStream(stream))) {\n    return concatStream(list);\n  }\n  if (list.some(stream => isArrayStream(stream))) {\n    return concatArrayStream(list);\n  }\n  if (typeof list[0] === 'string') {\n    return list.join('');\n  }\n  if (NodeBuffer && NodeBuffer.isBuffer(list[0])) {\n    return NodeBuffer.concat(list);\n  }\n  return concatUint8Array(list);\n}\n\n/**\n * Concat a list of Streams\n * @param {Array<ReadableStream|Uint8array|String>} list  Array of Uint8Arrays/Strings/Streams to concatenate\n * @returns {ReadableStream} Concatenated list\n */\nfunction concatStream(list) {\n  list = list.map(toStream);\n  const transform = transformWithCancel(async function(reason) {\n    await Promise.all(transforms.map(stream => cancel(stream, reason)));\n  });\n  let prev = Promise.resolve();\n  const transforms = list.map((stream, i) => transformPair(stream, (readable, writable) => {\n    prev = prev.then(() => pipe(readable, transform.writable, {\n      preventClose: i !== list.length - 1\n    }));\n    return prev;\n  }));\n  return transform.readable;\n}\n\n/**\n * Concat a list of ArrayStreams\n * @param {Array<ArrayStream|Uint8array|String>} list  Array of Uint8Arrays/Strings/ArrayStreams to concatenate\n * @returns {ArrayStream} Concatenated streams\n */\nfunction concatArrayStream(list) {\n  const result = new ArrayStream();\n  let prev = Promise.resolve();\n  list.forEach((stream, i) => {\n    prev = prev.then(() => pipe(stream, result, {\n      preventClose: i !== list.length - 1\n    }));\n    return prev;\n  });\n  return result;\n}\n\n/**\n * Get a Reader\n * @param {ReadableStream|Uint8array|String} input\n * @returns {Reader}\n */\nfunction getReader(input) {\n  return new Reader(input);\n}\n\n/**\n * Get a Writer\n * @param {WritableStream} input\n * @returns {Writer}\n */\nfunction getWriter(input) {\n  return new Writer(input);\n}\n\n/**\n * Pipe a readable stream to a writable stream. Don't throw on input stream errors, but forward them to the output stream.\n * @param {ReadableStream|Uint8array|String} input\n * @param {WritableStream} target\n * @param {Object} (optional) options\n * @returns {Promise<undefined>} Promise indicating when piping has finished (input stream closed or errored)\n * @async\n */\nasync function pipe(input, target, {\n  preventClose = false,\n  preventAbort = false,\n  preventCancel = false\n} = {}) {\n  if (isStream(input) && !isArrayStream(input)) {\n    input = toStream(input);\n    try {\n      if (input[externalBuffer]) {\n        const writer = getWriter(target);\n        for (let i = 0; i < input[externalBuffer].length; i++) {\n          await writer.ready;\n          await writer.write(input[externalBuffer][i]);\n        }\n        writer.releaseLock();\n      }\n      await input.pipeTo(target, {\n        preventClose,\n        preventAbort,\n        preventCancel\n      });\n    } catch(e) {}\n    return;\n  }\n  input = toArrayStream(input);\n  const reader = getReader(input);\n  const writer = getWriter(target);\n  try {\n    while (true) {\n      await writer.ready;\n      const { done, value } = await reader.read();\n      if (done) {\n        if (!preventClose) await writer.close();\n        break;\n      }\n      await writer.write(value);\n    }\n  } catch (e) {\n    if (!preventAbort) await writer.abort(e);\n  } finally {\n    reader.releaseLock();\n    writer.releaseLock();\n  }\n}\n\n/**\n * Pipe a readable stream through a transform stream.\n * @param {ReadableStream|Uint8array|String} input\n * @param {Object} (optional) options\n * @returns {ReadableStream} transformed stream\n */\nfunction transformRaw(input, options) {\n  const transformStream = new TransformStream(options);\n  pipe(input, transformStream.writable);\n  return transformStream.readable;\n}\n\n/**\n * Create a cancelable TransformStream.\n * @param {Function} cancel\n * @returns {TransformStream}\n */\nfunction transformWithCancel(cancel) {\n  let pulled = false;\n  let backpressureChangePromiseResolve;\n  let outputController;\n  return {\n    readable: new ReadableStream({\n      start(controller) {\n        outputController = controller;\n      },\n      pull() {\n        if (backpressureChangePromiseResolve) {\n          backpressureChangePromiseResolve();\n        } else {\n          pulled = true;\n        }\n      },\n      cancel\n    }, {highWaterMark: 0}),\n    writable: new WritableStream({\n      write: async function(chunk) {\n        outputController.enqueue(chunk);\n        if (!pulled) {\n          await new Promise(resolve => {\n            backpressureChangePromiseResolve = resolve;\n          });\n          backpressureChangePromiseResolve = null;\n        } else {\n          pulled = false;\n        }\n      },\n      close: outputController.close.bind(outputController),\n      abort: outputController.error.bind(outputController)\n    })\n  };\n}\n\n/**\n * Transform a stream using helper functions which are called on each chunk, and on stream close, respectively.\n * @param {ReadableStream|Uint8array|String} input\n * @param {Function} process\n * @param {Function} finish\n * @returns {ReadableStream|Uint8array|String}\n */\nfunction transform(input, process = () => undefined, finish = () => undefined) {\n  if (isArrayStream(input)) {\n    const output = new ArrayStream();\n    (async () => {\n      const data = await readToEnd(input);\n      const result1 = process(data);\n      const result2 = finish();\n      let result;\n      if (result1 !== undefined && result2 !== undefined) result = concat([result1, result2]);\n      else result = result1 !== undefined ? result1 : result2;\n      const writer = getWriter(output);\n      await writer.write(result);\n      await writer.close();\n    })();\n    return output;\n  }\n  if (isStream(input)) {\n    return transformRaw(input, {\n      async transform(value, controller) {\n        try {\n          const result = await process(value);\n          if (result !== undefined) controller.enqueue(result);\n        } catch(e) {\n          controller.error(e);\n        }\n      },\n      async flush(controller) {\n        try {\n          const result = await finish();\n          if (result !== undefined) controller.enqueue(result);\n        } catch(e) {\n          controller.error(e);\n        }\n      }\n    });\n  }\n  const result1 = process(input);\n  const result2 = finish();\n  if (result1 !== undefined && result2 !== undefined) return concat([result1, result2]);\n  return result1 !== undefined ? result1 : result2;\n}\n\n/**\n * Transform a stream using a helper function which is passed a readable and a writable stream.\n *   This function also maintains the possibility to cancel the input stream,\n *   and does so on cancelation of the output stream, despite cancelation\n *   normally being impossible when the input stream is being read from.\n * @param {ReadableStream|Uint8array|String} input\n * @param {Function} fn\n * @returns {ReadableStream}\n */\nfunction transformPair(input, fn) {\n  if (isStream(input) && !isArrayStream(input)) {\n    let incomingTransformController;\n    const incoming = new TransformStream({\n      start(controller) {\n        incomingTransformController = controller;\n      }\n    });\n\n    const pipeDonePromise = pipe(input, incoming.writable);\n\n    const outgoing = transformWithCancel(async function(reason) {\n      incomingTransformController.error(reason);\n      await pipeDonePromise;\n      await new Promise(setTimeout);\n    });\n    fn(incoming.readable, outgoing.writable);\n    return outgoing.readable;\n  }\n  input = toArrayStream(input);\n  const output = new ArrayStream();\n  fn(input, output);\n  return output;\n}\n\n/**\n * Parse a stream using a helper function which is passed a Reader.\n *   The reader additionally has a remainder() method which returns a\n *   stream pointing to the remainder of input, and is linked to input\n *   for cancelation.\n * @param {ReadableStream|Uint8array|String} input\n * @param {Function} fn\n * @returns {Any} the return value of fn()\n */\nfunction parse(input, fn) {\n  let returnValue;\n  const transformed = transformPair(input, (readable, writable) => {\n    const reader = getReader(readable);\n    reader.remainder = () => {\n      reader.releaseLock();\n      pipe(readable, writable);\n      return transformed;\n    };\n    returnValue = fn(reader);\n  });\n  return returnValue;\n}\n\n/**\n * Tee a Stream for reading it twice. The input stream can no longer be read after tee()ing.\n *   Reading either of the two returned streams will pull from the input stream.\n *   The input stream will only be canceled if both of the returned streams are canceled.\n * @param {ReadableStream|Uint8array|String} input\n * @returns {Array<ReadableStream|Uint8array|String>} array containing two copies of input\n */\nfunction tee(input) {\n  if (isArrayStream(input)) {\n    throw new Error('ArrayStream cannot be tee()d, use clone() instead');\n  }\n  if (isStream(input)) {\n    const teed = toStream(input).tee();\n    teed[0][externalBuffer] = teed[1][externalBuffer] = input[externalBuffer];\n    return teed;\n  }\n  return [slice(input), slice(input)];\n}\n\n/**\n * Clone a Stream for reading it twice. The input stream can still be read after clone()ing.\n *   Reading from the clone will pull from the input stream.\n *   The input stream will only be canceled if both the clone and the input stream are canceled.\n * @param {ReadableStream|Uint8array|String} input\n * @returns {ReadableStream|Uint8array|String} cloned input\n */\nfunction clone(input) {\n  if (isArrayStream(input)) {\n    return input.clone();\n  }\n  if (isStream(input)) {\n    const teed = tee(input);\n    overwrite(input, teed[0]);\n    return teed[1];\n  }\n  return slice(input);\n}\n\n/**\n * Clone a Stream for reading it twice. Data will arrive at the same rate as the input stream is being read.\n *   Reading from the clone will NOT pull from the input stream. Data only arrives when reading the input stream.\n *   The input stream will NOT be canceled if the clone is canceled, only if the input stream are canceled.\n *   If the input stream is canceled, the clone will be errored.\n * @param {ReadableStream|Uint8array|String} input\n * @returns {ReadableStream|Uint8array|String} cloned input\n */\nfunction passiveClone(input) {\n  if (isArrayStream(input)) {\n    return clone(input);\n  }\n  if (isStream(input)) {\n    return new ReadableStream({\n      start(controller) {\n        const transformed = transformPair(input, async (readable, writable) => {\n          const reader = getReader(readable);\n          const writer = getWriter(writable);\n          try {\n            while (true) {\n              await writer.ready;\n              const { done, value } = await reader.read();\n              if (done) {\n                try { controller.close(); } catch(e) {}\n                await writer.close();\n                return;\n              }\n              try { controller.enqueue(value); } catch(e) {}\n              await writer.write(value);\n            }\n          } catch(e) {\n            controller.error(e);\n            await writer.abort(e);\n          }\n        });\n        overwrite(input, transformed);\n      }\n    });\n  }\n  return slice(input);\n}\n\n/**\n * Modify a stream object to point to a different stream object.\n *   This is used internally by clone() and passiveClone() to provide an abstraction over tee().\n * @param {ReadableStream} input\n * @param {ReadableStream} clone\n */\nfunction overwrite(input, clone) {\n  // Overwrite input.getReader, input.locked, etc to point to clone\n  Object.entries(Object.getOwnPropertyDescriptors(input.constructor.prototype)).forEach(([name, descriptor]) => {\n    if (name === 'constructor') {\n      return;\n    }\n    if (descriptor.value) {\n      descriptor.value = descriptor.value.bind(clone);\n    } else {\n      descriptor.get = descriptor.get.bind(clone);\n    }\n    Object.defineProperty(input, name, descriptor);\n  });\n}\n\n/**\n * Return a stream pointing to a part of the input stream.\n * @param {ReadableStream|Uint8array|String} input\n * @returns {ReadableStream|Uint8array|String} clone\n */\nfunction slice(input, begin=0, end=Infinity) {\n  if (isArrayStream(input)) {\n    throw new Error('Not implemented');\n  }\n  if (isStream(input)) {\n    if (begin >= 0 && end >= 0) {\n      let bytesRead = 0;\n      return transformRaw(input, {\n        transform(value, controller) {\n          if (bytesRead < end) {\n            if (bytesRead + value.length >= begin) {\n              controller.enqueue(slice(value, Math.max(begin - bytesRead, 0), end - bytesRead));\n            }\n            bytesRead += value.length;\n          } else {\n            controller.terminate();\n          }\n        }\n      });\n    }\n    if (begin < 0 && (end < 0 || end === Infinity)) {\n      let lastBytes = [];\n      return transform(input, value => {\n        if (value.length >= -begin) lastBytes = [value];\n        else lastBytes.push(value);\n      }, () => slice(concat(lastBytes), begin, end));\n    }\n    if (begin === 0 && end < 0) {\n      let lastBytes;\n      return transform(input, value => {\n        const returnValue = lastBytes ? concat([lastBytes, value]) : value;\n        if (returnValue.length >= -end) {\n          lastBytes = slice(returnValue, end);\n          return slice(returnValue, begin, end);\n        } else {\n          lastBytes = returnValue;\n        }\n      });\n    }\n    console.warn(`stream.slice(input, ${begin}, ${end}) not implemented efficiently.`);\n    return fromAsync(async () => slice(await readToEnd(input), begin, end));\n  }\n  if (input[externalBuffer]) {\n    input = concat(input[externalBuffer].concat([input]));\n  }\n  if (isUint8Array(input) && !(NodeBuffer && NodeBuffer.isBuffer(input))) {\n    if (end === Infinity) end = input.length;\n    return input.subarray(begin, end);\n  }\n  return input.slice(begin, end);\n}\n\n/**\n * Read a stream to the end and return its contents, concatenated by the join function (defaults to concat).\n * @param {ReadableStream|Uint8array|String} input\n * @param {Function} join\n * @returns {Promise<Uint8array|String|Any>} the return value of join()\n * @async\n */\nasync function readToEnd(input, join=concat) {\n  if (isArrayStream(input)) {\n    return input.readToEnd(join);\n  }\n  if (isStream(input)) {\n    return getReader(input).readToEnd(join);\n  }\n  return input;\n}\n\n/**\n * Cancel a stream.\n * @param {ReadableStream|Uint8array|String} input\n * @param {Any} reason\n * @returns {Promise<Any>} indicates when the stream has been canceled\n * @async\n */\nasync function cancel(input, reason) {\n  if (isStream(input)) {\n    if (input.cancel) {\n      return input.cancel(reason);\n    }\n    if (input.destroy) {\n      input.destroy(reason);\n      await new Promise(setTimeout);\n      return reason;\n    }\n  }\n}\n\n/**\n * Convert an async function to an ArrayStream. When the function returns, its return value is written to the stream.\n * @param {Function} fn\n * @returns {ArrayStream}\n */\nfunction fromAsync(fn) {\n  const arrayStream = new ArrayStream();\n  (async () => {\n    const writer = getWriter(arrayStream);\n    try {\n      await writer.write(await fn());\n      await writer.close();\n    } catch (e) {\n      await writer.abort(e);\n    }\n  })();\n  return arrayStream;\n}\n\n\nexport { ReadableStream, WritableStream, TransformStream, ArrayStream, loadStreamsPonyfill, isStream, isArrayStream, isUint8Array, toStream, toPonyfillReadable, toNativeReadable, concatUint8Array, concatStream, concat, getReader, getWriter, pipe, transformRaw, transform, transformPair, parse, clone, passiveClone, slice, readToEnd, cancel, fromAsync, nodeToWeb, webToNode };\n","/* eslint-disable new-cap */\n\n/**\n * @fileoverview\n * BigInteger implementation of basic operations\n * that wraps the native BigInt library.\n * Operations are not constant time,\n * but we try and limit timing leakage where we can\n * @module biginteger/native\n * @private\n */\n\n/**\n * @private\n */\nexport default class BigInteger {\n  /**\n   * Get a BigInteger (input must be big endian for strings and arrays)\n   * @param {Number|String|Uint8Array} n - Value to convert\n   * @throws {Error} on null or undefined input\n   */\n  constructor(n) {\n    if (n === undefined) {\n      throw new Error('Invalid BigInteger input');\n    }\n\n    if (n instanceof Uint8Array) {\n      const bytes = n;\n      const hex = new Array(bytes.length);\n      for (let i = 0; i < bytes.length; i++) {\n        const hexByte = bytes[i].toString(16);\n        hex[i] = (bytes[i] <= 0xF) ? ('0' + hexByte) : hexByte;\n      }\n      this.value = BigInt('0x0' + hex.join(''));\n    } else {\n      this.value = BigInt(n);\n    }\n  }\n\n  clone() {\n    return new BigInteger(this.value);\n  }\n\n  /**\n   * BigInteger increment in place\n   */\n  iinc() {\n    this.value++;\n    return this;\n  }\n\n  /**\n   * BigInteger increment\n   * @returns {BigInteger} this + 1.\n   */\n  inc() {\n    return this.clone().iinc();\n  }\n\n  /**\n   * BigInteger decrement in place\n   */\n  idec() {\n    this.value--;\n    return this;\n  }\n\n  /**\n   * BigInteger decrement\n   * @returns {BigInteger} this - 1.\n   */\n  dec() {\n    return this.clone().idec();\n  }\n\n  /**\n   * BigInteger addition in place\n   * @param {BigInteger} x - Value to add\n   */\n  iadd(x) {\n    this.value += x.value;\n    return this;\n  }\n\n  /**\n   * BigInteger addition\n   * @param {BigInteger} x - Value to add\n   * @returns {BigInteger} this + x.\n   */\n  add(x) {\n    return this.clone().iadd(x);\n  }\n\n  /**\n   * BigInteger subtraction in place\n   * @param {BigInteger} x - Value to subtract\n   */\n  isub(x) {\n    this.value -= x.value;\n    return this;\n  }\n\n  /**\n   * BigInteger subtraction\n   * @param {BigInteger} x - Value to subtract\n   * @returns {BigInteger} this - x.\n   */\n  sub(x) {\n    return this.clone().isub(x);\n  }\n\n  /**\n   * BigInteger multiplication in place\n   * @param {BigInteger} x - Value to multiply\n   */\n  imul(x) {\n    this.value *= x.value;\n    return this;\n  }\n\n  /**\n   * BigInteger multiplication\n   * @param {BigInteger} x - Value to multiply\n   * @returns {BigInteger} this * x.\n   */\n  mul(x) {\n    return this.clone().imul(x);\n  }\n\n  /**\n   * Compute value modulo m, in place\n   * @param {BigInteger} m - Modulo\n   */\n  imod(m) {\n    this.value %= m.value;\n    if (this.isNegative()) {\n      this.iadd(m);\n    }\n    return this;\n  }\n\n  /**\n   * Compute value modulo m\n   * @param {BigInteger} m - Modulo\n   * @returns {BigInteger} this mod m.\n   */\n  mod(m) {\n    return this.clone().imod(m);\n  }\n\n  /**\n   * Compute modular exponentiation using square and multiply\n   * @param {BigInteger} e - Exponent\n   * @param {BigInteger} n - Modulo\n   * @returns {BigInteger} this ** e mod n.\n   */\n  modExp(e, n) {\n    if (n.isZero()) throw Error('Modulo cannot be zero');\n    if (n.isOne()) return new BigInteger(0);\n    if (e.isNegative()) throw Error('Unsopported negative exponent');\n\n    let exp = e.value;\n    let x = this.value;\n\n    x %= n.value;\n    let r = BigInt(1);\n    while (exp > BigInt(0)) {\n      const lsb = exp & BigInt(1);\n      exp >>= BigInt(1); // e / 2\n      // Always compute multiplication step, to reduce timing leakage\n      const rx = (r * x) % n.value;\n      // Update r only if lsb is 1 (odd exponent)\n      r = lsb ? rx : r;\n      x = (x * x) % n.value; // Square\n    }\n    return new BigInteger(r);\n  }\n\n\n  /**\n   * Compute the inverse of this value modulo n\n   * Note: this and and n must be relatively prime\n   * @param {BigInteger} n - Modulo\n   * @returns {BigInteger} x such that this*x = 1 mod n\n   * @throws {Error} if the inverse does not exist\n   */\n  modInv(n) {\n    const { gcd, x } = this._egcd(n);\n    if (!gcd.isOne()) {\n      throw new Error('Inverse does not exist');\n    }\n    return x.add(n).mod(n);\n  }\n\n  /**\n   * Extended Eucleadian algorithm (http://anh.cs.luc.edu/331/notes/xgcd.pdf)\n   * Given a = this and b, compute (x, y) such that ax + by = gdc(a, b)\n   * @param {BigInteger} b - Second operand\n   * @returns {{ gcd, x, y: BigInteger }}\n   */\n  _egcd(b) {\n    let x = BigInt(0);\n    let y = BigInt(1);\n    let xPrev = BigInt(1);\n    let yPrev = BigInt(0);\n\n    let a = this.value;\n    b = b.value;\n\n    while (b !== BigInt(0)) {\n      const q = a / b;\n      let tmp = x;\n      x = xPrev - q * x;\n      xPrev = tmp;\n\n      tmp = y;\n      y = yPrev - q * y;\n      yPrev = tmp;\n\n      tmp = b;\n      b = a % b;\n      a = tmp;\n    }\n\n    return {\n      x: new BigInteger(xPrev),\n      y: new BigInteger(yPrev),\n      gcd: new BigInteger(a)\n    };\n  }\n\n  /**\n   * Compute greatest common divisor between this and n\n   * @param {BigInteger} b - Operand\n   * @returns {BigInteger} gcd\n   */\n  gcd(b) {\n    let a = this.value;\n    b = b.value;\n    while (b !== BigInt(0)) {\n      const tmp = b;\n      b = a % b;\n      a = tmp;\n    }\n    return new BigInteger(a);\n  }\n\n  /**\n   * Shift this to the left by x, in place\n   * @param {BigInteger} x - Shift value\n   */\n  ileftShift(x) {\n    this.value <<= x.value;\n    return this;\n  }\n\n  /**\n   * Shift this to the left by x\n   * @param {BigInteger} x - Shift value\n   * @returns {BigInteger} this << x.\n   */\n  leftShift(x) {\n    return this.clone().ileftShift(x);\n  }\n\n  /**\n   * Shift this to the right by x, in place\n   * @param {BigInteger} x - Shift value\n   */\n  irightShift(x) {\n    this.value >>= x.value;\n    return this;\n  }\n\n  /**\n   * Shift this to the right by x\n   * @param {BigInteger} x - Shift value\n   * @returns {BigInteger} this >> x.\n   */\n  rightShift(x) {\n    return this.clone().irightShift(x);\n  }\n\n  /**\n   * Whether this value is equal to x\n   * @param {BigInteger} x\n   * @returns {Boolean}\n   */\n  equal(x) {\n    return this.value === x.value;\n  }\n\n  /**\n   * Whether this value is less than x\n   * @param {BigInteger} x\n   * @returns {Boolean}\n   */\n  lt(x) {\n    return this.value < x.value;\n  }\n\n  /**\n   * Whether this value is less than or equal to x\n   * @param {BigInteger} x\n   * @returns {Boolean}\n   */\n  lte(x) {\n    return this.value <= x.value;\n  }\n\n  /**\n   * Whether this value is greater than x\n   * @param {BigInteger} x\n   * @returns {Boolean}\n   */\n  gt(x) {\n    return this.value > x.value;\n  }\n\n  /**\n   * Whether this value is greater than or equal to x\n   * @param {BigInteger} x\n   * @returns {Boolean}\n   */\n  gte(x) {\n    return this.value >= x.value;\n  }\n\n  isZero() {\n    return this.value === BigInt(0);\n  }\n\n  isOne() {\n    return this.value === BigInt(1);\n  }\n\n  isNegative() {\n    return this.value < BigInt(0);\n  }\n\n  isEven() {\n    return !(this.value & BigInt(1));\n  }\n\n  abs() {\n    const res = this.clone();\n    if (this.isNegative()) {\n      res.value = -res.value;\n    }\n    return res;\n  }\n\n  /**\n   * Get this value as a string\n   * @returns {String} this value.\n   */\n  toString() {\n    return this.value.toString();\n  }\n\n  /**\n   * Get this value as an exact Number (max 53 bits)\n   * Fails if this value is too large\n   * @returns {Number}\n   */\n  toNumber() {\n    const number = Number(this.value);\n    if (number > Number.MAX_SAFE_INTEGER) {\n      // We throw and error to conform with the bn.js implementation\n      throw new Error('Number can only safely store up to 53 bits');\n    }\n    return number;\n  }\n\n  /**\n   * Get value of i-th bit\n   * @param {Number} i - Bit index\n   * @returns {Number} Bit value.\n   */\n  getBit(i) {\n    const bit = (this.value >> BigInt(i)) & BigInt(1);\n    return (bit === BigInt(0)) ? 0 : 1;\n  }\n\n  /**\n   * Compute bit length\n   * @returns {Number} Bit length.\n   */\n  bitLength() {\n    const zero = new BigInteger(0);\n    const one = new BigInteger(1);\n    const negOne = new BigInteger(-1);\n\n    // -1n >> -1n is -1n\n    // 1n >> 1n is 0n\n    const target = this.isNegative() ? negOne : zero;\n    let bitlen = 1;\n    const tmp = this.clone();\n    while (!tmp.irightShift(one).equal(target)) {\n      bitlen++;\n    }\n    return bitlen;\n  }\n\n  /**\n   * Compute byte length\n   * @returns {Number} Byte length.\n   */\n  byteLength() {\n    const zero = new BigInteger(0);\n    const negOne = new BigInteger(-1);\n\n    const target = this.isNegative() ? negOne : zero;\n    const eight = new BigInteger(8);\n    let len = 1;\n    const tmp = this.clone();\n    while (!tmp.irightShift(eight).equal(target)) {\n      len++;\n    }\n    return len;\n  }\n\n  /**\n   * Get Uint8Array representation of this number\n   * @param {String} endian - Endianess of output array (defaults to 'be')\n   * @param {Number} length - Of output array\n   * @returns {Uint8Array}\n   */\n  toUint8Array(endian = 'be', length) {\n    // we get and parse the hex string (https://coolaj86.com/articles/convert-js-bigints-to-typedarrays/)\n    // this is faster than shift+mod iterations\n    let hex = this.value.toString(16);\n    if (hex.length % 2 === 1) {\n      hex = '0' + hex;\n    }\n\n    const rawLength = hex.length / 2;\n    const bytes = new Uint8Array(length || rawLength);\n    // parse hex\n    const offset = length ? (length - rawLength) : 0;\n    let i = 0;\n    while (i < rawLength) {\n      bytes[i + offset] = parseInt(hex.slice(2 * i, 2 * i + 2), 16);\n      i++;\n    }\n\n    if (endian !== 'be') {\n      bytes.reverse();\n    }\n\n    return bytes;\n  }\n}\n","// GPG4Browsers - An OpenPGP implementation in javascript\n// Copyright (C) 2011 Recurity Labs GmbH\n//\n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 3.0 of the License, or (at your option) any later version.\n//\n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n// Lesser General Public License for more details.\n//\n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\n/* eslint-disable no-console */\n\n/**\n * This object contains utility functions\n * @module util\n * @private\n */\n\nimport * as stream from '@openpgp/web-stream-tools';\nimport { getBigInteger } from './biginteger';\n\nconst debugMode = (() => {\n  try {\n    return process.env.NODE_ENV === 'development'; // eslint-disable-line no-process-env\n  } catch (e) {}\n  return false;\n})();\n\nconst util = {\n  isString: function(data) {\n    return typeof data === 'string' || String.prototype.isPrototypeOf(data);\n  },\n\n  isArray: function(data) {\n    return Array.prototype.isPrototypeOf(data);\n  },\n\n  isUint8Array: stream.isUint8Array,\n\n  isStream: stream.isStream,\n\n  readNumber: function (bytes) {\n    let n = 0;\n    for (let i = 0; i < bytes.length; i++) {\n      n += (256 ** i) * bytes[bytes.length - 1 - i];\n    }\n    return n;\n  },\n\n  writeNumber: function (n, bytes) {\n    const b = new Uint8Array(bytes);\n    for (let i = 0; i < bytes; i++) {\n      b[i] = (n >> (8 * (bytes - i - 1))) & 0xFF;\n    }\n\n    return b;\n  },\n\n  readDate: function (bytes) {\n    const n = util.readNumber(bytes);\n    const d = new Date(n * 1000);\n    return d;\n  },\n\n  writeDate: function (time) {\n    const numeric = Math.floor(time.getTime() / 1000);\n\n    return util.writeNumber(numeric, 4);\n  },\n\n  normalizeDate: function (time = Date.now()) {\n    return time === null || time === Infinity ? time : new Date(Math.floor(+time / 1000) * 1000);\n  },\n\n  /**\n   * Read one MPI from bytes in input\n   * @param {Uint8Array} bytes - Input data to parse\n   * @returns {Uint8Array} Parsed MPI.\n   */\n  readMPI: function (bytes) {\n    const bits = (bytes[0] << 8) | bytes[1];\n    const bytelen = (bits + 7) >>> 3;\n    return bytes.subarray(2, 2 + bytelen);\n  },\n\n  /**\n   * Left-pad Uint8Array to length by adding 0x0 bytes\n   * @param {Uint8Array} bytes - Data to pad\n   * @param {Number} length - Padded length\n   * @returns {Uint8Array} Padded bytes.\n   */\n  leftPad(bytes, length) {\n    const padded = new Uint8Array(length);\n    const offset = length - bytes.length;\n    padded.set(bytes, offset);\n    return padded;\n  },\n\n  /**\n   * Convert a Uint8Array to an MPI-formatted Uint8Array.\n   * @param {Uint8Array} bin - An array of 8-bit integers to convert\n   * @returns {Uint8Array} MPI-formatted Uint8Array.\n   */\n  uint8ArrayToMPI: function (bin) {\n    const bitSize = util.uint8ArrayBitLength(bin);\n    if (bitSize === 0) {\n      throw new Error('Zero MPI');\n    }\n    const stripped = bin.subarray(bin.length - Math.ceil(bitSize / 8));\n    const prefix = new Uint8Array([(bitSize & 0xFF00) >> 8, bitSize & 0xFF]);\n    return util.concatUint8Array([prefix, stripped]);\n  },\n\n  /**\n   * Return bit length of the input data\n   * @param {Uint8Array} bin input data (big endian)\n   * @returns bit length\n   */\n  uint8ArrayBitLength: function (bin) {\n    let i; // index of leading non-zero byte\n    for (i = 0; i < bin.length; i++) if (bin[i] !== 0) break;\n    if (i === bin.length) {\n      return 0;\n    }\n    const stripped = bin.subarray(i);\n    return (stripped.length - 1) * 8 + util.nbits(stripped[0]);\n  },\n\n  /**\n   * Convert a hex string to an array of 8-bit integers\n   * @param {String} hex - A hex string to convert\n   * @returns {Uint8Array} An array of 8-bit integers.\n   */\n  hexToUint8Array: function (hex) {\n    const result = new Uint8Array(hex.length >> 1);\n    for (let k = 0; k < hex.length >> 1; k++) {\n      result[k] = parseInt(hex.substr(k << 1, 2), 16);\n    }\n    return result;\n  },\n\n  /**\n   * Convert an array of 8-bit integers to a hex string\n   * @param {Uint8Array} bytes - Array of 8-bit integers to convert\n   * @returns {String} Hexadecimal representation of the array.\n   */\n  uint8ArrayToHex: function (bytes) {\n    const r = [];\n    const e = bytes.length;\n    let c = 0;\n    let h;\n    while (c < e) {\n      h = bytes[c++].toString(16);\n      while (h.length < 2) {\n        h = '0' + h;\n      }\n      r.push('' + h);\n    }\n    return r.join('');\n  },\n\n  /**\n   * Convert a string to an array of 8-bit integers\n   * @param {String} str - String to convert\n   * @returns {Uint8Array} An array of 8-bit integers.\n   */\n  stringToUint8Array: function (str) {\n    return stream.transform(str, str => {\n      if (!util.isString(str)) {\n        throw new Error('stringToUint8Array: Data must be in the form of a string');\n      }\n\n      const result = new Uint8Array(str.length);\n      for (let i = 0; i < str.length; i++) {\n        result[i] = str.charCodeAt(i);\n      }\n      return result;\n    });\n  },\n\n  /**\n   * Convert an array of 8-bit integers to a string\n   * @param {Uint8Array} bytes - An array of 8-bit integers to convert\n   * @returns {String} String representation of the array.\n   */\n  uint8ArrayToString: function (bytes) {\n    bytes = new Uint8Array(bytes);\n    const result = [];\n    const bs = 1 << 14;\n    const j = bytes.length;\n\n    for (let i = 0; i < j; i += bs) {\n      result.push(String.fromCharCode.apply(String, bytes.subarray(i, i + bs < j ? i + bs : j)));\n    }\n    return result.join('');\n  },\n\n  /**\n   * Convert a native javascript string to a Uint8Array of utf8 bytes\n   * @param {String|ReadableStream} str - The string to convert\n   * @returns {Uint8Array|ReadableStream} A valid squence of utf8 bytes.\n   */\n  encodeUTF8: function (str) {\n    const encoder = new TextEncoder('utf-8');\n    // eslint-disable-next-line no-inner-declarations\n    function process(value, lastChunk = false) {\n      return encoder.encode(value, { stream: !lastChunk });\n    }\n    return stream.transform(str, process, () => process('', true));\n  },\n\n  /**\n   * Convert a Uint8Array of utf8 bytes to a native javascript string\n   * @param {Uint8Array|ReadableStream} utf8 - A valid squence of utf8 bytes\n   * @returns {String|ReadableStream} A native javascript string.\n   */\n  decodeUTF8: function (utf8) {\n    const decoder = new TextDecoder('utf-8');\n    // eslint-disable-next-line no-inner-declarations\n    function process(value, lastChunk = false) {\n      return decoder.decode(value, { stream: !lastChunk });\n    }\n    return stream.transform(utf8, process, () => process(new Uint8Array(), true));\n  },\n\n  /**\n   * Concat a list of Uint8Arrays, Strings or Streams\n   * The caller must not mix Uint8Arrays with Strings, but may mix Streams with non-Streams.\n   * @param {Array<Uint8Array|String|ReadableStream>} Array - Of Uint8Arrays/Strings/Streams to concatenate\n   * @returns {Uint8Array|String|ReadableStream} Concatenated array.\n   */\n  concat: stream.concat,\n\n  /**\n   * Concat Uint8Arrays\n   * @param {Array<Uint8Array>} Array - Of Uint8Arrays to concatenate\n   * @returns {Uint8Array} Concatenated array.\n   */\n  concatUint8Array: stream.concatUint8Array,\n\n  /**\n   * Check Uint8Array equality\n   * @param {Uint8Array} array1 - First array\n   * @param {Uint8Array} array2 - Second array\n   * @returns {Boolean} Equality.\n   */\n  equalsUint8Array: function (array1, array2) {\n    if (!util.isUint8Array(array1) || !util.isUint8Array(array2)) {\n      throw new Error('Data must be in the form of a Uint8Array');\n    }\n\n    if (array1.length !== array2.length) {\n      return false;\n    }\n\n    for (let i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  },\n\n  /**\n   * Calculates a 16bit sum of a Uint8Array by adding each character\n   * codes modulus 65535\n   * @param {Uint8Array} Uint8Array - To create a sum of\n   * @returns {Uint8Array} 2 bytes containing the sum of all charcodes % 65535.\n   */\n  writeChecksum: function (text) {\n    let s = 0;\n    for (let i = 0; i < text.length; i++) {\n      s = (s + text[i]) & 0xFFFF;\n    }\n    return util.writeNumber(s, 2);\n  },\n\n  /**\n   * Helper function to print a debug message. Debug\n   * messages are only printed if\n   * @param {String} str - String of the debug message\n   */\n  printDebug: function (str) {\n    if (debugMode) {\n      console.log(str);\n    }\n  },\n\n  /**\n   * Helper function to print a debug error. Debug\n   * messages are only printed if\n   * @param {String} str - String of the debug message\n   */\n  printDebugError: function (error) {\n    if (debugMode) {\n      console.error(error);\n    }\n  },\n\n  // returns bit length of the integer x\n  nbits: function (x) {\n    let r = 1;\n    let t = x >>> 16;\n    if (t !== 0) {\n      x = t;\n      r += 16;\n    }\n    t = x >> 8;\n    if (t !== 0) {\n      x = t;\n      r += 8;\n    }\n    t = x >> 4;\n    if (t !== 0) {\n      x = t;\n      r += 4;\n    }\n    t = x >> 2;\n    if (t !== 0) {\n      x = t;\n      r += 2;\n    }\n    t = x >> 1;\n    if (t !== 0) {\n      x = t;\n      r += 1;\n    }\n    return r;\n  },\n\n  /**\n   * If S[1] == 0, then double(S) == (S[2..128] || 0);\n   * otherwise, double(S) == (S[2..128] || 0) xor\n   * (zeros(120) || 10000111).\n   *\n   * Both OCB and EAX (through CMAC) require this function to be constant-time.\n   *\n   * @param {Uint8Array} data\n   */\n  double: function(data) {\n    const doubleVar = new Uint8Array(data.length);\n    const last = data.length - 1;\n    for (let i = 0; i < last; i++) {\n      doubleVar[i] = (data[i] << 1) ^ (data[i + 1] >> 7);\n    }\n    doubleVar[last] = (data[last] << 1) ^ ((data[0] >> 7) * 0x87);\n    return doubleVar;\n  },\n\n  /**\n   * Shift a Uint8Array to the right by n bits\n   * @param {Uint8Array} array - The array to shift\n   * @param {Integer} bits - Amount of bits to shift (MUST be smaller\n   * than 8)\n   * @returns {String} Resulting array.\n   */\n  shiftRight: function (array, bits) {\n    if (bits) {\n      for (let i = array.length - 1; i >= 0; i--) {\n        array[i] >>= bits;\n        if (i > 0) {\n          array[i] |= (array[i - 1] << (8 - bits));\n        }\n      }\n    }\n    return array;\n  },\n\n  /**\n   * Get native Web Cryptography api, only the current version of the spec.\n   * @returns {Object} The SubtleCrypto api or 'undefined'.\n   */\n  getWebCrypto: function() {\n    return typeof globalThis !== 'undefined' && globalThis.crypto && globalThis.crypto.subtle;\n  },\n\n  /**\n   * Detect Node.js runtime.\n   */\n  detectNode: function() {\n    return typeof globalThis.process === 'object' &&\n      typeof globalThis.process.versions === 'object';\n  },\n\n  /**\n   * Detect native BigInt support\n   */\n  detectBigInt: () => typeof BigInt !== 'undefined',\n\n  /**\n   * Get BigInteger class\n   * It wraps the native BigInt type if it's available\n   * Otherwise it relies on bn.js\n   * @returns {BigInteger}\n   * @async\n   */\n  getBigInteger,\n\n  /**\n   * Get native Node.js crypto api.\n   * @returns {Object} The crypto module or 'undefined'.\n   */\n  getNodeCrypto: function() {\n    return require('crypto');\n  },\n\n  getNodeZlib: function() {\n    return require('zlib');\n  },\n\n  /**\n   * Get native Node.js Buffer constructor. This should be used since\n   * Buffer is not available under browserify.\n   * @returns {Function} The Buffer constructor or 'undefined'.\n   */\n  getNodeBuffer: function() {\n    return (require('buffer') || {}).Buffer;\n  },\n\n  getHardwareConcurrency: function() {\n    if (util.detectNode()) {\n      const os = require('os');\n      return os.cpus().length;\n    }\n\n    return (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) || 1;\n  },\n\n  isEmailAddress: function(data) {\n    if (!util.isString(data)) {\n      return false;\n    }\n    const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+([a-zA-Z]{2,}|xn--[a-zA-Z\\-0-9]+)))$/;\n    return re.test(data);\n  },\n\n  /**\n   * Normalize line endings to <CR><LF>\n   * Support any encoding where CR=0x0D, LF=0x0A\n   */\n  canonicalizeEOL: function(data) {\n    const CR = 13;\n    const LF = 10;\n    let carryOverCR = false;\n\n    return stream.transform(data, bytes => {\n      if (carryOverCR) {\n        bytes = util.concatUint8Array([new Uint8Array([CR]), bytes]);\n      }\n\n      if (bytes[bytes.length - 1] === CR) {\n        carryOverCR = true;\n        bytes = bytes.subarray(0, -1);\n      } else {\n        carryOverCR = false;\n      }\n\n      let index;\n      const indices = [];\n      for (let i = 0; ; i = index) {\n        index = bytes.indexOf(LF, i) + 1;\n        if (index) {\n          if (bytes[index - 2] !== CR) indices.push(index);\n        } else {\n          break;\n        }\n      }\n      if (!indices.length) {\n        return bytes;\n      }\n\n      const normalized = new Uint8Array(bytes.length + indices.length);\n      let j = 0;\n      for (let i = 0; i < indices.length; i++) {\n        const sub = bytes.subarray(indices[i - 1] || 0, indices[i]);\n        normalized.set(sub, j);\n        j += sub.length;\n        normalized[j - 1] = CR;\n        normalized[j] = LF;\n        j++;\n      }\n      normalized.set(bytes.subarray(indices[indices.length - 1] || 0), j);\n      return normalized;\n    }, () => (carryOverCR ? new Uint8Array([CR]) : undefined));\n  },\n\n  /**\n   * Convert line endings from canonicalized <CR><LF> to native <LF>\n   * Support any encoding where CR=0x0D, LF=0x0A\n   */\n  nativeEOL: function(data) {\n    const CR = 13;\n    const LF = 10;\n    let carryOverCR = false;\n\n    return stream.transform(data, bytes => {\n      if (carryOverCR && bytes[0] !== LF) {\n        bytes = util.concatUint8Array([new Uint8Array([CR]), bytes]);\n      } else {\n        bytes = new Uint8Array(bytes); // Don't mutate passed bytes\n      }\n\n      if (bytes[bytes.length - 1] === CR) {\n        carryOverCR = true;\n        bytes = bytes.subarray(0, -1);\n      } else {\n        carryOverCR = false;\n      }\n\n      let index;\n      let j = 0;\n      for (let i = 0; i !== bytes.length; i = index) {\n        index = bytes.indexOf(CR, i) + 1;\n        if (!index) index = bytes.length;\n        const last = index - (bytes[index] === LF ? 1 : 0);\n        if (i) bytes.copyWithin(j, i, last);\n        j += last - i;\n      }\n      return bytes.subarray(0, j);\n    }, () => (carryOverCR ? new Uint8Array([CR]) : undefined));\n  },\n\n  /**\n   * Remove trailing spaces and tabs from each line\n   */\n  removeTrailingSpaces: function(text) {\n    return text.split('\\n').map(line => {\n      let i = line.length - 1;\n      for (; i >= 0 && (line[i] === ' ' || line[i] === '\\t'); i--);\n      return line.substr(0, i + 1);\n    }).join('\\n');\n  },\n\n  wrapError: function(message, error) {\n    if (!error) {\n      return new Error(message);\n    }\n\n    // update error message\n    try {\n      error.message = message + ': ' + error.message;\n    } catch (e) {}\n\n    return error;\n  },\n\n  /**\n   * Map allowed packet tags to corresponding classes\n   * Meant to be used to format `allowedPacket` for Packetlist.read\n   * @param {Array<Object>} allowedClasses\n   * @returns {Object} map from enum.packet to corresponding *Packet class\n   */\n  constructAllowedPackets: function(allowedClasses) {\n    const map = {};\n    allowedClasses.forEach(PacketClass => {\n      if (!PacketClass.tag) {\n        throw new Error('Invalid input: expected a packet class');\n      }\n      map[PacketClass.tag] = PacketClass;\n    });\n    return map;\n  },\n\n  /**\n   * Return a Promise that will resolve as soon as one of the promises in input resolves\n   * or will reject if all input promises all rejected\n   * (similar to Promise.any, but with slightly different error handling)\n   * @param {Array<Promise>} promises\n   * @return {Promise<Any>} Promise resolving to the result of the fastest fulfilled promise\n   *                          or rejected with the Error of the last resolved Promise (if all promises are rejected)\n   */\n  anyPromise: function(promises) {\n    return new Promise(async (resolve, reject) => {\n      let exception;\n      await Promise.all(promises.map(async promise => {\n        try {\n          resolve(await promise);\n        } catch (e) {\n          exception = e;\n        }\n      }));\n      reject(exception);\n    });\n  },\n\n  /**\n   * Return either `a` or `b` based on `cond`, in algorithmic constant time.\n   * @param {Boolean} cond\n   * @param {Uint8Array} a\n   * @param {Uint8Array} b\n   * @returns `a` if `cond` is true, `b` otherwise\n   */\n  selectUint8Array: function(cond, a, b) {\n    const length = Math.max(a.length, b.length);\n    const result = new Uint8Array(length);\n    let end = 0;\n    for (let i = 0; i < result.length; i++) {\n      result[i] = (a[i] & (256 - cond)) | (b[i] & (255 + cond));\n      end += (cond & i < a.length) | ((1 - cond) & i < b.length);\n    }\n    return result.subarray(0, end);\n  },\n  /**\n   * Return either `a` or `b` based on `cond`, in algorithmic constant time.\n   * NB: it only supports `a, b` with values between 0-255.\n   * @param {Boolean} cond\n   * @param {Uint8} a\n   * @param {Uint8} b\n   * @returns `a` if `cond` is true, `b` otherwise\n   */\n  selectUint8: function(cond, a, b) {\n    return (a & (256 - cond)) | (b & (255 + cond));\n  }\n};\n\nexport default util;\n","import util from '../util';\nimport BigInteger from './native.interface';\n\nasync function getBigInteger() {\n  if (util.detectBigInt()) {\n    return BigInteger;\n  } else {\n    const { default: BigInteger } = await import('./bn.interface');\n    return BigInteger;\n  }\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport { getBigInteger };\n","/* OpenPGP radix-64/base64 string encoding/decoding\n * Copyright 2005 Herbert Hanewinkel, www.haneWIN.de\n * version 1.0, check www.haneWIN.de for the latest version\n *\n * This software is provided as-is, without express or implied warranty.\n * Permission to use, copy, modify, distribute or sell this software, with or\n * without fee, for any purpose and by any individual or organization, is hereby\n * granted, provided that the above copyright notice and this paragraph appear\n * in all copies. Distribution as a part of an application or binary must\n * include the above copyright notice in the documentation and/or other materials\n * provided with the application or distribution.\n */\n\n/**\n * @module encoding/base64\n * @private\n */\n\nimport * as stream from '@openpgp/web-stream-tools';\nimport util from '../util';\n\nconst Buffer = util.getNodeBuffer();\n\nlet encodeChunk;\nlet decodeChunk;\nif (Buffer) {\n  encodeChunk = buf => Buffer.from(buf).toString('base64');\n  decodeChunk = str => {\n    const b = Buffer.from(str, 'base64');\n    return new Uint8Array(b.buffer, b.byteOffset, b.byteLength);\n  };\n} else {\n  encodeChunk = buf => btoa(util.uint8ArrayToString(buf));\n  decodeChunk = str => util.stringToUint8Array(atob(str));\n}\n\n/**\n * Convert binary array to radix-64\n * @param {Uint8Array | ReadableStream<Uint8Array>} data - Uint8Array to convert\n * @returns {String | ReadableStream<String>} Radix-64 version of input string.\n * @static\n */\nexport function encode(data) {\n  let buf = new Uint8Array();\n  return stream.transform(data, value => {\n    buf = util.concatUint8Array([buf, value]);\n    const r = [];\n    const bytesPerLine = 45; // 60 chars per line * (3 bytes / 4 chars of base64).\n    const lines = Math.floor(buf.length / bytesPerLine);\n    const bytes = lines * bytesPerLine;\n    const encoded = encodeChunk(buf.subarray(0, bytes));\n    for (let i = 0; i < lines; i++) {\n      r.push(encoded.substr(i * 60, 60));\n      r.push('\\n');\n    }\n    buf = buf.subarray(bytes);\n    return r.join('');\n  }, () => (buf.length ? encodeChunk(buf) + '\\n' : ''));\n}\n\n/**\n * Convert radix-64 to binary array\n * @param {String | ReadableStream<String>} data - Radix-64 string to convert\n * @returns {Uint8Array | ReadableStream<Uint8Array>} Binary array version of input string.\n * @static\n */\nexport function decode(data) {\n  let buf = '';\n  return stream.transform(data, value => {\n    buf += value;\n\n    // Count how many whitespace characters there are in buf\n    let spaces = 0;\n    const spacechars = [' ', '\\t', '\\r', '\\n'];\n    for (let i = 0; i < spacechars.length; i++) {\n      const spacechar = spacechars[i];\n      for (let pos = buf.indexOf(spacechar); pos !== -1; pos = buf.indexOf(spacechar, pos + 1)) {\n        spaces++;\n      }\n    }\n\n    // Backtrack until we have 4n non-whitespace characters\n    // that we can safely base64-decode\n    let length = buf.length;\n    for (; length > 0 && (length - spaces) % 4 !== 0; length--) {\n      if (spacechars.includes(buf[length])) spaces--;\n    }\n\n    const decoded = decodeChunk(buf.substr(0, length));\n    buf = buf.substr(length);\n    return decoded;\n  }, () => decodeChunk(buf));\n}\n\n/**\n * Convert a Base-64 encoded string an array of 8-bit integer\n *\n * Note: accepts both Radix-64 and URL-safe strings\n * @param {String} base64 - Base-64 encoded string to convert\n * @returns {Uint8Array} An array of 8-bit integers.\n */\nexport function b64ToUint8Array(base64) {\n  return decode(base64.replace(/-/g, '+').replace(/_/g, '/'));\n}\n\n/**\n * Convert an array of 8-bit integer to a Base-64 encoded string\n * @param {Uint8Array} bytes - An array of 8-bit integers to convert\n * @param {bool} url - If true, output is URL-safe\n * @returns {String} Base-64 encoded string.\n */\nexport function uint8ArrayToB64(bytes, url) {\n  let encoded = encode(bytes).replace(/[\\r\\n]/g, '');\n  if (url) {\n    encoded = encoded.replace(/[+]/g, '-').replace(/[/]/g, '_').replace(/[=]/g, '');\n  }\n  return encoded;\n}\n","/**\n * @module enums\n */\n\nconst byValue = Symbol('byValue');\n\nexport default {\n\n  /** Maps curve names under various standards to one\n   * @see {@link https://wiki.gnupg.org/ECC|ECC - GnuPG wiki}\n   * @enum {String}\n   * @readonly\n   */\n  curve: {\n    /** NIST P-256 Curve */\n    'p256':                'p256',\n    'P-256':               'p256',\n    'secp256r1':           'p256',\n    'prime256v1':          'p256',\n    '1.2.840.10045.3.1.7': 'p256',\n    '2a8648ce3d030107':    'p256',\n    '2A8648CE3D030107':    'p256',\n\n    /** NIST P-384 Curve */\n    'p384':         'p384',\n    'P-384':        'p384',\n    'secp384r1':    'p384',\n    '1.3.132.0.34': 'p384',\n    '2b81040022':   'p384',\n    '2B81040022':   'p384',\n\n    /** NIST P-521 Curve */\n    'p521':         'p521',\n    'P-521':        'p521',\n    'secp521r1':    'p521',\n    '1.3.132.0.35': 'p521',\n    '2b81040023':   'p521',\n    '2B81040023':   'p521',\n\n    /** SECG SECP256k1 Curve */\n    'secp256k1':    'secp256k1',\n    '1.3.132.0.10': 'secp256k1',\n    '2b8104000a':   'secp256k1',\n    '2B8104000A':   'secp256k1',\n\n    /** Ed25519 */\n    'ED25519':                'ed25519',\n    'ed25519':                'ed25519',\n    'Ed25519':                'ed25519',\n    '1.3.6.1.4.1.11591.15.1': 'ed25519',\n    '2b06010401da470f01':     'ed25519',\n    '2B06010401DA470F01':     'ed25519',\n\n    /** Curve25519 */\n    'X25519':                 'curve25519',\n    'cv25519':                'curve25519',\n    'curve25519':             'curve25519',\n    'Curve25519':             'curve25519',\n    '1.3.6.1.4.1.3029.1.5.1': 'curve25519',\n    '2b060104019755010501':   'curve25519',\n    '2B060104019755010501':   'curve25519',\n\n    /** BrainpoolP256r1 Curve */\n    'brainpoolP256r1':       'brainpoolP256r1',\n    '1.3.36.3.3.2.8.1.1.7':  'brainpoolP256r1',\n    '2b2403030208010107':    'brainpoolP256r1',\n    '2B2403030208010107':    'brainpoolP256r1',\n\n    /** BrainpoolP384r1 Curve */\n    'brainpoolP384r1':       'brainpoolP384r1',\n    '1.3.36.3.3.2.8.1.1.11': 'brainpoolP384r1',\n    '2b240303020801010b':    'brainpoolP384r1',\n    '2B240303020801010B':    'brainpoolP384r1',\n\n    /** BrainpoolP512r1 Curve */\n    'brainpoolP512r1':       'brainpoolP512r1',\n    '1.3.36.3.3.2.8.1.1.13': 'brainpoolP512r1',\n    '2b240303020801010d':    'brainpoolP512r1',\n    '2B240303020801010D':    'brainpoolP512r1'\n  },\n\n  /** A string to key specifier type\n   * @enum {Integer}\n   * @readonly\n   */\n  s2k: {\n    simple: 0,\n    salted: 1,\n    iterated: 3,\n    gnu: 101\n  },\n\n  /** {@link https://tools.ietf.org/html/draft-ietf-openpgp-rfc4880bis-04#section-9.1|RFC4880bis-04, section 9.1}\n   * @enum {Integer}\n   * @readonly\n   */\n  publicKey: {\n    /** RSA (Encrypt or Sign) [HAC] */\n    rsaEncryptSign: 1,\n    /** RSA (Encrypt only) [HAC] */\n    rsaEncrypt: 2,\n    /** RSA (Sign only) [HAC] */\n    rsaSign: 3,\n    /** Elgamal (Encrypt only) [ELGAMAL] [HAC] */\n    elgamal: 16,\n    /** DSA (Sign only) [FIPS186] [HAC] */\n    dsa: 17,\n    /** ECDH (Encrypt only) [RFC6637] */\n    ecdh: 18,\n    /** ECDSA (Sign only) [RFC6637] */\n    ecdsa: 19,\n    /** EdDSA (Sign only)\n     * [{@link https://tools.ietf.org/html/draft-koch-eddsa-for-openpgp-04|Draft RFC}] */\n    eddsa: 22,\n    /** Reserved for AEDH */\n    aedh: 23,\n    /** Reserved for AEDSA */\n    aedsa: 24\n  },\n\n  /** {@link https://tools.ietf.org/html/rfc4880#section-9.2|RFC4880, section 9.2}\n   * @enum {Integer}\n   * @readonly\n   */\n  symmetric: {\n    plaintext: 0,\n    /** Not implemented! */\n    idea: 1,\n    tripledes: 2,\n    cast5: 3,\n    blowfish: 4,\n    aes128: 7,\n    aes192: 8,\n    aes256: 9,\n    twofish: 10\n  },\n\n  /** {@link https://tools.ietf.org/html/rfc4880#section-9.3|RFC4880, section 9.3}\n   * @enum {Integer}\n   * @readonly\n   */\n  compression: {\n    uncompressed: 0,\n    /** RFC1951 */\n    zip: 1,\n    /** RFC1950 */\n    zlib: 2,\n    bzip2: 3\n  },\n\n  /** {@link https://tools.ietf.org/html/rfc4880#section-9.4|RFC4880, section 9.4}\n   * @enum {Integer}\n   * @readonly\n   */\n  hash: {\n    md5: 1,\n    sha1: 2,\n    ripemd: 3,\n    sha256: 8,\n    sha384: 9,\n    sha512: 10,\n    sha224: 11\n  },\n\n  /** A list of hash names as accepted by webCrypto functions.\n   * {@link https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest|Parameters, algo}\n   * @enum {String}\n   */\n  webHash: {\n    'SHA-1': 2,\n    'SHA-256': 8,\n    'SHA-384': 9,\n    'SHA-512': 10\n  },\n\n  /** {@link https://tools.ietf.org/html/draft-ietf-openpgp-rfc4880bis-04#section-9.6|RFC4880bis-04, section 9.6}\n   * @enum {Integer}\n   * @readonly\n   */\n  aead: {\n    eax: 1,\n    ocb: 2,\n    experimentalGCM: 100 // Private algorithm\n  },\n\n  /** A list of packet types and numeric tags associated with them.\n   * @enum {Integer}\n   * @readonly\n   */\n  packet: {\n    publicKeyEncryptedSessionKey: 1,\n    signature: 2,\n    symEncryptedSessionKey: 3,\n    onePassSignature: 4,\n    secretKey: 5,\n    publicKey: 6,\n    secretSubkey: 7,\n    compressedData: 8,\n    symmetricallyEncryptedData: 9,\n    marker: 10,\n    literalData: 11,\n    trust: 12,\n    userID: 13,\n    publicSubkey: 14,\n    userAttribute: 17,\n    symEncryptedIntegrityProtectedData: 18,\n    modificationDetectionCode: 19,\n    aeadEncryptedData: 20 // see IETF draft: https://tools.ietf.org/html/draft-ford-openpgp-format-00#section-2.1\n  },\n\n  /** Data types in the literal packet\n   * @enum {Integer}\n   * @readonly\n   */\n  literal: {\n    /** Binary data 'b' */\n    binary: 'b'.charCodeAt(),\n    /** Text data 't' */\n    text: 't'.charCodeAt(),\n    /** Utf8 data 'u' */\n    utf8: 'u'.charCodeAt(),\n    /** MIME message body part 'm' */\n    mime: 'm'.charCodeAt()\n  },\n\n\n  /** One pass signature packet type\n   * @enum {Integer}\n   * @readonly\n   */\n  signature: {\n    /** 0x00: Signature of a binary document. */\n    binary: 0,\n    /** 0x01: Signature of a canonical text document.\n     *\n     * Canonicalyzing the document by converting line endings. */\n    text: 1,\n    /** 0x02: Standalone signature.\n     *\n     * This signature is a signature of only its own subpacket contents.\n     * It is calculated identically to a signature over a zero-lengh\n     * binary document.  Note that it doesn't make sense to have a V3\n     * standalone signature. */\n    standalone: 2,\n    /** 0x10: Generic certification of a User ID and Public-Key packet.\n     *\n     * The issuer of this certification does not make any particular\n     * assertion as to how well the certifier has checked that the owner\n     * of the key is in fact the person described by the User ID. */\n    certGeneric: 16,\n    /** 0x11: Persona certification of a User ID and Public-Key packet.\n     *\n     * The issuer of this certification has not done any verification of\n     * the claim that the owner of this key is the User ID specified. */\n    certPersona: 17,\n    /** 0x12: Casual certification of a User ID and Public-Key packet.\n     *\n     * The issuer of this certification has done some casual\n     * verification of the claim of identity. */\n    certCasual: 18,\n    /** 0x13: Positive certification of a User ID and Public-Key packet.\n     *\n     * The issuer of this certification has done substantial\n     * verification of the claim of identity.\n     *\n     * Most OpenPGP implementations make their \"key signatures\" as 0x10\n     * certifications.  Some implementations can issue 0x11-0x13\n     * certifications, but few differentiate between the types. */\n    certPositive: 19,\n    /** 0x30: Certification revocation signature\n     *\n     * This signature revokes an earlier User ID certification signature\n     * (signature class 0x10 through 0x13) or direct-key signature\n     * (0x1F).  It should be issued by the same key that issued the\n     * revoked signature or an authorized revocation key.  The signature\n     * is computed over the same data as the certificate that it\n     * revokes, and should have a later creation date than that\n     * certificate. */\n    certRevocation: 48,\n    /** 0x18: Subkey Binding Signature\n     *\n     * This signature is a statement by the top-level signing key that\n     * indicates that it owns the subkey.  This signature is calculated\n     * directly on the primary key and subkey, and not on any User ID or\n     * other packets.  A signature that binds a signing subkey MUST have\n     * an Embedded Signature subpacket in this binding signature that\n     * contains a 0x19 signature made by the signing subkey on the\n     * primary key and subkey. */\n    subkeyBinding: 24,\n    /** 0x19: Primary Key Binding Signature\n     *\n     * This signature is a statement by a signing subkey, indicating\n     * that it is owned by the primary key and subkey.  This signature\n     * is calculated the same way as a 0x18 signature: directly on the\n     * primary key and subkey, and not on any User ID or other packets.\n     *\n     * When a signature is made over a key, the hash data starts with the\n     * octet 0x99, followed by a two-octet length of the key, and then body\n     * of the key packet.  (Note that this is an old-style packet header for\n     * a key packet with two-octet length.)  A subkey binding signature\n     * (type 0x18) or primary key binding signature (type 0x19) then hashes\n     * the subkey using the same format as the main key (also using 0x99 as\n     * the first octet). */\n    keyBinding: 25,\n    /** 0x1F: Signature directly on a key\n     *\n     * This signature is calculated directly on a key.  It binds the\n     * information in the Signature subpackets to the key, and is\n     * appropriate to be used for subpackets that provide information\n     * about the key, such as the Revocation Key subpacket.  It is also\n     * appropriate for statements that non-self certifiers want to make\n     * about the key itself, rather than the binding between a key and a\n     * name. */\n    key: 31,\n    /** 0x20: Key revocation signature\n     *\n     * The signature is calculated directly on the key being revoked.  A\n     * revoked key is not to be used.  Only revocation signatures by the\n     * key being revoked, or by an authorized revocation key, should be\n     * considered valid revocation signatures.a */\n    keyRevocation: 32,\n    /** 0x28: Subkey revocation signature\n     *\n     * The signature is calculated directly on the subkey being revoked.\n     * A revoked subkey is not to be used.  Only revocation signatures\n     * by the top-level signature key that is bound to this subkey, or\n     * by an authorized revocation key, should be considered valid\n     * revocation signatures.\n     *\n     * Key revocation signatures (types 0x20 and 0x28)\n     * hash only the key being revoked. */\n    subkeyRevocation: 40,\n    /** 0x40: Timestamp signature.\n     * This signature is only meaningful for the timestamp contained in\n     * it. */\n    timestamp: 64,\n    /** 0x50: Third-Party Confirmation signature.\n     *\n     * This signature is a signature over some other OpenPGP Signature\n     * packet(s).  It is analogous to a notary seal on the signed data.\n     * A third-party signature SHOULD include Signature Target\n     * subpacket(s) to give easy identification.  Note that we really do\n     * mean SHOULD.  There are plausible uses for this (such as a blind\n     * party that only sees the signature, not the key or source\n     * document) that cannot include a target subpacket. */\n    thirdParty: 80\n  },\n\n  /** Signature subpacket type\n   * @enum {Integer}\n   * @readonly\n   */\n  signatureSubpacket: {\n    signatureCreationTime: 2,\n    signatureExpirationTime: 3,\n    exportableCertification: 4,\n    trustSignature: 5,\n    regularExpression: 6,\n    revocable: 7,\n    keyExpirationTime: 9,\n    placeholderBackwardsCompatibility: 10,\n    preferredSymmetricAlgorithms: 11,\n    revocationKey: 12,\n    issuer: 16,\n    notationData: 20,\n    preferredHashAlgorithms: 21,\n    preferredCompressionAlgorithms: 22,\n    keyServerPreferences: 23,\n    preferredKeyServer: 24,\n    primaryUserID: 25,\n    policyURI: 26,\n    keyFlags: 27,\n    signersUserID: 28,\n    reasonForRevocation: 29,\n    features: 30,\n    signatureTarget: 31,\n    embeddedSignature: 32,\n    issuerFingerprint: 33,\n    preferredAEADAlgorithms: 34\n  },\n\n  /** Key flags\n   * @enum {Integer}\n   * @readonly\n   */\n  keyFlags: {\n    /** 0x01 - This key may be used to certify other keys. */\n    certifyKeys: 1,\n    /** 0x02 - This key may be used to sign data. */\n    signData: 2,\n    /** 0x04 - This key may be used to encrypt communications. */\n    encryptCommunication: 4,\n    /** 0x08 - This key may be used to encrypt storage. */\n    encryptStorage: 8,\n    /** 0x10 - The private component of this key may have been split\n     *        by a secret-sharing mechanism. */\n    splitPrivateKey: 16,\n    /** 0x20 - This key may be used for authentication. */\n    authentication: 32,\n    /** 0x80 - The private component of this key may be in the\n     *        possession of more than one person. */\n    sharedPrivateKey: 128\n  },\n\n  /** Armor type\n   * @enum {Integer}\n   * @readonly\n   */\n  armor: {\n    multipartSection: 0,\n    multipartLast: 1,\n    signed: 2,\n    message: 3,\n    publicKey: 4,\n    privateKey: 5,\n    signature: 6\n  },\n\n  /** {@link https://tools.ietf.org/html/rfc4880#section-5.2.3.23|RFC4880, section 5.2.3.23}\n   * @enum {Integer}\n   * @readonly\n   */\n  reasonForRevocation: {\n    /** No reason specified (key revocations or cert revocations) */\n    noReason: 0,\n    /** Key is superseded (key revocations) */\n    keySuperseded: 1,\n    /** Key material has been compromised (key revocations) */\n    keyCompromised: 2,\n    /** Key is retired and no longer used (key revocations) */\n    keyRetired: 3,\n    /** User ID information is no longer valid (cert revocations) */\n    userIDInvalid: 32\n  },\n\n  /** {@link https://tools.ietf.org/html/draft-ietf-openpgp-rfc4880bis-04#section-5.2.3.25|RFC4880bis-04, section 5.2.3.25}\n   * @enum {Integer}\n   * @readonly\n   */\n  features: {\n    /** 0x01 - Modification Detection (packets 18 and 19) */\n    modificationDetection: 1,\n    /** 0x02 - AEAD Encrypted Data Packet (packet 20) and version 5\n     *         Symmetric-Key Encrypted Session Key Packets (packet 3) */\n    aead: 2,\n    /** 0x04 - Version 5 Public-Key Packet format and corresponding new\n      *        fingerprint format */\n    v5Keys: 4\n  },\n\n  /**\n   * Asserts validity of given value and converts from string/integer to integer.\n   * @param {Object} type target enum type\n   * @param {String|Integer} e value to check and/or convert\n   * @returns {Integer} enum value if it exists\n   * @throws {Error} if the value is invalid\n   */\n  write: function(type, e) {\n    if (typeof e === 'number') {\n      e = this.read(type, e);\n    }\n\n    if (type[e] !== undefined) {\n      return type[e];\n    }\n\n    throw new Error('Invalid enum value.');\n  },\n\n  /**\n   * Converts enum integer value to the corresponding string, if it exists.\n   * @param {Object} type target enum type\n   * @param {Integer} e value to convert\n   * @returns {String} name of enum value if it exists\n   * @throws {Error} if the value is invalid\n   */\n  read: function(type, e) {\n    if (!type[byValue]) {\n      type[byValue] = [];\n      Object.entries(type).forEach(([key, value]) => {\n        type[byValue][value] = key;\n      });\n    }\n\n    if (type[byValue][e] !== undefined) {\n      return type[byValue][e];\n    }\n\n    throw new Error('Invalid enum value.');\n  }\n};\n","// GPG4Browsers - An OpenPGP implementation in javascript\n// Copyright (C) 2011 Recurity Labs GmbH\n//\n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 3.0 of the License, or (at your option) any later version.\n//\n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n// Lesser General Public License for more details.\n//\n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\n/**\n * Global configuration values.\n */\n\nimport enums from '../enums';\n\nexport default {\n  /**\n   * @memberof module:config\n   * @property {Integer} preferredHashAlgorithm Default hash algorithm {@link module:enums.hash}\n   */\n  preferredHashAlgorithm: enums.hash.sha256,\n  /**\n   * @memberof module:config\n   * @property {Integer} preferredSymmetricAlgorithm Default encryption cipher {@link module:enums.symmetric}\n   */\n  preferredSymmetricAlgorithm: enums.symmetric.aes256,\n  /**\n   * @memberof module:config\n   * @property {Integer} compression Default compression algorithm {@link module:enums.compression}\n   */\n  preferredCompressionAlgorithm: enums.compression.uncompressed,\n  /**\n   * @memberof module:config\n   * @property {Integer} deflateLevel Default zip/zlib compression level, between 1 and 9\n   */\n  deflateLevel: 6,\n\n  /**\n   * Use Authenticated Encryption with Additional Data (AEAD) protection for symmetric encryption.\n   * Note: not all OpenPGP implementations are compatible with this option.\n   * **FUTURE OPENPGP.JS VERSIONS MAY BREAK COMPATIBILITY WHEN USING THIS OPTION**\n   * @see {@link https://tools.ietf.org/html/draft-ietf-openpgp-rfc4880bis-07|RFC4880bis-07}\n   * @memberof module:config\n   * @property {Boolean} aeadProtect\n   */\n  aeadProtect: false,\n  /**\n   * Default Authenticated Encryption with Additional Data (AEAD) encryption mode\n   * Only has an effect when aeadProtect is set to true.\n   * @memberof module:config\n   * @property {Integer} preferredAEADAlgorithm Default AEAD mode {@link module:enums.aead}\n   */\n  preferredAEADAlgorithm: enums.aead.eax,\n  /**\n   * Chunk Size Byte for Authenticated Encryption with Additional Data (AEAD) mode\n   * Only has an effect when aeadProtect is set to true.\n   * Must be an integer value from 0 to 56.\n   * @memberof module:config\n   * @property {Integer} aeadChunkSizeByte\n   */\n  aeadChunkSizeByte: 12,\n  /**\n   * Use V5 keys.\n   * Note: not all OpenPGP implementations are compatible with this option.\n   * **FUTURE OPENPGP.JS VERSIONS MAY BREAK COMPATIBILITY WHEN USING THIS OPTION**\n   * @memberof module:config\n   * @property {Boolean} v5Keys\n   */\n  v5Keys: false,\n  /**\n   * {@link https://tools.ietf.org/html/rfc4880#section-3.7.1.3|RFC4880 3.7.1.3}:\n   * Iteration Count Byte for S2K (String to Key)\n   * @memberof module:config\n   * @property {Integer} s2kIterationCountByte\n   */\n  s2kIterationCountByte: 224,\n  /**\n   * Allow decryption of messages without integrity protection.\n   * This is an **insecure** setting:\n   *  - message modifications cannot be detected, thus processing the decrypted data is potentially unsafe.\n   *  - it enables downgrade attacks against integrity-protected messages.\n   * @memberof module:config\n   * @property {Boolean} allowUnauthenticatedMessages\n   */\n  allowUnauthenticatedMessages: false,\n  /**\n   * Allow streaming unauthenticated data before its integrity has been checked.\n   * This setting is **insecure** if the partially decrypted message is processed further or displayed to the user.\n   * @memberof module:config\n   * @property {Boolean} allowUnauthenticatedStream\n   */\n  allowUnauthenticatedStream: false,\n  /**\n   * @memberof module:config\n   * @property {Boolean} checksumRequired Do not throw error when armor is missing a checksum\n   */\n  checksumRequired: false,\n  /**\n   * Minimum RSA key size allowed for key generation and message signing, verification and encryption.\n   * The default is 2047 since due to a bug, previous versions of OpenPGP.js could generate 2047-bit keys instead of 2048-bit ones.\n   * @memberof module:config\n   * @property {Number} minRSABits\n   */\n  minRSABits: 2047,\n  /**\n   * Work-around for rare GPG decryption bug when encrypting with multiple passwords.\n   * **Slower and slightly less secure**\n   * @memberof module:config\n   * @property {Boolean} passwordCollisionCheck\n   */\n  passwordCollisionCheck: false,\n  /**\n   * @memberof module:config\n   * @property {Boolean} revocationsExpire If true, expired revocation signatures are ignored\n   */\n  revocationsExpire: false,\n  /**\n   * Allow decryption using RSA keys without `encrypt` flag.\n   * This setting is potentially insecure, but it is needed to get around an old openpgpjs bug\n   * where key flags were ignored when selecting a key for encryption.\n   * @memberof module:config\n   * @property {Boolean} allowInsecureDecryptionWithSigningKeys\n   */\n  allowInsecureDecryptionWithSigningKeys: false,\n  /**\n   * Allow verification of message signatures with keys whose validity at the time of signing cannot be determined.\n   * Instead, a verification key will also be consider valid as long as it is valid at the current time.\n   * This setting is potentially insecure, but it is needed to verify messages signed with keys that were later reformatted,\n   * and have self-signature's creation date that does not match the primary key creation date.\n   * @memberof module:config\n   * @property {Boolean} allowInsecureDecryptionWithSigningKeys\n   */\n  allowInsecureVerificationWithReformattedKeys: false,\n\n  /**\n   * Enable constant-time decryption of RSA- and ElGamal-encrypted session keys, to hinder Bleichenbacher-like attacks (https://link.springer.com/chapter/10.1007/BFb0055716).\n   * This setting has measurable performance impact and it is only helpful in application scenarios where both of the following conditions apply:\n   * - new/incoming messages are automatically decrypted (without user interaction);\n   * - an attacker can determine how long it takes to decrypt each message (e.g. due to decryption errors being logged remotely).\n   * See also `constantTimePKCS1DecryptionSupportedSymmetricAlgorithms`.\n   * @memberof module:config\n   * @property {Boolean} constantTimePKCS1Decryption\n   */\n  constantTimePKCS1Decryption: false,\n  /**\n   * This setting is only meaningful if `constantTimePKCS1Decryption` is enabled.\n   * Decryption of RSA- and ElGamal-encrypted session keys of symmetric algorithms different from the ones specified here will fail.\n   * However, the more algorithms are added, the slower the decryption procedure becomes.\n   * @memberof module:config\n   * @property {Set<Integer>} constantTimePKCS1DecryptionSupportedSymmetricAlgorithms {@link module:enums.symmetric}\n   */\n  constantTimePKCS1DecryptionSupportedSymmetricAlgorithms: new Set([enums.symmetric.aes128, enums.symmetric.aes192, enums.symmetric.aes256]),\n\n  /**\n   * @memberof module:config\n   * @property {Integer} minBytesForWebCrypto The minimum amount of bytes for which to use native WebCrypto APIs when available\n   */\n  minBytesForWebCrypto: 1000,\n  /**\n   * @memberof module:config\n   * @property {Boolean} ignoreUnsupportedPackets Ignore unsupported/unrecognizable packets on parsing instead of throwing an error\n   */\n  ignoreUnsupportedPackets: true,\n  /**\n   * @memberof module:config\n   * @property {Boolean} ignoreMalformedPackets Ignore malformed packets on parsing instead of throwing an error\n   */\n  ignoreMalformedPackets: false,\n  /**\n   * @memberof module:config\n   * @property {Boolean} showVersion Whether to include {@link module:config/config.versionString} in armored messages\n   */\n  showVersion: false,\n  /**\n   * @memberof module:config\n   * @property {Boolean} showComment Whether to include {@link module:config/config.commentString} in armored messages\n   */\n  showComment: false,\n  /**\n   * @memberof module:config\n   * @property {String} versionString A version string to be included in armored messages\n   */\n  versionString: 'OpenPGP.js VERSION',\n  /**\n   * @memberof module:config\n   * @property {String} commentString A comment string to be included in armored messages\n   */\n  commentString: 'https://openpgpjs.org',\n\n  /**\n   * Max userID string length (used for parsing)\n   * @memberof module:config\n   * @property {Integer} maxUserIDLength\n   */\n  maxUserIDLength: 1024 * 5,\n  /**\n   * Contains notatations that are considered \"known\". Known notations do not trigger\n   * validation error when the notation is marked as critical.\n   * @memberof module:config\n   * @property {Array} knownNotations\n   */\n  knownNotations: ['preferred-email-encoding@pgp.com', 'pka-address@gnupg.org'],\n  /**\n   * Whether to use the indutny/elliptic library for curves (other than Curve25519) that are not supported by the available native crypto API.\n   * When false, certain standard curves will not be supported (depending on the platform).\n   * Note: the indutny/elliptic curve library is not designed to be constant time.\n   * @memberof module:config\n   * @property {Boolean} useIndutnyElliptic\n   */\n  useIndutnyElliptic: true,\n  /**\n   * Reject insecure hash algorithms\n   * @memberof module:config\n   * @property {Set<Integer>} rejectHashAlgorithms {@link module:enums.hash}\n   */\n  rejectHashAlgorithms: new Set([enums.hash.md5, enums.hash.ripemd]),\n  /**\n   * Reject insecure message hash algorithms\n   * @memberof module:config\n   * @property {Set<Integer>} rejectMessageHashAlgorithms {@link module:enums.hash}\n   */\n  rejectMessageHashAlgorithms: new Set([enums.hash.md5, enums.hash.ripemd, enums.hash.sha1]),\n  /**\n   * Reject insecure public key algorithms for key generation and message encryption, signing or verification\n   * @memberof module:config\n   * @property {Set<Integer>} rejectPublicKeyAlgorithms {@link module:enums.publicKey}\n   */\n  rejectPublicKeyAlgorithms: new Set([enums.publicKey.elgamal, enums.publicKey.dsa]),\n  /**\n   * Reject non-standard curves for key generation, message encryption, signing or verification\n   * @memberof module:config\n   * @property {Set<String>} rejectCurves {@link module:enums.curve}\n   */\n  rejectCurves: new Set([enums.curve.brainpoolP256r1, enums.curve.brainpoolP384r1, enums.curve.brainpoolP512r1, enums.curve.secp256k1])\n};\n","// GPG4Browsers - An OpenPGP implementation in javascript\n// Copyright (C) 2011 Recurity Labs GmbH\n//\n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 3.0 of the License, or (at your option) any later version.\n//\n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n// Lesser General Public License for more details.\n//\n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\nimport * as stream from '@openpgp/web-stream-tools';\nimport * as base64 from './base64.js';\nimport enums from '../enums.js';\nimport util from '../util';\nimport defaultConfig from '../config';\n\n/**\n * Finds out which Ascii Armoring type is used. Throws error if unknown type.\n * @param {String} text - ascii armored text\n * @returns {Integer} 0 = MESSAGE PART n of m.\n *         1 = MESSAGE PART n\n *         2 = SIGNED MESSAGE\n *         3 = PGP MESSAGE\n *         4 = PUBLIC KEY BLOCK\n *         5 = PRIVATE KEY BLOCK\n *         6 = SIGNATURE\n * @private\n */\nfunction getType(text) {\n  const reHeader = /^-----BEGIN PGP (MESSAGE, PART \\d+\\/\\d+|MESSAGE, PART \\d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m;\n\n  const header = text.match(reHeader);\n\n  if (!header) {\n    throw new Error('Unknown ASCII armor type');\n  }\n\n  // BEGIN PGP MESSAGE, PART X/Y\n  // Used for multi-part messages, where the armor is split amongst Y\n  // parts, and this is the Xth part out of Y.\n  if (/MESSAGE, PART \\d+\\/\\d+/.test(header[1])) {\n    return enums.armor.multipartSection;\n  } else\n  // BEGIN PGP MESSAGE, PART X\n  // Used for multi-part messages, where this is the Xth part of an\n  // unspecified number of parts. Requires the MESSAGE-ID Armor\n  // Header to be used.\n  if (/MESSAGE, PART \\d+/.test(header[1])) {\n    return enums.armor.multipartLast;\n  } else\n  // BEGIN PGP SIGNED MESSAGE\n  if (/SIGNED MESSAGE/.test(header[1])) {\n    return enums.armor.signed;\n  } else\n  // BEGIN PGP MESSAGE\n  // Used for signed, encrypted, or compressed files.\n  if (/MESSAGE/.test(header[1])) {\n    return enums.armor.message;\n  } else\n  // BEGIN PGP PUBLIC KEY BLOCK\n  // Used for armoring public keys.\n  if (/PUBLIC KEY BLOCK/.test(header[1])) {\n    return enums.armor.publicKey;\n  } else\n  // BEGIN PGP PRIVATE KEY BLOCK\n  // Used for armoring private keys.\n  if (/PRIVATE KEY BLOCK/.test(header[1])) {\n    return enums.armor.privateKey;\n  } else\n  // BEGIN PGP SIGNATURE\n  // Used for detached signatures, OpenPGP/MIME signatures, and\n  // cleartext signatures. Note that PGP 2.x uses BEGIN PGP MESSAGE\n  // for detached signatures.\n  if (/SIGNATURE/.test(header[1])) {\n    return enums.armor.signature;\n  }\n}\n\n/**\n * Add additional information to the armor version of an OpenPGP binary\n * packet block.\n * @author  Alex\n * @version 2011-12-16\n * @param {String} [customComment] - Additional comment to add to the armored string\n * @returns {String} The header information.\n * @private\n */\nfunction addheader(customComment, config) {\n  let result = '';\n  if (config.showVersion) {\n    result += 'Version: ' + config.versionString + '\\n';\n  }\n  if (config.showComment) {\n    result += 'Comment: ' + config.commentString + '\\n';\n  }\n  if (customComment) {\n    result += 'Comment: ' + customComment + '\\n';\n  }\n  result += '\\n';\n  return result;\n}\n\n\n/**\n * Calculates a checksum over the given data and returns it base64 encoded\n * @param {String | ReadableStream<String>} data - Data to create a CRC-24 checksum for\n * @returns {String | ReadableStream<String>} Base64 encoded checksum.\n * @private\n */\nfunction getCheckSum(data) {\n  const crc = createcrc24(data);\n  return base64.encode(crc);\n}\n\n// https://create.stephan-brumme.com/crc32/#slicing-by-8-overview\n\nconst crc_table = [\n  new Array(0xFF),\n  new Array(0xFF),\n  new Array(0xFF),\n  new Array(0xFF)\n];\n\nfor (let i = 0; i <= 0xFF; i++) {\n  let crc = i << 16;\n  for (let j = 0; j < 8; j++) {\n    crc = (crc << 1) ^ ((crc & 0x800000) !== 0 ? 0x864CFB : 0);\n  }\n  crc_table[0][i] =\n    ((crc & 0xFF0000) >> 16) |\n    (crc & 0x00FF00) |\n    ((crc & 0x0000FF) << 16);\n}\nfor (let i = 0; i <= 0xFF; i++) {\n  crc_table[1][i] = (crc_table[0][i] >> 8) ^ crc_table[0][crc_table[0][i] & 0xFF];\n}\nfor (let i = 0; i <= 0xFF; i++) {\n  crc_table[2][i] = (crc_table[1][i] >> 8) ^ crc_table[0][crc_table[1][i] & 0xFF];\n}\nfor (let i = 0; i <= 0xFF; i++) {\n  crc_table[3][i] = (crc_table[2][i] >> 8) ^ crc_table[0][crc_table[2][i] & 0xFF];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView#Endianness\nconst isLittleEndian = (function() {\n  const buffer = new ArrayBuffer(2);\n  new DataView(buffer).setInt16(0, 0xFF, true /* littleEndian */);\n  // Int16Array uses the platform's endianness.\n  return new Int16Array(buffer)[0] === 0xFF;\n}());\n\n/**\n * Internal function to calculate a CRC-24 checksum over a given string (data)\n * @param {String | ReadableStream<String>} input - Data to create a CRC-24 checksum for\n * @returns {Uint8Array | ReadableStream<Uint8Array>} The CRC-24 checksum.\n * @private\n */\nfunction createcrc24(input) {\n  let crc = 0xCE04B7;\n  return stream.transform(input, value => {\n    const len32 = isLittleEndian ? Math.floor(value.length / 4) : 0;\n    const arr32 = new Uint32Array(value.buffer, value.byteOffset, len32);\n    for (let i = 0; i < len32; i++) {\n      crc ^= arr32[i];\n      crc =\n        crc_table[0][(crc >> 24) & 0xFF] ^\n        crc_table[1][(crc >> 16) & 0xFF] ^\n        crc_table[2][(crc >> 8) & 0xFF] ^\n        crc_table[3][(crc >> 0) & 0xFF];\n    }\n    for (let i = len32 * 4; i < value.length; i++) {\n      crc = (crc >> 8) ^ crc_table[0][(crc & 0xFF) ^ value[i]];\n    }\n  }, () => new Uint8Array([crc, crc >> 8, crc >> 16]));\n}\n\n/**\n * Verify armored headers. RFC4880, section 6.3: \"OpenPGP should consider improperly formatted\n * Armor Headers to be corruption of the ASCII Armor.\"\n * @private\n * @param {Array<String>} headers - Armor headers\n */\nfunction verifyHeaders(headers) {\n  for (let i = 0; i < headers.length; i++) {\n    if (!/^([^\\s:]|[^\\s:][^:]*[^\\s:]): .+$/.test(headers[i])) {\n      throw new Error('Improperly formatted armor header: ' + headers[i]);\n    }\n    if (!/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(headers[i])) {\n      util.printDebugError(new Error('Unknown header: ' + headers[i]));\n    }\n  }\n}\n\n/**\n * Splits a message into two parts, the body and the checksum. This is an internal function\n * @param {String} text - OpenPGP armored message part\n * @returns {Object} An object with attribute \"body\" containing the body.\n * and an attribute \"checksum\" containing the checksum.\n * @private\n */\nfunction splitChecksum(text) {\n  let body = text;\n  let checksum = '';\n\n  const lastEquals = text.lastIndexOf('=');\n\n  if (lastEquals >= 0 && lastEquals !== text.length - 1) { // '=' as the last char means no checksum\n    body = text.slice(0, lastEquals);\n    checksum = text.slice(lastEquals + 1).substr(0, 4);\n  }\n\n  return { body: body, checksum: checksum };\n}\n\n/**\n * Dearmor an OpenPGP armored message; verify the checksum and return\n * the encoded bytes\n * @param {String} input - OpenPGP armored message\n * @returns {Promise<Object>} An object with attribute \"text\" containing the message text,\n * an attribute \"data\" containing a stream of bytes and \"type\" for the ASCII armor type\n * @async\n * @static\n */\nexport function unarmor(input, config = defaultConfig) {\n  return new Promise(async (resolve, reject) => {\n    try {\n      const reSplit = /^-----[^-]+-----$/m;\n      const reEmptyLine = /^[ \\f\\r\\t\\u00a0\\u2000-\\u200a\\u202f\\u205f\\u3000]*$/;\n\n      let type;\n      const headers = [];\n      let lastHeaders = headers;\n      let headersDone;\n      let text = [];\n      let textDone;\n      let checksum;\n      let data = base64.decode(stream.transformPair(input, async (readable, writable) => {\n        const reader = stream.getReader(readable);\n        try {\n          while (true) {\n            let line = await reader.readLine();\n            if (line === undefined) {\n              throw new Error('Misformed armored text');\n            }\n            // remove trailing whitespace at end of lines\n            line = util.removeTrailingSpaces(line.replace(/[\\r\\n]/g, ''));\n            if (!type) {\n              if (reSplit.test(line)) {\n                type = getType(line);\n              }\n            } else if (!headersDone) {\n              if (reSplit.test(line)) {\n                reject(new Error('Mandatory blank line missing between armor headers and armor data'));\n              }\n              if (!reEmptyLine.test(line)) {\n                lastHeaders.push(line);\n              } else {\n                verifyHeaders(lastHeaders);\n                headersDone = true;\n                if (textDone || type !== 2) {\n                  resolve({ text, data, headers, type });\n                  break;\n                }\n              }\n            } else if (!textDone && type === 2) {\n              if (!reSplit.test(line)) {\n                // Reverse dash-escaping for msg\n                text.push(line.replace(/^- /, ''));\n              } else {\n                text = text.join('\\r\\n');\n                textDone = true;\n                verifyHeaders(lastHeaders);\n                lastHeaders = [];\n                headersDone = false;\n              }\n            }\n          }\n        } catch (e) {\n          reject(e);\n          return;\n        }\n        const writer = stream.getWriter(writable);\n        try {\n          while (true) {\n            await writer.ready;\n            const { done, value } = await reader.read();\n            if (done) {\n              throw new Error('Misformed armored text');\n            }\n            const line = value + '';\n            if (line.indexOf('=') === -1 && line.indexOf('-') === -1) {\n              await writer.write(line);\n            } else {\n              let remainder = await reader.readToEnd();\n              if (!remainder.length) remainder = '';\n              remainder = line + remainder;\n              remainder = util.removeTrailingSpaces(remainder.replace(/\\r/g, ''));\n              const parts = remainder.split(reSplit);\n              if (parts.length === 1) {\n                throw new Error('Misformed armored text');\n              }\n              const split = splitChecksum(parts[0].slice(0, -1));\n              checksum = split.checksum;\n              await writer.write(split.body);\n              break;\n            }\n          }\n          await writer.ready;\n          await writer.close();\n        } catch (e) {\n          await writer.abort(e);\n        }\n      }));\n      data = stream.transformPair(data, async (readable, writable) => {\n        const checksumVerified = stream.readToEnd(getCheckSum(stream.passiveClone(readable)));\n        checksumVerified.catch(() => {});\n        await stream.pipe(readable, writable, {\n          preventClose: true\n        });\n        const writer = stream.getWriter(writable);\n        try {\n          const checksumVerifiedString = (await checksumVerified).replace('\\n', '');\n          if (checksum !== checksumVerifiedString && (checksum || config.checksumRequired)) {\n            throw new Error('Ascii armor integrity check failed');\n          }\n          await writer.ready;\n          await writer.close();\n        } catch (e) {\n          await writer.abort(e);\n        }\n      });\n    } catch (e) {\n      reject(e);\n    }\n  }).then(async result => {\n    if (stream.isArrayStream(result.data)) {\n      result.data = await stream.readToEnd(result.data);\n    }\n    return result;\n  });\n}\n\n\n/**\n * Armor an OpenPGP binary packet block\n * @param {module:enums.armor} messageType - Type of the message\n * @param {Uint8Array | ReadableStream<Uint8Array>} body - The message body to armor\n * @param {Integer} [partIndex]\n * @param {Integer} [partTotal]\n * @param {String} [customComment] - Additional comment to add to the armored string\n * @returns {String | ReadableStream<String>} Armored text.\n * @static\n */\nexport function armor(messageType, body, partIndex, partTotal, customComment, config = defaultConfig) {\n  let text;\n  let hash;\n  if (messageType === enums.armor.signed) {\n    text = body.text;\n    hash = body.hash;\n    body = body.data;\n  }\n  const bodyClone = stream.passiveClone(body);\n  const result = [];\n  switch (messageType) {\n    case enums.armor.multipartSection:\n      result.push('-----BEGIN PGP MESSAGE, PART ' + partIndex + '/' + partTotal + '-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP MESSAGE, PART ' + partIndex + '/' + partTotal + '-----\\n');\n      break;\n    case enums.armor.multipartLast:\n      result.push('-----BEGIN PGP MESSAGE, PART ' + partIndex + '-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP MESSAGE, PART ' + partIndex + '-----\\n');\n      break;\n    case enums.armor.signed:\n      result.push('\\n-----BEGIN PGP SIGNED MESSAGE-----\\n');\n      result.push('Hash: ' + hash + '\\n\\n');\n      result.push(text.replace(/^-/mg, '- -'));\n      result.push('\\n-----BEGIN PGP SIGNATURE-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP SIGNATURE-----\\n');\n      break;\n    case enums.armor.message:\n      result.push('-----BEGIN PGP MESSAGE-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP MESSAGE-----\\n');\n      break;\n    case enums.armor.publicKey:\n      result.push('-----BEGIN PGP PUBLIC KEY BLOCK-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP PUBLIC KEY BLOCK-----\\n');\n      break;\n    case enums.armor.privateKey:\n      result.push('-----BEGIN PGP PRIVATE KEY BLOCK-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP PRIVATE KEY BLOCK-----\\n');\n      break;\n    case enums.armor.signature:\n      result.push('-----BEGIN PGP SIGNATURE-----\\n');\n      result.push(addheader(customComment, config));\n      result.push(base64.encode(body));\n      result.push('=', getCheckSum(bodyClone));\n      result.push('-----END PGP SIGNATURE-----\\n');\n      break;\n  }\n\n  return util.concat(result);\n}\n","// GPG4Browsers - An OpenPGP implementation in javascript\n// Copyright (C) 2011 Recurity Labs GmbH\n//\n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 3.0 of the License, or (at your option) any later version.\n//\n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n// Lesser General Public License for more details.\n//\n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\n/**\n * @module type/keyid\n * @private\n */\n\nimport util from '../util.js';\n\n/**\n * Implementation of type key id\n *\n * {@link https://tools.ietf.org/html/rfc4880#section-3.3|RFC4880 3.3}:\n * A Key ID is an eight-octet scalar that identifies a key.\n * Implementations SHOULD NOT assume that Key IDs are unique.  The\n * section \"Enhanced Key Formats\" below describes how Key IDs are\n * formed.\n */\nclass KeyID {\n  constructor() {\n    this.bytes = '';\n  }\n\n  /**\n   * Parsing method for a key id\n   * @param {Uint8Array} bytes - Input to read the key id from\n   */\n  read(bytes) {\n    this.bytes = util.uint8ArrayToString(bytes.subarray(0, 8));\n  }\n\n  /**\n   * Serializes the Key ID\n   * @returns {Uint8Array} Key ID as a Uint8Array.\n   */\n  write() {\n    return util.stringToUint8Array(this.bytes);\n  }\n\n  /**\n   * Returns the Key ID represented as a hexadecimal string\n   * @returns {String} Key ID as a hexadecimal string.\n   */\n  toHex() {\n    return util.uint8ArrayToHex(util.stringToUint8Array(this.bytes));\n  }\n\n  /**\n   * Checks equality of Key ID's\n   * @param {KeyID} keyID\n   * @param {Boolean} matchWildcard - Indicates whether to check if either keyID is a wildcard\n   */\n  equals(keyID, matchWildcard = false) {\n    return (matchWildcard && (keyID.isWildcard() || this.isWildcard())) || this.bytes === keyID.bytes;\n  }\n\n  /**\n   * Checks to see if the Key ID is unset\n   * @returns {Boolean} True if the Key ID is null.\n   */\n  isNull() {\n    return this.bytes === '';\n  }\n\n  /**\n   * Checks to see if the Key ID is a \"wildcard\" Key ID (all zeros)\n   * @returns {Boolean} True if this is a wildcard Key ID.\n   */\n  isWildcard() {\n    return /^0+$/.test(this.toHex());\n  }\n\n  static mapToHex(keyID) {\n    return keyID.toHex();\n  }\n\n  static fromID(hex) {\n    const keyID = new KeyID();\n    keyID.read(util.hexToUint8Array(hex));\n    return keyID;\n  }\n\n  static wildcard() {\n    const keyID = new KeyID();\n    keyID.read(new Uint8Array(8));\n    return keyID;\n  }\n}\n\nexport default KeyID;\n","/**\n * @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.\n * @author Artem S Vybornov <vybornov@gmail.com>\n * @license MIT\n */\nexport var AES_asm = function () {\n  \"use strict\";\n\n  /**\n   * Galois Field stuff init flag\n   */\n  var ginit_done = false;\n\n  /**\n   * Galois Field exponentiation and logarithm tables for 3 (the generator)\n   */\n  var gexp3, glog3;\n\n  /**\n   * Init Galois Field tables\n   */\n  function ginit() {\n    gexp3 = [],\n      glog3 = [];\n\n    var a = 1, c, d;\n    for (c = 0; c < 255; c++) {\n      gexp3[c] = a;\n\n      // Multiply by three\n      d = a & 0x80, a <<= 1, a &= 255;\n      if (d === 0x80) a ^= 0x1b;\n      a ^= gexp3[c];\n\n      // Set the log table value\n      glog3[gexp3[c]] = c;\n    }\n    gexp3[255] = gexp3[0];\n    glog3[0] = 0;\n\n    ginit_done = true;\n  }\n\n  /**\n   * Galois Field multiplication\n   * @param {number} a\n   * @param {number} b\n   * @return {number}\n   */\n  function gmul(a, b) {\n    var c = gexp3[(glog3[a] + glog3[b]) % 255];\n    if (a === 0 || b === 0) c = 0;\n    return c;\n  }\n\n  /**\n   * Galois Field reciprocal\n   * @param {number} a\n   * @return {number}\n   */\n  function ginv(a) {\n    var i = gexp3[255 - glog3[a]];\n    if (a === 0) i = 0;\n    return i;\n  }\n\n  /**\n   * AES stuff init flag\n   */\n  var aes_init_done = false;\n\n  /**\n   * Encryption, Decryption, S-Box and KeyTransform tables\n   *\n   * @type {number[]}\n   */\n  var aes_sbox;\n\n  /**\n   * @type {number[]}\n   */\n  var aes_sinv;\n\n  /**\n   * @type {number[][]}\n   */\n  var aes_enc;\n\n  /**\n   * @type {number[][]}\n   */\n  var aes_dec;\n\n  /**\n   * Init AES tables\n   */\n  function aes_init() {\n    if (!ginit_done) ginit();\n\n    // Calculates AES S-Box value\n    function _s(a) {\n      var c, s, x;\n      s = x = ginv(a);\n      for (c = 0; c < 4; c++) {\n        s = ((s << 1) | (s >>> 7)) & 255;\n        x ^= s;\n      }\n      x ^= 99;\n      return x;\n    }\n\n    // Tables\n    aes_sbox = [],\n      aes_sinv = [],\n      aes_enc = [[], [], [], []],\n      aes_dec = [[], [], [], []];\n\n    for (var i = 0; i < 256; i++) {\n      var s = _s(i);\n\n      // S-Box and its inverse\n      aes_sbox[i] = s;\n      aes_sinv[s] = i;\n\n      // Ecryption and Decryption tables\n      aes_enc[0][i] = (gmul(2, s) << 24) | (s << 16) | (s << 8) | gmul(3, s);\n      aes_dec[0][s] = (gmul(14, i) << 24) | (gmul(9, i) << 16) | (gmul(13, i) << 8) | gmul(11, i);\n      // Rotate tables\n      for (var t = 1; t < 4; t++) {\n        aes_enc[t][i] = (aes_enc[t - 1][i] >>> 8) | (aes_enc[t - 1][i] << 24);\n        aes_dec[t][s] = (aes_dec[t - 1][s] >>> 8) | (aes_dec[t - 1][s] << 24);\n      }\n    }\n\n    aes_init_done = true;\n  }\n\n  /**\n   * Asm.js module constructor.\n   *\n   * <p>\n   * Heap buffer layout by offset:\n   * <pre>\n   * 0x0000   encryption key schedule\n   * 0x0400   decryption key schedule\n   * 0x0800   sbox\n   * 0x0c00   inv sbox\n   * 0x1000   encryption tables\n   * 0x2000   decryption tables\n   * 0x3000   reserved (future GCM multiplication lookup table)\n   * 0x4000   data\n   * </pre>\n   * Don't touch anything before <code>0x400</code>.\n   * </p>\n   *\n   * @alias AES_asm\n   * @class\n   * @param foreign - <i>ignored</i>\n   * @param buffer - heap buffer to link with\n   */\n  var wrapper = function (foreign, buffer) {\n    // Init AES stuff for the first time\n    if (!aes_init_done) aes_init();\n\n    // Fill up AES tables\n    var heap = new Uint32Array(buffer);\n    heap.set(aes_sbox, 0x0800 >> 2);\n    heap.set(aes_sinv, 0x0c00 >> 2);\n    for (var i = 0; i < 4; i++) {\n      heap.set(aes_enc[i], (0x1000 + 0x400 * i) >> 2);\n      heap.set(aes_dec[i], (0x2000 + 0x400 * i) >> 2);\n    }\n\n    /**\n     * Calculate AES key schedules.\n     * @instance\n     * @memberof AES_asm\n     * @param {number} ks - key size, 4/6/8 (for 128/192/256-bit key correspondingly)\n     * @param {number} k0 - key vector components\n     * @param {number} k1 - key vector components\n     * @param {number} k2 - key vector components\n     * @param {number} k3 - key vector components\n     * @param {number} k4 - key vector components\n     * @param {number} k5 - key vector components\n     * @param {number} k6 - key vector components\n     * @param {number} k7 - key vector components\n     */\n    function set_key(ks, k0, k1, k2, k3, k4, k5, k6, k7) {\n      var ekeys = heap.subarray(0x000, 60),\n        dkeys = heap.subarray(0x100, 0x100 + 60);\n\n      // Encryption key schedule\n      ekeys.set([k0, k1, k2, k3, k4, k5, k6, k7]);\n      for (var i = ks, rcon = 1; i < 4 * ks + 28; i++) {\n        var k = ekeys[i - 1];\n        if ((i % ks === 0) || (ks === 8 && i % ks === 4)) {\n          k = aes_sbox[k >>> 24] << 24 ^ aes_sbox[k >>> 16 & 255] << 16 ^ aes_sbox[k >>> 8 & 255] << 8 ^ aes_sbox[k & 255];\n        }\n        if (i % ks === 0) {\n          k = (k << 8) ^ (k >>> 24) ^ (rcon << 24);\n          rcon = (rcon << 1) ^ ((rcon & 0x80) ? 0x1b : 0);\n        }\n        ekeys[i] = ekeys[i - ks] ^ k;\n      }\n\n      // Decryption key schedule\n      for (var j = 0; j < i; j += 4) {\n        for (var jj = 0; jj < 4; jj++) {\n          var k = ekeys[i - (4 + j) + (4 - jj) % 4];\n          if (j < 4 || j >= i - 4) {\n            dkeys[j + jj] = k;\n          } else {\n            dkeys[j + jj] = aes_dec[0][aes_sbox[k >>> 24]]\n              ^ aes_dec[1][aes_sbox[k >>> 16 & 255]]\n              ^ aes_dec[2][aes_sbox[k >>> 8 & 255]]\n              ^ aes_dec[3][aes_sbox[k & 255]];\n          }\n        }\n      }\n\n      // Set rounds number\n      asm.set_rounds(ks + 5);\n    }\n\n    // create library object with necessary properties\n    var stdlib = {Uint8Array: Uint8Array, Uint32Array: Uint32Array};\n\n    var asm = function (stdlib, foreign, buffer) {\n      \"use asm\";\n\n      var S0 = 0, S1 = 0, S2 = 0, S3 = 0,\n        I0 = 0, I1 = 0, I2 = 0, I3 = 0,\n        N0 = 0, N1 = 0, N2 = 0, N3 = 0,\n        M0 = 0, M1 = 0, M2 = 0, M3 = 0,\n        H0 = 0, H1 = 0, H2 = 0, H3 = 0,\n        R = 0;\n\n      var HEAP = new stdlib.Uint32Array(buffer),\n        DATA = new stdlib.Uint8Array(buffer);\n\n      /**\n       * AES core\n       * @param {number} k - precomputed key schedule offset\n       * @param {number} s - precomputed sbox table offset\n       * @param {number} t - precomputed round table offset\n       * @param {number} r - number of inner rounds to perform\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _core(k, s, t, r, x0, x1, x2, x3) {\n        k = k | 0;\n        s = s | 0;\n        t = t | 0;\n        r = r | 0;\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        var t1 = 0, t2 = 0, t3 = 0,\n          y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n          i = 0;\n\n        t1 = t | 0x400, t2 = t | 0x800, t3 = t | 0xc00;\n\n        // round 0\n        x0 = x0 ^ HEAP[(k | 0) >> 2],\n          x1 = x1 ^ HEAP[(k | 4) >> 2],\n          x2 = x2 ^ HEAP[(k | 8) >> 2],\n          x3 = x3 ^ HEAP[(k | 12) >> 2];\n\n        // round 1..r\n        for (i = 16; (i | 0) <= (r << 4); i = (i + 16) | 0) {\n          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],\n            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],\n            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],\n            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];\n          x0 = y0, x1 = y1, x2 = y2, x3 = y3;\n        }\n\n        // final round\n        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],\n          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],\n          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],\n          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];\n      }\n\n      /**\n       * ECB mode encryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _ecb_enc(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          x0,\n          x1,\n          x2,\n          x3\n        );\n      }\n\n      /**\n       * ECB mode decryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _ecb_dec(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        var t = 0;\n\n        _core(\n          0x0400, 0x0c00, 0x2000,\n          R,\n          x0,\n          x3,\n          x2,\n          x1\n        );\n\n        t = S1, S1 = S3, S3 = t;\n      }\n\n\n      /**\n       * CBC mode encryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _cbc_enc(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          I0 ^ x0,\n          I1 ^ x1,\n          I2 ^ x2,\n          I3 ^ x3\n        );\n\n        I0 = S0,\n          I1 = S1,\n          I2 = S2,\n          I3 = S3;\n      }\n\n      /**\n       * CBC mode decryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _cbc_dec(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        var t = 0;\n\n        _core(\n          0x0400, 0x0c00, 0x2000,\n          R,\n          x0,\n          x3,\n          x2,\n          x1\n        );\n\n        t = S1, S1 = S3, S3 = t;\n\n        S0 = S0 ^ I0,\n          S1 = S1 ^ I1,\n          S2 = S2 ^ I2,\n          S3 = S3 ^ I3;\n\n        I0 = x0,\n          I1 = x1,\n          I2 = x2,\n          I3 = x3;\n      }\n\n      /**\n       * CFB mode encryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _cfb_enc(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          I0,\n          I1,\n          I2,\n          I3\n        );\n\n        I0 = S0 = S0 ^ x0,\n          I1 = S1 = S1 ^ x1,\n          I2 = S2 = S2 ^ x2,\n          I3 = S3 = S3 ^ x3;\n      }\n\n\n      /**\n       * CFB mode decryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _cfb_dec(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          I0,\n          I1,\n          I2,\n          I3\n        );\n\n        S0 = S0 ^ x0,\n          S1 = S1 ^ x1,\n          S2 = S2 ^ x2,\n          S3 = S3 ^ x3;\n\n        I0 = x0,\n          I1 = x1,\n          I2 = x2,\n          I3 = x3;\n      }\n\n      /**\n       * OFB mode encryption / decryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _ofb(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          I0,\n          I1,\n          I2,\n          I3\n        );\n\n        I0 = S0,\n          I1 = S1,\n          I2 = S2,\n          I3 = S3;\n\n        S0 = S0 ^ x0,\n          S1 = S1 ^ x1,\n          S2 = S2 ^ x2,\n          S3 = S3 ^ x3;\n      }\n\n      /**\n       * CTR mode encryption / decryption\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _ctr(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        _core(\n          0x0000, 0x0800, 0x1000,\n          R,\n          N0,\n          N1,\n          N2,\n          N3\n        );\n\n        N3 = (~M3 & N3) | M3 & (N3 + 1);\n          N2 = (~M2 & N2) | M2 & (N2 + ((N3 | 0) == 0));\n          N1 = (~M1 & N1) | M1 & (N1 + ((N2 | 0) == 0));\n          N0 = (~M0 & N0) | M0 & (N0 + ((N1 | 0) == 0));\n\n        S0 = S0 ^ x0;\n          S1 = S1 ^ x1;\n          S2 = S2 ^ x2;\n          S3 = S3 ^ x3;\n      }\n\n      /**\n       * GCM mode MAC calculation\n       * @param {number} x0 - 128-bit input block vector\n       * @param {number} x1 - 128-bit input block vector\n       * @param {number} x2 - 128-bit input block vector\n       * @param {number} x3 - 128-bit input block vector\n       */\n      function _gcm_mac(x0, x1, x2, x3) {\n        x0 = x0 | 0;\n        x1 = x1 | 0;\n        x2 = x2 | 0;\n        x3 = x3 | 0;\n\n        var y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n          z0 = 0, z1 = 0, z2 = 0, z3 = 0,\n          i = 0, c = 0;\n\n        x0 = x0 ^ I0,\n          x1 = x1 ^ I1,\n          x2 = x2 ^ I2,\n          x3 = x3 ^ I3;\n\n        y0 = H0 | 0,\n          y1 = H1 | 0,\n          y2 = H2 | 0,\n          y3 = H3 | 0;\n\n        for (; (i | 0) < 128; i = (i + 1) | 0) {\n          if (y0 >>> 31) {\n            z0 = z0 ^ x0,\n              z1 = z1 ^ x1,\n              z2 = z2 ^ x2,\n              z3 = z3 ^ x3;\n          }\n\n          y0 = (y0 << 1) | (y1 >>> 31),\n            y1 = (y1 << 1) | (y2 >>> 31),\n            y2 = (y2 << 1) | (y3 >>> 31),\n            y3 = (y3 << 1);\n\n          c = x3 & 1;\n\n          x3 = (x3 >>> 1) | (x2 << 31),\n            x2 = (x2 >>> 1) | (x1 << 31),\n            x1 = (x1 >>> 1) | (x0 << 31),\n            x0 = (x0 >>> 1);\n\n          if (c) x0 = x0 ^ 0xe1000000;\n        }\n\n        I0 = z0,\n          I1 = z1,\n          I2 = z2,\n          I3 = z3;\n      }\n\n      /**\n       * Set the internal rounds number.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} r - number if inner AES rounds\n       */\n      function set_rounds(r) {\n        r = r | 0;\n        R = r;\n      }\n\n      /**\n       * Populate the internal state of the module.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} s0 - state vector\n       * @param {number} s1 - state vector\n       * @param {number} s2 - state vector\n       * @param {number} s3 - state vector\n       */\n      function set_state(s0, s1, s2, s3) {\n        s0 = s0 | 0;\n        s1 = s1 | 0;\n        s2 = s2 | 0;\n        s3 = s3 | 0;\n\n        S0 = s0,\n          S1 = s1,\n          S2 = s2,\n          S3 = s3;\n      }\n\n      /**\n       * Populate the internal iv of the module.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} i0 - iv vector\n       * @param {number} i1 - iv vector\n       * @param {number} i2 - iv vector\n       * @param {number} i3 - iv vector\n       */\n      function set_iv(i0, i1, i2, i3) {\n        i0 = i0 | 0;\n        i1 = i1 | 0;\n        i2 = i2 | 0;\n        i3 = i3 | 0;\n\n        I0 = i0,\n          I1 = i1,\n          I2 = i2,\n          I3 = i3;\n      }\n\n      /**\n       * Set nonce for CTR-family modes.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} n0 - nonce vector\n       * @param {number} n1 - nonce vector\n       * @param {number} n2 - nonce vector\n       * @param {number} n3 - nonce vector\n       */\n      function set_nonce(n0, n1, n2, n3) {\n        n0 = n0 | 0;\n        n1 = n1 | 0;\n        n2 = n2 | 0;\n        n3 = n3 | 0;\n\n        N0 = n0,\n          N1 = n1,\n          N2 = n2,\n          N3 = n3;\n      }\n\n      /**\n       * Set counter mask for CTR-family modes.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} m0 - counter mask vector\n       * @param {number} m1 - counter mask vector\n       * @param {number} m2 - counter mask vector\n       * @param {number} m3 - counter mask vector\n       */\n      function set_mask(m0, m1, m2, m3) {\n        m0 = m0 | 0;\n        m1 = m1 | 0;\n        m2 = m2 | 0;\n        m3 = m3 | 0;\n\n        M0 = m0,\n          M1 = m1,\n          M2 = m2,\n          M3 = m3;\n      }\n\n      /**\n       * Set counter for CTR-family modes.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} c0 - counter vector\n       * @param {number} c1 - counter vector\n       * @param {number} c2 - counter vector\n       * @param {number} c3 - counter vector\n       */\n      function set_counter(c0, c1, c2, c3) {\n        c0 = c0 | 0;\n        c1 = c1 | 0;\n        c2 = c2 | 0;\n        c3 = c3 | 0;\n\n        N3 = (~M3 & N3) | M3 & c3,\n          N2 = (~M2 & N2) | M2 & c2,\n          N1 = (~M1 & N1) | M1 & c1,\n          N0 = (~M0 & N0) | M0 & c0;\n      }\n\n      /**\n       * Store the internal state vector into the heap.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} pos - offset where to put the data\n       * @return {number} The number of bytes have been written into the heap, always 16.\n       */\n      function get_state(pos) {\n        pos = pos | 0;\n\n        if (pos & 15) return -1;\n\n        DATA[pos | 0] = S0 >>> 24,\n          DATA[pos | 1] = S0 >>> 16 & 255,\n          DATA[pos | 2] = S0 >>> 8 & 255,\n          DATA[pos | 3] = S0 & 255,\n          DATA[pos | 4] = S1 >>> 24,\n          DATA[pos | 5] = S1 >>> 16 & 255,\n          DATA[pos | 6] = S1 >>> 8 & 255,\n          DATA[pos | 7] = S1 & 255,\n          DATA[pos | 8] = S2 >>> 24,\n          DATA[pos | 9] = S2 >>> 16 & 255,\n          DATA[pos | 10] = S2 >>> 8 & 255,\n          DATA[pos | 11] = S2 & 255,\n          DATA[pos | 12] = S3 >>> 24,\n          DATA[pos | 13] = S3 >>> 16 & 255,\n          DATA[pos | 14] = S3 >>> 8 & 255,\n          DATA[pos | 15] = S3 & 255;\n\n        return 16;\n      }\n\n      /**\n       * Store the internal iv vector into the heap.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} pos - offset where to put the data\n       * @return {number} The number of bytes have been written into the heap, always 16.\n       */\n      function get_iv(pos) {\n        pos = pos | 0;\n\n        if (pos & 15) return -1;\n\n        DATA[pos | 0] = I0 >>> 24,\n          DATA[pos | 1] = I0 >>> 16 & 255,\n          DATA[pos | 2] = I0 >>> 8 & 255,\n          DATA[pos | 3] = I0 & 255,\n          DATA[pos | 4] = I1 >>> 24,\n          DATA[pos | 5] = I1 >>> 16 & 255,\n          DATA[pos | 6] = I1 >>> 8 & 255,\n          DATA[pos | 7] = I1 & 255,\n          DATA[pos | 8] = I2 >>> 24,\n          DATA[pos | 9] = I2 >>> 16 & 255,\n          DATA[pos | 10] = I2 >>> 8 & 255,\n          DATA[pos | 11] = I2 & 255,\n          DATA[pos | 12] = I3 >>> 24,\n          DATA[pos | 13] = I3 >>> 16 & 255,\n          DATA[pos | 14] = I3 >>> 8 & 255,\n          DATA[pos | 15] = I3 & 255;\n\n        return 16;\n      }\n\n      /**\n       * GCM initialization.\n       * @instance\n       * @memberof AES_asm\n       */\n      function gcm_init() {\n        _ecb_enc(0, 0, 0, 0);\n        H0 = S0,\n          H1 = S1,\n          H2 = S2,\n          H3 = S3;\n      }\n\n      /**\n       * Perform ciphering operation on the supplied data.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n       * @param {number} pos - offset of the data being processed\n       * @param {number} len - length of the data being processed\n       * @return {number} Actual amount of data have been processed.\n       */\n      function cipher(mode, pos, len) {\n        mode = mode | 0;\n        pos = pos | 0;\n        len = len | 0;\n\n        var ret = 0;\n\n        if (pos & 15) return -1;\n\n        while ((len | 0) >= 16) {\n          _cipher_modes[mode & 7](\n            DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n            DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n            DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n            DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n          );\n\n          DATA[pos | 0] = S0 >>> 24,\n            DATA[pos | 1] = S0 >>> 16 & 255,\n            DATA[pos | 2] = S0 >>> 8 & 255,\n            DATA[pos | 3] = S0 & 255,\n            DATA[pos | 4] = S1 >>> 24,\n            DATA[pos | 5] = S1 >>> 16 & 255,\n            DATA[pos | 6] = S1 >>> 8 & 255,\n            DATA[pos | 7] = S1 & 255,\n            DATA[pos | 8] = S2 >>> 24,\n            DATA[pos | 9] = S2 >>> 16 & 255,\n            DATA[pos | 10] = S2 >>> 8 & 255,\n            DATA[pos | 11] = S2 & 255,\n            DATA[pos | 12] = S3 >>> 24,\n            DATA[pos | 13] = S3 >>> 16 & 255,\n            DATA[pos | 14] = S3 >>> 8 & 255,\n            DATA[pos | 15] = S3 & 255;\n\n          ret = (ret + 16) | 0,\n            pos = (pos + 16) | 0,\n            len = (len - 16) | 0;\n        }\n\n        return ret | 0;\n      }\n\n      /**\n       * Calculates MAC of the supplied data.\n       * @instance\n       * @memberof AES_asm\n       * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n       * @param {number} pos - offset of the data being processed\n       * @param {number} len - length of the data being processed\n       * @return {number} Actual amount of data have been processed.\n       */\n      function mac(mode, pos, len) {\n        mode = mode | 0;\n        pos = pos | 0;\n        len = len | 0;\n\n        var ret = 0;\n\n        if (pos & 15) return -1;\n\n        while ((len | 0) >= 16) {\n          _mac_modes[mode & 1](\n            DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n            DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n            DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n            DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n          );\n\n          ret = (ret + 16) | 0,\n            pos = (pos + 16) | 0,\n            len = (len - 16) | 0;\n        }\n\n        return ret | 0;\n      }\n\n      /**\n       * AES cipher modes table (virual methods)\n       */\n      var _cipher_modes = [_ecb_enc, _ecb_dec, _cbc_enc, _cbc_dec, _cfb_enc, _cfb_dec, _ofb, _ctr];\n\n      /**\n       * AES MAC modes table (virual methods)\n       */\n      var _mac_modes = [_cbc_enc, _gcm_mac];\n\n      /**\n       * Asm.js module exports\n       */\n      return {\n        set_rounds: set_rounds,\n        set_state: set_state,\n        set_iv: set_iv,\n        set_nonce: set_nonce,\n        set_mask: set_mask,\n        set_counter: set_counter,\n        get_state: get_state,\n        get_iv: get_iv,\n        gcm_init: gcm_init,\n        cipher: cipher,\n        mac: mac,\n      };\n    }(stdlib, foreign, buffer);\n\n    asm.set_key = set_key;\n\n    return asm;\n  };\n\n  /**\n   * AES enciphering mode constants\n   * @enum {number}\n   * @const\n   */\n  wrapper.ENC = {\n    ECB: 0,\n    CBC: 2,\n    CFB: 4,\n    OFB: 6,\n    CTR: 7,\n  },\n\n    /**\n     * AES deciphering mode constants\n     * @enum {number}\n     * @const\n     */\n    wrapper.DEC = {\n      ECB: 1,\n      CBC: 3,\n      CFB: 5,\n      OFB: 6,\n      CTR: 7,\n    },\n\n    /**\n     * AES MAC mode constants\n     * @enum {number}\n     * @const\n     */\n    wrapper.MAC = {\n      CBC: 0,\n      GCM: 1,\n    };\n\n  /**\n   * Heap data offset\n   * @type {number}\n   * @const\n   */\n  wrapper.HEAP_DATA = 0x4000;\n\n  return wrapper;\n}();\n","const local_atob = typeof atob === 'undefined' ? (str) => require('buffer').Buffer.from(str, 'base64').toString('binary') : atob;\nconst local_btoa = typeof btoa === 'undefined' ? (str) => require('buffer').Buffer.from(str, 'binary').toString('base64') : btoa;\nexport function string_to_bytes(str, utf8 = false) {\n    var len = str.length, bytes = new Uint8Array(utf8 ? 4 * len : len);\n    for (var i = 0, j = 0; i < len; i++) {\n        var c = str.charCodeAt(i);\n        if (utf8 && 0xd800 <= c && c <= 0xdbff) {\n            if (++i >= len)\n                throw new Error('Malformed string, low surrogate expected at position ' + i);\n            c = ((c ^ 0xd800) << 10) | 0x10000 | (str.charCodeAt(i) ^ 0xdc00);\n        }\n        else if (!utf8 && c >>> 8) {\n            throw new Error('Wide characters are not allowed.');\n        }\n        if (!utf8 || c <= 0x7f) {\n            bytes[j++] = c;\n        }\n        else if (c <= 0x7ff) {\n            bytes[j++] = 0xc0 | (c >> 6);\n            bytes[j++] = 0x80 | (c & 0x3f);\n        }\n        else if (c <= 0xffff) {\n            bytes[j++] = 0xe0 | (c >> 12);\n            bytes[j++] = 0x80 | ((c >> 6) & 0x3f);\n            bytes[j++] = 0x80 | (c & 0x3f);\n        }\n        else {\n            bytes[j++] = 0xf0 | (c >> 18);\n            bytes[j++] = 0x80 | ((c >> 12) & 0x3f);\n            bytes[j++] = 0x80 | ((c >> 6) & 0x3f);\n            bytes[j++] = 0x80 | (c & 0x3f);\n        }\n    }\n    return bytes.subarray(0, j);\n}\nexport function hex_to_bytes(str) {\n    var len = str.length;\n    if (len & 1) {\n        str = '0' + str;\n        len++;\n    }\n    var bytes = new Uint8Array(len >> 1);\n    for (var i = 0; i < len; i += 2) {\n        bytes[i >> 1] = parseInt(str.substr(i, 2), 16);\n    }\n    return bytes;\n}\nexport function base64_to_bytes(str) {\n    return string_to_bytes(local_atob(str));\n}\nexport function bytes_to_string(bytes, utf8 = false) {\n    var len = bytes.length, chars = new Array(len);\n    for (var i = 0, j = 0; i < len; i++) {\n        var b = bytes[i];\n        if (!utf8 || b < 128) {\n            chars[j++] = b;\n        }\n        else if (b >= 192 && b < 224 && i + 1 < len) {\n            chars[j++] = ((b & 0x1f) << 6) | (bytes[++i] & 0x3f);\n        }\n        else if (b >= 224 && b < 240 && i + 2 < len) {\n            chars[j++] = ((b & 0xf) << 12) | ((bytes[++i] & 0x3f) << 6) | (bytes[++i] & 0x3f);\n        }\n        else if (b >= 240 && b < 248 && i + 3 < len) {\n            var c = ((b & 7) << 18) | ((bytes[++i] & 0x3f) << 12) | ((bytes[++i] & 0x3f) << 6) | (bytes[++i] & 0x3f);\n            if (c <= 0xffff) {\n                chars[j++] = c;\n            }\n            else {\n                c ^= 0x10000;\n                chars[j++] = 0xd800 | (c >> 10);\n                chars[j++] = 0xdc00 | (c & 0x3ff);\n            }\n        }\n        else {\n            throw new Error('Malformed UTF8 character at byte offset ' + i);\n        }\n    }\n    var str = '', bs = 16384;\n    for (var i = 0; i < j; i += bs) {\n        str += String.fromCharCode.apply(String, chars.slice(i, i + bs <= j ? i + bs : j));\n    }\n    return str;\n}\nexport function bytes_to_hex(arr) {\n    var str = '';\n    for (var i = 0; i < arr.length; i++) {\n        var h = (arr[i] & 0xff).toString(16);\n        if (h.length < 2)\n            str += '0';\n        str += h;\n    }\n    return str;\n}\nexport function bytes_to_base64(arr) {\n    return local_btoa(bytes_to_string(arr));\n}\nexport function pow2_ceil(a) {\n    a -= 1;\n    a |= a >>> 1;\n    a |= a >>> 2;\n    a |= a >>> 4;\n    a |= a >>> 8;\n    a |= a >>> 16;\n    a += 1;\n    return a;\n}\nexport function is_number(a) {\n    return typeof a === 'number';\n}\nexport function is_string(a) {\n    return typeof a === 'string';\n}\nexport function is_buffer(a) {\n    return a instanceof ArrayBuffer;\n}\nexport function is_bytes(a) {\n    return a instanceof Uint8Array;\n}\nexport function is_typed_array(a) {\n    return (a instanceof Int8Array ||\n        a instanceof Uint8Array ||\n        a instanceof Int16Array ||\n        a instanceof Uint16Array ||\n        a instanceof Int32Array ||\n        a instanceof Uint32Array ||\n        a instanceof Float32Array ||\n        a instanceof Float64Array);\n}\nexport function _heap_init(heap, heapSize) {\n    const size = heap ? heap.byteLength : heapSize || 65536;\n    if (size & 0xfff || size <= 0)\n        throw new Error('heap size must be a positive integer and a multiple of 4096');\n    heap = heap || new Uint8Array(new ArrayBuffer(size));\n    return heap;\n}\nexport function _heap_write(heap, hpos, data, dpos, dlen) {\n    const hlen = heap.length - hpos;\n    const wlen = hlen < dlen ? hlen : dlen;\n    heap.set(data.subarray(dpos, dpos + wlen), hpos);\n    return wlen;\n}\nexport function joinBytes(...arg) {\n    const totalLenght = arg.reduce((sum, curr) => sum + curr.length, 0);\n    const ret = new Uint8Array(totalLenght);\n    let cursor = 0;\n    for (let i = 0; i < arg.length; i++) {\n        ret.set(arg[i], cursor);\n        cursor += arg[i].length;\n    }\n    return ret;\n}\n","export class IllegalStateError extends Error {\n    constructor(...args) {\n        super(...args);\n        Object.create(Error.prototype, { name: { value: 'IllegalStateError' } });\n    }\n}\nexport class IllegalArgumentError extends Error {\n    constructor(...args) {\n        super(...args);\n        Object.create(Error.prototype, { name: { value: 'IllegalArgumentError' } });\n    }\n}\nexport class SecurityError extends Error {\n    constructor(...args) {\n        super(...args);\n        Object.create(Error.prototype, { name: { value: 'SecurityError' } });\n    }\n}\n","import { AES_asm } from './aes.asm';\nimport { _heap_init, _heap_write, is_bytes } from '../other/utils';\nimport { IllegalArgumentError, SecurityError } from '../other/errors';\nconst heap_pool = [];\nconst asm_pool = [];\nexport class AES {\n    constructor(key, iv, padding = true, mode, heap, asm) {\n        this.pos = 0;\n        this.len = 0;\n        this.mode = mode;\n        // The AES object state\n        this.pos = 0;\n        this.len = 0;\n        this.key = key;\n        this.iv = iv;\n        this.padding = padding;\n        // The AES \"worker\"\n        this.acquire_asm(heap, asm);\n    }\n    acquire_asm(heap, asm) {\n        if (this.heap === undefined || this.asm === undefined) {\n            this.heap = heap || heap_pool.pop() || _heap_init().subarray(AES_asm.HEAP_DATA);\n            this.asm = asm || asm_pool.pop() || new AES_asm(null, this.heap.buffer);\n            this.reset(this.key, this.iv);\n        }\n        return { heap: this.heap, asm: this.asm };\n    }\n    release_asm() {\n        if (this.heap !== undefined && this.asm !== undefined) {\n            heap_pool.push(this.heap);\n            asm_pool.push(this.asm);\n        }\n        this.heap = undefined;\n        this.asm = undefined;\n    }\n    reset(key, iv) {\n        const { asm } = this.acquire_asm();\n        // Key\n        const keylen = key.length;\n        if (keylen !== 16 && keylen !== 24 && keylen !== 32)\n            throw new IllegalArgumentError('illegal key size');\n        const keyview = new DataView(key.buffer, key.byteOffset, key.byteLength);\n        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);\n        // IV\n        if (iv !== undefined) {\n            if (iv.length !== 16)\n                throw new IllegalArgumentError('illegal iv size');\n            let ivview = new DataView(iv.buffer, iv.byteOffset, iv.byteLength);\n            asm.set_iv(ivview.getUint32(0), ivview.getUint32(4), ivview.getUint32(8), ivview.getUint32(12));\n        }\n        else {\n            asm.set_iv(0, 0, 0, 0);\n        }\n    }\n    AES_Encrypt_process(data) {\n        if (!is_bytes(data))\n            throw new TypeError(\"data isn't of expected type\");\n        let { heap, asm } = this.acquire_asm();\n        let amode = AES_asm.ENC[this.mode];\n        let hpos = AES_asm.HEAP_DATA;\n        let pos = this.pos;\n        let len = this.len;\n        let dpos = 0;\n        let dlen = data.length || 0;\n        let rpos = 0;\n        let rlen = (len + dlen) & -16;\n        let wlen = 0;\n        let result = new Uint8Array(rlen);\n        while (dlen > 0) {\n            wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n            len += wlen;\n            dpos += wlen;\n            dlen -= wlen;\n            wlen = asm.cipher(amode, hpos + pos, len);\n            if (wlen)\n                result.set(heap.subarray(pos, pos + wlen), rpos);\n            rpos += wlen;\n            if (wlen < len) {\n                pos += wlen;\n                len -= wlen;\n            }\n            else {\n                pos = 0;\n                len = 0;\n            }\n        }\n        this.pos = pos;\n        this.len = len;\n        return result;\n    }\n    AES_Encrypt_finish() {\n        let { heap, asm } = this.acquire_asm();\n        let amode = AES_asm.ENC[this.mode];\n        let hpos = AES_asm.HEAP_DATA;\n        let pos = this.pos;\n        let len = this.len;\n        let plen = 16 - (len % 16);\n        let rlen = len;\n        if (this.hasOwnProperty('padding')) {\n            if (this.padding) {\n                for (let p = 0; p < plen; ++p) {\n                    heap[pos + len + p] = plen;\n                }\n                len += plen;\n                rlen = len;\n            }\n            else if (len % 16) {\n                throw new IllegalArgumentError('data length must be a multiple of the block size');\n            }\n        }\n        else {\n            len += plen;\n        }\n        const result = new Uint8Array(rlen);\n        if (len)\n            asm.cipher(amode, hpos + pos, len);\n        if (rlen)\n            result.set(heap.subarray(pos, pos + rlen));\n        this.pos = 0;\n        this.len = 0;\n        this.release_asm();\n        return result;\n    }\n    AES_Decrypt_process(data) {\n        if (!is_bytes(data))\n            throw new TypeError(\"data isn't of expected type\");\n        let { heap, asm } = this.acquire_asm();\n        let amode = AES_asm.DEC[this.mode];\n        let hpos = AES_asm.HEAP_DATA;\n        let pos = this.pos;\n        let len = this.len;\n        let dpos = 0;\n        let dlen = data.length || 0;\n        let rpos = 0;\n        let rlen = (len + dlen) & -16;\n        let plen = 0;\n        let wlen = 0;\n        if (this.padding) {\n            plen = len + dlen - rlen || 16;\n            rlen -= plen;\n        }\n        const result = new Uint8Array(rlen);\n        while (dlen > 0) {\n            wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n            len += wlen;\n            dpos += wlen;\n            dlen -= wlen;\n            wlen = asm.cipher(amode, hpos + pos, len - (!dlen ? plen : 0));\n            if (wlen)\n                result.set(heap.subarray(pos, pos + wlen), rpos);\n            rpos += wlen;\n            if (wlen < len) {\n                pos += wlen;\n                len -= wlen;\n            }\n            else {\n                pos = 0;\n                len = 0;\n            }\n        }\n        this.pos = pos;\n        this.len = len;\n        return result;\n    }\n    AES_Decrypt_finish() {\n        let { heap, asm } = this.acquire_asm();\n        let amode = AES_asm.DEC[this.mode];\n        let hpos = AES_asm.HEAP_DATA;\n        let pos = this.pos;\n        let len = this.len;\n        let rlen = len;\n        if (len > 0) {\n            if (len % 16) {\n                if (this.hasOwnProperty('padding')) {\n                    throw new IllegalArgumentError('data length must be a multiple of the block size');\n                }\n                else {\n                    len += 16 - (len % 16);\n                }\n            }\n            asm.cipher(amode, hpos + pos, len);\n            if (this.hasOwnProperty('padding') && this.padding) {\n                let pad = heap[pos + rlen - 1];\n                if (pad < 1 || pad > 16 || pad > rlen)\n                    throw new SecurityError('bad padding');\n                let pcheck = 0;\n                for (let i = pad; i > 1; i--)\n                    pcheck |= pad ^ heap[pos + rlen - i];\n                if (pcheck)\n                    throw new SecurityError('bad padding');\n                rlen -= pad;\n            }\n        }\n        const result = new Uint8Array(rlen);\n        if (rlen > 0) {\n            result.set(heap.subarray(pos, pos + rlen));\n        }\n        this.pos = 0;\n        this.len = 0;\n        this.release_asm();\n        return result;\n    }\n}\n","import { AES } from './aes';\nimport { joinBytes } from '../other/utils';\nexport class AES_ECB {\n    static encrypt(data, key, padding = false) {\n        return new AES_ECB(key, padding).encrypt(data);\n    }\n    static decrypt(data, key, padding = false) {\n        return new AES_ECB(key, padding).decrypt(data);\n    }\n    constructor(key, padding = false, aes) {\n        this.aes = aes ? aes : new AES(key, undefined, padding, 'ECB');\n    }\n    encrypt(data) {\n        const r1 = this.aes.AES_Encrypt_process(data);\n        const r2 = this.aes.AES_Encrypt_finish();\n        return joinBytes(r1, r2);\n    }\n    decrypt(data) {\n        const r1 = this.aes.AES_Decrypt_process(data);\n        const r2 = this.aes.AES_Decrypt_finish();\n        return joinBytes(r1, r2);\n    }\n}\n","import { AES_ECB } from '@openpgp/asmcrypto.js/dist_es8/aes/ecb';\n\n/**\n * Javascript AES implementation.\n * This is used as fallback if the native Crypto APIs are not available.\n */\nfunction aes(length) {\n  const C = function(key) {\n    const aesECB = new AES_ECB(key);\n\n    this.encrypt = function(block) {\n      return aesECB.encrypt(block);\n    };\n\n    this.decrypt = function(block) {\n      return aesECB.decrypt(block);\n    };\n  };\n\n  C.blockSize = C.prototype.blockSize = 16;\n  C.keySize = C.prototype.keySize = length / 8;\n\n  return C;\n}\n\nexport default aes;\n","//Paul Tero, July 2001\n//http://www.tero.co.uk/des/\n//\n//Optimised for performance with large blocks by Michael Hayworth, November 2001\n//http://www.netdealing.com\n//\n// Modified by Recurity Labs GmbH\n\n//THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n//ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n//ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n//FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n//DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n//OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n//HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n//OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n//SUCH DAMAGE.\n\n//des\n//this takes the key, the message, and whether to encrypt or decrypt\n\nfunction des(keys, message, encrypt, mode, iv, padding) {\n  //declaring this locally speeds things up a bit\n  const spfunction1 = [\n    0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400,\n    0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000,\n    0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4,\n    0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404,\n    0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400,\n    0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004\n  ];\n  const spfunction2 = [\n    -0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0,\n    -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020,\n    -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000,\n    -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000,\n    -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0,\n    0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0,\n    -0x7fef7fe0, 0x108000\n  ];\n  const spfunction3 = [\n    0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008,\n    0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000,\n    0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000,\n    0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0,\n    0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208,\n    0x8020000, 0x20208, 0x8, 0x8020008, 0x20200\n  ];\n  const spfunction4 = [\n    0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000,\n    0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080,\n    0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0,\n    0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001,\n    0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080\n  ];\n  const spfunction5 = [\n    0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000,\n    0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000,\n    0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100,\n    0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100,\n    0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100,\n    0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0,\n    0x40080000, 0x2080100, 0x40000100\n  ];\n  const spfunction6 = [\n    0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000,\n    0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010,\n    0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000,\n    0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000,\n    0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000,\n    0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010\n  ];\n  const spfunction7 = [\n    0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802,\n    0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002,\n    0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000,\n    0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000,\n    0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0,\n    0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002\n  ];\n  const spfunction8 = [\n    0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000,\n    0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000,\n    0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040,\n    0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040,\n    0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000,\n    0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000\n  ];\n\n  //create the 16 or 48 subkeys we will need\n  let m = 0;\n  let i;\n  let j;\n  let temp;\n  let right1;\n  let right2;\n  let left;\n  let right;\n  let looping;\n  let cbcleft;\n  let cbcleft2;\n  let cbcright;\n  let cbcright2;\n  let endloop;\n  let loopinc;\n  let len = message.length;\n\n  //set up the loops for single and triple des\n  const iterations = keys.length === 32 ? 3 : 9; //single or triple des\n  if (iterations === 3) {\n    looping = encrypt ? [0, 32, 2] : [30, -2, -2];\n  } else {\n    looping = encrypt ? [0, 32, 2, 62, 30, -2, 64, 96, 2] : [94, 62, -2, 32, 64, 2, 30, -2, -2];\n  }\n\n  //pad the message depending on the padding parameter\n  //only add padding if encrypting - note that you need to use the same padding option for both encrypt and decrypt\n  if (encrypt) {\n    message = desAddPadding(message, padding);\n    len = message.length;\n  }\n\n  //store the result here\n  let result = new Uint8Array(len);\n  let k = 0;\n\n  if (mode === 1) { //CBC mode\n    cbcleft = (iv[m++] << 24) | (iv[m++] << 16) | (iv[m++] << 8) | iv[m++];\n    cbcright = (iv[m++] << 24) | (iv[m++] << 16) | (iv[m++] << 8) | iv[m++];\n    m = 0;\n  }\n\n  //loop through each 64 bit chunk of the message\n  while (m < len) {\n    left = (message[m++] << 24) | (message[m++] << 16) | (message[m++] << 8) | message[m++];\n    right = (message[m++] << 24) | (message[m++] << 16) | (message[m++] << 8) | message[m++];\n\n    //for Cipher Block Chaining mode, xor the message with the previous result\n    if (mode === 1) {\n      if (encrypt) {\n        left ^= cbcleft;\n        right ^= cbcright;\n      } else {\n        cbcleft2 = cbcleft;\n        cbcright2 = cbcright;\n        cbcleft = left;\n        cbcright = right;\n      }\n    }\n\n    //first each 64 but chunk of the message must be permuted according to IP\n    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n    right ^= temp;\n    left ^= (temp << 4);\n    temp = ((left >>> 16) ^ right) & 0x0000ffff;\n    right ^= temp;\n    left ^= (temp << 16);\n    temp = ((right >>> 2) ^ left) & 0x33333333;\n    left ^= temp;\n    right ^= (temp << 2);\n    temp = ((right >>> 8) ^ left) & 0x00ff00ff;\n    left ^= temp;\n    right ^= (temp << 8);\n    temp = ((left >>> 1) ^ right) & 0x55555555;\n    right ^= temp;\n    left ^= (temp << 1);\n\n    left = ((left << 1) | (left >>> 31));\n    right = ((right << 1) | (right >>> 31));\n\n    //do this either 1 or 3 times for each chunk of the message\n    for (j = 0; j < iterations; j += 3) {\n      endloop = looping[j + 1];\n      loopinc = looping[j + 2];\n      //now go through and perform the encryption or decryption\n      for (i = looping[j]; i !== endloop; i += loopinc) { //for efficiency\n        right1 = right ^ keys[i];\n        right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];\n        //the result is attained by passing these bytes through the S selection functions\n        temp = left;\n        left = right;\n        right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f] | spfunction6[(right1 >>>\n          8) & 0x3f] | spfunction8[right1 & 0x3f] | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) &\n          0x3f] | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]);\n      }\n      temp = left;\n      left = right;\n      right = temp; //unreverse left and right\n    } //for either 1 or 3 iterations\n\n    //move then each one bit to the right\n    left = ((left >>> 1) | (left << 31));\n    right = ((right >>> 1) | (right << 31));\n\n    //now perform IP-1, which is IP in the opposite direction\n    temp = ((left >>> 1) ^ right) & 0x55555555;\n    right ^= temp;\n    left ^= (temp << 1);\n    temp = ((right >>> 8) ^ left) & 0x00ff00ff;\n    left ^= temp;\n    right ^= (temp << 8);\n    temp = ((right >>> 2) ^ left) & 0x33333333;\n    left ^= temp;\n    right ^= (temp << 2);\n    temp = ((left >>> 16) ^ right) & 0x0000ffff;\n    right ^= temp;\n    left ^= (temp << 16);\n    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n    right ^= temp;\n    left ^= (temp << 4);\n\n    //for Cipher Block Chaining mode, xor the message with the previous result\n    if (mode === 1) {\n      if (encrypt) {\n        cbcleft = left;\n        cbcright = right;\n      } else {\n        left ^= cbcleft2;\n        right ^= cbcright2;\n      }\n    }\n\n    result[k++] = (left >>> 24);\n    result[k++] = ((left >>> 16) & 0xff);\n    result[k++] = ((left >>> 8) & 0xff);\n    result[k++] = (left & 0xff);\n    result[k++] = (right >>> 24);\n    result[k++] = ((right >>> 16) & 0xff);\n    result[k++] = ((right >>> 8) & 0xff);\n    result[k++] = (right & 0xff);\n  } //for every 8 characters, or 64 bits in the message\n\n  //only remove padding if decrypting - note that you need to use the same padding option for both encrypt and decrypt\n  if (!encrypt) {\n    result = desRemovePadding(result, padding);\n  }\n\n  return result;\n} //end of des\n\n\n//desCreateKeys\n//this takes as input a 64 bit key (even though only 56 bits are used)\n//as an array of 2 integers, and returns 16 48 bit keys\n\nfunction desCreateKeys(key) {\n  //declaring this locally speeds things up a bit\n  const pc2bytes0 = [\n    0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204,\n    0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204\n  ];\n  const pc2bytes1 = [\n    0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100,\n    0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101\n  ];\n  const pc2bytes2 = [\n    0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808,\n    0x1000000, 0x1000008, 0x1000800, 0x1000808\n  ];\n  const pc2bytes3 = [\n    0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000,\n    0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000\n  ];\n  const pc2bytes4 = [\n    0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000,\n    0x41000, 0x1010, 0x41010\n  ];\n  const pc2bytes5 = [\n    0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420,\n    0x2000000, 0x2000400, 0x2000020, 0x2000420\n  ];\n  const pc2bytes6 = [\n    0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000,\n    0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002\n  ];\n  const pc2bytes7 = [\n    0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000,\n    0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800\n  ];\n  const pc2bytes8 = [\n    0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000,\n    0x2000002, 0x2040002, 0x2000002, 0x2040002\n  ];\n  const pc2bytes9 = [\n    0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408,\n    0x10000408, 0x400, 0x10000400, 0x408, 0x10000408\n  ];\n  const pc2bytes10 = [\n    0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020,\n    0x102000, 0x102020, 0x102000, 0x102020\n  ];\n  const pc2bytes11 = [\n    0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000,\n    0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200\n  ];\n  const pc2bytes12 = [\n    0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010,\n    0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010\n  ];\n  const pc2bytes13 = [0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105];\n\n  //how many iterations (1 for des, 3 for triple des)\n  const iterations = key.length > 8 ? 3 : 1; //changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys\n  //stores the return keys\n  const keys = new Array(32 * iterations);\n  //now define the left shifts which need to be done\n  const shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0];\n  //other variables\n  let lefttemp;\n  let righttemp;\n  let m = 0;\n  let n = 0;\n  let temp;\n\n  for (let j = 0; j < iterations; j++) { //either 1 or 3 iterations\n    let left = (key[m++] << 24) | (key[m++] << 16) | (key[m++] << 8) | key[m++];\n    let right = (key[m++] << 24) | (key[m++] << 16) | (key[m++] << 8) | key[m++];\n\n    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n    right ^= temp;\n    left ^= (temp << 4);\n    temp = ((right >>> -16) ^ left) & 0x0000ffff;\n    left ^= temp;\n    right ^= (temp << -16);\n    temp = ((left >>> 2) ^ right) & 0x33333333;\n    right ^= temp;\n    left ^= (temp << 2);\n    temp = ((right >>> -16) ^ left) & 0x0000ffff;\n    left ^= temp;\n    right ^= (temp << -16);\n    temp = ((left >>> 1) ^ right) & 0x55555555;\n    right ^= temp;\n    left ^= (temp << 1);\n    temp = ((right >>> 8) ^ left) & 0x00ff00ff;\n    left ^= temp;\n    right ^= (temp << 8);\n    temp = ((left >>> 1) ^ right) & 0x55555555;\n    right ^= temp;\n    left ^= (temp << 1);\n\n    //the right side needs to be shifted and to get the last four bits of the left side\n    temp = (left << 8) | ((right >>> 20) & 0x000000f0);\n    //left needs to be put upside down\n    left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);\n    right = temp;\n\n    //now go through and perform these shifts on the left and right keys\n    for (let i = 0; i < shifts.length; i++) {\n      //shift the keys either one or two bits to the left\n      if (shifts[i]) {\n        left = (left << 2) | (left >>> 26);\n        right = (right << 2) | (right >>> 26);\n      } else {\n        left = (left << 1) | (left >>> 27);\n        right = (right << 1) | (right >>> 27);\n      }\n      left &= -0xf;\n      right &= -0xf;\n\n      //now apply PC-2, in such a way that E is easier when encrypting or decrypting\n      //this conversion will look like PC-2 except only the last 6 bits of each byte are used\n      //rather than 48 consecutive bits and the order of lines will be according to\n      //how the S selection functions will be applied: S2, S4, S6, S8, S1, S3, S5, S7\n      lefttemp = pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] | pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(\n        left >>> 16) & 0xf] | pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] | pc2bytes6[(left >>> 4) &\n        0xf];\n      righttemp = pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] | pc2bytes9[(right >>> 20) & 0xf] |\n        pc2bytes10[(right >>> 16) & 0xf] | pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |\n        pc2bytes13[(right >>> 4) & 0xf];\n      temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;\n      keys[n++] = lefttemp ^ temp;\n      keys[n++] = righttemp ^ (temp << 16);\n    }\n  } //for each iterations\n  //return the keys we've created\n  return keys;\n} //end of desCreateKeys\n\n\nfunction desAddPadding(message, padding) {\n  const padLength = 8 - (message.length % 8);\n\n  let pad;\n  if (padding === 2 && (padLength < 8)) { //pad the message with spaces\n    pad = ' '.charCodeAt(0);\n  } else if (padding === 1) { //PKCS7 padding\n    pad = padLength;\n  } else if (!padding && (padLength < 8)) { //pad the message out with null bytes\n    pad = 0;\n  } else if (padLength === 8) {\n    return message;\n  } else {\n    throw new Error('des: invalid padding');\n  }\n\n  const paddedMessage = new Uint8Array(message.length + padLength);\n  for (let i = 0; i < message.length; i++) {\n    paddedMessage[i] = message[i];\n  }\n  for (let j = 0; j < padLength; j++) {\n    paddedMessage[message.length + j] = pad;\n  }\n\n  return paddedMessage;\n}\n\nfunction desRemovePadding(message, padding) {\n  let padLength = null;\n  let pad;\n  if (padding === 2) { // space padded\n    pad = ' '.charCodeAt(0);\n  } else if (padding === 1) { // PKCS7\n    padLength = message[message.length - 1];\n  } else if (!padding) { // null padding\n    pad = 0;\n  } else {\n    throw new Error('des: invalid padding');\n  }\n\n  if (!padLength) {\n    padLength = 1;\n    while (message[message.length - padLength] === pad) {\n      padLength++;\n    }\n    padLength--;\n  }\n\n  return message.subarray(0, message.length - padLength);\n}\n\n// added by Recurity Labs\n\nexport function TripleDES(key) {\n  this.key = [];\n\n  for (let i = 0; i < 3; i++) {\n    this.key.push(new Uint8Array(key.subarray(i * 8, (i * 8) + 8)));\n  }\n\n  this.encrypt = function(block) {\n    return des(\n      desCreateKeys(this.key[2]),\n      des(\n        desCreateKeys(this.key[1]),\n        des(\n          desCreateKeys(this.key[0]),\n          block, true, 0, null, null\n        ),\n        false, 0, null, null\n      ), true, 0, null, null\n    );\n  };\n}\n\nTripleDES.keySize = TripleDES.prototype.keySize = 24;\nTripleDES.blockSize = TripleDES.prototype.blockSize = 8;\n\n// This is \"original\" DES\n\nexport function DES(key) {\n  this.key = key;\n\n  this.encrypt = function(block, padding) {\n    const keys = desCreateKeys(this.key);\n    return des(keys, block, true, 0, null, padding);\n  };\n\n  this.decrypt = function(block, padding) {\n    const keys = desCreateKeys(this.key);\n    return des(keys, block, false, 0, null, padding);\n  };\n}\n","// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Copyright 2010 pjacobs@xeekr.com . All rights reserved.\n\n// Modified by Recurity Labs GmbH\n\n// fixed/modified by Herbert Hanewinkel, www.haneWIN.de\n// check www.haneWIN.de for the latest version\n\n// cast5.js is a Javascript implementation of CAST-128, as defined in RFC 2144.\n// CAST-128 is a common OpenPGP cipher.\n\n\n// CAST5 constructor\n\nfunction OpenPGPSymEncCAST5() {\n  this.BlockSize = 8;\n  this.KeySize = 16;\n\n  this.setKey = function(key) {\n    this.masking = new Array(16);\n    this.rotate = new Array(16);\n\n    this.reset();\n\n    if (key.length === this.KeySize) {\n      this.keySchedule(key);\n    } else {\n      throw new Error('CAST-128: keys must be 16 bytes');\n    }\n    return true;\n  };\n\n  this.reset = function() {\n    for (let i = 0; i < 16; i++) {\n      this.masking[i] = 0;\n      this.rotate[i] = 0;\n    }\n  };\n\n  this.getBlockSize = function() {\n    return this.BlockSize;\n  };\n\n  this.encrypt = function(src) {\n    const dst = new Array(src.length);\n\n    for (let i = 0; i < src.length; i += 8) {\n      let l = (src[i] << 24) | (src[i + 1] << 16) | (src[i + 2] << 8) | src[i + 3];\n      let r = (src[i + 4] << 24) | (src[i + 5] << 16) | (src[i + 6] << 8) | src[i + 7];\n      let t;\n\n      t = r;\n      r = l ^ f1(r, this.masking[0], this.rotate[0]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[1], this.rotate[1]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[2], this.rotate[2]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[3], this.rotate[3]);\n      l = t;\n\n      t = r;\n      r = l ^ f2(r, this.masking[4], this.rotate[4]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[5], this.rotate[5]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[6], this.rotate[6]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[7], this.rotate[7]);\n      l = t;\n\n      t = r;\n      r = l ^ f3(r, this.masking[8], this.rotate[8]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[9], this.rotate[9]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[10], this.rotate[10]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[11], this.rotate[11]);\n      l = t;\n\n      t = r;\n      r = l ^ f1(r, this.masking[12], this.rotate[12]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[13], this.rotate[13]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[14], this.rotate[14]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[15], this.rotate[15]);\n      l = t;\n\n      dst[i] = (r >>> 24) & 255;\n      dst[i + 1] = (r >>> 16) & 255;\n      dst[i + 2] = (r >>> 8) & 255;\n      dst[i + 3] = r & 255;\n      dst[i + 4] = (l >>> 24) & 255;\n      dst[i + 5] = (l >>> 16) & 255;\n      dst[i + 6] = (l >>> 8) & 255;\n      dst[i + 7] = l & 255;\n    }\n\n    return dst;\n  };\n\n  this.decrypt = function(src) {\n    const dst = new Array(src.length);\n\n    for (let i = 0; i < src.length; i += 8) {\n      let l = (src[i] << 24) | (src[i + 1] << 16) | (src[i + 2] << 8) | src[i + 3];\n      let r = (src[i + 4] << 24) | (src[i + 5] << 16) | (src[i + 6] << 8) | src[i + 7];\n      let t;\n\n      t = r;\n      r = l ^ f1(r, this.masking[15], this.rotate[15]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[14], this.rotate[14]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[13], this.rotate[13]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[12], this.rotate[12]);\n      l = t;\n\n      t = r;\n      r = l ^ f3(r, this.masking[11], this.rotate[11]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[10], this.rotate[10]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[9], this.rotate[9]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[8], this.rotate[8]);\n      l = t;\n\n      t = r;\n      r = l ^ f2(r, this.masking[7], this.rotate[7]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[6], this.rotate[6]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[5], this.rotate[5]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[4], this.rotate[4]);\n      l = t;\n\n      t = r;\n      r = l ^ f1(r, this.masking[3], this.rotate[3]);\n      l = t;\n      t = r;\n      r = l ^ f3(r, this.masking[2], this.rotate[2]);\n      l = t;\n      t = r;\n      r = l ^ f2(r, this.masking[1], this.rotate[1]);\n      l = t;\n      t = r;\n      r = l ^ f1(r, this.masking[0], this.rotate[0]);\n      l = t;\n\n      dst[i] = (r >>> 24) & 255;\n      dst[i + 1] = (r >>> 16) & 255;\n      dst[i + 2] = (r >>> 8) & 255;\n      dst[i + 3] = r & 255;\n      dst[i + 4] = (l >>> 24) & 255;\n      dst[i + 5] = (l >> 16) & 255;\n      dst[i + 6] = (l >> 8) & 255;\n      dst[i + 7] = l & 255;\n    }\n\n    return dst;\n  };\n  const scheduleA = new Array(4);\n\n  scheduleA[0] = new Array(4);\n  scheduleA[0][0] = [4, 0, 0xd, 0xf, 0xc, 0xe, 0x8];\n  scheduleA[0][1] = [5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa];\n  scheduleA[0][2] = [6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9];\n  scheduleA[0][3] = [7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb];\n\n  scheduleA[1] = new Array(4);\n  scheduleA[1][0] = [0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0];\n  scheduleA[1][1] = [1, 4, 0, 2, 1, 3, 16 + 2];\n  scheduleA[1][2] = [2, 5, 7, 6, 5, 4, 16 + 1];\n  scheduleA[1][3] = [3, 7, 0xa, 9, 0xb, 8, 16 + 3];\n\n  scheduleA[2] = new Array(4);\n  scheduleA[2][0] = [4, 0, 0xd, 0xf, 0xc, 0xe, 8];\n  scheduleA[2][1] = [5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa];\n  scheduleA[2][2] = [6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9];\n  scheduleA[2][3] = [7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb];\n\n\n  scheduleA[3] = new Array(4);\n  scheduleA[3][0] = [0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0];\n  scheduleA[3][1] = [1, 4, 0, 2, 1, 3, 16 + 2];\n  scheduleA[3][2] = [2, 5, 7, 6, 5, 4, 16 + 1];\n  scheduleA[3][3] = [3, 7, 0xa, 9, 0xb, 8, 16 + 3];\n\n  const scheduleB = new Array(4);\n\n  scheduleB[0] = new Array(4);\n  scheduleB[0][0] = [16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2];\n  scheduleB[0][1] = [16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6];\n  scheduleB[0][2] = [16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9];\n  scheduleB[0][3] = [16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc];\n\n  scheduleB[1] = new Array(4);\n  scheduleB[1][0] = [3, 2, 0xc, 0xd, 8];\n  scheduleB[1][1] = [1, 0, 0xe, 0xf, 0xd];\n  scheduleB[1][2] = [7, 6, 8, 9, 3];\n  scheduleB[1][3] = [5, 4, 0xa, 0xb, 7];\n\n\n  scheduleB[2] = new Array(4);\n  scheduleB[2][0] = [16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9];\n  scheduleB[2][1] = [16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc];\n  scheduleB[2][2] = [16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2];\n  scheduleB[2][3] = [16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6];\n\n\n  scheduleB[3] = new Array(4);\n  scheduleB[3][0] = [8, 9, 7, 6, 3];\n  scheduleB[3][1] = [0xa, 0xb, 5, 4, 7];\n  scheduleB[3][2] = [0xc, 0xd, 3, 2, 8];\n  scheduleB[3][3] = [0xe, 0xf, 1, 0, 0xd];\n\n  // changed 'in' to 'inn' (in javascript 'in' is a reserved word)\n  this.keySchedule = function(inn) {\n    const t = new Array(8);\n    const k = new Array(32);\n\n    let j;\n\n    for (let i = 0; i < 4; i++) {\n      j = i * 4;\n      t[i] = (inn[j] << 24) | (inn[j + 1] << 16) | (inn[j + 2] << 8) | inn[j + 3];\n    }\n\n    const x = [6, 7, 4, 5];\n    let ki = 0;\n    let w;\n\n    for (let half = 0; half < 2; half++) {\n      for (let round = 0; round < 4; round++) {\n        for (j = 0; j < 4; j++) {\n          const a = scheduleA[round][j];\n          w = t[a[1]];\n\n          w ^= sBox[4][(t[a[2] >>> 2] >>> (24 - 8 * (a[2] & 3))) & 0xff];\n          w ^= sBox[5][(t[a[3] >>> 2] >>> (24 - 8 * (a[3] & 3))) & 0xff];\n          w ^= sBox[6][(t[a[4] >>> 2] >>> (24 - 8 * (a[4] & 3))) & 0xff];\n          w ^= sBox[7][(t[a[5] >>> 2] >>> (24 - 8 * (a[5] & 3))) & 0xff];\n          w ^= sBox[x[j]][(t[a[6] >>> 2] >>> (24 - 8 * (a[6] & 3))) & 0xff];\n          t[a[0]] = w;\n        }\n\n        for (j = 0; j < 4; j++) {\n          const b = scheduleB[round][j];\n          w = sBox[4][(t[b[0] >>> 2] >>> (24 - 8 * (b[0] & 3))) & 0xff];\n\n          w ^= sBox[5][(t[b[1] >>> 2] >>> (24 - 8 * (b[1] & 3))) & 0xff];\n          w ^= sBox[6][(t[b[2] >>> 2] >>> (24 - 8 * (b[2] & 3))) & 0xff];\n          w ^= sBox[7][(t[b[3] >>> 2] >>> (24 - 8 * (b[3] & 3))) & 0xff];\n          w ^= sBox[4 + j][(t[b[4] >>> 2] >>> (24 - 8 * (b[4] & 3))) & 0xff];\n          k[ki] = w;\n          ki++;\n        }\n      }\n    }\n\n    for (let i = 0; i < 16; i++) {\n      this.masking[i] = k[i];\n      this.rotate[i] = k[16 + i] & 0x1f;\n    }\n  };\n\n  // These are the three 'f' functions. See RFC 2144, section 2.2.\n\n  function f1(d, m, r) {\n    const t = m + d;\n    const I = (t << r) | (t >>> (32 - r));\n    return ((sBox[0][I >>> 24] ^ sBox[1][(I >>> 16) & 255]) - sBox[2][(I >>> 8) & 255]) + sBox[3][I & 255];\n  }\n\n  function f2(d, m, r) {\n    const t = m ^ d;\n    const I = (t << r) | (t >>> (32 - r));\n    return ((sBox[0][I >>> 24] - sBox[1][(I >>> 16) & 255]) + sBox[2][(I >>> 8) & 255]) ^ sBox[3][I & 255];\n  }\n\n  function f3(d, m, r) {\n    const t = m - d;\n    const I = (t << r) | (t >>> (32 - r));\n    return ((sBox[0][I >>> 24] + sBox[1][(I >>> 16) & 255]) ^ sBox[2][(I >>> 8) & 255]) - sBox[3][I & 255];\n  }\n\n  const sBox = new Array(8);\n  sBox[0] = [\n    0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,\n    0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,\n    0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,\n    0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,\n    0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,\n    0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,\n    0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,\n    0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,\n    0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,\n    0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,\n    0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,\n    0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,\n    0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,\n    0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,\n    0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,\n    0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,\n    0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,\n    0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,\n    0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,\n    0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,\n    0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,\n    0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,\n    0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,\n    0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,\n    0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,\n    0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,\n    0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,\n    0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,\n    0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,\n    0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,\n    0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,\n    0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf\n  ];\n\n  sBox[1] = [\n    0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,\n    0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,\n    0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,\n    0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,\n    0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,\n    0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,\n    0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,\n    0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,\n    0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,\n    0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,\n    0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,\n    0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,\n    0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,\n    0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,\n    0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,\n    0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,\n    0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,\n    0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,\n    0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,\n    0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,\n    0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,\n    0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,\n    0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,\n    0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,\n    0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,\n    0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,\n    0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,\n    0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,\n    0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,\n    0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,\n    0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,\n    0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1\n  ];\n\n  sBox[2] = [\n    0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,\n    0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,\n    0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,\n    0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,\n    0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,\n    0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,\n    0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,\n    0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,\n    0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,\n    0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,\n    0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,\n    0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,\n    0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,\n    0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,\n    0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,\n    0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,\n    0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,\n    0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,\n    0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,\n    0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,\n    0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,\n    0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,\n    0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,\n    0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,\n    0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,\n    0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,\n    0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,\n    0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,\n    0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,\n    0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,\n    0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,\n    0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783\n  ];\n\n  sBox[3] = [\n    0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,\n    0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,\n    0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,\n    0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,\n    0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,\n    0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,\n    0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,\n    0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,\n    0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,\n    0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,\n    0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,\n    0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,\n    0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,\n    0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,\n    0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,\n    0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,\n    0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,\n    0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,\n    0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,\n    0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,\n    0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,\n    0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,\n    0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,\n    0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,\n    0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,\n    0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,\n    0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,\n    0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,\n    0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,\n    0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,\n    0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,\n    0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2\n  ];\n\n  sBox[4] = [\n    0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,\n    0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,\n    0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,\n    0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,\n    0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,\n    0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,\n    0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,\n    0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,\n    0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,\n    0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,\n    0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,\n    0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,\n    0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,\n    0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,\n    0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,\n    0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,\n    0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,\n    0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,\n    0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,\n    0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,\n    0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,\n    0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,\n    0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,\n    0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,\n    0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,\n    0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,\n    0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,\n    0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,\n    0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,\n    0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,\n    0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,\n    0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4\n  ];\n\n  sBox[5] = [\n    0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,\n    0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,\n    0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,\n    0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,\n    0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,\n    0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,\n    0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,\n    0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,\n    0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,\n    0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,\n    0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,\n    0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,\n    0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,\n    0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,\n    0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,\n    0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,\n    0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,\n    0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,\n    0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,\n    0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,\n    0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,\n    0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,\n    0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,\n    0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,\n    0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,\n    0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,\n    0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,\n    0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,\n    0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,\n    0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,\n    0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,\n    0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f\n  ];\n\n  sBox[6] = [\n    0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,\n    0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,\n    0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,\n    0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,\n    0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,\n    0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,\n    0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,\n    0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,\n    0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,\n    0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,\n    0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,\n    0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,\n    0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,\n    0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,\n    0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,\n    0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,\n    0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,\n    0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,\n    0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,\n    0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,\n    0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,\n    0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,\n    0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,\n    0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,\n    0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,\n    0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,\n    0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,\n    0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,\n    0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,\n    0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,\n    0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,\n    0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3\n  ];\n\n  sBox[7] = [\n    0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,\n    0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,\n    0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,\n    0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,\n    0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,\n    0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,\n    0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,\n    0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,\n    0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,\n    0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,\n    0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,\n    0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,\n    0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,\n    0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,\n    0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,\n    0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,\n    0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,\n    0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,\n    0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,\n    0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,\n    0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,\n    0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,\n    0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,\n    0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,\n    0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,\n    0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,\n    0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,\n    0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,\n    0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,\n    0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,\n    0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,\n    0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e\n  ];\n}\n\nfunction CAST5(key) {\n  this.cast5 = new OpenPGPSymEncCAST5();\n  this.cast5.setKey(key);\n\n  this.encrypt = function(block) {\n    return this.cast5.encrypt(block);\n  };\n}\n\nCAST5.blockSize = CAST5.prototype.blockSize = 8;\nCAST5.keySize = CAST5.prototype.keySize = 16;\n\nexport default CAST5;\n","/* eslint-disable no-mixed-operators, no-fallthrough */\n\n\n/* Modified by Recurity Labs GmbH\n *\n * Cipher.js\n * A block-cipher algorithm implementation on JavaScript\n * See Cipher.readme.txt for further information.\n *\n * Copyright(c) 2009 Atsushi Oka [ http://oka.nu/ ]\n * This script file is distributed under the LGPL\n *\n * ACKNOWLEDGMENT\n *\n *     The main subroutines are written by Michiel van Everdingen.\n *\n *     Michiel van Everdingen\n *     http://home.versatel.nl/MAvanEverdingen/index.html\n *\n *     All rights for these routines are reserved to Michiel van Everdingen.\n *\n */\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//Math\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nconst MAXINT = 0xFFFFFFFF;\n\nfunction rotw(w, n) {\n  return (w << n | w >>> (32 - n)) & MAXINT;\n}\n\nfunction getW(a, i) {\n  return a[i] | a[i + 1] << 8 | a[i + 2] << 16 | a[i + 3] << 24;\n}\n\nfunction setW(a, i, w) {\n  a.splice(i, 4, w & 0xFF, (w >>> 8) & 0xFF, (w >>> 16) & 0xFF, (w >>> 24) & 0xFF);\n}\n\nfunction getB(x, n) {\n  return (x >>> (n * 8)) & 0xFF;\n}\n\n// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Twofish\n// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfunction createTwofish() {\n  //\n  let keyBytes = null;\n  let dataBytes = null;\n  let dataOffset = -1;\n  // var dataLength = -1;\n  // var idx2 = -1;\n  //\n\n  let tfsKey = [];\n  let tfsM = [\n    [],\n    [],\n    [],\n    []\n  ];\n\n  function tfsInit(key) {\n    keyBytes = key;\n    let i;\n    let a;\n    let b;\n    let c;\n    let d;\n    const meKey = [];\n    const moKey = [];\n    const inKey = [];\n    let kLen;\n    const sKey = [];\n    let f01;\n    let f5b;\n    let fef;\n\n    const q0 = [\n      [8, 1, 7, 13, 6, 15, 3, 2, 0, 11, 5, 9, 14, 12, 10, 4],\n      [2, 8, 11, 13, 15, 7, 6, 14, 3, 1, 9, 4, 0, 10, 12, 5]\n    ];\n    const q1 = [\n      [14, 12, 11, 8, 1, 2, 3, 5, 15, 4, 10, 6, 7, 0, 9, 13],\n      [1, 14, 2, 11, 4, 12, 3, 7, 6, 13, 10, 5, 15, 9, 0, 8]\n    ];\n    const q2 = [\n      [11, 10, 5, 14, 6, 13, 9, 0, 12, 8, 15, 3, 2, 4, 7, 1],\n      [4, 12, 7, 5, 1, 6, 9, 10, 0, 14, 13, 8, 2, 11, 3, 15]\n    ];\n    const q3 = [\n      [13, 7, 15, 4, 1, 2, 6, 14, 9, 11, 3, 0, 8, 5, 12, 10],\n      [11, 9, 5, 1, 12, 3, 13, 14, 6, 4, 7, 15, 2, 0, 8, 10]\n    ];\n    const ror4 = [0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15];\n    const ashx = [0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 5, 14, 7];\n    const q = [\n      [],\n      []\n    ];\n    const m = [\n      [],\n      [],\n      [],\n      []\n    ];\n\n    function ffm5b(x) {\n      return x ^ (x >> 2) ^ [0, 90, 180, 238][x & 3];\n    }\n\n    function ffmEf(x) {\n      return x ^ (x >> 1) ^ (x >> 2) ^ [0, 238, 180, 90][x & 3];\n    }\n\n    function mdsRem(p, q) {\n      let i;\n      let t;\n      let u;\n      for (i = 0; i < 8; i++) {\n        t = q >>> 24;\n        q = ((q << 8) & MAXINT) | p >>> 24;\n        p = (p << 8) & MAXINT;\n        u = t << 1;\n        if (t & 128) {\n          u ^= 333;\n        }\n        q ^= t ^ (u << 16);\n        u ^= t >>> 1;\n        if (t & 1) {\n          u ^= 166;\n        }\n        q ^= u << 24 | u << 8;\n      }\n      return q;\n    }\n\n    function qp(n, x) {\n      const a = x >> 4;\n      const b = x & 15;\n      const c = q0[n][a ^ b];\n      const d = q1[n][ror4[b] ^ ashx[a]];\n      return q3[n][ror4[d] ^ ashx[c]] << 4 | q2[n][c ^ d];\n    }\n\n    function hFun(x, key) {\n      let a = getB(x, 0);\n      let b = getB(x, 1);\n      let c = getB(x, 2);\n      let d = getB(x, 3);\n      switch (kLen) {\n        case 4:\n          a = q[1][a] ^ getB(key[3], 0);\n          b = q[0][b] ^ getB(key[3], 1);\n          c = q[0][c] ^ getB(key[3], 2);\n          d = q[1][d] ^ getB(key[3], 3);\n        case 3:\n          a = q[1][a] ^ getB(key[2], 0);\n          b = q[1][b] ^ getB(key[2], 1);\n          c = q[0][c] ^ getB(key[2], 2);\n          d = q[0][d] ^ getB(key[2], 3);\n        case 2:\n          a = q[0][q[0][a] ^ getB(key[1], 0)] ^ getB(key[0], 0);\n          b = q[0][q[1][b] ^ getB(key[1], 1)] ^ getB(key[0], 1);\n          c = q[1][q[0][c] ^ getB(key[1], 2)] ^ getB(key[0], 2);\n          d = q[1][q[1][d] ^ getB(key[1], 3)] ^ getB(key[0], 3);\n      }\n      return m[0][a] ^ m[1][b] ^ m[2][c] ^ m[3][d];\n    }\n\n    keyBytes = keyBytes.slice(0, 32);\n    i = keyBytes.length;\n    while (i !== 16 && i !== 24 && i !== 32) {\n      keyBytes[i++] = 0;\n    }\n\n    for (i = 0; i < keyBytes.length; i += 4) {\n      inKey[i >> 2] = getW(keyBytes, i);\n    }\n    for (i = 0; i < 256; i++) {\n      q[0][i] = qp(0, i);\n      q[1][i] = qp(1, i);\n    }\n    for (i = 0; i < 256; i++) {\n      f01 = q[1][i];\n      f5b = ffm5b(f01);\n      fef = ffmEf(f01);\n      m[0][i] = f01 + (f5b << 8) + (fef << 16) + (fef << 24);\n      m[2][i] = f5b + (fef << 8) + (f01 << 16) + (fef << 24);\n      f01 = q[0][i];\n      f5b = ffm5b(f01);\n      fef = ffmEf(f01);\n      m[1][i] = fef + (fef << 8) + (f5b << 16) + (f01 << 24);\n      m[3][i] = f5b + (f01 << 8) + (fef << 16) + (f5b << 24);\n    }\n\n    kLen = inKey.length / 2;\n    for (i = 0; i < kLen; i++) {\n      a = inKey[i + i];\n      meKey[i] = a;\n      b = inKey[i + i + 1];\n      moKey[i] = b;\n      sKey[kLen - i - 1] = mdsRem(a, b);\n    }\n    for (i = 0; i < 40; i += 2) {\n      a = 0x1010101 * i;\n      b = a + 0x1010101;\n      a = hFun(a, meKey);\n      b = rotw(hFun(b, moKey), 8);\n      tfsKey[i] = (a + b) & MAXINT;\n      tfsKey[i + 1] = rotw(a + 2 * b, 9);\n    }\n    for (i = 0; i < 256; i++) {\n      a = b = c = d = i;\n      switch (kLen) {\n        case 4:\n          a = q[1][a] ^ getB(sKey[3], 0);\n          b = q[0][b] ^ getB(sKey[3], 1);\n          c = q[0][c] ^ getB(sKey[3], 2);\n          d = q[1][d] ^ getB(sKey[3], 3);\n        case 3:\n          a = q[1][a] ^ getB(sKey[2], 0);\n          b = q[1][b] ^ getB(sKey[2], 1);\n          c = q[0][c] ^ getB(sKey[2], 2);\n          d = q[0][d] ^ getB(sKey[2], 3);\n        case 2:\n          tfsM[0][i] = m[0][q[0][q[0][a] ^ getB(sKey[1], 0)] ^ getB(sKey[0], 0)];\n          tfsM[1][i] = m[1][q[0][q[1][b] ^ getB(sKey[1], 1)] ^ getB(sKey[0], 1)];\n          tfsM[2][i] = m[2][q[1][q[0][c] ^ getB(sKey[1], 2)] ^ getB(sKey[0], 2)];\n          tfsM[3][i] = m[3][q[1][q[1][d] ^ getB(sKey[1], 3)] ^ getB(sKey[0], 3)];\n      }\n    }\n  }\n\n  function tfsG0(x) {\n    return tfsM[0][getB(x, 0)] ^ tfsM[1][getB(x, 1)] ^ tfsM[2][getB(x, 2)] ^ tfsM[3][getB(x, 3)];\n  }\n\n  function tfsG1(x) {\n    return tfsM[0][getB(x, 3)] ^ tfsM[1][getB(x, 0)] ^ tfsM[2][getB(x, 1)] ^ tfsM[3][getB(x, 2)];\n  }\n\n  function tfsFrnd(r, blk) {\n    let a = tfsG0(blk[0]);\n    let b = tfsG1(blk[1]);\n    blk[2] = rotw(blk[2] ^ (a + b + tfsKey[4 * r + 8]) & MAXINT, 31);\n    blk[3] = rotw(blk[3], 1) ^ (a + 2 * b + tfsKey[4 * r + 9]) & MAXINT;\n    a = tfsG0(blk[2]);\n    b = tfsG1(blk[3]);\n    blk[0] = rotw(blk[0] ^ (a + b + tfsKey[4 * r + 10]) & MAXINT, 31);\n    blk[1] = rotw(blk[1], 1) ^ (a + 2 * b + tfsKey[4 * r + 11]) & MAXINT;\n  }\n\n  function tfsIrnd(i, blk) {\n    let a = tfsG0(blk[0]);\n    let b = tfsG1(blk[1]);\n    blk[2] = rotw(blk[2], 1) ^ (a + b + tfsKey[4 * i + 10]) & MAXINT;\n    blk[3] = rotw(blk[3] ^ (a + 2 * b + tfsKey[4 * i + 11]) & MAXINT, 31);\n    a = tfsG0(blk[2]);\n    b = tfsG1(blk[3]);\n    blk[0] = rotw(blk[0], 1) ^ (a + b + tfsKey[4 * i + 8]) & MAXINT;\n    blk[1] = rotw(blk[1] ^ (a + 2 * b + tfsKey[4 * i + 9]) & MAXINT, 31);\n  }\n\n  function tfsClose() {\n    tfsKey = [];\n    tfsM = [\n      [],\n      [],\n      [],\n      []\n    ];\n  }\n\n  function tfsEncrypt(data, offset) {\n    dataBytes = data;\n    dataOffset = offset;\n    const blk = [getW(dataBytes, dataOffset) ^ tfsKey[0],\n      getW(dataBytes, dataOffset + 4) ^ tfsKey[1],\n      getW(dataBytes, dataOffset + 8) ^ tfsKey[2],\n      getW(dataBytes, dataOffset + 12) ^ tfsKey[3]];\n    for (let j = 0; j < 8; j++) {\n      tfsFrnd(j, blk);\n    }\n    setW(dataBytes, dataOffset, blk[2] ^ tfsKey[4]);\n    setW(dataBytes, dataOffset + 4, blk[3] ^ tfsKey[5]);\n    setW(dataBytes, dataOffset + 8, blk[0] ^ tfsKey[6]);\n    setW(dataBytes, dataOffset + 12, blk[1] ^ tfsKey[7]);\n    dataOffset += 16;\n    return dataBytes;\n  }\n\n  function tfsDecrypt(data, offset) {\n    dataBytes = data;\n    dataOffset = offset;\n    const blk = [getW(dataBytes, dataOffset) ^ tfsKey[4],\n      getW(dataBytes, dataOffset + 4) ^ tfsKey[5],\n      getW(dataBytes, dataOffset + 8) ^ tfsKey[6],\n      getW(dataBytes, dataOffset + 12) ^ tfsKey[7]];\n    for (let j = 7; j >= 0; j--) {\n      tfsIrnd(j, blk);\n    }\n    setW(dataBytes, dataOffset, blk[2] ^ tfsKey[0]);\n    setW(dataBytes, dataOffset + 4, blk[3] ^ tfsKey[1]);\n    setW(dataBytes, dataOffset + 8, blk[0] ^ tfsKey[2]);\n    setW(dataBytes, dataOffset + 12, blk[1] ^ tfsKey[3]);\n    dataOffset += 16;\n  }\n\n  // added by Recurity Labs\n\n  function tfsFinal() {\n    return dataBytes;\n  }\n\n  return {\n    name: 'twofish',\n    blocksize: 128 / 8,\n    open: tfsInit,\n    close: tfsClose,\n    encrypt: tfsEncrypt,\n    decrypt: tfsDecrypt,\n    // added by Recurity Labs\n    finalize: tfsFinal\n  };\n}\n\n// added by Recurity Labs\n\nfunction TF(key) {\n  this.tf = createTwofish();\n  this.tf.open(Array.from(key), 0);\n\n  this.encrypt = function(block) {\n    return this.tf.encrypt(Array.from(block), 0);\n  };\n}\n\nTF.keySize = TF.prototype.keySize = 32;\nTF.blockSize = TF.prototype.blockSize = 16;\n\nexport default TF;\n","/* Modified by Recurity Labs GmbH\n *\n * Originally written by nklein software (nklein.com)\n */\n\n/*\n * Javascript implementation based on Bruce Schneier's reference implementation.\n *\n *\n * The constructor doesn't do much of anything.  It's just here\n * so we can start defining properties and methods and such.\n */\nfunction Blowfish() {}\n\n/*\n * Declare the block size so that protocols know what size\n * Initialization Vector (IV) they will need.\n */\nBlowfish.prototype.BLOCKSIZE = 8;\n\n/*\n * These are the default SBOXES.\n */\nBlowfish.prototype.SBOXES = [\n  [\n    0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n    0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n    0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n    0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n    0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n    0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n    0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n    0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n    0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n    0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n    0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n    0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n    0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n    0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n    0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n    0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n    0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n    0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n    0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n    0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n    0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n    0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n    0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n    0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n    0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n    0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n    0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n    0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n    0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n    0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n    0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n    0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n    0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n    0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n    0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n    0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n    0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n    0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n    0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n    0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n    0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n    0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n    0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a\n  ],\n  [\n    0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,\n    0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n    0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,\n    0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n    0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,\n    0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n    0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,\n    0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n    0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\n    0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n    0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,\n    0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n    0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,\n    0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n    0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,\n    0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n    0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,\n    0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n    0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\n    0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n    0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,\n    0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n    0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,\n    0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n    0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,\n    0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n    0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,\n    0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n    0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\n    0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n    0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,\n    0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n    0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,\n    0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n    0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,\n    0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n    0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,\n    0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n    0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\n    0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n    0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,\n    0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n    0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7\n  ],\n  [\n    0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7,\n    0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n    0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,\n    0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n    0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,\n    0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n    0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec,\n    0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n    0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,\n    0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n    0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58,\n    0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n    0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,\n    0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n    0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60,\n    0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n    0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,\n    0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n    0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74,\n    0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n    0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3,\n    0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n    0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,\n    0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n    0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa,\n    0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n    0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086,\n    0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n    0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24,\n    0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n    0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84,\n    0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n    0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,\n    0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n    0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe,\n    0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n    0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0,\n    0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n    0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188,\n    0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n    0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8,\n    0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n    0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0\n  ],\n  [\n    0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n    0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n    0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n    0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n    0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n    0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n    0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n    0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n    0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n    0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n    0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n    0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n    0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n    0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n    0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n    0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n    0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n    0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n    0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n    0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n    0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n    0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n    0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n    0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n    0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n    0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n    0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n    0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n    0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n    0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n    0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n    0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n    0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n    0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n    0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n    0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n    0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n    0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n    0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n    0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n    0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n    0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n    0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6\n  ]\n];\n\n//*\n//* This is the default PARRAY\n//*\nBlowfish.prototype.PARRAY = [\n  0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n  0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n  0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b\n];\n\n//*\n//* This is the number of rounds the cipher will go\n//*\nBlowfish.prototype.NN = 16;\n\n//*\n//* This function is needed to get rid of problems\n//* with the high-bit getting set.  If we don't do\n//* this, then sometimes ( aa & 0x00FFFFFFFF ) is not\n//* equal to ( bb & 0x00FFFFFFFF ) even when they\n//* agree bit-for-bit for the first 32 bits.\n//*\nBlowfish.prototype._clean = function(xx) {\n  if (xx < 0) {\n    const yy = xx & 0x7FFFFFFF;\n    xx = yy + 0x80000000;\n  }\n  return xx;\n};\n\n//*\n//* This is the mixing function that uses the sboxes\n//*\nBlowfish.prototype._F = function(xx) {\n  let yy;\n\n  const dd = xx & 0x00FF;\n  xx >>>= 8;\n  const cc = xx & 0x00FF;\n  xx >>>= 8;\n  const bb = xx & 0x00FF;\n  xx >>>= 8;\n  const aa = xx & 0x00FF;\n\n  yy = this.sboxes[0][aa] + this.sboxes[1][bb];\n  yy ^= this.sboxes[2][cc];\n  yy += this.sboxes[3][dd];\n\n  return yy;\n};\n\n//*\n//* This method takes an array with two values, left and right\n//* and does NN rounds of Blowfish on them.\n//*\nBlowfish.prototype._encryptBlock = function(vals) {\n  let dataL = vals[0];\n  let dataR = vals[1];\n\n  let ii;\n\n  for (ii = 0; ii < this.NN; ++ii) {\n    dataL ^= this.parray[ii];\n    dataR = this._F(dataL) ^ dataR;\n\n    const tmp = dataL;\n    dataL = dataR;\n    dataR = tmp;\n  }\n\n  dataL ^= this.parray[this.NN + 0];\n  dataR ^= this.parray[this.NN + 1];\n\n  vals[0] = this._clean(dataR);\n  vals[1] = this._clean(dataL);\n};\n\n//*\n//* This method takes a vector of numbers and turns them\n//* into long words so that they can be processed by the\n//* real algorithm.\n//*\n//* Maybe I should make the real algorithm above take a vector\n//* instead.  That will involve more looping, but it won't require\n//* the F() method to deconstruct the vector.\n//*\nBlowfish.prototype.encryptBlock = function(vector) {\n  let ii;\n  const vals = [0, 0];\n  const off = this.BLOCKSIZE / 2;\n  for (ii = 0; ii < this.BLOCKSIZE / 2; ++ii) {\n    vals[0] = (vals[0] << 8) | (vector[ii + 0] & 0x00FF);\n    vals[1] = (vals[1] << 8) | (vector[ii + off] & 0x00FF);\n  }\n\n  this._encryptBlock(vals);\n\n  const ret = [];\n  for (ii = 0; ii < this.BLOCKSIZE / 2; ++ii) {\n    ret[ii + 0] = ((vals[0] >>> (24 - 8 * (ii))) & 0x00FF);\n    ret[ii + off] = ((vals[1] >>> (24 - 8 * (ii))) & 0x00FF);\n    // vals[ 0 ] = ( vals[ 0 ] >>> 8 );\n    // vals[ 1 ] = ( vals[ 1 ] >>> 8 );\n  }\n\n  return ret;\n};\n\n//*\n//* This method takes an array with two values, left and right\n//* and undoes NN rounds of Blowfish on them.\n//*\nBlowfish.prototype._decryptBlock = function(vals) {\n  let dataL = vals[0];\n  let dataR = vals[1];\n\n  let ii;\n\n  for (ii = this.NN + 1; ii > 1; --ii) {\n    dataL ^= this.parray[ii];\n    dataR = this._F(dataL) ^ dataR;\n\n    const tmp = dataL;\n    dataL = dataR;\n    dataR = tmp;\n  }\n\n  dataL ^= this.parray[1];\n  dataR ^= this.parray[0];\n\n  vals[0] = this._clean(dataR);\n  vals[1] = this._clean(dataL);\n};\n\n//*\n//* This method takes a key array and initializes the\n//* sboxes and parray for this encryption.\n//*\nBlowfish.prototype.init = function(key) {\n  let ii;\n  let jj = 0;\n\n  this.parray = [];\n  for (ii = 0; ii < this.NN + 2; ++ii) {\n    let data = 0x00000000;\n    for (let kk = 0; kk < 4; ++kk) {\n      data = (data << 8) | (key[jj] & 0x00FF);\n      if (++jj >= key.length) {\n        jj = 0;\n      }\n    }\n    this.parray[ii] = this.PARRAY[ii] ^ data;\n  }\n\n  this.sboxes = [];\n  for (ii = 0; ii < 4; ++ii) {\n    this.sboxes[ii] = [];\n    for (jj = 0; jj < 256; ++jj) {\n      this.sboxes[ii][jj] = this.SBOXES[ii][jj];\n    }\n  }\n\n  const vals = [0x00000000, 0x00000000];\n\n  for (ii = 0; ii < this.NN + 2; ii += 2) {\n    this._encryptBlock(vals);\n    this.parray[ii + 0] = vals[0];\n    this.parray[ii + 1] = vals[1];\n  }\n\n  for (ii = 0; ii < 4; ++ii) {\n    for (jj = 0; jj < 256; jj += 2) {\n      this._encryptBlock(vals);\n      this.sboxes[ii][jj + 0] = vals[0];\n      this.sboxes[ii][jj + 1] = vals[1];\n    }\n  }\n};\n\n// added by Recurity Labs\nfunction BF(key) {\n  this.bf = new Blowfish();\n  this.bf.init(key);\n\n  this.encrypt = function(block) {\n    return this.bf.encryptBlock(block);\n  };\n}\n\nBF.keySize = BF.prototype.keySize = 16;\nBF.blockSize = BF.prototype.blockSize = 8;\n\nexport default BF;\n","/**\n * @fileoverview Symmetric cryptography functions\n * @module crypto/cipher\n * @private\n */\n\nimport aes from './aes';\nimport { DES, TripleDES } from './des.js';\nimport CAST5 from './cast5';\nimport TF from './twofish';\nimport BF from './blowfish';\n\n/**\n * AES-128 encryption and decryption (ID 7)\n * @function\n * @param {String} key - 128-bit key\n * @see {@link https://github.com/asmcrypto/asmcrypto.js|asmCrypto}\n * @see {@link https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf|NIST FIPS-197}\n * @returns {Object}\n */\nexport const aes128 = aes(128);\n/**\n * AES-128 Block Cipher (ID 8)\n * @function\n * @param {String} key - 192-bit key\n * @see {@link https://github.com/asmcrypto/asmcrypto.js|asmCrypto}\n * @see {@link https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf|NIST FIPS-197}\n * @returns {Object}\n */\nexport const aes192 = aes(192);\n/**\n * AES-128 Block Cipher (ID 9)\n * @function\n * @param {String} key - 256-bit key\n * @see {@link https://github.com/asmcrypto/asmcrypto.js|asmCrypto}\n * @see {@link https://csrc.nist.gov/publications/fips/fips197/fips-197.pdf|NIST FIPS-197}\n * @returns {Object}\n */\nexport const aes256 = aes(256);\n// Not in OpenPGP specifications\nexport const des = DES;\n/**\n * Triple DES Block Cipher (ID 2)\n * @function\n * @param {String} key - 192-bit key\n * @see {@link https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-67r2.pdf|NIST SP 800-67}\n * @returns {Object}\n */\nexport const tripledes = TripleDES;\n/**\n * CAST-128 Block Cipher (ID 3)\n * @function\n * @param {String} key - 128-bit key\n * @see {@link https://tools.ietf.org/html/rfc2144|The CAST-128 Encryption Algorithm}\n * @returns {Object}\n */\nexport const cast5 = CAST5;\n/**\n * Twofish Block Cipher (ID 10)\n * @function\n * @param {String} key - 256-bit key\n * @see {@link https://tools.ietf.org/html/rfc4880#ref-TWOFISH|TWOFISH}\n * @returns {Object}\n */\nexport const twofish = TF;\n/**\n * Blowfish Block Cipher (ID 4)\n * @function\n * @param {String} key - 128-bit key\n * @see {@link https://tools.ietf.org/html/rfc4880#ref-BLOWFISH|BLOWFISH}\n * @returns {Object}\n */\nexport const blowfish = BF;\n/**\n * Not implemented\n * @function\n * @throws {Error}\n */\nexport const idea = function() {\n  throw new Error('IDEA symmetric-key algorithm not implemented');\n};\n","export var sha1_asm = function ( stdlib, foreign, buffer ) {\n    \"use asm\";\n\n    // SHA256 state\n    var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0,\n        TOTAL0 = 0, TOTAL1 = 0;\n\n    // HMAC state\n    var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0,\n        O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0;\n\n    // I/O buffer\n    var HEAP = new stdlib.Uint8Array(buffer);\n\n    function _core ( w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15 ) {\n        w0 = w0|0;\n        w1 = w1|0;\n        w2 = w2|0;\n        w3 = w3|0;\n        w4 = w4|0;\n        w5 = w5|0;\n        w6 = w6|0;\n        w7 = w7|0;\n        w8 = w8|0;\n        w9 = w9|0;\n        w10 = w10|0;\n        w11 = w11|0;\n        w12 = w12|0;\n        w13 = w13|0;\n        w14 = w14|0;\n        w15 = w15|0;\n\n        var a = 0, b = 0, c = 0, d = 0, e = 0, n = 0, t = 0,\n            w16 = 0, w17 = 0, w18 = 0, w19 = 0,\n            w20 = 0, w21 = 0, w22 = 0, w23 = 0, w24 = 0, w25 = 0, w26 = 0, w27 = 0, w28 = 0, w29 = 0,\n            w30 = 0, w31 = 0, w32 = 0, w33 = 0, w34 = 0, w35 = 0, w36 = 0, w37 = 0, w38 = 0, w39 = 0,\n            w40 = 0, w41 = 0, w42 = 0, w43 = 0, w44 = 0, w45 = 0, w46 = 0, w47 = 0, w48 = 0, w49 = 0,\n            w50 = 0, w51 = 0, w52 = 0, w53 = 0, w54 = 0, w55 = 0, w56 = 0, w57 = 0, w58 = 0, w59 = 0,\n            w60 = 0, w61 = 0, w62 = 0, w63 = 0, w64 = 0, w65 = 0, w66 = 0, w67 = 0, w68 = 0, w69 = 0,\n            w70 = 0, w71 = 0, w72 = 0, w73 = 0, w74 = 0, w75 = 0, w76 = 0, w77 = 0, w78 = 0, w79 = 0;\n\n        a = H0;\n        b = H1;\n        c = H2;\n        d = H3;\n        e = H4;\n\n        // 0\n        t = ( w0 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 1\n        t = ( w1 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 2\n        t = ( w2 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 3\n        t = ( w3 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 4\n        t = ( w4 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 5\n        t = ( w5 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 6\n        t = ( w6 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 7\n        t = ( w7 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 8\n        t = ( w8 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 9\n        t = ( w9 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 10\n        t = ( w10 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 11\n        t = ( w11 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 12\n        t = ( w12 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 13\n        t = ( w13 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 14\n        t = ( w14 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 15\n        t = ( w15 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 16\n        n = w13 ^ w8 ^ w2 ^ w0;\n        w16 = (n << 1) | (n >>> 31);\n        t = (w16 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 17\n        n = w14 ^ w9 ^ w3 ^ w1;\n        w17 = (n << 1) | (n >>> 31);\n        t = (w17 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 18\n        n = w15 ^ w10 ^ w4 ^ w2;\n        w18 = (n << 1) | (n >>> 31);\n        t = (w18 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 19\n        n = w16 ^ w11 ^ w5 ^ w3;\n        w19 = (n << 1) | (n >>> 31);\n        t = (w19 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (~b & d)) + 0x5a827999 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 20\n        n = w17 ^ w12 ^ w6 ^ w4;\n        w20 = (n << 1) | (n >>> 31);\n        t = (w20 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 21\n        n = w18 ^ w13 ^ w7 ^ w5;\n        w21 = (n << 1) | (n >>> 31);\n        t = (w21 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 22\n        n = w19 ^ w14 ^ w8 ^ w6;\n        w22 = (n << 1) | (n >>> 31);\n        t = (w22 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 23\n        n = w20 ^ w15 ^ w9 ^ w7;\n        w23 = (n << 1) | (n >>> 31);\n        t = (w23 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 24\n        n = w21 ^ w16 ^ w10 ^ w8;\n        w24 = (n << 1) | (n >>> 31);\n        t = (w24 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 25\n        n = w22 ^ w17 ^ w11 ^ w9;\n        w25 = (n << 1) | (n >>> 31);\n        t = (w25 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 26\n        n = w23 ^ w18 ^ w12 ^ w10;\n        w26 = (n << 1) | (n >>> 31);\n        t = (w26 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 27\n        n = w24 ^ w19 ^ w13 ^ w11;\n        w27 = (n << 1) | (n >>> 31);\n        t = (w27 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 28\n        n = w25 ^ w20 ^ w14 ^ w12;\n        w28 = (n << 1) | (n >>> 31);\n        t = (w28 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 29\n        n = w26 ^ w21 ^ w15 ^ w13;\n        w29 = (n << 1) | (n >>> 31);\n        t = (w29 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 30\n        n = w27 ^ w22 ^ w16 ^ w14;\n        w30 = (n << 1) | (n >>> 31);\n        t = (w30 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 31\n        n = w28 ^ w23 ^ w17 ^ w15;\n        w31 = (n << 1) | (n >>> 31);\n        t = (w31 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 32\n        n = w29 ^ w24 ^ w18 ^ w16;\n        w32 = (n << 1) | (n >>> 31);\n        t = (w32 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 33\n        n = w30 ^ w25 ^ w19 ^ w17;\n        w33 = (n << 1) | (n >>> 31);\n        t = (w33 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 34\n        n = w31 ^ w26 ^ w20 ^ w18;\n        w34 = (n << 1) | (n >>> 31);\n        t = (w34 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 35\n        n = w32 ^ w27 ^ w21 ^ w19;\n        w35 = (n << 1) | (n >>> 31);\n        t = (w35 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 36\n        n = w33 ^ w28 ^ w22 ^ w20;\n        w36 = (n << 1) | (n >>> 31);\n        t = (w36 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 37\n        n = w34 ^ w29 ^ w23 ^ w21;\n        w37 = (n << 1) | (n >>> 31);\n        t = (w37 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 38\n        n = w35 ^ w30 ^ w24 ^ w22;\n        w38 = (n << 1) | (n >>> 31);\n        t = (w38 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 39\n        n = w36 ^ w31 ^ w25 ^ w23;\n        w39 = (n << 1) | (n >>> 31);\n        t = (w39 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) + 0x6ed9eba1 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 40\n        n = w37 ^ w32 ^ w26 ^ w24;\n        w40 = (n << 1) | (n >>> 31);\n        t = (w40 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 41\n        n = w38 ^ w33 ^ w27 ^ w25;\n        w41 = (n << 1) | (n >>> 31);\n        t = (w41 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 42\n        n = w39 ^ w34 ^ w28 ^ w26;\n        w42 = (n << 1) | (n >>> 31);\n        t = (w42 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 43\n        n = w40 ^ w35 ^ w29 ^ w27;\n        w43 = (n << 1) | (n >>> 31);\n        t = (w43 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 44\n        n = w41 ^ w36 ^ w30 ^ w28;\n        w44 = (n << 1) | (n >>> 31);\n        t = (w44 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 45\n        n = w42 ^ w37 ^ w31 ^ w29;\n        w45 = (n << 1) | (n >>> 31);\n        t = (w45 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 46\n        n = w43 ^ w38 ^ w32 ^ w30;\n        w46 = (n << 1) | (n >>> 31);\n        t = (w46 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 47\n        n = w44 ^ w39 ^ w33 ^ w31;\n        w47 = (n << 1) | (n >>> 31);\n        t = (w47 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 48\n        n = w45 ^ w40 ^ w34 ^ w32;\n        w48 = (n << 1) | (n >>> 31);\n        t = (w48 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 49\n        n = w46 ^ w41 ^ w35 ^ w33;\n        w49 = (n << 1) | (n >>> 31);\n        t = (w49 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 50\n        n = w47 ^ w42 ^ w36 ^ w34;\n        w50 = (n << 1) | (n >>> 31);\n        t = (w50 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 51\n        n = w48 ^ w43 ^ w37 ^ w35;\n        w51 = (n << 1) | (n >>> 31);\n        t = (w51 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 52\n        n = w49 ^ w44 ^ w38 ^ w36;\n        w52 = (n << 1) | (n >>> 31);\n        t = (w52 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 53\n        n = w50 ^ w45 ^ w39 ^ w37;\n        w53 = (n << 1) | (n >>> 31);\n        t = (w53 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 54\n        n = w51 ^ w46 ^ w40 ^ w38;\n        w54 = (n << 1) | (n >>> 31);\n        t = (w54 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 55\n        n = w52 ^ w47 ^ w41 ^ w39;\n        w55 = (n << 1) | (n >>> 31);\n        t = (w55 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 56\n        n = w53 ^ w48 ^ w42 ^ w40;\n        w56 = (n << 1) | (n >>> 31);\n        t = (w56 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 57\n        n = w54 ^ w49 ^ w43 ^ w41;\n        w57 = (n << 1) | (n >>> 31);\n        t = (w57 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 58\n        n = w55 ^ w50 ^ w44 ^ w42;\n        w58 = (n << 1) | (n >>> 31);\n        t = (w58 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 59\n        n = w56 ^ w51 ^ w45 ^ w43;\n        w59 = (n << 1) | (n >>> 31);\n        t = (w59 + ((a << 5) | (a >>> 27)) + e + ((b & c) | (b & d) | (c & d)) - 0x70e44324 )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 60\n        n = w57 ^ w52 ^ w46 ^ w44;\n        w60 = (n << 1) | (n >>> 31);\n        t = (w60 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 61\n        n = w58 ^ w53 ^ w47 ^ w45;\n        w61 = (n << 1) | (n >>> 31);\n        t = (w61 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 62\n        n = w59 ^ w54 ^ w48 ^ w46;\n        w62 = (n << 1) | (n >>> 31);\n        t = (w62 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 63\n        n = w60 ^ w55 ^ w49 ^ w47;\n        w63 = (n << 1) | (n >>> 31);\n        t = (w63 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 64\n        n = w61 ^ w56 ^ w50 ^ w48;\n        w64 = (n << 1) | (n >>> 31);\n        t = (w64 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 65\n        n = w62 ^ w57 ^ w51 ^ w49;\n        w65 = (n << 1) | (n >>> 31);\n        t = (w65 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 66\n        n = w63 ^ w58 ^ w52 ^ w50;\n        w66 = (n << 1) | (n >>> 31);\n        t = (w66 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 67\n        n = w64 ^ w59 ^ w53 ^ w51;\n        w67 = (n << 1) | (n >>> 31);\n        t = (w67 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 68\n        n = w65 ^ w60 ^ w54 ^ w52;\n        w68 = (n << 1) | (n >>> 31);\n        t = (w68 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 69\n        n = w66 ^ w61 ^ w55 ^ w53;\n        w69 = (n << 1) | (n >>> 31);\n        t = (w69 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 70\n        n = w67 ^ w62 ^ w56 ^ w54;\n        w70 = (n << 1) | (n >>> 31);\n        t = (w70 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 71\n        n = w68 ^ w63 ^ w57 ^ w55;\n        w71 = (n << 1) | (n >>> 31);\n        t = (w71 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 72\n        n = w69 ^ w64 ^ w58 ^ w56;\n        w72 = (n << 1) | (n >>> 31);\n        t = (w72 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 73\n        n = w70 ^ w65 ^ w59 ^ w57;\n        w73 = (n << 1) | (n >>> 31);\n        t = (w73 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 74\n        n = w71 ^ w66 ^ w60 ^ w58;\n        w74 = (n << 1) | (n >>> 31);\n        t = (w74 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 75\n        n = w72 ^ w67 ^ w61 ^ w59;\n        w75 = (n << 1) | (n >>> 31);\n        t = (w75 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 76\n        n = w73 ^ w68 ^ w62 ^ w60;\n        w76 = (n << 1) | (n >>> 31);\n        t = (w76 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 77\n        n = w74 ^ w69 ^ w63 ^ w61;\n        w77 = (n << 1) | (n >>> 31);\n        t = (w77 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 78\n        n = w75 ^ w70 ^ w64 ^ w62;\n        w78 = (n << 1) | (n >>> 31);\n        t = (w78 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        // 79\n        n = w76 ^ w71 ^ w65 ^ w63;\n        w79 = (n << 1) | (n >>> 31);\n        t = (w79 + ((a << 5) | (a >>> 27)) + e + (b ^ c ^ d) - 0x359d3e2a )|0;\n        e = d; d = c; c = (b << 30) | (b >>> 2); b = a; a = t;\n\n        H0 = ( H0 + a )|0;\n        H1 = ( H1 + b )|0;\n        H2 = ( H2 + c )|0;\n        H3 = ( H3 + d )|0;\n        H4 = ( H4 + e )|0;\n\n    }\n\n    function _core_heap ( offset ) {\n        offset = offset|0;\n\n        _core(\n            HEAP[offset|0]<<24 | HEAP[offset|1]<<16 | HEAP[offset|2]<<8 | HEAP[offset|3],\n            HEAP[offset|4]<<24 | HEAP[offset|5]<<16 | HEAP[offset|6]<<8 | HEAP[offset|7],\n            HEAP[offset|8]<<24 | HEAP[offset|9]<<16 | HEAP[offset|10]<<8 | HEAP[offset|11],\n            HEAP[offset|12]<<24 | HEAP[offset|13]<<16 | HEAP[offset|14]<<8 | HEAP[offset|15],\n            HEAP[offset|16]<<24 | HEAP[offset|17]<<16 | HEAP[offset|18]<<8 | HEAP[offset|19],\n            HEAP[offset|20]<<24 | HEAP[offset|21]<<16 | HEAP[offset|22]<<8 | HEAP[offset|23],\n            HEAP[offset|24]<<24 | HEAP[offset|25]<<16 | HEAP[offset|26]<<8 | HEAP[offset|27],\n            HEAP[offset|28]<<24 | HEAP[offset|29]<<16 | HEAP[offset|30]<<8 | HEAP[offset|31],\n            HEAP[offset|32]<<24 | HEAP[offset|33]<<16 | HEAP[offset|34]<<8 | HEAP[offset|35],\n            HEAP[offset|36]<<24 | HEAP[offset|37]<<16 | HEAP[offset|38]<<8 | HEAP[offset|39],\n            HEAP[offset|40]<<24 | HEAP[offset|41]<<16 | HEAP[offset|42]<<8 | HEAP[offset|43],\n            HEAP[offset|44]<<24 | HEAP[offset|45]<<16 | HEAP[offset|46]<<8 | HEAP[offset|47],\n            HEAP[offset|48]<<24 | HEAP[offset|49]<<16 | HEAP[offset|50]<<8 | HEAP[offset|51],\n            HEAP[offset|52]<<24 | HEAP[offset|53]<<16 | HEAP[offset|54]<<8 | HEAP[offset|55],\n            HEAP[offset|56]<<24 | HEAP[offset|57]<<16 | HEAP[offset|58]<<8 | HEAP[offset|59],\n            HEAP[offset|60]<<24 | HEAP[offset|61]<<16 | HEAP[offset|62]<<8 | HEAP[offset|63]\n        );\n    }\n\n    // offset — multiple of 32\n    function _state_to_heap ( output ) {\n        output = output|0;\n\n        HEAP[output|0] = H0>>>24;\n        HEAP[output|1] = H0>>>16&255;\n        HEAP[output|2] = H0>>>8&255;\n        HEAP[output|3] = H0&255;\n        HEAP[output|4] = H1>>>24;\n        HEAP[output|5] = H1>>>16&255;\n        HEAP[output|6] = H1>>>8&255;\n        HEAP[output|7] = H1&255;\n        HEAP[output|8] = H2>>>24;\n        HEAP[output|9] = H2>>>16&255;\n        HEAP[output|10] = H2>>>8&255;\n        HEAP[output|11] = H2&255;\n        HEAP[output|12] = H3>>>24;\n        HEAP[output|13] = H3>>>16&255;\n        HEAP[output|14] = H3>>>8&255;\n        HEAP[output|15] = H3&255;\n        HEAP[output|16] = H4>>>24;\n        HEAP[output|17] = H4>>>16&255;\n        HEAP[output|18] = H4>>>8&255;\n        HEAP[output|19] = H4&255;\n    }\n\n    function reset () {\n        H0 = 0x67452301;\n        H1 = 0xefcdab89;\n        H2 = 0x98badcfe;\n        H3 = 0x10325476;\n        H4 = 0xc3d2e1f0;\n        TOTAL0 = TOTAL1 = 0;\n    }\n\n    function init ( h0, h1, h2, h3, h4, total0, total1 ) {\n        h0 = h0|0;\n        h1 = h1|0;\n        h2 = h2|0;\n        h3 = h3|0;\n        h4 = h4|0;\n        total0 = total0|0;\n        total1 = total1|0;\n\n        H0 = h0;\n        H1 = h1;\n        H2 = h2;\n        H3 = h3;\n        H4 = h4;\n        TOTAL0 = total0;\n        TOTAL1 = total1;\n    }\n\n    // offset — multiple of 64\n    function process ( offset, length ) {\n        offset = offset|0;\n        length = length|0;\n\n        var hashed = 0;\n\n        if ( offset & 63 )\n            return -1;\n\n        while ( (length|0) >= 64 ) {\n            _core_heap(offset);\n\n            offset = ( offset + 64 )|0;\n            length = ( length - 64 )|0;\n\n            hashed = ( hashed + 64 )|0;\n        }\n\n        TOTAL0 = ( TOTAL0 + hashed )|0;\n        if ( TOTAL0>>>0 < hashed>>>0 ) TOTAL1 = ( TOTAL1 + 1 )|0;\n\n        return hashed|0;\n    }\n\n    // offset — multiple of 64\n    // output — multiple of 32\n    function finish ( offset, length, output ) {\n        offset = offset|0;\n        length = length|0;\n        output = output|0;\n\n        var hashed = 0,\n            i = 0;\n\n        if ( offset & 63 )\n            return -1;\n\n        if ( ~output )\n            if ( output & 31 )\n                return -1;\n\n        if ( (length|0) >= 64 ) {\n            hashed = process( offset, length )|0;\n            if ( (hashed|0) == -1 )\n                return -1;\n\n            offset = ( offset + hashed )|0;\n            length = ( length - hashed )|0;\n        }\n\n        hashed = ( hashed + length )|0;\n        TOTAL0 = ( TOTAL0 + length )|0;\n        if ( TOTAL0>>>0 < length>>>0 ) TOTAL1 = (TOTAL1 + 1)|0;\n\n        HEAP[offset|length] = 0x80;\n\n        if ( (length|0) >= 56 ) {\n            for ( i = (length+1)|0; (i|0) < 64; i = (i+1)|0 )\n                HEAP[offset|i] = 0x00;\n            _core_heap(offset);\n\n            length = 0;\n\n            HEAP[offset|0] = 0;\n        }\n\n        for ( i = (length+1)|0; (i|0) < 59; i = (i+1)|0 )\n            HEAP[offset|i] = 0;\n\n        HEAP[offset|56] = TOTAL1>>>21&255;\n        HEAP[offset|57] = TOTAL1>>>13&255;\n        HEAP[offset|58] = TOTAL1>>>5&255;\n        HEAP[offset|59] = TOTAL1<<3&255 | TOTAL0>>>29;\n        HEAP[offset|60] = TOTAL0>>>21&255;\n        HEAP[offset|61] = TOTAL0>>>13&255;\n        HEAP[offset|62] = TOTAL0>>>5&255;\n        HEAP[offset|63] = TOTAL0<<3&255;\n        _core_heap(offset);\n\n        if ( ~output )\n            _state_to_heap(output);\n\n        return hashed|0;\n    }\n\n    function hmac_reset () {\n        H0 = I0;\n        H1 = I1;\n        H2 = I2;\n        H3 = I3;\n        H4 = I4;\n        TOTAL0 = 64;\n        TOTAL1 = 0;\n    }\n\n    function _hmac_opad () {\n        H0 = O0;\n        H1 = O1;\n        H2 = O2;\n        H3 = O3;\n        H4 = O4;\n        TOTAL0 = 64;\n        TOTAL1 = 0;\n    }\n\n    function hmac_init ( p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) {\n        p0 = p0|0;\n        p1 = p1|0;\n        p2 = p2|0;\n        p3 = p3|0;\n        p4 = p4|0;\n        p5 = p5|0;\n        p6 = p6|0;\n        p7 = p7|0;\n        p8 = p8|0;\n        p9 = p9|0;\n        p10 = p10|0;\n        p11 = p11|0;\n        p12 = p12|0;\n        p13 = p13|0;\n        p14 = p14|0;\n        p15 = p15|0;\n\n        // opad\n        reset();\n        _core(\n            p0 ^ 0x5c5c5c5c,\n            p1 ^ 0x5c5c5c5c,\n            p2 ^ 0x5c5c5c5c,\n            p3 ^ 0x5c5c5c5c,\n            p4 ^ 0x5c5c5c5c,\n            p5 ^ 0x5c5c5c5c,\n            p6 ^ 0x5c5c5c5c,\n            p7 ^ 0x5c5c5c5c,\n            p8 ^ 0x5c5c5c5c,\n            p9 ^ 0x5c5c5c5c,\n            p10 ^ 0x5c5c5c5c,\n            p11 ^ 0x5c5c5c5c,\n            p12 ^ 0x5c5c5c5c,\n            p13 ^ 0x5c5c5c5c,\n            p14 ^ 0x5c5c5c5c,\n            p15 ^ 0x5c5c5c5c\n        );\n        O0 = H0;\n        O1 = H1;\n        O2 = H2;\n        O3 = H3;\n        O4 = H4;\n\n        // ipad\n        reset();\n        _core(\n            p0 ^ 0x36363636,\n            p1 ^ 0x36363636,\n            p2 ^ 0x36363636,\n            p3 ^ 0x36363636,\n            p4 ^ 0x36363636,\n            p5 ^ 0x36363636,\n            p6 ^ 0x36363636,\n            p7 ^ 0x36363636,\n            p8 ^ 0x36363636,\n            p9 ^ 0x36363636,\n            p10 ^ 0x36363636,\n            p11 ^ 0x36363636,\n            p12 ^ 0x36363636,\n            p13 ^ 0x36363636,\n            p14 ^ 0x36363636,\n            p15 ^ 0x36363636\n        );\n        I0 = H0;\n        I1 = H1;\n        I2 = H2;\n        I3 = H3;\n        I4 = H4;\n\n        TOTAL0 = 64;\n        TOTAL1 = 0;\n    }\n\n    // offset — multiple of 64\n    // output — multiple of 32\n    function hmac_finish ( offset, length, output ) {\n        offset = offset|0;\n        length = length|0;\n        output = output|0;\n\n        var t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, hashed = 0;\n\n        if ( offset & 63 )\n            return -1;\n\n        if ( ~output )\n            if ( output & 31 )\n                return -1;\n\n        hashed = finish( offset, length, -1 )|0;\n        t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n        _hmac_opad();\n        _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n\n        if ( ~output )\n            _state_to_heap(output);\n\n        return hashed|0;\n    }\n\n    // salt is assumed to be already processed\n    // offset — multiple of 64\n    // output — multiple of 32\n    function pbkdf2_generate_block ( offset, length, block, count, output ) {\n        offset = offset|0;\n        length = length|0;\n        block = block|0;\n        count = count|0;\n        output = output|0;\n\n        var h0 = 0, h1 = 0, h2 = 0, h3 = 0, h4 = 0,\n            t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0;\n\n        if ( offset & 63 )\n            return -1;\n\n        if ( ~output )\n            if ( output & 31 )\n                return -1;\n\n        // pad block number into heap\n        // FIXME probable OOB write\n        HEAP[(offset+length)|0]   = block>>>24;\n        HEAP[(offset+length+1)|0] = block>>>16&255;\n        HEAP[(offset+length+2)|0] = block>>>8&255;\n        HEAP[(offset+length+3)|0] = block&255;\n\n        // finish first iteration\n        hmac_finish( offset, (length+4)|0, -1 )|0;\n        h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4;\n        count = (count-1)|0;\n\n        // perform the rest iterations\n        while ( (count|0) > 0 ) {\n            hmac_reset();\n            _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n            t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n            _hmac_opad();\n            _core( t0, t1, t2, t3, t4, 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672 );\n            t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4;\n\n            h0 = h0 ^ H0;\n            h1 = h1 ^ H1;\n            h2 = h2 ^ H2;\n            h3 = h3 ^ H3;\n            h4 = h4 ^ H4;\n\n            count = (count-1)|0;\n        }\n\n        H0 = h0;\n        H1 = h1;\n        H2 = h2;\n        H3 = h3;\n        H4 = h4;\n\n        if ( ~output )\n            _state_to_heap(output);\n\n        return 0;\n    }\n\n    return {\n      // SHA1\n      reset: reset,\n      init: init,\n      process: process,\n      finish: finish,\n\n      // HMAC-SHA1\n      hmac_reset: hmac_reset,\n      hmac_init: hmac_init,\n      hmac_finish: hmac_finish,\n\n      // PBKDF2-HMAC-SHA1\n      pbkdf2_generate_block: pbkdf2_generate_block\n    }\n}\n","import { _heap_write } from '../other/utils';\nimport { IllegalStateError } from '../other/errors';\nexport class Hash {\n    constructor() {\n        this.pos = 0;\n        this.len = 0;\n    }\n    reset() {\n        const { asm } = this.acquire_asm();\n        this.result = null;\n        this.pos = 0;\n        this.len = 0;\n        asm.reset();\n        return this;\n    }\n    process(data) {\n        if (this.result !== null)\n            throw new IllegalStateError('state must be reset before processing new data');\n        const { asm, heap } = this.acquire_asm();\n        let hpos = this.pos;\n        let hlen = this.len;\n        let dpos = 0;\n        let dlen = data.length;\n        let wlen = 0;\n        while (dlen > 0) {\n            wlen = _heap_write(heap, hpos + hlen, data, dpos, dlen);\n            hlen += wlen;\n            dpos += wlen;\n            dlen -= wlen;\n            wlen = asm.process(hpos, hlen);\n            hpos += wlen;\n            hlen -= wlen;\n            if (!hlen)\n                hpos = 0;\n        }\n        this.pos = hpos;\n        this.len = hlen;\n        return this;\n    }\n    finish() {\n        if (this.result !== null)\n            throw new IllegalStateError('state must be reset before processing new data');\n        const { asm, heap } = this.acquire_asm();\n        asm.finish(this.pos, this.len, 0);\n        this.result = new Uint8Array(this.HASH_SIZE);\n        this.result.set(heap.subarray(0, this.HASH_SIZE));\n        this.pos = 0;\n        this.len = 0;\n        this.release_asm();\n        return this;\n    }\n}\n","import { sha1_asm } from './sha1.asm';\nimport { Hash } from '../hash';\nimport { _heap_init } from '../../other/utils';\nexport const _sha1_block_size = 64;\nexport const _sha1_hash_size = 20;\nconst heap_pool = [];\nconst asm_pool = [];\nexport class Sha1 extends Hash {\n    constructor() {\n        super();\n        this.NAME = 'sha1';\n        this.BLOCK_SIZE = _sha1_block_size;\n        this.HASH_SIZE = _sha1_hash_size;\n        this.acquire_asm();\n    }\n    acquire_asm() {\n        if (this.heap === undefined || this.asm === undefined) {\n            this.heap = heap_pool.pop() || _heap_init();\n            this.asm = asm_pool.pop() || sha1_asm({ Uint8Array: Uint8Array }, null, this.heap.buffer);\n            this.reset();\n        }\n        return { heap: this.heap, asm: this.asm };\n    }\n    release_asm() {\n        if (this.heap !== undefined && this.asm !== undefined) {\n            heap_pool.push(this.heap);\n            asm_pool.push(this.asm);\n        }\n        this.heap = undefined;\n        this.asm = undefined;\n    }\n    static bytes(data) {\n        return new Sha1().process(data).finish().result;\n    }\n}\nSha1.NAME = 'sha1';\nSha1.heap_pool = [];\nSha1.asm_pool = [];\nSha1.asm_function = sha1_asm;\n","import { sha256_asm } from './sha256.asm';\nimport { Hash } from '../hash';\nimport { _heap_init } from '../../other/utils';\nexport const _sha256_block_size = 64;\nexport const _sha256_hash_size = 32;\nconst heap_pool = [];\nconst asm_pool = [];\nexport class Sha256 extends Hash {\n    constructor() {\n        super();\n        this.NAME = 'sha256';\n        this.BLOCK_SIZE = _sha256_block_size;\n        this.HASH_SIZE = _sha256_hash_size;\n        this.acquire_asm();\n    }\n    acquire_asm() {\n        if (this.heap === undefined || this.asm === undefined) {\n            this.heap = heap_pool.pop() || _heap_init();\n            this.asm = asm_pool.pop() || sha256_asm({ Uint8Array: Uint8Array }, null, this.heap.buffer);\n            this.reset();\n        }\n        return { heap: this.heap, asm: this.asm };\n    }\n    release_asm() {\n        if (this.heap !== undefined && this.asm !== undefined) {\n            heap_pool.push(this.heap);\n            asm_pool.push(this.asm);\n        }\n        this.heap = undefined;\n        this.asm = undefined;\n    }\n    static bytes(data) {\n        return new Sha256().process(data).finish().result;\n    }\n}\nSha256.NAME = 'sha256';\n","export var sha256_asm = function ( stdlib, foreign, buffer ) {\n    \"use asm\";\n\n    // SHA256 state\n    var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0,\n        TOTAL0 = 0, TOTAL1 = 0;\n\n    // HMAC state\n    var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0,\n        O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0;\n\n    // I/O buffer\n    var HEAP = new stdlib.Uint8Array(buffer);\n\n    function _core ( w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15 ) {\n        w0 = w0|0;\n        w1 = w1|0;\n        w2 = w2|0;\n        w3 = w3|0;\n        w4 = w4|0;\n        w5 = w5|0;\n        w6 = w6|0;\n        w7 = w7|0;\n        w8 = w8|0;\n        w9 = w9|0;\n        w10 = w10|0;\n        w11 = w11|0;\n        w12 = w12|0;\n        w13 = w13|0;\n        w14 = w14|0;\n        w15 = w15|0;\n\n        var a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n\n        a = H0;\n        b = H1;\n        c = H2;\n        d = H3;\n        e = H4;\n        f = H5;\n        g = H6;\n        h = H7;\n        \n        // 0\n        h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0x428a2f98 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 1\n        g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0x71374491 )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 2\n        f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0xb5c0fbcf )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 3\n        e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0xe9b5dba5 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 4\n        d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x3956c25b )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 5\n        c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0x59f111f1 )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 6\n        b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x923f82a4 )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 7\n        a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0xab1c5ed5 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 8\n        h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0xd807aa98 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 9\n        g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0x12835b01 )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 10\n        f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0x243185be )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 11\n        e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0x550c7dc3 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 12\n        d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x72be5d74 )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 13\n        c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0x80deb1fe )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 14\n        b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x9bdc06a7 )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 15\n        a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0xc19bf174 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 16\n        w0 = ( ( w1>>>7  ^ w1>>>18 ^ w1>>>3  ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n        h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0xe49b69c1 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 17\n        w1 = ( ( w2>>>7  ^ w2>>>18 ^ w2>>>3  ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n        g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0xefbe4786 )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 18\n        w2 = ( ( w3>>>7  ^ w3>>>18 ^ w3>>>3  ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n        f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0x0fc19dc6 )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 19\n        w3 = ( ( w4>>>7  ^ w4>>>18 ^ w4>>>3  ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n        e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0x240ca1cc )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 20\n        w4 = ( ( w5>>>7  ^ w5>>>18 ^ w5>>>3  ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n        d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x2de92c6f )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 21\n        w5 = ( ( w6>>>7  ^ w6>>>18 ^ w6>>>3  ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n        c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0x4a7484aa )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 22\n        w6 = ( ( w7>>>7  ^ w7>>>18 ^ w7>>>3  ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n        b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x5cb0a9dc )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 23\n        w7 = ( ( w8>>>7  ^ w8>>>18 ^ w8>>>3  ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n        a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0x76f988da )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 24\n        w8 = ( ( w9>>>7  ^ w9>>>18 ^ w9>>>3  ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n        h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0x983e5152 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 25\n        w9 = ( ( w10>>>7  ^ w10>>>18 ^ w10>>>3  ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n        g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0xa831c66d )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 26\n        w10 = ( ( w11>>>7  ^ w11>>>18 ^ w11>>>3  ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n        f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0xb00327c8 )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 27\n        w11 = ( ( w12>>>7  ^ w12>>>18 ^ w12>>>3  ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n        e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0xbf597fc7 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 28\n        w12 = ( ( w13>>>7  ^ w13>>>18 ^ w13>>>3  ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n        d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0xc6e00bf3 )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 29\n        w13 = ( ( w14>>>7  ^ w14>>>18 ^ w14>>>3  ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n        c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0xd5a79147 )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 30\n        w14 = ( ( w15>>>7  ^ w15>>>18 ^ w15>>>3  ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n        b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x06ca6351 )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 31\n        w15 = ( ( w0>>>7  ^ w0>>>18 ^ w0>>>3  ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n        a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0x14292967 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 32\n        w0 = ( ( w1>>>7  ^ w1>>>18 ^ w1>>>3  ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n        h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0x27b70a85 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 33\n        w1 = ( ( w2>>>7  ^ w2>>>18 ^ w2>>>3  ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n        g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0x2e1b2138 )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 34\n        w2 = ( ( w3>>>7  ^ w3>>>18 ^ w3>>>3  ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n        f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0x4d2c6dfc )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 35\n        w3 = ( ( w4>>>7  ^ w4>>>18 ^ w4>>>3  ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n        e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0x53380d13 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 36\n        w4 = ( ( w5>>>7  ^ w5>>>18 ^ w5>>>3  ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n        d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x650a7354 )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 37\n        w5 = ( ( w6>>>7  ^ w6>>>18 ^ w6>>>3  ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n        c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0x766a0abb )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 38\n        w6 = ( ( w7>>>7  ^ w7>>>18 ^ w7>>>3  ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n        b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x81c2c92e )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 39\n        w7 = ( ( w8>>>7  ^ w8>>>18 ^ w8>>>3  ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n        a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0x92722c85 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 40\n        w8 = ( ( w9>>>7  ^ w9>>>18 ^ w9>>>3  ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n        h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0xa2bfe8a1 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 41\n        w9 = ( ( w10>>>7  ^ w10>>>18 ^ w10>>>3  ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n        g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0xa81a664b )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 42\n        w10 = ( ( w11>>>7  ^ w11>>>18 ^ w11>>>3  ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n        f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0xc24b8b70 )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 43\n        w11 = ( ( w12>>>7  ^ w12>>>18 ^ w12>>>3  ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n        e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0xc76c51a3 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 44\n        w12 = ( ( w13>>>7  ^ w13>>>18 ^ w13>>>3  ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n        d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0xd192e819 )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 45\n        w13 = ( ( w14>>>7  ^ w14>>>18 ^ w14>>>3  ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n        c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0xd6990624 )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 46\n        w14 = ( ( w15>>>7  ^ w15>>>18 ^ w15>>>3  ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n        b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0xf40e3585 )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 47\n        w15 = ( ( w0>>>7  ^ w0>>>18 ^ w0>>>3  ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n        a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0x106aa070 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 48\n        w0 = ( ( w1>>>7  ^ w1>>>18 ^ w1>>>3  ^ w1<<25 ^ w1<<14 ) + ( w14>>>17 ^ w14>>>19 ^ w14>>>10 ^ w14<<15 ^ w14<<13 ) + w0 + w9 )|0;\n        h = ( w0 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0x19a4c116 )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 49\n        w1 = ( ( w2>>>7  ^ w2>>>18 ^ w2>>>3  ^ w2<<25 ^ w2<<14 ) + ( w15>>>17 ^ w15>>>19 ^ w15>>>10 ^ w15<<15 ^ w15<<13 ) + w1 + w10 )|0;\n        g = ( w1 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0x1e376c08 )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 50\n        w2 = ( ( w3>>>7  ^ w3>>>18 ^ w3>>>3  ^ w3<<25 ^ w3<<14 ) + ( w0>>>17 ^ w0>>>19 ^ w0>>>10 ^ w0<<15 ^ w0<<13 ) + w2 + w11 )|0;\n        f = ( w2 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0x2748774c )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 51\n        w3 = ( ( w4>>>7  ^ w4>>>18 ^ w4>>>3  ^ w4<<25 ^ w4<<14 ) + ( w1>>>17 ^ w1>>>19 ^ w1>>>10 ^ w1<<15 ^ w1<<13 ) + w3 + w12 )|0;\n        e = ( w3 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0x34b0bcb5 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 52\n        w4 = ( ( w5>>>7  ^ w5>>>18 ^ w5>>>3  ^ w5<<25 ^ w5<<14 ) + ( w2>>>17 ^ w2>>>19 ^ w2>>>10 ^ w2<<15 ^ w2<<13 ) + w4 + w13 )|0;\n        d = ( w4 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x391c0cb3 )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 53\n        w5 = ( ( w6>>>7  ^ w6>>>18 ^ w6>>>3  ^ w6<<25 ^ w6<<14 ) + ( w3>>>17 ^ w3>>>19 ^ w3>>>10 ^ w3<<15 ^ w3<<13 ) + w5 + w14 )|0;\n        c = ( w5 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0x4ed8aa4a )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 54\n        w6 = ( ( w7>>>7  ^ w7>>>18 ^ w7>>>3  ^ w7<<25 ^ w7<<14 ) + ( w4>>>17 ^ w4>>>19 ^ w4>>>10 ^ w4<<15 ^ w4<<13 ) + w6 + w15 )|0;\n        b = ( w6 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0x5b9cca4f )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 55\n        w7 = ( ( w8>>>7  ^ w8>>>18 ^ w8>>>3  ^ w8<<25 ^ w8<<14 ) + ( w5>>>17 ^ w5>>>19 ^ w5>>>10 ^ w5<<15 ^ w5<<13 ) + w7 + w0 )|0;\n        a = ( w7 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0x682e6ff3 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        // 56\n        w8 = ( ( w9>>>7  ^ w9>>>18 ^ w9>>>3  ^ w9<<25 ^ w9<<14 ) + ( w6>>>17 ^ w6>>>19 ^ w6>>>10 ^ w6<<15 ^ w6<<13 ) + w8 + w1 )|0;\n        h = ( w8 + h + ( e>>>6 ^ e>>>11 ^ e>>>25 ^ e<<26 ^ e<<21 ^ e<<7 ) +  ( g ^ e & (f^g) ) + 0x748f82ee )|0;\n        d = ( d + h )|0;\n        h = ( h + ( (a & b) ^ ( c & (a ^ b) ) ) + ( a>>>2 ^ a>>>13 ^ a>>>22 ^ a<<30 ^ a<<19 ^ a<<10 ) )|0;\n\n        // 57\n        w9 = ( ( w10>>>7  ^ w10>>>18 ^ w10>>>3  ^ w10<<25 ^ w10<<14 ) + ( w7>>>17 ^ w7>>>19 ^ w7>>>10 ^ w7<<15 ^ w7<<13 ) + w9 + w2 )|0;\n        g = ( w9 + g + ( d>>>6 ^ d>>>11 ^ d>>>25 ^ d<<26 ^ d<<21 ^ d<<7 ) +  ( f ^ d & (e^f) ) + 0x78a5636f )|0;\n        c = ( c + g )|0;\n        g = ( g + ( (h & a) ^ ( b & (h ^ a) ) ) + ( h>>>2 ^ h>>>13 ^ h>>>22 ^ h<<30 ^ h<<19 ^ h<<10 ) )|0;\n\n        // 58\n        w10 = ( ( w11>>>7  ^ w11>>>18 ^ w11>>>3  ^ w11<<25 ^ w11<<14 ) + ( w8>>>17 ^ w8>>>19 ^ w8>>>10 ^ w8<<15 ^ w8<<13 ) + w10 + w3 )|0;\n        f = ( w10 + f + ( c>>>6 ^ c>>>11 ^ c>>>25 ^ c<<26 ^ c<<21 ^ c<<7 ) +  ( e ^ c & (d^e) ) + 0x84c87814 )|0;\n        b = ( b + f )|0;\n        f = ( f + ( (g & h) ^ ( a & (g ^ h) ) ) + ( g>>>2 ^ g>>>13 ^ g>>>22 ^ g<<30 ^ g<<19 ^ g<<10 ) )|0;\n\n        // 59\n        w11 = ( ( w12>>>7  ^ w12>>>18 ^ w12>>>3  ^ w12<<25 ^ w12<<14 ) + ( w9>>>17 ^ w9>>>19 ^ w9>>>10 ^ w9<<15 ^ w9<<13 ) + w11 + w4 )|0;\n        e = ( w11 + e + ( b>>>6 ^ b>>>11 ^ b>>>25 ^ b<<26 ^ b<<21 ^ b<<7 ) +  ( d ^ b & (c^d) ) + 0x8cc70208 )|0;\n        a = ( a + e )|0;\n        e = ( e + ( (f & g) ^ ( h & (f ^ g) ) ) + ( f>>>2 ^ f>>>13 ^ f>>>22 ^ f<<30 ^ f<<19 ^ f<<10 ) )|0;\n\n        // 60\n        w12 = ( ( w13>>>7  ^ w13>>>18 ^ w13>>>3  ^ w13<<25 ^ w13<<14 ) + ( w10>>>17 ^ w10>>>19 ^ w10>>>10 ^ w10<<15 ^ w10<<13 ) + w12 + w5 )|0;\n        d = ( w12 + d + ( a>>>6 ^ a>>>11 ^ a>>>25 ^ a<<26 ^ a<<21 ^ a<<7 ) +  ( c ^ a & (b^c) ) + 0x90befffa )|0;\n        h = ( h + d )|0;\n        d = ( d + ( (e & f) ^ ( g & (e ^ f) ) ) + ( e>>>2 ^ e>>>13 ^ e>>>22 ^ e<<30 ^ e<<19 ^ e<<10 ) )|0;\n\n        // 61\n        w13 = ( ( w14>>>7  ^ w14>>>18 ^ w14>>>3  ^ w14<<25 ^ w14<<14 ) + ( w11>>>17 ^ w11>>>19 ^ w11>>>10 ^ w11<<15 ^ w11<<13 ) + w13 + w6 )|0;\n        c = ( w13 + c + ( h>>>6 ^ h>>>11 ^ h>>>25 ^ h<<26 ^ h<<21 ^ h<<7 ) +  ( b ^ h & (a^b) ) + 0xa4506ceb )|0;\n        g = ( g + c )|0;\n        c = ( c + ( (d & e) ^ ( f & (d ^ e) ) ) + ( d>>>2 ^ d>>>13 ^ d>>>22 ^ d<<30 ^ d<<19 ^ d<<10 ) )|0;\n\n        // 62\n        w14 = ( ( w15>>>7  ^ w15>>>18 ^ w15>>>3  ^ w15<<25 ^ w15<<14 ) + ( w12>>>17 ^ w12>>>19 ^ w12>>>10 ^ w12<<15 ^ w12<<13 ) + w14 + w7 )|0;\n        b = ( w14 + b + ( g>>>6 ^ g>>>11 ^ g>>>25 ^ g<<26 ^ g<<21 ^ g<<7 ) +  ( a ^ g & (h^a) ) + 0xbef9a3f7 )|0;\n        f = ( f + b )|0;\n        b = ( b + ( (c & d) ^ ( e & (c ^ d) ) ) + ( c>>>2 ^ c>>>13 ^ c>>>22 ^ c<<30 ^ c<<19 ^ c<<10 ) )|0;\n\n        // 63\n        w15 = ( ( w0>>>7  ^ w0>>>18 ^ w0>>>3  ^ w0<<25 ^ w0<<14 ) + ( w13>>>17 ^ w13>>>19 ^ w13>>>10 ^ w13<<15 ^ w13<<13 ) + w15 + w8 )|0;\n        a = ( w15 + a + ( f>>>6 ^ f>>>11 ^ f>>>25 ^ f<<26 ^ f<<21 ^ f<<7 ) +  ( h ^ f & (g^h) ) + 0xc67178f2 )|0;\n        e = ( e + a )|0;\n        a = ( a + ( (b & c) ^ ( d & (b ^ c) ) ) + ( b>>>2 ^ b>>>13 ^ b>>>22 ^ b<<30 ^ b<<19 ^ b<<10 ) )|0;\n\n        H0 = ( H0 + a )|0;\n        H1 = ( H1 + b )|0;\n        H2 = ( H2 + c )|0;\n        H3 = ( H3 + d )|0;\n        H4 = ( H4 + e )|0;\n        H5 = ( H5 + f )|0;\n        H6 = ( H6 + g )|0;\n        H7 = ( H7 + h )|0;\n    }\n\n    function _core_heap ( offset ) {\n        offset = offset|0;\n\n        _core(\n            HEAP[offset|0]<<24 | HEAP[offset|1]<<16 | HEAP[offset|2]<<8 | HEAP[offset|3],\n            HEAP[offset|4]<<24 | HEAP[offset|5]<<16 | HEAP[offset|6]<<8 | HEAP[offset|7],\n            HEAP[offset|8]<<24 | HEAP[offset|9]<<16 | HEAP[offset|10]<<8 | HEAP[offset|11],\n            HEAP[offset|12]<<24 | HEAP[offset|13]<<16 | HEAP[offset|14]<<8 | HEAP[offset|15],\n            HEAP[offset|16]<<24 | HEAP[offset|17]<<16 | HEAP[offset|18]<<8 | HEAP[offset|19],\n            HEAP[offset|20]<<24 | HEAP[offset|21]<<16 | HEAP[offset|22]<<8 | HEAP[offset|23],\n            HEAP[offset|24]<<24 | HEAP[offset|25]<<16 | HEAP[offset|26]<<8 | HEAP[offset|27],\n            HEAP[offset|28]<<24 | HEAP[offset|29]<<16 | HEAP[offset|30]<<8 | HEAP[offset|31],\n            HEAP[offset|32]<<24 | HEAP[offset|33]<<16 | HEAP[offset|34]<<8 | HEAP[offset|35],\n            HEAP[offset|36]<<24 | HEAP[offset|37]<<16 | HEAP[offset|38]<<8 | HEAP[offset|39],\n            HEAP[offset|40]<<24 | HEAP[offset|41]<<16 | HEAP[offset|42]<<8 | HEAP[offset|43],\n            HEAP[offset|44]<<24 | HEAP[offset|45]<<16 | HEAP[offset|46]<<8 | HEAP[offset|47],\n            HEAP[offset|48]<<24 | HEAP[offset|49]<<16 | HEAP[offset|50]<<8 | HEAP[offset|51],\n            HEAP[offset|52]<<24 | HEAP[offset|53]<<16 | HEAP[offset|54]<<8 | HEAP[offset|55],\n            HEAP[offset|56]<<24 | HEAP[offset|57]<<16 | HEAP[offset|58]<<8 | HEAP[offset|59]