UNPKG

jobsys-explore

Version:

Enhanced component based on vant

1,543 lines 96.3 kB
import { r as __toDynamicImportESM } from "./chunk-DqLtgREg.js"; import { allowMultipleToast, closeToast, showFailToast, showLoadingToast, showSuccessToast } from "vant"; import { cloneDeep, find, flatMapDeep, isArray, isBoolean, isDate, isFunction, isNull, isObject, isString, isUndefined, reduce } from "lodash-es"; import axios from "axios"; import dayjs from "dayjs"; const STATUS = { STATE_CODE_SUCCESS: "SUCCESS", STATE_CODE_FAIL: "FAIL", STATE_CODE_NOT_FOUND: "NOT_FOUND", STATE_CODE_INFO_NOT_COMPLETE: "INCOMPLETE", STATE_CODE_NOT_ALLOWED: "NOT_ALLOWED" }; function _configStatus(e) { Object.keys(e).forEach((T) => { STATUS[T] = e[T]; }); } function useFetch(e) { let D = null; return e ||= {}, e.loading = !0, { get(E, O) { return new Promise((k, A) => { axios.get(E, O).then((e) => { k(e); }).catch((e) => { A(e); }).finally(() => { D && (allowMultipleToast(!1), D.close()), e.loading = !1; }); }); }, post(E, O, k) { return new Promise((A, j) => { axios.post(E, O, k).then((e) => { A(e); }).catch((e) => { j(e); }).finally(() => { D && (allowMultipleToast(!1), D.close()), e.loading = !1; }); }); }, loading(e) { return closeToast(!0), allowMultipleToast(), D = isString(e) ? showLoadingToast({ message: e || "加载中...", duration: 0, forbidClick: !0 }) : isObject(e) ? showLoadingToast({ duration: 0, ...e }) : showLoadingToast({ message: "加载中...", duration: 0, forbidClick: !0 }), this; } }; } function useTextFromOptionsValue(e, T, E) { if (!T) return ""; E ||= { value: "value", label: "text" }; let D = T.find((T) => T[E.value] === e); return D ? D[E.label] : ""; } function useFindTextsInValues(e, T, E) { E ||= { value: "value", label: "text", children: "children" }; let D = []; function O(e) { T.includes(e[E.value]) && D.push(e[E.label]), e[E.children]?.length && e[E.children].forEach((e) => { O(e); }); } return e.forEach((e) => { O(e); }), D; } function useFindLabelsFromPath(e, T, E) { E ||= { value: "value", label: "text", children: "children" }; let D = []; return reduce(T, (e, T) => { let O = find(e, { [E.value]: T }); if (O) return D.push(O[E.label]), O[E.children]; }, e), D; } function useFindOptionByValue(e, T, E) { E ||= { value: "value", label: "text", children: "children" }; for (let D of e) { if (D[E.value] === T) return D; if (D[E.children] && D[E.children].length) { let e = useFindOptionByValue(D[E.children], T, E); if (e) return e; } } return null; } function useFindTextsFromPath(e, T, E) { return E ||= { value: "value", label: "text", children: "children" }, useFindLabelsFromPath(e, T, E); } function useFindPropertyRecursive(e, T, E) { return flatMapDeep(e, (e, D) => D === T ? e : D === E ? useFindPropertyRecursive(e, T, E) : []); } function useFindParentLabels(e, T, E) { E ||= { value: "value", label: "text", children: "children" }; let D = []; function O(e, T, D) { for (let k of e) if (k[E.value] === T) { D.unshift(k[E.label]); break; } else if (k[E.children] && O(k[E.children], T, D).length > 0) { D.unshift(k[E.label]); break; } return D; } return O(e, T, D); } function useFindParentValues(e, T, E) { E ||= { value: "value", label: "text", children: "children" }; let D = []; function O(e, T, D) { for (let k of e) if (k[E.value] === T) { D.unshift(k[E.value]); break; } else if (k[E.children] && O(k[E.children], T, D).length > 0) { D.unshift(k[E.value]); break; } return D; } return O(e, T, D); } var localCacheSession = {}, localSession = { setItem(e, T) { localCacheSession[e] = T; }, getItem(e) { return localCacheSession[e]; }, removeItem(e) { delete localCacheSession[e]; } }; window._printCache = () => { console.log(JSON.parse(JSON.stringify(localCacheSession, null, 2))); }; function useCache(e, T) { let E = T || localSession, D = !!T; return { get(T) { let O = E.getItem(e); return isNull(O) || isUndefined(O) ? T : D ? JSON.parse(O) : O; }, set(T) { E.setItem(e, D ? JSON.stringify(T) : T); }, remove() { E.removeItem(e); } }; } function useHiddenForm(e) { let { url: T, data: E, csrfToken: D } = e, { method: O } = e; O ||= "post"; let k = document.createElement("form"); if (k.action = T, k.method = O, k.target = "_blank", k.style.display = "none", Object.keys(E).forEach((e) => { let T = document.createElement("input"); T.type = "hidden", T.name = e, T.value = E[e], k.appendChild(T); }), !D) { let e = document.createElement("input"); e.type = "hidden", e.name = "_token", e.value = document.querySelector("meta[name=\"csrf-token\"]").getAttribute("content"), k.appendChild(e); } return document.body.appendChild(k), k; } function useProcessStatus(e, T) { let { status: E } = e, O = e.result, A = {}; A.default = "请求失败, 请检查数据并重试", A[STATUS.STATE_CODE_FAIL] = "系统错误,请稍候再试", A[STATUS.STATE_CODE_NOT_FOUND] = "请求的内容不存在", A[STATUS.STATE_CODE_INFO_NOT_COMPLETE] = "信息不完整", A[STATUS.STATE_CODE_NOT_ALLOWED] = "没有权限"; let j = { [STATUS.STATE_CODE_SUCCESS]: "success" }, M = T[E] || T[j[E]] || A[E] || A.default; isString(M) ? E === STATUS.STATE_CODE_SUCCESS ? showSuccessToast(M) : showFailToast(O || M) : isFunction(M) && M(); } function useProcessStatusSuccess(e, T) { useProcessStatus(e, { success: T }); } function useFormFail(e) { e && e.errorFields ? e.errorFields.forEach((e) => { showFailToast(e.errors.join(" ")); }) : e && e.response ? showFailToast("网络异常") : showFailToast("请检查填写项"); } function useFormFormat(e, T) { let E = cloneDeep(e); T ||= {}; let D = (e) => { for (let E in e) { let O; if (dayjs.isDayjs(e[E]) ? O = e[E] : isDate(e[E]) && (O = dayjs(e[E])), O && T.date) { isString(T.date) ? e[E] = O.format(T.date) : isFunction(T.date) ? e[E] = T.date(O) : e[E] = O.unix(); continue; } if (isBoolean(e[E]) && T.boolean) { T.boolean === !0 ? e[E] = e[E] ? 1 : 0 : Array.isArray(T.boolean) && (e[E] = e[E] ? T.boolean?.[0] || 1 : T.boolean?.[1] || 0); continue; } if (T.attachment) { let D = T.attachment; if (isObject(e[E]) && e[E]._type === "file" && isString(D) && !isUndefined(e[E][D])) { e[E] = e[E][D]; continue; } else if (isObject(e[E]) && isFunction(D) && e[E]._type === "file") { e[E] = D(e[E]); continue; } } isArray(e[E]) && (e[E] = D(e[E])); } return e; }; return D(E); } const crypto = typeof globalThis == "object" && "crypto" in globalThis ? globalThis.crypto : void 0; function isBytes$1(e) { return e instanceof Uint8Array || ArrayBuffer.isView(e) && e.constructor.name === "Uint8Array"; } function anumber(e) { if (!Number.isSafeInteger(e) || e < 0) throw Error("positive integer expected, got " + e); } function abytes$1(e, ...T) { if (!isBytes$1(e)) throw Error("Uint8Array expected"); if (T.length > 0 && !T.includes(e.length)) throw Error("Uint8Array expected of length " + T + ", got length=" + e.length); } function ahash(e) { if (typeof e != "function" || typeof e.create != "function") throw Error("Hash should be wrapped by utils.createHasher"); anumber(e.outputLen), anumber(e.blockLen); } function aexists$1(e, T = !0) { if (e.destroyed) throw Error("Hash instance has been destroyed"); if (T && e.finished) throw Error("Hash#digest() has already been called"); } function clean$1(...e) { for (let T = 0; T < e.length; T++) e[T].fill(0); } var hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex == "function" && typeof Uint8Array.fromHex == "function")(), hexes$1 = /* @__PURE__ */ Array.from({ length: 256 }, (e, T) => T.toString(16).padStart(2, "0")); function bytesToHex$1(e) { if (abytes$1(e), hasHexBuiltin) return e.toHex(); let T = ""; for (let E = 0; E < e.length; E++) T += hexes$1[e[E]]; return T; } var asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; function asciiToBase16(e) { if (e >= asciis._0 && e <= asciis._9) return e - asciis._0; if (e >= asciis.A && e <= asciis.F) return e - (asciis.A - 10); if (e >= asciis.a && e <= asciis.f) return e - (asciis.a - 10); } function hexToBytes(e) { if (typeof e != "string") throw Error("hex string expected, got " + typeof e); if (hasHexBuiltin) return Uint8Array.fromHex(e); let T = e.length, E = T / 2; if (T % 2) throw Error("hex string expected, got unpadded hex of length " + T); let D = new Uint8Array(E); for (let T = 0, O = 0; T < E; T++, O += 2) { let E = asciiToBase16(e.charCodeAt(O)), k = asciiToBase16(e.charCodeAt(O + 1)); if (E === void 0 || k === void 0) { let T = e[O] + e[O + 1]; throw Error("hex string expected, got non-hex character \"" + T + "\" at index " + O); } D[T] = E * 16 + k; } return D; } function utf8ToBytes$2(e) { if (typeof e != "string") throw Error("string expected"); return new Uint8Array(new TextEncoder().encode(e)); } function toBytes$2(e) { return typeof e == "string" && (e = utf8ToBytes$2(e)), abytes$1(e), e; } function concatBytes$1(...e) { let T = 0; for (let E = 0; E < e.length; E++) { let D = e[E]; abytes$1(D), T += D.length; } let E = new Uint8Array(T); for (let T = 0, D = 0; T < e.length; T++) { let O = e[T]; E.set(O, D), D += O.length; } return E; } var Hash$2 = class {}; function randomBytes$1(e = 32) { if (crypto && typeof crypto.getRandomValues == "function") return crypto.getRandomValues(new Uint8Array(e)); if (crypto && typeof crypto.randomBytes == "function") return Uint8Array.from(crypto.randomBytes(e)); throw Error("crypto.getRandomValues must be defined"); } var _0n$3 = /* @__PURE__ */ BigInt(0), _1n$3 = /* @__PURE__ */ BigInt(1); function _abool2(e, T = "") { if (typeof e != "boolean") { let E = T && `"${T}"`; throw Error(E + "expected boolean, got type=" + typeof e); } return e; } function _abytes2(e, T, E = "") { let D = isBytes$1(e), O = e?.length, k = T !== void 0; if (!D || k && O !== T) { let A = E && `"${E}" `, j = k ? ` of length ${T}` : "", M = D ? `length=${O}` : `type=${typeof e}`; throw Error(A + "expected Uint8Array" + j + ", got " + M); } return e; } function numberToHexUnpadded(e) { let T = e.toString(16); return T.length & 1 ? "0" + T : T; } function hexToNumber$1(e) { if (typeof e != "string") throw Error("hex string expected, got " + typeof e); return e === "" ? _0n$3 : BigInt("0x" + e); } function bytesToNumberBE(e) { return hexToNumber$1(bytesToHex$1(e)); } function bytesToNumberLE(e) { return abytes$1(e), hexToNumber$1(bytesToHex$1(Uint8Array.from(e).reverse())); } function numberToBytesBE(e, T) { return hexToBytes(e.toString(16).padStart(T * 2, "0")); } function numberToBytesLE(e, T) { return numberToBytesBE(e, T).reverse(); } function ensureBytes(e, T, E) { let D; if (typeof T == "string") try { D = hexToBytes(T); } catch (T) { throw Error(e + " must be hex string or Uint8Array, cause: " + T); } else if (isBytes$1(T)) D = Uint8Array.from(T); else throw Error(e + " must be hex string or Uint8Array"); let O = D.length; if (typeof E == "number" && O !== E) throw Error(e + " of length " + E + " expected, got " + O); return D; } var isPosBig = (e) => typeof e == "bigint" && _0n$3 <= e; function inRange(e, T, E) { return isPosBig(e) && isPosBig(T) && isPosBig(E) && T <= e && e < E; } function aInRange(e, T, E, D) { if (!inRange(T, E, D)) throw Error("expected valid " + e + ": " + E + " <= n < " + D + ", got " + T); } function bitLen(e) { let T; for (T = 0; e > _0n$3; e >>= _1n$3, T += 1); return T; } const bitMask = (e) => (_1n$3 << BigInt(e)) - _1n$3; function createHmacDrbg(e, T, E) { if (typeof e != "number" || e < 2) throw Error("hashLen must be a number"); if (typeof T != "number" || T < 2) throw Error("qByteLen must be a number"); if (typeof E != "function") throw Error("hmacFn must be a function"); let D = (e) => new Uint8Array(e), O = (e) => Uint8Array.of(e), k = D(e), A = D(e), j = 0, M = () => { k.fill(1), A.fill(0), j = 0; }, N = (...e) => E(A, k, ...e), P = (e = D(0)) => { A = N(O(0), e), k = N(), e.length !== 0 && (A = N(O(1), e), k = N()); }, F = () => { if (j++ >= 1e3) throw Error("drbg: tried 1000 values"); let e = 0, E = []; for (; e < T;) { k = N(); let T = k.slice(); E.push(T), e += k.length; } return concatBytes$1(...E); }; return (e, T) => { M(), P(e); let E; for (; !(E = T(F()));) P(); return M(), E; }; } function _validateObject(e, T, E = {}) { if (!e || typeof e != "object") throw Error("expected valid options object"); function D(T, E, D) { let O = e[T]; if (D && O === void 0) return; let k = typeof O; if (k !== E || O === null) throw Error(`param "${T}" is invalid: expected ${E}, got ${k}`); } Object.entries(T).forEach(([e, T]) => D(e, T, !1)), Object.entries(E).forEach(([e, T]) => D(e, T, !0)); } function memoized(e) { let T = /* @__PURE__ */ new WeakMap(); return (E, ...D) => { let O = T.get(E); if (O !== void 0) return O; let k = e(E, ...D); return T.set(E, k), k; }; } const bytesToHex$2 = bytesToHex$1, concatBytes = concatBytes$1, numberToHexUnpadded$1 = numberToHexUnpadded, hexToNumber = hexToNumber$1, numberToBytesBE$1 = numberToBytesBE; var HMAC$1 = class extends Hash$2 { constructor(e, T) { super(), this.finished = !1, this.destroyed = !1, ahash(e); let E = toBytes$2(T); if (this.iHash = e.create(), typeof this.iHash.update != "function") throw Error("Expected instance of class which extends utils.Hash"); this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen; let D = this.blockLen, O = new Uint8Array(D); O.set(E.length > D ? e.create().update(E).digest() : E); for (let e = 0; e < O.length; e++) O[e] ^= 54; this.iHash.update(O), this.oHash = e.create(); for (let e = 0; e < O.length; e++) O[e] ^= 106; this.oHash.update(O), clean$1(O); } update(e) { return aexists$1(this), this.iHash.update(e), this; } digestInto(e) { aexists$1(this), abytes$1(e, this.outputLen), this.finished = !0, this.iHash.digestInto(e), this.oHash.update(e), this.oHash.digestInto(e), this.destroy(); } digest() { let e = new Uint8Array(this.oHash.outputLen); return this.digestInto(e), e; } _cloneInto(e) { e ||= Object.create(Object.getPrototypeOf(this), {}); let { oHash: T, iHash: E, finished: D, destroyed: O, blockLen: k, outputLen: A } = this; return e = e, e.finished = D, e.destroyed = O, e.blockLen = k, e.outputLen = A, e.oHash = T._cloneInto(e.oHash), e.iHash = E._cloneInto(e.iHash), e; } clone() { return this._cloneInto(); } destroy() { this.destroyed = !0, this.oHash.destroy(), this.iHash.destroy(); } }; const hmac$1 = (e, T, E) => new HMAC$1(e, T).update(E).digest(); hmac$1.create = (e, T) => new HMAC$1(e, T); var _0n$2 = BigInt(0), _1n$2 = BigInt(1), _2n$1 = /* @__PURE__ */ BigInt(2), _3n$1 = /* @__PURE__ */ BigInt(3), _4n$1 = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7), _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16); function mod(e, T) { let E = e % T; return E >= _0n$2 ? E : T + E; } function invert(e, T) { if (e === _0n$2) throw Error("invert: expected non-zero number"); if (T <= _0n$2) throw Error("invert: expected positive modulus, got " + T); let E = mod(e, T), D = T, O = _0n$2, k = _1n$2, A = _1n$2, j = _0n$2; for (; E !== _0n$2;) { let e = D / E, T = D % E, M = O - A * e, N = k - j * e; D = E, E = T, O = A, k = j, A = M, j = N; } if (D !== _1n$2) throw Error("invert: does not exist"); return mod(O, T); } function assertIsSquare(e, T, E) { if (!e.eql(e.sqr(T), E)) throw Error("Cannot find square root"); } function sqrt3mod4(e, T) { let E = (e.ORDER + _1n$2) / _4n$1, D = e.pow(T, E); return assertIsSquare(e, D, T), D; } function sqrt5mod8(e, T) { let E = (e.ORDER - _5n) / _8n, D = e.mul(T, _2n$1), O = e.pow(D, E), k = e.mul(T, O), A = e.mul(e.mul(k, _2n$1), O), j = e.mul(k, e.sub(A, e.ONE)); return assertIsSquare(e, j, T), j; } function sqrt9mod16(e) { let T = Field$1(e), E = tonelliShanks(e), D = E(T, T.neg(T.ONE)), O = E(T, D), k = E(T, T.neg(D)), A = (e + _7n) / _16n; return (e, T) => { let E = e.pow(T, A), j = e.mul(E, D), M = e.mul(E, O), N = e.mul(E, k), P = e.eql(e.sqr(j), T), F = e.eql(e.sqr(M), T); E = e.cmov(E, j, P), j = e.cmov(N, M, F); let I = e.eql(e.sqr(j), T), L = e.cmov(E, j, I); return assertIsSquare(e, L, T), L; }; } function tonelliShanks(e) { if (e < _3n$1) throw Error("sqrt is not defined for small field"); let T = e - _1n$2, E = 0; for (; T % _2n$1 === _0n$2;) T /= _2n$1, E++; let D = _2n$1, O = Field$1(e); for (; FpLegendre(O, D) === 1;) if (D++ > 1e3) throw Error("Cannot find square root: probably non-prime P"); if (E === 1) return sqrt3mod4; let k = O.pow(D, T), A = (T + _1n$2) / _2n$1; return function(e, D) { if (e.is0(D)) return D; if (FpLegendre(e, D) !== 1) throw Error("Cannot find square root"); let O = E, j = e.mul(e.ONE, k), M = e.pow(D, T), N = e.pow(D, A); for (; !e.eql(M, e.ONE);) { if (e.is0(M)) return e.ZERO; let T = 1, E = e.sqr(M); for (; !e.eql(E, e.ONE);) if (T++, E = e.sqr(E), T === O) throw Error("Cannot find square root"); let D = _1n$2 << BigInt(O - T - 1), k = e.pow(j, D); O = T, j = e.sqr(k), M = e.mul(M, j), N = e.mul(N, k); } return N; }; } function FpSqrt(e) { return e % _4n$1 === _3n$1 ? sqrt3mod4 : e % _8n === _5n ? sqrt5mod8 : e % _16n === _9n ? sqrt9mod16(e) : tonelliShanks(e); } var FIELD_FIELDS = [ "create", "isValid", "is0", "neg", "inv", "sqrt", "sqr", "eql", "add", "sub", "mul", "pow", "div", "addN", "subN", "mulN", "sqrN" ]; function validateField(e) { return _validateObject(e, FIELD_FIELDS.reduce((e, T) => (e[T] = "function", e), { ORDER: "bigint", MASK: "bigint", BYTES: "number", BITS: "number" })), e; } function FpPow(e, T, E) { if (E < _0n$2) throw Error("invalid exponent, negatives unsupported"); if (E === _0n$2) return e.ONE; if (E === _1n$2) return T; let D = e.ONE, O = T; for (; E > _0n$2;) E & _1n$2 && (D = e.mul(D, O)), O = e.sqr(O), E >>= _1n$2; return D; } function FpInvertBatch(e, T, E = !1) { let D = Array(T.length).fill(E ? e.ZERO : void 0), O = T.reduce((T, E, O) => e.is0(E) ? T : (D[O] = T, e.mul(T, E)), e.ONE), k = e.inv(O); return T.reduceRight((T, E, O) => e.is0(E) ? T : (D[O] = e.mul(T, D[O]), e.mul(T, E)), k), D; } function FpLegendre(e, T) { let E = (e.ORDER - _1n$2) / _2n$1, D = e.pow(T, E), O = e.eql(D, e.ONE), k = e.eql(D, e.ZERO), A = e.eql(D, e.neg(e.ONE)); if (!O && !k && !A) throw Error("invalid Legendre symbol result"); return O ? 1 : k ? 0 : -1; } function nLength(e, T) { T !== void 0 && anumber(T); let E = T === void 0 ? e.toString(2).length : T; return { nBitLength: E, nByteLength: Math.ceil(E / 8) }; } function Field$1(e, T, E = !1, D = {}) { if (e <= _0n$2) throw Error("invalid field: expected ORDER > 0, got " + e); let O, k, A = !1, j; if (typeof T == "object" && T) { if (D.sqrt || E) throw Error("cannot specify opts in two arguments"); let e = T; e.BITS && (O = e.BITS), e.sqrt && (k = e.sqrt), typeof e.isLE == "boolean" && (E = e.isLE), typeof e.modFromBytes == "boolean" && (A = e.modFromBytes), j = e.allowedLengths; } else typeof T == "number" && (O = T), D.sqrt && (k = D.sqrt); let { nBitLength: M, nByteLength: N } = nLength(e, O); if (N > 2048) throw Error("invalid field: expected ORDER of <= 2048 bytes"); let P, F = Object.freeze({ ORDER: e, isLE: E, BITS: M, BYTES: N, MASK: bitMask(M), ZERO: _0n$2, ONE: _1n$2, allowedLengths: j, create: (T) => mod(T, e), isValid: (T) => { if (typeof T != "bigint") throw Error("invalid field element: expected bigint, got " + typeof T); return _0n$2 <= T && T < e; }, is0: (e) => e === _0n$2, isValidNot0: (e) => !F.is0(e) && F.isValid(e), isOdd: (e) => (e & _1n$2) === _1n$2, neg: (T) => mod(-T, e), eql: (e, T) => e === T, sqr: (T) => mod(T * T, e), add: (T, E) => mod(T + E, e), sub: (T, E) => mod(T - E, e), mul: (T, E) => mod(T * E, e), pow: (e, T) => FpPow(F, e, T), div: (T, E) => mod(T * invert(E, e), e), sqrN: (e) => e * e, addN: (e, T) => e + T, subN: (e, T) => e - T, mulN: (e, T) => e * T, inv: (T) => invert(T, e), sqrt: k || ((T) => (P ||= FpSqrt(e), P(F, T))), toBytes: (e) => E ? numberToBytesLE(e, N) : numberToBytesBE(e, N), fromBytes: (T, D = !0) => { if (j) { if (!j.includes(T.length) || T.length > N) throw Error("Field.fromBytes: expected " + j + " bytes, got " + T.length); let e = new Uint8Array(N); e.set(T, E ? 0 : e.length - T.length), T = e; } if (T.length !== N) throw Error("Field.fromBytes: expected " + N + " bytes, got " + T.length); let O = E ? bytesToNumberLE(T) : bytesToNumberBE(T); if (A && (O = mod(O, e)), !D && !F.isValid(O)) throw Error("invalid field element: outside of range 0..ORDER"); return O; }, invertBatch: (e) => FpInvertBatch(F, e), cmov: (e, T, E) => E ? T : e }); return Object.freeze(F); } function getFieldBytesLength(e) { if (typeof e != "bigint") throw Error("field order must be bigint"); let T = e.toString(2).length; return Math.ceil(T / 8); } function getMinHashLength(e) { let T = getFieldBytesLength(e); return T + Math.ceil(T / 2); } function mapHashToField(e, T, E = !1) { let D = e.length, O = getFieldBytesLength(T), k = getMinHashLength(T); if (D < 16 || D < k || D > 1024) throw Error("expected " + k + "-1024 bytes of input, got " + D); let A = mod(E ? bytesToNumberLE(e) : bytesToNumberBE(e), T - _1n$2) + _1n$2; return E ? numberToBytesLE(A, O) : numberToBytesBE(A, O); } var _0n$1 = BigInt(0), _1n$1 = BigInt(1); function negateCt(e, T) { let E = T.negate(); return e ? E : T; } function normalizeZ(e, T) { let E = FpInvertBatch(e.Fp, T.map((e) => e.Z)); return T.map((T, D) => e.fromAffine(T.toAffine(E[D]))); } function validateW(e, T) { if (!Number.isSafeInteger(e) || e <= 0 || e > T) throw Error("invalid window size, expected [1.." + T + "], got W=" + e); } function calcWOpts(e, T) { validateW(e, T); let E = Math.ceil(T / e) + 1, D = 2 ** (e - 1), O = 2 ** e; return { windows: E, windowSize: D, mask: bitMask(e), maxNumber: O, shiftBy: BigInt(e) }; } function calcOffsets(e, T, E) { let { windowSize: D, mask: O, maxNumber: k, shiftBy: A } = E, j = Number(e & O), M = e >> A; j > D && (j -= k, M += _1n$1); let N = T * D, P = N + Math.abs(j) - 1, F = j === 0, I = j < 0, L = T % 2 != 0; return { nextN: M, offset: P, isZero: F, isNeg: I, isNegF: L, offsetF: N }; } function validateMSMPoints(e, T) { if (!Array.isArray(e)) throw Error("array expected"); e.forEach((e, E) => { if (!(e instanceof T)) throw Error("invalid point at index " + E); }); } function validateMSMScalars(e, T) { if (!Array.isArray(e)) throw Error("array of scalars expected"); e.forEach((e, E) => { if (!T.isValid(e)) throw Error("invalid scalar at index " + E); }); } var pointPrecomputes = /* @__PURE__ */ new WeakMap(), pointWindowSizes = /* @__PURE__ */ new WeakMap(); function getW(e) { return pointWindowSizes.get(e) || 1; } function assert0(e) { if (e !== _0n$1) throw Error("invalid wNAF"); } var wNAF = class { constructor(e, T) { this.BASE = e.BASE, this.ZERO = e.ZERO, this.Fn = e.Fn, this.bits = T; } _unsafeLadder(e, T, E = this.ZERO) { let D = e; for (; T > _0n$1;) T & _1n$1 && (E = E.add(D)), D = D.double(), T >>= _1n$1; return E; } precomputeWindow(e, T) { let { windows: E, windowSize: D } = calcWOpts(T, this.bits), O = [], k = e, A = k; for (let e = 0; e < E; e++) { A = k, O.push(A); for (let e = 1; e < D; e++) A = A.add(k), O.push(A); k = A.double(); } return O; } wNAF(e, T, E) { if (!this.Fn.isValid(E)) throw Error("invalid scalar"); let D = this.ZERO, O = this.BASE, k = calcWOpts(e, this.bits); for (let e = 0; e < k.windows; e++) { let { nextN: A, offset: j, isZero: M, isNeg: N, isNegF: P, offsetF: F } = calcOffsets(E, e, k); E = A, M ? O = O.add(negateCt(P, T[F])) : D = D.add(negateCt(N, T[j])); } return assert0(E), { p: D, f: O }; } wNAFUnsafe(e, T, E, D = this.ZERO) { let O = calcWOpts(e, this.bits); for (let e = 0; e < O.windows && E !== _0n$1; e++) { let { nextN: k, offset: A, isZero: j, isNeg: M } = calcOffsets(E, e, O); if (E = k, !j) { let e = T[A]; D = D.add(M ? e.negate() : e); } } return assert0(E), D; } getPrecomputes(e, T, E) { let D = pointPrecomputes.get(T); return D || (D = this.precomputeWindow(T, e), e !== 1 && (typeof E == "function" && (D = E(D)), pointPrecomputes.set(T, D))), D; } cached(e, T, E) { let D = getW(e); return this.wNAF(D, this.getPrecomputes(D, e, E), T); } unsafe(e, T, E, D) { let O = getW(e); return O === 1 ? this._unsafeLadder(e, T, D) : this.wNAFUnsafe(O, this.getPrecomputes(O, e, E), T, D); } createCache(e, T) { validateW(T, this.bits), pointWindowSizes.set(e, T), pointPrecomputes.delete(e); } hasCache(e) { return getW(e) !== 1; } }; function mulEndoUnsafe(e, T, E, D) { let O = T, k = e.ZERO, A = e.ZERO; for (; E > _0n$1 || D > _0n$1;) E & _1n$1 && (k = k.add(O)), D & _1n$1 && (A = A.add(O)), O = O.double(), E >>= _1n$1, D >>= _1n$1; return { p1: k, p2: A }; } function pippenger(e, T, E, D) { validateMSMPoints(E, e), validateMSMScalars(D, T); let O = E.length, k = D.length; if (O !== k) throw Error("arrays of points and scalars must have equal length"); let A = e.ZERO, j = bitLen(BigInt(O)), M = 1; j > 12 ? M = j - 3 : j > 4 ? M = j - 2 : j > 0 && (M = 2); let N = bitMask(M), P = Array(Number(N) + 1).fill(A), F = Math.floor((T.BITS - 1) / M) * M, I = A; for (let e = F; e >= 0; e -= M) { P.fill(A); for (let T = 0; T < k; T++) { let O = D[T], k = Number(O >> BigInt(e) & N); P[k] = P[k].add(E[T]); } let T = A; for (let e = P.length - 1, E = A; e > 0; e--) E = E.add(P[e]), T = T.add(E); if (I = I.add(T), e !== 0) for (let e = 0; e < M; e++) I = I.double(); } return I; } function createField(e, T, E) { if (T) { if (T.ORDER !== e) throw Error("Field.ORDER must match order: Fp == p, Fn == n"); return validateField(T), T; } else return Field$1(e, { isLE: E }); } function _createCurveFields(e, T, E = {}, D) { if (D === void 0 && (D = e === "edwards"), !T || typeof T != "object") throw Error(`expected valid ${e} CURVE object`); for (let e of [ "p", "n", "h" ]) { let E = T[e]; if (!(typeof E == "bigint" && E > _0n$1)) throw Error(`CURVE.${e} must be positive bigint`); } let O = createField(T.p, E.Fp, D), k = createField(T.n, E.Fn, D), A = [ "Gx", "Gy", "a", e === "weierstrass" ? "b" : "d" ]; for (let e of A) if (!O.isValid(T[e])) throw Error(`CURVE.${e} must be valid field element of CURVE.Fp`); return T = Object.freeze(Object.assign({}, T)), { CURVE: T, Fp: O, Fn: k }; } var divNearest = (e, T) => (e + (e >= 0 ? T : -T) / _2n) / T; function _splitEndoScalar(e, T, E) { let [[D, O], [k, A]] = T, j = divNearest(A * e, E), M = divNearest(-O * e, E), N = e - j * D - M * k, P = -j * O - M * A, F = N < _0n, I = P < _0n; F && (N = -N), I && (P = -P); let L = bitMask(Math.ceil(bitLen(E) / 2)) + _1n; if (N < _0n || N >= L || P < _0n || P >= L) throw Error("splitScalar (endomorphism): failed, k=" + e); return { k1neg: F, k1: N, k2neg: I, k2: P }; } function validateSigFormat(e) { if (![ "compact", "recovered", "der" ].includes(e)) throw Error("Signature format must be \"compact\", \"recovered\", or \"der\""); return e; } function validateSigOpts(e, T) { let E = {}; for (let D of Object.keys(T)) E[D] = e[D] === void 0 ? T[D] : e[D]; return _abool2(E.lowS, "lowS"), _abool2(E.prehash, "prehash"), E.format !== void 0 && validateSigFormat(E.format), E; } const DER = { Err: class extends Error { constructor(e = "") { super(e); } }, _tlv: { encode: (e, T) => { let { Err: E } = DER; if (e < 0 || e > 256) throw new E("tlv.encode: wrong tag"); if (T.length & 1) throw new E("tlv.encode: unpadded data"); let D = T.length / 2, O = numberToHexUnpadded(D); if (O.length / 2 & 128) throw new E("tlv.encode: long form length too big"); let k = D > 127 ? numberToHexUnpadded(O.length / 2 | 128) : ""; return numberToHexUnpadded(e) + k + O + T; }, decode(e, T) { let { Err: E } = DER, D = 0; if (e < 0 || e > 256) throw new E("tlv.encode: wrong tag"); if (T.length < 2 || T[D++] !== e) throw new E("tlv.decode: wrong tlv"); let O = T[D++], k = !!(O & 128), A = 0; if (!k) A = O; else { let e = O & 127; if (!e) throw new E("tlv.decode(long): indefinite length not supported"); if (e > 4) throw new E("tlv.decode(long): byte length is too big"); let k = T.subarray(D, D + e); if (k.length !== e) throw new E("tlv.decode: length bytes not complete"); if (k[0] === 0) throw new E("tlv.decode(long): zero leftmost byte"); for (let e of k) A = A << 8 | e; if (D += e, A < 128) throw new E("tlv.decode(long): not minimal encoding"); } let j = T.subarray(D, D + A); if (j.length !== A) throw new E("tlv.decode: wrong value length"); return { v: j, l: T.subarray(D + A) }; } }, _int: { encode(e) { let { Err: T } = DER; if (e < _0n) throw new T("integer: negative integers are not allowed"); let E = numberToHexUnpadded(e); if (Number.parseInt(E[0], 16) & 8 && (E = "00" + E), E.length & 1) throw new T("unexpected DER parsing assertion: unpadded hex"); return E; }, decode(e) { let { Err: T } = DER; if (e[0] & 128) throw new T("invalid signature integer: negative"); if (e[0] === 0 && !(e[1] & 128)) throw new T("invalid signature integer: unnecessary leading zero"); return bytesToNumberBE(e); } }, toSig(e) { let { Err: T, _int: E, _tlv: D } = DER, O = ensureBytes("signature", e), { v: k, l: A } = D.decode(48, O); if (A.length) throw new T("invalid signature: left bytes after parsing"); let { v: j, l: M } = D.decode(2, k), { v: N, l: P } = D.decode(2, M); if (P.length) throw new T("invalid signature: left bytes after parsing"); return { r: E.decode(j), s: E.decode(N) }; }, hexFromSig(e) { let { _tlv: T, _int: E } = DER, D = T.encode(2, E.encode(e.r)) + T.encode(2, E.encode(e.s)); return T.encode(48, D); } }; var _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4); function _normFnElement(e, T) { let { BYTES: E } = e, D; if (typeof T == "bigint") D = T; else { let O = ensureBytes("private key", T); try { D = e.fromBytes(O); } catch { throw Error(`invalid private key: expected ui8a of size ${E}, got ${typeof T}`); } } if (!e.isValidNot0(D)) throw Error("invalid private key: out of range [1..N-1]"); return D; } function weierstrassN(e, T = {}) { let E = _createCurveFields("weierstrass", e, T), { Fp: D, Fn: O } = E, k = E.CURVE, { h: A, n: j } = k; _validateObject(T, {}, { allowInfinityPoint: "boolean", clearCofactor: "function", isTorsionFree: "function", fromBytes: "function", toBytes: "function", endo: "object", wrapPrivateKey: "boolean" }); let { endo: M } = T; if (M && (!D.is0(k.a) || typeof M.beta != "bigint" || !Array.isArray(M.basises))) throw Error("invalid endo: expected \"beta\": bigint and \"basises\": array"); let N = getWLengths(D, O); function P() { if (!D.isOdd) throw Error("compression is not supported: Field does not have .isOdd()"); } function F(e, T, E) { let { x: O, y: k } = T.toAffine(), A = D.toBytes(O); return _abool2(E, "isCompressed"), E ? (P(), concatBytes$1(pprefix(!D.isOdd(k)), A)) : concatBytes$1(Uint8Array.of(4), A, D.toBytes(k)); } function I(e) { _abytes2(e, void 0, "Point"); let { publicKey: T, publicKeyUncompressed: E } = N, O = e.length, k = e[0], A = e.subarray(1); if (O === T && (k === 2 || k === 3)) { let e = D.fromBytes(A); if (!D.isValid(e)) throw Error("bad point: is not on curve, wrong x"); let T = z(e), E; try { E = D.sqrt(T); } catch (e) { let T = e instanceof Error ? ": " + e.message : ""; throw Error("bad point: is not on curve, sqrt error" + T); } P(); let O = D.isOdd(E); return (k & 1) == 1 !== O && (E = D.neg(E)), { x: e, y: E }; } else if (O === E && k === 4) { let e = D.BYTES, T = D.fromBytes(A.subarray(0, e)), E = D.fromBytes(A.subarray(e, e * 2)); if (!B(T, E)) throw Error("bad point: is not on curve"); return { x: T, y: E }; } else throw Error(`bad point: got length ${O}, expected compressed=${T} or uncompressed=${E}`); } let L = T.toBytes || F, R = T.fromBytes || I; function z(e) { let T = D.sqr(e), E = D.mul(T, e); return D.add(D.add(E, D.mul(e, k.a)), k.b); } function B(e, T) { let E = D.sqr(T), O = z(e); return D.eql(E, O); } if (!B(k.Gx, k.Gy)) throw Error("bad curve params: generator point"); let V = D.mul(D.pow(k.a, _3n), _4n), H = D.mul(D.sqr(k.b), BigInt(27)); if (D.is0(D.add(V, H))) throw Error("bad curve params: a or b"); function U(e, T, E = !1) { if (!D.isValid(T) || E && D.is0(T)) throw Error(`bad point coordinate ${e}`); return T; } function W(e) { if (!(e instanceof Y)) throw Error("ProjectivePoint expected"); } function G(e) { if (!M || !M.basises) throw Error("no endo"); return _splitEndoScalar(e, M.basises, O.ORDER); } let K = memoized((e, T) => { let { X: E, Y: O, Z: k } = e; if (D.eql(k, D.ONE)) return { x: E, y: O }; let A = e.is0(); T ??= A ? D.ONE : D.inv(k); let j = D.mul(E, T), M = D.mul(O, T), N = D.mul(k, T); if (A) return { x: D.ZERO, y: D.ZERO }; if (!D.eql(N, D.ONE)) throw Error("invZ was invalid"); return { x: j, y: M }; }), q = memoized((e) => { if (e.is0()) { if (T.allowInfinityPoint && !D.is0(e.Y)) return; throw Error("bad point: ZERO"); } let { x: E, y: O } = e.toAffine(); if (!D.isValid(E) || !D.isValid(O)) throw Error("bad point: x or y not field elements"); if (!B(E, O)) throw Error("bad point: equation left != right"); if (!e.isTorsionFree()) throw Error("bad point: not in prime-order subgroup"); return !0; }); function J(e, T, E, O, k) { return E = new Y(D.mul(E.X, e), E.Y, E.Z), T = negateCt(O, T), E = negateCt(k, E), T.add(E); } class Y { constructor(e, T, E) { this.X = U("x", e), this.Y = U("y", T, !0), this.Z = U("z", E), Object.freeze(this); } static CURVE() { return k; } static fromAffine(e) { let { x: T, y: E } = e || {}; if (!e || !D.isValid(T) || !D.isValid(E)) throw Error("invalid affine point"); if (e instanceof Y) throw Error("projective point not allowed"); return D.is0(T) && D.is0(E) ? Y.ZERO : new Y(T, E, D.ONE); } static fromBytes(e) { let T = Y.fromAffine(R(_abytes2(e, void 0, "point"))); return T.assertValidity(), T; } static fromHex(e) { return Y.fromBytes(ensureBytes("pointHex", e)); } get x() { return this.toAffine().x; } get y() { return this.toAffine().y; } precompute(e = 8, T = !0) { return Z.createCache(this, e), T || this.multiply(_3n), this; } assertValidity() { q(this); } hasEvenY() { let { y: e } = this.toAffine(); if (!D.isOdd) throw Error("Field doesn't support isOdd"); return !D.isOdd(e); } equals(e) { W(e); let { X: T, Y: E, Z: O } = this, { X: k, Y: A, Z: j } = e, M = D.eql(D.mul(T, j), D.mul(k, O)), N = D.eql(D.mul(E, j), D.mul(A, O)); return M && N; } negate() { return new Y(this.X, D.neg(this.Y), this.Z); } double() { let { a: e, b: T } = k, E = D.mul(T, _3n), { X: O, Y: A, Z: j } = this, M = D.ZERO, N = D.ZERO, P = D.ZERO, F = D.mul(O, O), I = D.mul(A, A), L = D.mul(j, j), R = D.mul(O, A); return R = D.add(R, R), P = D.mul(O, j), P = D.add(P, P), M = D.mul(e, P), N = D.mul(E, L), N = D.add(M, N), M = D.sub(I, N), N = D.add(I, N), N = D.mul(M, N), M = D.mul(R, M), P = D.mul(E, P), L = D.mul(e, L), R = D.sub(F, L), R = D.mul(e, R), R = D.add(R, P), P = D.add(F, F), F = D.add(P, F), F = D.add(F, L), F = D.mul(F, R), N = D.add(N, F), L = D.mul(A, j), L = D.add(L, L), F = D.mul(L, R), M = D.sub(M, F), P = D.mul(L, I), P = D.add(P, P), P = D.add(P, P), new Y(M, N, P); } add(e) { W(e); let { X: T, Y: E, Z: O } = this, { X: A, Y: j, Z: M } = e, N = D.ZERO, P = D.ZERO, F = D.ZERO, I = k.a, L = D.mul(k.b, _3n), R = D.mul(T, A), z = D.mul(E, j), B = D.mul(O, M), V = D.add(T, E), H = D.add(A, j); V = D.mul(V, H), H = D.add(R, z), V = D.sub(V, H), H = D.add(T, O); let U = D.add(A, M); return H = D.mul(H, U), U = D.add(R, B), H = D.sub(H, U), U = D.add(E, O), N = D.add(j, M), U = D.mul(U, N), N = D.add(z, B), U = D.sub(U, N), F = D.mul(I, H), N = D.mul(L, B), F = D.add(N, F), N = D.sub(z, F), F = D.add(z, F), P = D.mul(N, F), z = D.add(R, R), z = D.add(z, R), B = D.mul(I, B), H = D.mul(L, H), z = D.add(z, B), B = D.sub(R, B), B = D.mul(I, B), H = D.add(H, B), R = D.mul(z, H), P = D.add(P, R), R = D.mul(U, H), N = D.mul(V, N), N = D.sub(N, R), R = D.mul(V, z), F = D.mul(U, F), F = D.add(F, R), new Y(N, P, F); } subtract(e) { return this.add(e.negate()); } is0() { return this.equals(Y.ZERO); } multiply(e) { let { endo: E } = T; if (!O.isValidNot0(e)) throw Error("invalid scalar: out of range"); let D, k, A = (e) => Z.cached(this, e, (e) => normalizeZ(Y, e)); if (E) { let { k1neg: T, k1: O, k2neg: j, k2: M } = G(e), { p: N, f: P } = A(O), { p: F, f: I } = A(M); k = P.add(I), D = J(E.beta, N, F, T, j); } else { let { p: T, f: E } = A(e); D = T, k = E; } return normalizeZ(Y, [D, k])[0]; } multiplyUnsafe(e) { let { endo: E } = T, D = this; if (!O.isValid(e)) throw Error("invalid scalar: out of range"); if (e === _0n || D.is0()) return Y.ZERO; if (e === _1n) return D; if (Z.hasCache(this)) return this.multiply(e); if (E) { let { k1neg: T, k1: O, k2neg: k, k2: A } = G(e), { p1: j, p2: M } = mulEndoUnsafe(Y, D, O, A); return J(E.beta, j, M, T, k); } else return Z.unsafe(D, e); } multiplyAndAddUnsafe(e, T, E) { let D = this.multiplyUnsafe(T).add(e.multiplyUnsafe(E)); return D.is0() ? void 0 : D; } toAffine(e) { return K(this, e); } isTorsionFree() { let { isTorsionFree: e } = T; return A === _1n ? !0 : e ? e(Y, this) : Z.unsafe(this, j).is0(); } clearCofactor() { let { clearCofactor: e } = T; return A === _1n ? this : e ? e(Y, this) : this.multiplyUnsafe(A); } isSmallOrder() { return this.multiplyUnsafe(A).is0(); } toBytes(e = !0) { return _abool2(e, "isCompressed"), this.assertValidity(), L(Y, this, e); } toHex(e = !0) { return bytesToHex$1(this.toBytes(e)); } toString() { return `<Point ${this.is0() ? "ZERO" : this.toHex()}>`; } get px() { return this.X; } get py() { return this.X; } get pz() { return this.Z; } toRawBytes(e = !0) { return this.toBytes(e); } _setWindowSize(e) { this.precompute(e); } static normalizeZ(e) { return normalizeZ(Y, e); } static msm(e, T) { return pippenger(Y, O, e, T); } static fromPrivateKey(e) { return Y.BASE.multiply(_normFnElement(O, e)); } } Y.BASE = new Y(k.Gx, k.Gy, D.ONE), Y.ZERO = new Y(D.ZERO, D.ONE, D.ZERO), Y.Fp = D, Y.Fn = O; let X = O.BITS, Z = new wNAF(Y, T.endo ? Math.ceil(X / 2) : X); return Y.BASE.precompute(8), Y; } function pprefix(e) { return Uint8Array.of(e ? 2 : 3); } function getWLengths(e, T) { return { secretKey: T.BYTES, publicKey: 1 + e.BYTES, publicKeyUncompressed: 1 + 2 * e.BYTES, publicKeyHasPrefix: !0, signature: 2 * T.BYTES }; } function ecdh(e, T = {}) { let { Fn: E } = e, D = T.randomBytes || randomBytes$1, O = Object.assign(getWLengths(e.Fp, E), { seed: getMinHashLength(E.ORDER) }); function k(e) { try { return !!_normFnElement(E, e); } catch { return !1; } } function A(T, E) { let { publicKey: D, publicKeyUncompressed: k } = O; try { let O = T.length; return E === !0 && O !== D || E === !1 && O !== k ? !1 : !!e.fromBytes(T); } catch { return !1; } } function j(e = D(O.seed)) { return mapHashToField(_abytes2(e, O.seed, "seed"), E.ORDER); } function M(T, D = !0) { return e.BASE.multiply(_normFnElement(E, T)).toBytes(D); } function N(e) { let T = j(e); return { secretKey: T, publicKey: M(T) }; } function P(T) { if (typeof T == "bigint") return !1; if (T instanceof e) return !0; let { secretKey: D, publicKey: k, publicKeyUncompressed: A } = O; if (E.allowedLengths || D === k) return; let j = ensureBytes("key", T).length; return j === k || j === A; } function F(T, D, O = !0) { if (P(T) === !0) throw Error("first arg must be private key"); if (P(D) === !1) throw Error("second arg must be public key"); let k = _normFnElement(E, T); return e.fromHex(D).multiply(k).toBytes(O); } let I = { isValidSecretKey: k, isValidPublicKey: A, randomSecretKey: j, isValidPrivateKey: k, randomPrivateKey: j, normPrivateKeyToScalar: (e) => _normFnElement(E, e), precompute(T = 8, E = e.BASE) { return E.precompute(T, !1); } }; return Object.freeze({ getPublicKey: M, getSharedSecret: F, keygen: N, Point: e, utils: I, lengths: O }); } function ecdsa(e, T, E = {}) { ahash(T), _validateObject(E, {}, { hmac: "function", lowS: "boolean", randomBytes: "function", bits2int: "function", bits2int_modN: "function" }); let D = E.randomBytes || randomBytes$1, O = E.hmac || ((e, ...E) => hmac$1(T, e, concatBytes$1(...E))), { Fp: k, Fn: A } = e, { ORDER: j, BITS: M } = A, { keygen: N, getPublicKey: P, getSharedSecret: F, utils: I, lengths: L } = ecdh(e, E), R = { prehash: !1, lowS: typeof E.lowS == "boolean" ? E.lowS : !1, format: void 0, extraEntropy: !1 }, z = "compact"; function B(e) { return e > j >> _1n; } function V(e, T) { if (!A.isValidNot0(T)) throw Error(`invalid signature ${e}: out of range 1..Point.Fn.ORDER`); return T; } function H(e, T) { validateSigFormat(T); let E = L.signature; return _abytes2(e, T === "compact" ? E : T === "recovered" ? E + 1 : void 0, `${T} signature`); } class U { constructor(e, T, E) { this.r = V("r", e), this.s = V("s", T), E != null && (this.recovery = E), Object.freeze(this); } static fromBytes(e, T = z) { H(e, T); let E; if (T === "der") { let { r: T, s: E } = DER.toSig(_abytes2(e)); return new U(T, E); } T === "recovered" && (E = e[0], T = "compact", e = e.subarray(1)); let D = A.BYTES, O = e.subarray(0, D), k = e.subarray(D, D * 2); return new U(A.fromBytes(O), A.fromBytes(k), E); } static fromHex(e, T) { return this.fromBytes(hexToBytes(e), T); } addRecoveryBit(e) { return new U(this.r, this.s, e); } recoverPublicKey(T) { let E = k.ORDER, { r: D, s: O, recovery: M } = this; if (M == null || ![ 0, 1, 2, 3 ].includes(M)) throw Error("recovery id invalid"); if (j * _2n < E && M > 1) throw Error("recovery id is ambiguous for h>1 curve"); let N = M === 2 || M === 3 ? D + j : D; if (!k.isValid(N)) throw Error("recovery id 2 or 3 invalid"); let P = k.toBytes(N), F = e.fromBytes(concatBytes$1(pprefix((M & 1) == 0), P)), I = A.inv(N), L = G(ensureBytes("msgHash", T)), R = A.create(-L * I), z = A.create(O * I), B = e.BASE.multiplyUnsafe(R).add(F.multiplyUnsafe(z)); if (B.is0()) throw Error("point at infinify"); return B.assertValidity(), B; } hasHighS() { return B(this.s); } toBytes(e = z) { if (validateSigFormat(e), e === "der") return hexToBytes(DER.hexFromSig(this)); let T = A.toBytes(this.r), E = A.toBytes(this.s); if (e === "recovered") { if (this.recovery == null) throw Error("recovery bit must be present"); return concatBytes$1(Uint8Array.of(this.recovery), T, E); } return concatBytes$1(T, E); } toHex(e) { return bytesToHex$1(this.toBytes(e)); } assertValidity() {} static fromCompact(e) { return U.fromBytes(ensureBytes("sig", e), "compact"); } static fromDER(e) { return U.fromBytes(ensureBytes("sig", e), "der"); } normalizeS() { return this.hasHighS() ? new U(this.r, A.neg(this.s), this.recovery) : this; } toDERRawBytes() { return this.toBytes("der"); } toDERHex() { return bytesToHex$1(this.toBytes("der")); } toCompactRawBytes() { return this.toBytes("compact"); } toCompactHex() { return bytesToHex$1(this.toBytes("compact")); } } let W = E.bits2int || function(e) { if (e.length > 8192) throw Error("input is too large"); let T = bytesToNumberBE(e), E = e.length * 8 - M; return E > 0 ? T >> BigInt(E) : T; }, G = E.bits2int_modN || function(e) { return A.create(W(e)); }, K = bitMask(M); function q(e) { return aInRange("num < 2^" + M, e, _0n, K), A.toBytes(e); } function J(e, E) { return _abytes2(e, void 0, "message"), E ? _abytes2(T(e), void 0, "prehashed message") : e; } function Y(T, E, O) { if (["recovered", "canonical"].some((e) => e in O)) throw Error("sign() legacy options not supported"); let { lowS: k, prehash: j, extraEntropy: M } = validateSigOpts(O, R); T = J(T, j); let N = G(T), P = _normFnElement(A, E), F = [q(P), q(N)]; if (M != null && M !== !1) { let e = M === !0 ? D(L.secretKey) : M; F.push(ensureBytes("extraEntropy", e)); } let I = concatBytes$1(...F), z = N; function V(T) { let E = W(T); if (!A.isValidNot0(E)) return; let D = A.inv(E), O = e.BASE.multiply(E).toAffine(), j = A.create(O.x); if (j === _0n) return; let M = A.create(D * A.create(z + j * P)); if (M === _0n) return; let N = (O.x === j ? 0 : 2) | Number(O.y & _1n), F = M; return k && B(M) && (F = A.neg(M), N ^= 1), new U(j, F, N); } return { seed: I, k2sig: V }; } function X(e, E, D = {}) { e = ensureBytes("message", e); let { seed: k, k2sig: j } = Y(e, E, D); return createHmacDrbg(T.outputLen, A.BYTES, O)(k, j); } function Z(e) { let T, E = typeof e == "string" || isBytes$1(e), D = !E && typeof e == "object" && !!e && typeof e.r == "bigint" && typeof e.s == "bigint"; if (!E && !D) throw Error("invalid signature, expected Uint8Array, hex string or Signature instance"); if (D) T = new U(e.r, e.s); else if (E) { try { T = U.fromBytes(ensureBytes("sig", e), "der"); } catch (e) { if (!(e instanceof DER.Err)) throw e; } if (!T) try { T = U.fromBytes(ensureBytes("sig", e), "compact"); } catch { return !1; } } return T || !1; } function Q(T, E, D, O = {}) { let { lowS: k, prehash: j, format: M } = validateSigOpts(O, R); if (D = ensureBytes("publicKey", D), E = J(ensureBytes("message", E), j), "strict" in O) throw Error("options.strict was renamed to lowS"); let N = M === void 0 ? Z(T) : U.fromBytes(ensureBytes("sig", T), M); if (N === !1) return !1; try { let T = e.fromBytes(D); if (k && N.hasHighS()) return !1; let { r: O, s: j } = N, M = G(E), P = A.inv(j), F = A.create(M * P), I = A.create(O * P), L = e.BASE.multiplyUnsafe(F).add(T.multiplyUnsafe(I)); return L.is0() ? !1 : A.create(L.x) === O; } catch { return !1; } } function $(e, T, E = {}) { let { prehash: D } = validateSigOpts(E, R); return T = J(T, D), U.fromBytes(e, "recovered").recoverPublicKey(T).toBytes(); } return Object.freeze({ keygen: N, getPublicKey: P, getSharedSecret: F, utils: I, lengths: L, Point: e, sign: X, verify: Q, recoverPublicKey: $, Signature: U, hash: T }); } function _weierstrass_legacy_opts_to_new(e) { let T = { a: e.a, b: e.b, p: e.Fp.ORDER, n: e.n, h: e.h, Gx: e.Gx, Gy: e.Gy }, E = e.Fp, D = e.allowedPrivateKeyLengths ? Array.from(new Set(e.allowedPrivateKeyLengths.map((e) => Math.ceil(e / 2)))) : void 0; return { CURVE: T, curveOpts: { Fp: E, Fn: Field$1(T.n, { BITS: e.nBitLength, allowedLengths: D, modFromBytes: e.wrapPrivateKey }), allowInfinityPoint: e.allowInfinityPoint, endo: e.endo, isTorsionFree: e.isTorsionFree, clearCofactor: e.clearCofactor, fromBytes: e.fromBytes, toBytes: e.toBytes } }; } function _ecdsa_legacy_opts_to_new(e) { let { CURVE: T, curveOpts: E } = _weierstrass_legacy_opts_to_new(e), D = { hmac: e.hmac, randomBytes: e.randomBytes, lowS: e.lowS, bits2int: e.bits2int, bits2int_modN: e.bits2int_modN }; return { CURVE: T, curveOpts: E, hash: e.hash, ecdsaOpts: D }; } function _ecdsa_new_output_to_legacy(e, T) { let E = T.Point; return Object.assign({}, T, { ProjectivePoint: E, CURVE: Object.assign({}, e, nLength(E.Fn.ORDER, E.Fn.BITS)) }); } function weierstrass(e) { let { CURVE: T, curveOpts: E, hash: D, ecdsaOpts: O } = _ecdsa_legacy_opts_to_new(e); return _ecdsa_new_output_to_legacy(e, ecdsa(weierstrassN(T, E), D, O)); } function isBytes(e) { return e instanceof Uint8Array || ArrayBuffer.isView(e) && e.constructor.name === "Uint8Array"; } function abytes(e, ...T) { if (!isBytes(e)) throw Error("Uint8Array expected"); if (T.length > 0 && !T.includes(e.length)) throw Error("Uint8Array expected of length " + T + ", got length=" + e.length); } function aexists(e, T = !0) { if (e.destroyed) throw Error("Hash instance has been destroyed"); if (T && e.finished) throw Error("Hash#digest() has already been called"); } function aoutput(e, T) { abytes(e); let E = T.outputLen; if (e.length < E) throw Error("digestInto() expects output buffer of length at least " + E); } function u32(e) { return new Uint32Array(e.buffer, e.byteOffset, Math.floor(e.byteLength / 4)); } function clean(...e) { for (let T = 0; T < e.length; T++) e[T].fill(0); } function createView(e) { return new DataView(e.buffer, e.byteOffset, e.byteLength); } function utf8ToBytes(e) { if (typeof e != "string") throw Error("string expected"); return new Uint8Array(new TextEncoder().encode(e)); } function toBytes$1(e) { if (typeof e == "string") e = utf8ToBytes(e); else if (isBytes(e)) e = copyBytes(e); else