@nexus-cross/crossx-sdk-core 1.2.7 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var Ls = Object.defineProperty;
2
2
  var Ds = (r, e, s) => e in r ? Ls(r, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : r[e] = s;
3
- var A = (r, e, s) => Ds(r, typeof e != "symbol" ? e + "" : e, s);
3
+ var I = (r, e, s) => Ds(r, typeof e != "symbol" ? e + "" : e, s);
4
4
  import { createRemoteJWKSet as Ms, jwtVerify as $s, decodeJwt as Bs } from "jose";
5
5
  var p = /* @__PURE__ */ ((r) => (r.AUTH_NOT_INITIALIZED = "AUTH_NOT_INITIALIZED", r.AUTH_FAILED = "AUTH_FAILED", r.AUTH_TOKEN_INVALID = "AUTH_TOKEN_INVALID", r.AUTH_TOKEN_EXPIRED = "AUTH_TOKEN_EXPIRED", r.AUTH_NOT_AUTHENTICATED = "AUTH_NOT_AUTHENTICATED", r.ALREADY_AUTHENTICATED = "ALREADY_AUTHENTICATED", r.WALLET_NOT_FOUND = "WALLET_NOT_FOUND", r.WALLET_CREATION_FAILED = "WALLET_CREATION_FAILED", r.WALLET_ALREADY_EXISTS = "WALLET_ALREADY_EXISTS", r.SIGN_FAILED = "SIGN_FAILED", r.SIGN_REJECTED = "SIGN_REJECTED", r.TX_FAILED = "TX_FAILED", r.TX_REJECTED = "TX_REJECTED", r.BROADCAST_FAILED = "BROADCAST_FAILED", r.USER_REJECTED = "USER_REJECTED", r.TX_INVALID_PARAMS = "TX_INVALID_PARAMS", r.NETWORK_ERROR = "NETWORK_ERROR", r.NETWORK_NOT_CONFIGURED = "NETWORK_NOT_CONFIGURED", r.INVALID_CHAIN = "INVALID_CHAIN", r.CHAIN_NOT_SUPPORTED = "CHAIN_NOT_SUPPORTED", r.CHAIN_ADAPTER_NOT_FOUND = "CHAIN_ADAPTER_NOT_FOUND", r.NOT_IMPLEMENTED = "NOT_IMPLEMENTED", r.SIGNATURE_FAILED = "SIGNATURE_FAILED", r.TRANSACTION_FAILED = "TRANSACTION_FAILED", r.PREPARE_FAILED = "PREPARE_FAILED", r.PREPARE_EXPIRED = "PREPARE_EXPIRED", r.PREPARE_MISMATCH = "PREPARE_MISMATCH", r.MIGRATION_FAILED = "MIGRATION_FAILED", r.MIGRATION_BACKUP_EXISTS = "MIGRATION_BACKUP_EXISTS", r.MIGRATION_PIN_LOCKED = "MIGRATION_PIN_LOCKED", r.GATEWAY_INTERNAL_ERROR = "GATEWAY_INTERNAL_ERROR", r.GATEWAY_LOCK_CONFLICT = "GATEWAY_LOCK_CONFLICT", r.WALLET_INCONSISTENT_STATE = "WALLET_INCONSISTENT_STATE", r.PROJECT_ID_MISSING = "PROJECT_ID_MISSING", r.ORIGIN_NOT_ALLOWED = "ORIGIN_NOT_ALLOWED", r.APP_IDENTIFIER_MISSING = "APP_IDENTIFIER_MISSING", r.INVALID_APP_TYPE = "INVALID_APP_TYPE", r.PROJECT_NOT_REGISTERED = "PROJECT_NOT_REGISTERED", r.SIGNATURE_SIGNER_MISMATCH = "SIGNATURE_SIGNER_MISMATCH", r.GAS_ESTIMATION_FAILED = "GAS_ESTIMATION_FAILED", r.TYPED_DATA_CHAIN_ID_MISMATCH = "TYPED_DATA_CHAIN_ID_MISMATCH", r.PIN_NOT_SET = "PIN_NOT_SET", r.PIN_WRONG = "PIN_WRONG", r.PIN_INVALID = "PIN_INVALID", r.PIN_REPEATED_PATTERN = "PIN_REPEATED_PATTERN", r.PIN_CANCELLED = "PIN_CANCELLED", r.PIN_LOCKED = "PIN_LOCKED", r.HMAC_REQUIRED = "HMAC_REQUIRED", r.HMAC_VERIFICATION_FAILED = "HMAC_VERIFICATION_FAILED", r.WITHDRAW_FAILED = "WITHDRAW_FAILED", r.INVALID_CONFIG = "INVALID_CONFIG", r.UNKNOWN_ERROR = "UNKNOWN_ERROR", r))(p || {});
6
6
  class g extends Error {
@@ -372,34 +372,34 @@ class qs {
372
372
  expectedOrigin: new URL(d).origin
373
373
  });
374
374
  u.log("[CROSSx] OAuth Firebase 토큰 받음 (length:", x.length, ")");
375
- const { accessToken: w, refreshToken: E } = await this.exchangeFirebaseToken(x, h);
375
+ const { accessToken: w, refreshToken: v } = await this.exchangeFirebaseToken(x, h);
376
376
  let y, S;
377
377
  try {
378
- const B = this.crypto.decodeJWT(x);
379
- S = (n = B.firebase) == null ? void 0 : n.sign_in_provider;
380
- const b = ((o = B.firebase) == null ? void 0 : o.identities) ?? {};
381
- S === "google.com" ? y = (i = b["google.com"]) == null ? void 0 : i[0] : S === "apple.com" && (y = (a = b["apple.com"]) == null ? void 0 : a[0]), u.log("[CROSSx] OAuth provider sub 추출 — provider:", S, "hasProviderSub:", !!y);
378
+ const U = this.crypto.decodeJWT(x);
379
+ S = (n = U.firebase) == null ? void 0 : n.sign_in_provider;
380
+ const N = ((o = U.firebase) == null ? void 0 : o.identities) ?? {};
381
+ S === "google.com" ? y = (i = N["google.com"]) == null ? void 0 : i[0] : S === "apple.com" && (y = (a = N["apple.com"]) == null ? void 0 : a[0]), u.log("[CROSSx] OAuth provider sub 추출 — provider:", S, "hasProviderSub:", !!y);
382
382
  } catch {
383
383
  u.warn("[CROSSx] firebaseToken에서 providerSub 추출 실패");
384
384
  }
385
385
  if (w) {
386
- const B = this.crypto.decodeJWT(w);
387
- u.log("[CROSSx] access_token 디코딩 — sub:", B.sub, "exp:", B.exp);
388
- const b = await this.crypto.verifyJWT(w);
389
- if (t = b.signatureVerified ?? !1, !b.valid)
386
+ const U = this.crypto.decodeJWT(w);
387
+ u.log("[CROSSx] access_token 디코딩 — sub:", U.sub, "exp:", U.exp);
388
+ const N = await this.crypto.verifyJWT(w);
389
+ if (t = N.signatureVerified ?? !1, !N.valid)
390
390
  throw u.error("[CROSSx] access_token 검증 실패"), new Error("유효하지 않은 access token");
391
- const k = b.payload;
391
+ const V = N.payload;
392
392
  s = {
393
- id: k.sub,
394
- email: k.email,
393
+ id: V.sub,
394
+ email: V.email,
395
395
  signInProvider: S,
396
396
  providerSub: y
397
- }, this.tokenStore.set(w), this.useCookieAuth || (await this.storage.set(this.STORAGE_KEY_ACCESS_TOKEN, w), E && this.config.secureStorageAvailable !== !1 ? await this.storage.set(this.STORAGE_KEY_REFRESH_TOKEN, E) : E && u.warn("[CROSSx] 안전한 스토리지 미사용 — refresh_token 영속 저장을 건너뜁니다"));
397
+ }, this.tokenStore.set(w), this.useCookieAuth || (await this.storage.set(this.STORAGE_KEY_ACCESS_TOKEN, w), v && this.config.secureStorageAvailable !== !1 ? await this.storage.set(this.STORAGE_KEY_REFRESH_TOKEN, v) : v && u.warn("[CROSSx] 안전한 스토리지 미사용 — refresh_token 영속 저장을 건너뜁니다"));
398
398
  } else {
399
- const B = this.crypto.decodeJWT(x);
399
+ const U = this.crypto.decodeJWT(x);
400
400
  s = {
401
- id: B.sub,
402
- email: B.email,
401
+ id: U.sub,
402
+ email: U.email,
403
403
  signInProvider: S,
404
404
  providerSub: y
405
405
  }, u.log("[CROSSx] Cookie 모드 — Firebase 토큰에서 사용자 정보 추출 — id:", s.id);
@@ -856,7 +856,7 @@ const Xs = 2e3, Tt = 6e4, Zs = 1e3, Qs = 1e4, er = "0x77359400", Rt = "0x3B9ACA0
856
856
  }
857
857
  async _doInitialize(e) {
858
858
  var s, t;
859
- u.log("[CROSSx SDK] v1.2.7 초기화 중..."), this.confirmation.setMessages(St(this._config.locale));
859
+ u.log("[CROSSx SDK] v1.2.8 초기화 중..."), this.confirmation.setMessages(St(this._config.locale));
860
860
  try {
861
861
  const n = Js();
862
862
  this.internalConfig.oauthServiceUrl = n.oauthServiceUrl, this.internalConfig.authApiUrl = n.authApiUrl, this.internalConfig.walletGatewayUrl = n.walletGatewayUrl, this.adapterConfig.gatewayUrl = n.walletGatewayUrl, (t = (s = this.crypto).setJWKSEndpoint) == null || t.call(s, `${n.authApiUrl}/.well-known/jwks.json`);
@@ -1592,20 +1592,20 @@ const Xs = 2e3, Tt = 6e4, Zs = 1e3, Qs = 1e4, er = "0x77359400", Rt = "0x3B9ACA0
1592
1592
  * logger.log(receipt.status); // '0x1' | '0x0'
1593
1593
  */
1594
1594
  async sendTransactionWithWaitForReceipt(e, s, t = {}) {
1595
- var E, y;
1596
- const { intervalMs: n, timeoutMs: o, ...i } = t, { txHash: a } = await this.sendTransaction(e, s, i), c = n ?? ((E = this._config.receiptPolling) == null ? void 0 : E.intervalMs) ?? Xs, l = o ?? ((y = this._config.receiptPolling) == null ? void 0 : y.timeoutMs) ?? Tt, d = Je(e), h = s.from ?? "";
1595
+ var v, y;
1596
+ const { intervalMs: n, timeoutMs: o, ...i } = t, { txHash: a } = await this.sendTransaction(e, s, i), c = n ?? ((v = this._config.receiptPolling) == null ? void 0 : v.intervalMs) ?? Xs, l = o ?? ((y = this._config.receiptPolling) == null ? void 0 : y.timeoutMs) ?? Tt, d = Je(e), h = s.from ?? "";
1597
1597
  let m, x;
1598
1598
  const w = this.waitForTxAndGetReceipt(a, e, { intervalMs: c, timeoutMs: l }).then((S) => {
1599
1599
  m = S;
1600
- const C = BigInt(S.gasUsed) * BigInt(S.effectiveGasPrice), B = s.value ? BigInt(s.value) : 0n, b = re.formatTxAmount(s.value, d.symbol, d.decimals), k = re.formatTxAmount("0x" + C.toString(16), d.symbol, d.decimals), P = re.formatTxAmount("0x" + (B + C).toString(16), d.symbol, d.decimals);
1600
+ const C = BigInt(S.gasUsed) * BigInt(S.effectiveGasPrice), U = s.value ? BigInt(s.value) : 0n, N = re.formatTxAmount(s.value, d.symbol, d.decimals), V = re.formatTxAmount("0x" + C.toString(16), d.symbol, d.decimals), W = re.formatTxAmount("0x" + (U + C).toString(16), d.symbol, d.decimals);
1601
1601
  return {
1602
1602
  chainId: e,
1603
1603
  txHash: a,
1604
1604
  from: S.from,
1605
1605
  to: S.to ?? s.to,
1606
- amount: b,
1607
- fees: k,
1608
- total: P,
1606
+ amount: N,
1607
+ fees: V,
1608
+ total: W,
1609
1609
  nativeSymbol: d.symbol,
1610
1610
  status: S.status === "0x1" ? "success" : "reverted"
1611
1611
  };
@@ -1877,62 +1877,62 @@ const Xs = 2e3, Tt = 6e4, Zs = 1e3, Qs = 1e4, er = "0x77359400", Rt = "0x3B9ACA0
1877
1877
  * 4) PIN 잠금 발생 시 카운트다운 화면 표시 → 자동 해제 후 PIN 재입력
1878
1878
  */
1879
1879
  async handleMigrationFlow(e) {
1880
- var a, c;
1880
+ var c, l, d;
1881
1881
  u.log('[CROSSx][Migration Phase 3] "Wallet Found" 팝업 표시');
1882
- const s = await this.confirmation.showMigrationFoundPrompt();
1883
- if (u.log("[CROSSx][Migration Phase 3] 사용자 선택:", s), s === "skip")
1882
+ const s = ((c = this._config.migration) == null ? void 0 : c.allowSkip) ?? !0, t = await this.confirmation.showMigrationFoundPrompt({ allowSkip: s });
1883
+ if (u.log("[CROSSx][Migration Phase 3] 사용자 선택:", t), t === "skip")
1884
1884
  return u.log("[CROSSx][Migration Phase 3] 사용자가 마이그레이션을 건너뜀 → 종료"), null;
1885
- let t, n = 0, o = 5, i = null;
1885
+ let n, o = 0, i = 5, a = null;
1886
1886
  for (; ; ) {
1887
- n++, u.log(
1888
- `[CROSSx][Migration Phase 4] PIN 입력 팝업 표시 (시도 #${n}/${o})`,
1889
- t ? `— 이전 메시지: ${t}` : ""
1887
+ o++, u.log(
1888
+ `[CROSSx][Migration Phase 4] PIN 입력 팝업 표시 (시도 #${o}/${i})`,
1889
+ n ? `— 이전 메시지: ${n}` : ""
1890
1890
  );
1891
- const l = await this.confirmation.showRecoveryPinInputPrompt({
1892
- errorMessage: t,
1893
- attemptCount: n > 1 ? n - 1 : void 0,
1894
- maxAttempts: o
1891
+ const h = await this.confirmation.showRecoveryPinInputPrompt({
1892
+ errorMessage: n,
1893
+ attemptCount: o > 1 ? o - 1 : void 0,
1894
+ maxAttempts: i
1895
1895
  });
1896
- if (l === null)
1896
+ if (h === null)
1897
1897
  return u.log("[CROSSx][Migration Phase 4] 사용자가 PIN 입력을 취소함 → 종료"), null;
1898
- u.log("[CROSSx][Migration Phase 4] PIN 입력 완료 — verify-recovery-pin API 호출"), t = void 0;
1898
+ u.log("[CROSSx][Migration Phase 4] PIN 입력 완료 — verify-recovery-pin API 호출"), n = void 0;
1899
1899
  try {
1900
- const d = await ((c = (a = this.walletProvider).verifyRecoveryPin) == null ? void 0 : c.call(a, l, e));
1901
- if (!d) {
1902
- u.log("[CROSSx][Migration Phase 4] verifyRecoveryPin 미지원 — PIN 검증 생략"), i = l;
1900
+ const m = await ((d = (l = this.walletProvider).verifyRecoveryPin) == null ? void 0 : d.call(l, h, e));
1901
+ if (!m) {
1902
+ u.log("[CROSSx][Migration Phase 4] verifyRecoveryPin 미지원 — PIN 검증 생략"), a = h;
1903
1903
  break;
1904
1904
  }
1905
- if (d.valid) {
1906
- u.log("[CROSSx][Migration Phase 4] PIN 검증 성공"), i = l;
1905
+ if (m.valid) {
1906
+ u.log("[CROSSx][Migration Phase 4] PIN 검증 성공"), a = h;
1907
1907
  break;
1908
1908
  }
1909
- const h = d.pinStatus;
1910
- if (o = h.maxAttempts, n = o - h.remainingAttempts, h.remainingAttempts === 0 && h.lockExpiresAt) {
1911
- const m = h.lockExpiresAt * 1e3, x = Math.max(1, Math.round((m - Date.now()) / 1e3)), w = x <= 1800 ? "Too many failed attempts. Please try again in 30 minutes." : "Too many failed attempts. Please try again in 24 hours.";
1912
- u.warn(`[CROSSx][Migration Phase 4] verify-recovery-pin 잠금 — ${x}초, 메시지: ${w}`), await this.confirmation.showRecoveryPinLockedPrompt(x, w), n = 0, t = "Your account lock has been lifted. You may try again.";
1909
+ const x = m.pinStatus;
1910
+ if (i = x.maxAttempts, o = i - x.remainingAttempts, x.remainingAttempts === 0 && x.lockExpiresAt) {
1911
+ const w = x.lockExpiresAt * 1e3, v = Math.max(1, Math.round((w - Date.now()) / 1e3)), y = v <= 1800 ? "Too many failed attempts. Please try again in 30 minutes." : "Too many failed attempts. Please try again in 24 hours.";
1912
+ u.warn(`[CROSSx][Migration Phase 4] verify-recovery-pin 잠금 — ${v}초, 메시지: ${y}`), await this.confirmation.showRecoveryPinLockedPrompt(v, y), o = 0, n = "Your account lock has been lifted. You may try again.";
1913
1913
  } else
1914
- u.warn(`[CROSSx][Migration Phase 4] PIN 불일치 (시도 ${n}/${o})`), t = "Incorrect PIN.";
1915
- } catch (d) {
1916
- if (!(d instanceof g)) throw d;
1917
- if (d.code === p.MIGRATION_PIN_LOCKED) {
1918
- const h = d.details;
1919
- if (o = (h == null ? void 0 : h.maxAttempts) ?? 5, (h == null ? void 0 : h.permanent) === !0)
1914
+ u.warn(`[CROSSx][Migration Phase 4] PIN 불일치 (시도 ${o}/${i})`), n = "Incorrect PIN.";
1915
+ } catch (m) {
1916
+ if (!(m instanceof g)) throw m;
1917
+ if (m.code === p.MIGRATION_PIN_LOCKED) {
1918
+ const x = m.details;
1919
+ if (i = (x == null ? void 0 : x.maxAttempts) ?? 5, (x == null ? void 0 : x.permanent) === !0)
1920
1920
  return u.warn("[CROSSx][Migration Phase 4] PIN 영구 잠금 (verify-recovery-pin)"), await this.confirmation.showRecoveryPinLockedPrompt(0, "Your account has been permanently locked due to too many failed attempts."), null;
1921
- const m = ((h == null ? void 0 : h.lockExpiresAt) ?? 0) * 1e3, x = Math.max(1, Math.round((m - Date.now()) / 1e3)), w = x <= 1800 ? "Too many failed attempts. Please try again in 30 minutes." : "Too many failed attempts. Please try again in 24 hours.";
1922
- u.warn(`[CROSSx][Migration Phase 4] verify-recovery-pin 이미 잠금 — ${x}초`), await this.confirmation.showRecoveryPinLockedPrompt(x, w), n = 0, t = "Your account lock has been lifted. You may try again.";
1921
+ const w = ((x == null ? void 0 : x.lockExpiresAt) ?? 0) * 1e3, v = Math.max(1, Math.round((w - Date.now()) / 1e3)), y = v <= 1800 ? "Too many failed attempts. Please try again in 30 minutes." : "Too many failed attempts. Please try again in 24 hours.";
1922
+ u.warn(`[CROSSx][Migration Phase 4] verify-recovery-pin 이미 잠금 — ${v}초`), await this.confirmation.showRecoveryPinLockedPrompt(v, y), o = 0, n = "Your account lock has been lifted. You may try again.";
1923
1923
  } else
1924
- throw u.error("[CROSSx][Migration Phase 4] verify-recovery-pin 실패 (복구 불가):", d), d;
1924
+ throw u.error("[CROSSx][Migration Phase 4] verify-recovery-pin 실패 (복구 불가):", m), m;
1925
1925
  }
1926
1926
  }
1927
1927
  u.log("[CROSSx][Migration Phase 5] PIN 검증 완료 — 비밀번호 설정 및 마이그레이션 진행");
1928
1928
  try {
1929
1929
  await this.ensurePinSetup();
1930
- const l = await this.migrateWalletUseCase.execute(i, e);
1931
- return u.log("[CROSSx][Migration Phase 5] 마이그레이션 성공 — address:", l.address), l;
1932
- } catch (l) {
1933
- if (l instanceof g && l.code === p.MIGRATION_FAILED)
1930
+ const h = await this.migrateWalletUseCase.execute(a, e);
1931
+ return u.log("[CROSSx][Migration Phase 5] 마이그레이션 성공 — address:", h.address), h;
1932
+ } catch (h) {
1933
+ if (h instanceof g && h.code === p.MIGRATION_FAILED)
1934
1934
  return u.warn("[CROSSx][Migration Phase 5] migrate PIN 불일치 (경합) — 처음부터 재시도"), this.handleMigrationFlow(e);
1935
- throw u.error("[CROSSx][Migration Phase 5] 마이그레이션 실패 (복구 불가):", l), l;
1935
+ throw u.error("[CROSSx][Migration Phase 5] 마이그레이션 실패 (복구 불가):", h), h;
1936
1936
  }
1937
1937
  }
1938
1938
  /**
@@ -2505,7 +2505,7 @@ function ge(r, e = "") {
2505
2505
  throw new Error(`${s}expected integer >= 0, got ${r}`);
2506
2506
  }
2507
2507
  }
2508
- function V(r, e, s = "") {
2508
+ function z(r, e, s = "") {
2509
2509
  const t = ut(r), n = r == null ? void 0 : r.length, o = e !== void 0;
2510
2510
  if (!t || o && n !== e) {
2511
2511
  const i = s && `"${s}" `, a = o ? ` of length ${e}` : "", c = t ? `length=${n}` : `type=${typeof r}`;
@@ -2525,7 +2525,7 @@ function ke(r, e = !0) {
2525
2525
  throw new Error("Hash#digest() has already been called");
2526
2526
  }
2527
2527
  function ss(r, e) {
2528
- V(r, void 0, "digestInto() output");
2528
+ z(r, void 0, "digestInto() output");
2529
2529
  const s = e.outputLen;
2530
2530
  if (r.length < s)
2531
2531
  throw new Error('"digestInto() output" expected to be of length >=' + s);
@@ -2554,7 +2554,7 @@ function lr(r) {
2554
2554
  }
2555
2555
  const Ct = ar ? (r) => r : lr, rs = /* @ts-ignore */ typeof Uint8Array.from([]).toHex == "function" && typeof Uint8Array.fromHex == "function", dr = /* @__PURE__ */ Array.from({ length: 256 }, (r, e) => e.toString(16).padStart(2, "0"));
2556
2556
  function Me(r) {
2557
- if (V(r), rs)
2557
+ if (z(r), rs)
2558
2558
  return r.toHex();
2559
2559
  let e = "";
2560
2560
  for (let s = 0; s < r.length; s++)
@@ -2593,7 +2593,7 @@ function ve(...r) {
2593
2593
  let e = 0;
2594
2594
  for (let t = 0; t < r.length; t++) {
2595
2595
  const n = r[t];
2596
- V(n), e += n.length;
2596
+ z(n), e += n.length;
2597
2597
  }
2598
2598
  const s = new Uint8Array(e);
2599
2599
  for (let t = 0, n = 0; t < r.length; t++) {
@@ -2623,21 +2623,21 @@ function pr(r, e, s) {
2623
2623
  }
2624
2624
  class fr {
2625
2625
  constructor(e, s, t, n) {
2626
- A(this, "blockLen");
2627
- A(this, "outputLen");
2628
- A(this, "padOffset");
2629
- A(this, "isLE");
2626
+ I(this, "blockLen");
2627
+ I(this, "outputLen");
2628
+ I(this, "padOffset");
2629
+ I(this, "isLE");
2630
2630
  // For partial updates less than block size
2631
- A(this, "buffer");
2632
- A(this, "view");
2633
- A(this, "finished", !1);
2634
- A(this, "length", 0);
2635
- A(this, "pos", 0);
2636
- A(this, "destroyed", !1);
2631
+ I(this, "buffer");
2632
+ I(this, "view");
2633
+ I(this, "finished", !1);
2634
+ I(this, "length", 0);
2635
+ I(this, "pos", 0);
2636
+ I(this, "destroyed", !1);
2637
2637
  this.blockLen = e, this.outputLen = s, this.padOffset = t, this.isLE = n, this.buffer = new Uint8Array(e), this.view = Ze(this.buffer);
2638
2638
  }
2639
2639
  update(e) {
2640
- ke(this), V(e);
2640
+ ke(this), z(e);
2641
2641
  const { view: s, buffer: t, blockLen: n } = this, o = e.length;
2642
2642
  for (let i = 0; i < o; ) {
2643
2643
  const a = Math.min(n - this.pos, o - i);
@@ -2787,13 +2787,13 @@ class vr extends fr {
2787
2787
  for (let h = 0; h < 16; h++, s += 4)
2788
2788
  we[h] = e.getUint32(s, !1);
2789
2789
  for (let h = 16; h < 64; h++) {
2790
- const m = we[h - 15], x = we[h - 2], w = ue(m, 7) ^ ue(m, 18) ^ m >>> 3, E = ue(x, 17) ^ ue(x, 19) ^ x >>> 10;
2791
- we[h] = E + we[h - 7] + w + we[h - 16] | 0;
2790
+ const m = we[h - 15], x = we[h - 2], w = ue(m, 7) ^ ue(m, 18) ^ m >>> 3, v = ue(x, 17) ^ ue(x, 19) ^ x >>> 10;
2791
+ we[h] = v + we[h - 7] + w + we[h - 16] | 0;
2792
2792
  }
2793
2793
  let { A: t, B: n, C: o, D: i, E: a, F: c, G: l, H: d } = this;
2794
2794
  for (let h = 0; h < 64; h++) {
2795
- const m = ue(a, 6) ^ ue(a, 11) ^ ue(a, 25), x = d + m + hr(a, c, l) + br[h] + we[h] | 0, E = (ue(t, 2) ^ ue(t, 13) ^ ue(t, 22)) + pr(t, n, o) | 0;
2796
- d = l, l = c, c = a, a = i + x | 0, i = o, o = n, n = t, t = x + E | 0;
2795
+ const m = ue(a, 6) ^ ue(a, 11) ^ ue(a, 25), x = d + m + hr(a, c, l) + br[h] + we[h] | 0, v = (ue(t, 2) ^ ue(t, 13) ^ ue(t, 22)) + pr(t, n, o) | 0;
2796
+ d = l, l = c, c = a, a = i + x | 0, i = o, o = n, n = t, t = x + v | 0;
2797
2797
  }
2798
2798
  t = t + this.A | 0, n = n + this.B | 0, o = o + this.C | 0, i = i + this.D | 0, a = a + this.E | 0, c = c + this.F | 0, l = l + this.G | 0, d = d + this.H | 0, this.set(t, n, o, i, a, c, l, d);
2799
2799
  }
@@ -2809,14 +2809,14 @@ class Sr extends vr {
2809
2809
  super(32);
2810
2810
  // We cannot use array here since array allows indexing by variable
2811
2811
  // which means optimizer/compiler cannot use registers.
2812
- A(this, "A", me[0] | 0);
2813
- A(this, "B", me[1] | 0);
2814
- A(this, "C", me[2] | 0);
2815
- A(this, "D", me[3] | 0);
2816
- A(this, "E", me[4] | 0);
2817
- A(this, "F", me[5] | 0);
2818
- A(this, "G", me[6] | 0);
2819
- A(this, "H", me[7] | 0);
2812
+ I(this, "A", me[0] | 0);
2813
+ I(this, "B", me[1] | 0);
2814
+ I(this, "C", me[2] | 0);
2815
+ I(this, "D", me[3] | 0);
2816
+ I(this, "E", me[4] | 0);
2817
+ I(this, "F", me[5] | 0);
2818
+ I(this, "G", me[6] | 0);
2819
+ I(this, "H", me[7] | 0);
2820
2820
  }
2821
2821
  }
2822
2822
  const Er = /* @__PURE__ */ ns(
@@ -2853,7 +2853,7 @@ function ze(r) {
2853
2853
  return as(Me(r));
2854
2854
  }
2855
2855
  function cs(r) {
2856
- return as(Me(Ir(V(r)).reverse()));
2856
+ return as(Me(Ir(z(r)).reverse()));
2857
2857
  }
2858
2858
  function pt(r, e) {
2859
2859
  ge(e), r = is(r);
@@ -2980,7 +2980,7 @@ function Cr(r) {
2980
2980
  let l = a.pow(c, i), d = a.mul(l, t);
2981
2981
  const h = a.mul(l, n), m = a.mul(l, o), x = a.eql(a.sqr(d), c), w = a.eql(a.sqr(h), c);
2982
2982
  l = a.cmov(l, d, x), d = a.cmov(m, h, w);
2983
- const E = a.eql(a.sqr(d), c), y = a.cmov(l, d, E);
2983
+ const v = a.eql(a.sqr(d), c), y = a.cmov(l, d, v);
2984
2984
  return xt(a, y, c), y;
2985
2985
  };
2986
2986
  }
@@ -3008,9 +3008,9 @@ function xs(r) {
3008
3008
  for (; !c.eql(m, c.ONE); ) {
3009
3009
  if (c.is0(m))
3010
3010
  return c.ZERO;
3011
- let w = 1, E = c.sqr(m);
3012
- for (; !c.eql(E, c.ONE); )
3013
- if (w++, E = c.sqr(E), w === d)
3011
+ let w = 1, v = c.sqr(m);
3012
+ for (; !c.eql(v, c.ONE); )
3013
+ if (w++, v = c.sqr(v), w === d)
3014
3014
  throw new Error("Cannot find square root");
3015
3015
  const y = ee << BigInt(d - w - 1), S = c.pow(h, y);
3016
3016
  d = w, h = c.sqr(S), m = c.mul(m, h), x = c.mul(x, S);
@@ -3077,16 +3077,16 @@ function Br(r, e) {
3077
3077
  }
3078
3078
  class Ur {
3079
3079
  constructor(e, s = {}) {
3080
- A(this, "ORDER");
3081
- A(this, "BITS");
3082
- A(this, "BYTES");
3083
- A(this, "isLE");
3084
- A(this, "ZERO", ne);
3085
- A(this, "ONE", ee);
3086
- A(this, "_lengths");
3087
- A(this, "_sqrt");
3080
+ I(this, "ORDER");
3081
+ I(this, "BITS");
3082
+ I(this, "BYTES");
3083
+ I(this, "isLE");
3084
+ I(this, "ZERO", ne);
3085
+ I(this, "ONE", ee);
3086
+ I(this, "_lengths");
3087
+ I(this, "_sqrt");
3088
3088
  // cached sqrt
3089
- A(this, "_mod");
3089
+ I(this, "_mod");
3090
3090
  var i;
3091
3091
  if (e <= ne)
3092
3092
  throw new Error("invalid field: expected ORDER > 0, got " + e);
@@ -3162,7 +3162,7 @@ class Ur {
3162
3162
  return this.isLE ? ls(e, this.BYTES) : pt(e, this.BYTES);
3163
3163
  }
3164
3164
  fromBytes(e, s = !1) {
3165
- V(e);
3165
+ z(e);
3166
3166
  const { _lengths: t, BYTES: n, isLE: o, ORDER: i, _mod: a } = this;
3167
3167
  if (t) {
3168
3168
  if (!t.includes(e.length) || e.length > n)
@@ -3201,7 +3201,7 @@ function ws(r) {
3201
3201
  return e + Math.ceil(e / 2);
3202
3202
  }
3203
3203
  function Hr(r, e, s = !1) {
3204
- V(r);
3204
+ z(r);
3205
3205
  const t = r.length, n = ms(e), o = ws(e);
3206
3206
  if (t < 16 || t < o || t > 1024)
3207
3207
  throw new Error("expected " + o + "-1024 bytes of input, got " + t);
@@ -3245,10 +3245,10 @@ function Ft(r) {
3245
3245
  class Fr {
3246
3246
  // Parametrized with a given Point class (not individual point)
3247
3247
  constructor(e, s) {
3248
- A(this, "BASE");
3249
- A(this, "ZERO");
3250
- A(this, "Fn");
3251
- A(this, "bits");
3248
+ I(this, "BASE");
3249
+ I(this, "ZERO");
3250
+ I(this, "Fn");
3251
+ I(this, "bits");
3252
3252
  this.BASE = e.BASE, this.ZERO = e.ZERO, this.Fn = e.Fn, this.bits = s;
3253
3253
  }
3254
3254
  // non-const time multiplication ladder
@@ -3372,13 +3372,13 @@ function qr(r, e) {
3372
3372
  }
3373
3373
  class vs {
3374
3374
  constructor(e, s) {
3375
- A(this, "oHash");
3376
- A(this, "iHash");
3377
- A(this, "blockLen");
3378
- A(this, "outputLen");
3379
- A(this, "finished", !1);
3380
- A(this, "destroyed", !1);
3381
- if (ts(e), V(s, void 0, "key"), this.iHash = e.create(), typeof this.iHash.update != "function")
3375
+ I(this, "oHash");
3376
+ I(this, "iHash");
3377
+ I(this, "blockLen");
3378
+ I(this, "outputLen");
3379
+ I(this, "finished", !1);
3380
+ I(this, "destroyed", !1);
3381
+ if (ts(e), z(s, void 0, "key"), this.iHash = e.create(), typeof this.iHash.update != "function")
3382
3382
  throw new Error("Expected instance of class which extends utils.Hash");
3383
3383
  this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen;
3384
3384
  const t = this.blockLen, n = new Uint8Array(t);
@@ -3394,7 +3394,7 @@ class vs {
3394
3394
  return ke(this), this.iHash.update(e), this;
3395
3395
  }
3396
3396
  digestInto(e) {
3397
- ke(this), V(e, this.outputLen, "output"), this.finished = !0, this.iHash.digestInto(e), this.oHash.update(e), this.oHash.digestInto(e), this.destroy();
3397
+ ke(this), z(e, this.outputLen, "output"), this.finished = !0, this.iHash.digestInto(e), this.oHash.update(e), this.oHash.digestInto(e), this.destroy();
3398
3398
  }
3399
3399
  digest() {
3400
3400
  const e = new Uint8Array(this.oHash.outputLen);
@@ -3517,7 +3517,7 @@ const ye = {
3517
3517
  }
3518
3518
  },
3519
3519
  toSig(r) {
3520
- const { Err: e, _int: s, _tlv: t } = ye, n = V(r, void 0, "signature"), { v: o, l: i } = t.decode(48, n);
3520
+ const { Err: e, _int: s, _tlv: t } = ye, n = z(r, void 0, "signature"), { v: o, l: i } = t.decode(48, n);
3521
3521
  if (i.length)
3522
3522
  throw new e("invalid signature: left bytes after parsing");
3523
3523
  const { v: a, l: c } = t.decode(2, o), { v: l, l: d } = t.decode(2, c);
@@ -3550,121 +3550,121 @@ function jr(r, e = {}) {
3550
3550
  if (!t.isOdd)
3551
3551
  throw new Error("compression is not supported: Field does not have .isOdd()");
3552
3552
  }
3553
- function h(N, f, _) {
3554
- const { x: v, y: I } = f.toAffine(), L = t.toBytes(v);
3553
+ function h(A, f, _) {
3554
+ const { x: b, y: E } = f.toAffine(), M = t.toBytes(b);
3555
3555
  if (qe(_, "isCompressed"), _) {
3556
3556
  d();
3557
- const O = !t.isOdd(I);
3558
- return ve(Is(O), L);
3557
+ const O = !t.isOdd(E);
3558
+ return ve(Is(O), M);
3559
3559
  } else
3560
- return ve(Uint8Array.of(4), L, t.toBytes(I));
3560
+ return ve(Uint8Array.of(4), M, t.toBytes(E));
3561
3561
  }
3562
- function m(N) {
3563
- V(N, void 0, "Point");
3564
- const { publicKey: f, publicKeyUncompressed: _ } = l, v = N.length, I = N[0], L = N.subarray(1);
3565
- if (v === f && (I === 2 || I === 3)) {
3566
- const O = t.fromBytes(L);
3562
+ function m(A) {
3563
+ z(A, void 0, "Point");
3564
+ const { publicKey: f, publicKeyUncompressed: _ } = l, b = A.length, E = A[0], M = A.subarray(1);
3565
+ if (b === f && (E === 2 || E === 3)) {
3566
+ const O = t.fromBytes(M);
3567
3567
  if (!t.isValid(O))
3568
3568
  throw new Error("bad point: is not on curve, wrong x");
3569
- const M = E(O);
3569
+ const $ = v(O);
3570
3570
  let T;
3571
3571
  try {
3572
- T = t.sqrt(M);
3572
+ T = t.sqrt($);
3573
3573
  } catch (J) {
3574
3574
  const K = J instanceof Error ? ": " + J.message : "";
3575
3575
  throw new Error("bad point: is not on curve, sqrt error" + K);
3576
3576
  }
3577
3577
  d();
3578
- const $ = t.isOdd(T);
3579
- return (I & 1) === 1 !== $ && (T = t.neg(T)), { x: O, y: T };
3580
- } else if (v === _ && I === 4) {
3581
- const O = t.BYTES, M = t.fromBytes(L.subarray(0, O)), T = t.fromBytes(L.subarray(O, O * 2));
3582
- if (!y(M, T))
3578
+ const B = t.isOdd(T);
3579
+ return (E & 1) === 1 !== B && (T = t.neg(T)), { x: O, y: T };
3580
+ } else if (b === _ && E === 4) {
3581
+ const O = t.BYTES, $ = t.fromBytes(M.subarray(0, O)), T = t.fromBytes(M.subarray(O, O * 2));
3582
+ if (!y($, T))
3583
3583
  throw new Error("bad point: is not on curve");
3584
- return { x: M, y: T };
3584
+ return { x: $, y: T };
3585
3585
  } else
3586
- throw new Error(`bad point: got length ${v}, expected compressed=${f} or uncompressed=${_}`);
3586
+ throw new Error(`bad point: got length ${b}, expected compressed=${f} or uncompressed=${_}`);
3587
3587
  }
3588
3588
  const x = e.toBytes || h, w = e.fromBytes || m;
3589
- function E(N) {
3590
- const f = t.sqr(N), _ = t.mul(f, N);
3591
- return t.add(t.add(_, t.mul(N, o.a)), o.b);
3589
+ function v(A) {
3590
+ const f = t.sqr(A), _ = t.mul(f, A);
3591
+ return t.add(t.add(_, t.mul(A, o.a)), o.b);
3592
3592
  }
3593
- function y(N, f) {
3594
- const _ = t.sqr(f), v = E(N);
3595
- return t.eql(_, v);
3593
+ function y(A, f) {
3594
+ const _ = t.sqr(f), b = v(A);
3595
+ return t.eql(_, b);
3596
3596
  }
3597
3597
  if (!y(o.Gx, o.Gy))
3598
3598
  throw new Error("bad curve params: generator point");
3599
3599
  const S = t.mul(t.pow(o.a, He), zr), C = t.mul(t.sqr(o.b), BigInt(27));
3600
3600
  if (t.is0(t.add(S, C)))
3601
3601
  throw new Error("bad curve params: a or b");
3602
- function B(N, f, _ = !1) {
3602
+ function U(A, f, _ = !1) {
3603
3603
  if (!t.isValid(f) || _ && t.is0(f))
3604
- throw new Error(`bad point coordinate ${N}`);
3604
+ throw new Error(`bad point coordinate ${A}`);
3605
3605
  return f;
3606
3606
  }
3607
- function b(N) {
3608
- if (!(N instanceof W))
3607
+ function N(A) {
3608
+ if (!(A instanceof D))
3609
3609
  throw new Error("Weierstrass Point expected");
3610
3610
  }
3611
- function k(N) {
3611
+ function V(A) {
3612
3612
  if (!c || !c.basises)
3613
3613
  throw new Error("no endo");
3614
- return Kr(N, c.basises, n.ORDER);
3615
- }
3616
- const P = Mt((N, f) => {
3617
- const { X: _, Y: v, Z: I } = N;
3618
- if (t.eql(I, t.ONE))
3619
- return { x: _, y: v };
3620
- const L = N.is0();
3621
- f == null && (f = L ? t.ONE : t.inv(I));
3622
- const O = t.mul(_, f), M = t.mul(v, f), T = t.mul(I, f);
3623
- if (L)
3614
+ return Kr(A, c.basises, n.ORDER);
3615
+ }
3616
+ const W = Mt((A, f) => {
3617
+ const { X: _, Y: b, Z: E } = A;
3618
+ if (t.eql(E, t.ONE))
3619
+ return { x: _, y: b };
3620
+ const M = A.is0();
3621
+ f == null && (f = M ? t.ONE : t.inv(E));
3622
+ const O = t.mul(_, f), $ = t.mul(b, f), T = t.mul(E, f);
3623
+ if (M)
3624
3624
  return { x: t.ZERO, y: t.ZERO };
3625
3625
  if (!t.eql(T, t.ONE))
3626
3626
  throw new Error("invZ was invalid");
3627
- return { x: O, y: M };
3628
- }), G = Mt((N) => {
3629
- if (N.is0()) {
3630
- if (e.allowInfinityPoint && !t.is0(N.Y))
3627
+ return { x: O, y: $ };
3628
+ }), P = Mt((A) => {
3629
+ if (A.is0()) {
3630
+ if (e.allowInfinityPoint && !t.is0(A.Y))
3631
3631
  return;
3632
3632
  throw new Error("bad point: ZERO");
3633
3633
  }
3634
- const { x: f, y: _ } = N.toAffine();
3634
+ const { x: f, y: _ } = A.toAffine();
3635
3635
  if (!t.isValid(f) || !t.isValid(_))
3636
3636
  throw new Error("bad point: x or y not field elements");
3637
3637
  if (!y(f, _))
3638
3638
  throw new Error("bad point: equation left != right");
3639
- if (!N.isTorsionFree())
3639
+ if (!A.isTorsionFree())
3640
3640
  throw new Error("bad point: not in prime-order subgroup");
3641
3641
  return !0;
3642
3642
  });
3643
- function z(N, f, _, v, I) {
3644
- return _ = new W(t.mul(_.X, N), _.Y, _.Z), f = Ke(v, f), _ = Ke(I, _), f.add(_);
3643
+ function k(A, f, _, b, E) {
3644
+ return _ = new D(t.mul(_.X, A), _.Y, _.Z), f = Ke(b, f), _ = Ke(E, _), f.add(_);
3645
3645
  }
3646
3646
  const R = class R {
3647
3647
  /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
3648
- constructor(f, _, v) {
3649
- A(this, "X");
3650
- A(this, "Y");
3651
- A(this, "Z");
3652
- this.X = B("x", f), this.Y = B("y", _, !0), this.Z = B("z", v), Object.freeze(this);
3648
+ constructor(f, _, b) {
3649
+ I(this, "X");
3650
+ I(this, "Y");
3651
+ I(this, "Z");
3652
+ this.X = U("x", f), this.Y = U("y", _, !0), this.Z = U("z", b), Object.freeze(this);
3653
3653
  }
3654
3654
  static CURVE() {
3655
3655
  return o;
3656
3656
  }
3657
3657
  /** Does NOT validate if the point is valid. Use `.assertValidity()`. */
3658
3658
  static fromAffine(f) {
3659
- const { x: _, y: v } = f || {};
3660
- if (!f || !t.isValid(_) || !t.isValid(v))
3659
+ const { x: _, y: b } = f || {};
3660
+ if (!f || !t.isValid(_) || !t.isValid(b))
3661
3661
  throw new Error("invalid affine point");
3662
3662
  if (f instanceof R)
3663
3663
  throw new Error("projective point not allowed");
3664
- return t.is0(_) && t.is0(v) ? R.ZERO : new R(_, v, t.ONE);
3664
+ return t.is0(_) && t.is0(b) ? R.ZERO : new R(_, b, t.ONE);
3665
3665
  }
3666
3666
  static fromBytes(f) {
3667
- const _ = R.fromAffine(w(V(f, void 0, "point")));
3667
+ const _ = R.fromAffine(w(z(f, void 0, "point")));
3668
3668
  return _.assertValidity(), _;
3669
3669
  }
3670
3670
  static fromHex(f) {
@@ -3683,12 +3683,12 @@ function jr(r, e = {}) {
3683
3683
  * @returns
3684
3684
  */
3685
3685
  precompute(f = 8, _ = !0) {
3686
- return D.createCache(this, f), _ || this.multiply(He), this;
3686
+ return L.createCache(this, f), _ || this.multiply(He), this;
3687
3687
  }
3688
3688
  // TODO: return `this`
3689
3689
  /** A point on curve is valid if it conforms to equation. */
3690
3690
  assertValidity() {
3691
- G(this);
3691
+ P(this);
3692
3692
  }
3693
3693
  hasEvenY() {
3694
3694
  const { y: f } = this.toAffine();
@@ -3698,9 +3698,9 @@ function jr(r, e = {}) {
3698
3698
  }
3699
3699
  /** Compare one point to another. */
3700
3700
  equals(f) {
3701
- b(f);
3702
- const { X: _, Y: v, Z: I } = this, { X: L, Y: O, Z: M } = f, T = t.eql(t.mul(_, M), t.mul(L, I)), $ = t.eql(t.mul(v, M), t.mul(O, I));
3703
- return T && $;
3701
+ N(f);
3702
+ const { X: _, Y: b, Z: E } = this, { X: M, Y: O, Z: $ } = f, T = t.eql(t.mul(_, $), t.mul(M, E)), B = t.eql(t.mul(b, $), t.mul(O, E));
3703
+ return T && B;
3704
3704
  }
3705
3705
  /** Flips point to one corresponding to (x, -y) in Affine coordinates. */
3706
3706
  negate() {
@@ -3711,23 +3711,23 @@ function jr(r, e = {}) {
3711
3711
  // https://eprint.iacr.org/2015/1060, algorithm 3
3712
3712
  // Cost: 8M + 3S + 3*a + 2*b3 + 15add.
3713
3713
  double() {
3714
- const { a: f, b: _ } = o, v = t.mul(_, He), { X: I, Y: L, Z: O } = this;
3715
- let M = t.ZERO, T = t.ZERO, $ = t.ZERO, F = t.mul(I, I), J = t.mul(L, L), K = t.mul(O, O), H = t.mul(I, L);
3716
- return H = t.add(H, H), $ = t.mul(I, O), $ = t.add($, $), M = t.mul(f, $), T = t.mul(v, K), T = t.add(M, T), M = t.sub(J, T), T = t.add(J, T), T = t.mul(M, T), M = t.mul(H, M), $ = t.mul(v, $), K = t.mul(f, K), H = t.sub(F, K), H = t.mul(f, H), H = t.add(H, $), $ = t.add(F, F), F = t.add($, F), F = t.add(F, K), F = t.mul(F, H), T = t.add(T, F), K = t.mul(L, O), K = t.add(K, K), F = t.mul(K, H), M = t.sub(M, F), $ = t.mul(K, J), $ = t.add($, $), $ = t.add($, $), new R(M, T, $);
3714
+ const { a: f, b: _ } = o, b = t.mul(_, He), { X: E, Y: M, Z: O } = this;
3715
+ let $ = t.ZERO, T = t.ZERO, B = t.ZERO, G = t.mul(E, E), J = t.mul(M, M), K = t.mul(O, O), F = t.mul(E, M);
3716
+ return F = t.add(F, F), B = t.mul(E, O), B = t.add(B, B), $ = t.mul(f, B), T = t.mul(b, K), T = t.add($, T), $ = t.sub(J, T), T = t.add(J, T), T = t.mul($, T), $ = t.mul(F, $), B = t.mul(b, B), K = t.mul(f, K), F = t.sub(G, K), F = t.mul(f, F), F = t.add(F, B), B = t.add(G, G), G = t.add(B, G), G = t.add(G, K), G = t.mul(G, F), T = t.add(T, G), K = t.mul(M, O), K = t.add(K, K), G = t.mul(K, F), $ = t.sub($, G), B = t.mul(K, J), B = t.add(B, B), B = t.add(B, B), new R($, T, B);
3717
3717
  }
3718
3718
  // Renes-Costello-Batina exception-free addition formula.
3719
3719
  // There is 30% faster Jacobian formula, but it is not complete.
3720
3720
  // https://eprint.iacr.org/2015/1060, algorithm 1
3721
3721
  // Cost: 12M + 0S + 3*a + 3*b3 + 23add.
3722
3722
  add(f) {
3723
- b(f);
3724
- const { X: _, Y: v, Z: I } = this, { X: L, Y: O, Z: M } = f;
3725
- let T = t.ZERO, $ = t.ZERO, F = t.ZERO;
3723
+ N(f);
3724
+ const { X: _, Y: b, Z: E } = this, { X: M, Y: O, Z: $ } = f;
3725
+ let T = t.ZERO, B = t.ZERO, G = t.ZERO;
3726
3726
  const J = o.a, K = t.mul(o.b, He);
3727
- let H = t.mul(_, L), X = t.mul(v, O), Z = t.mul(I, M), oe = t.add(_, v), j = t.add(L, O);
3728
- oe = t.mul(oe, j), j = t.add(H, X), oe = t.sub(oe, j), j = t.add(_, I);
3729
- let Q = t.add(L, M);
3730
- return j = t.mul(j, Q), Q = t.add(H, Z), j = t.sub(j, Q), Q = t.add(v, I), T = t.add(O, M), Q = t.mul(Q, T), T = t.add(X, Z), Q = t.sub(Q, T), F = t.mul(J, j), T = t.mul(K, Z), F = t.add(T, F), T = t.sub(X, F), F = t.add(X, F), $ = t.mul(T, F), X = t.add(H, H), X = t.add(X, H), Z = t.mul(J, Z), j = t.mul(K, j), X = t.add(X, Z), Z = t.sub(H, Z), Z = t.mul(J, Z), j = t.add(j, Z), H = t.mul(X, j), $ = t.add($, H), H = t.mul(Q, j), T = t.mul(oe, T), T = t.sub(T, H), H = t.mul(oe, X), F = t.mul(Q, F), F = t.add(F, H), new R(T, $, F);
3727
+ let F = t.mul(_, M), X = t.mul(b, O), Z = t.mul(E, $), oe = t.add(_, b), j = t.add(M, O);
3728
+ oe = t.mul(oe, j), j = t.add(F, X), oe = t.sub(oe, j), j = t.add(_, E);
3729
+ let Q = t.add(M, $);
3730
+ return j = t.mul(j, Q), Q = t.add(F, Z), j = t.sub(j, Q), Q = t.add(b, E), T = t.add(O, $), Q = t.mul(Q, T), T = t.add(X, Z), Q = t.sub(Q, T), G = t.mul(J, j), T = t.mul(K, Z), G = t.add(T, G), T = t.sub(X, G), G = t.add(X, G), B = t.mul(T, G), X = t.add(F, F), X = t.add(X, F), Z = t.mul(J, Z), j = t.mul(K, j), X = t.add(X, Z), Z = t.sub(F, Z), Z = t.mul(J, Z), j = t.add(j, Z), F = t.mul(X, j), B = t.add(B, F), F = t.mul(Q, j), T = t.mul(oe, T), T = t.sub(T, F), F = t.mul(oe, X), G = t.mul(Q, G), G = t.add(G, F), new R(T, B, G);
3731
3731
  }
3732
3732
  subtract(f) {
3733
3733
  return this.add(f.negate());
@@ -3748,16 +3748,16 @@ function jr(r, e = {}) {
3748
3748
  const { endo: _ } = e;
3749
3749
  if (!n.isValidNot0(f))
3750
3750
  throw new Error("invalid scalar: out of range");
3751
- let v, I;
3752
- const L = (O) => D.cached(this, O, (M) => Ut(R, M));
3751
+ let b, E;
3752
+ const M = (O) => L.cached(this, O, ($) => Ut(R, $));
3753
3753
  if (_) {
3754
- const { k1neg: O, k1: M, k2neg: T, k2: $ } = k(f), { p: F, f: J } = L(M), { p: K, f: H } = L($);
3755
- I = J.add(H), v = z(_.beta, F, K, O, T);
3754
+ const { k1neg: O, k1: $, k2neg: T, k2: B } = V(f), { p: G, f: J } = M($), { p: K, f: F } = M(B);
3755
+ E = J.add(F), b = k(_.beta, G, K, O, T);
3756
3756
  } else {
3757
- const { p: O, f: M } = L(f);
3758
- v = O, I = M;
3757
+ const { p: O, f: $ } = M(f);
3758
+ b = O, E = $;
3759
3759
  }
3760
- return Ut(R, [v, I])[0];
3760
+ return Ut(R, [b, E])[0];
3761
3761
  }
3762
3762
  /**
3763
3763
  * Non-constant-time multiplication. Uses double-and-add algorithm.
@@ -3765,27 +3765,27 @@ function jr(r, e = {}) {
3765
3765
  * an exposed secret key e.g. sig verification, which works over *public* keys.
3766
3766
  */
3767
3767
  multiplyUnsafe(f) {
3768
- const { endo: _ } = e, v = this;
3768
+ const { endo: _ } = e, b = this;
3769
3769
  if (!n.isValid(f))
3770
3770
  throw new Error("invalid scalar: out of range");
3771
- if (f === _e || v.is0())
3771
+ if (f === _e || b.is0())
3772
3772
  return R.ZERO;
3773
3773
  if (f === Re)
3774
- return v;
3775
- if (D.hasCache(this))
3774
+ return b;
3775
+ if (L.hasCache(this))
3776
3776
  return this.multiply(f);
3777
3777
  if (_) {
3778
- const { k1neg: I, k1: L, k2neg: O, k2: M } = k(f), { p1: T, p2: $ } = Gr(R, v, L, M);
3779
- return z(_.beta, T, $, I, O);
3778
+ const { k1neg: E, k1: M, k2neg: O, k2: $ } = V(f), { p1: T, p2: B } = Gr(R, b, M, $);
3779
+ return k(_.beta, T, B, E, O);
3780
3780
  } else
3781
- return D.unsafe(v, f);
3781
+ return L.unsafe(b, f);
3782
3782
  }
3783
3783
  /**
3784
3784
  * Converts Projective point to affine (x, y) coordinates.
3785
3785
  * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch
3786
3786
  */
3787
3787
  toAffine(f) {
3788
- return P(this, f);
3788
+ return W(this, f);
3789
3789
  }
3790
3790
  /**
3791
3791
  * Checks whether Point is free of torsion elements (is in prime subgroup).
@@ -3793,7 +3793,7 @@ function jr(r, e = {}) {
3793
3793
  */
3794
3794
  isTorsionFree() {
3795
3795
  const { isTorsionFree: f } = e;
3796
- return i === Re ? !0 : f ? f(R, this) : D.unsafe(this, a).is0();
3796
+ return i === Re ? !0 : f ? f(R, this) : L.unsafe(this, a).is0();
3797
3797
  }
3798
3798
  clearCofactor() {
3799
3799
  const { clearCofactor: f } = e;
@@ -3813,14 +3813,14 @@ function jr(r, e = {}) {
3813
3813
  }
3814
3814
  };
3815
3815
  // base / generator point
3816
- A(R, "BASE", new R(o.Gx, o.Gy, t.ONE)), // zero / infinity / identity point
3817
- A(R, "ZERO", new R(t.ZERO, t.ONE, t.ZERO)), // 0, 1, 0
3816
+ I(R, "BASE", new R(o.Gx, o.Gy, t.ONE)), // zero / infinity / identity point
3817
+ I(R, "ZERO", new R(t.ZERO, t.ONE, t.ZERO)), // 0, 1, 0
3818
3818
  // math field
3819
- A(R, "Fp", t), // scalar field
3820
- A(R, "Fn", n);
3821
- let W = R;
3822
- const q = n.BITS, D = new Fr(W, e.endo ? Math.ceil(q / 2) : q);
3823
- return W.BASE.precompute(8), W;
3819
+ I(R, "Fp", t), // scalar field
3820
+ I(R, "Fn", n);
3821
+ let D = R;
3822
+ const q = n.BITS, L = new Fr(D, e.endo ? Math.ceil(q / 2) : q);
3823
+ return D.BASE.precompute(8), D;
3824
3824
  }
3825
3825
  function Is(r) {
3826
3826
  return Uint8Array.of(r ? 2 : 3);
@@ -3845,34 +3845,34 @@ function Yr(r, e = {}) {
3845
3845
  }
3846
3846
  }
3847
3847
  function i(x, w) {
3848
- const { publicKey: E, publicKeyUncompressed: y } = n;
3848
+ const { publicKey: v, publicKeyUncompressed: y } = n;
3849
3849
  try {
3850
3850
  const S = x.length;
3851
- return w === !0 && S !== E || w === !1 && S !== y ? !1 : !!r.fromBytes(x);
3851
+ return w === !0 && S !== v || w === !1 && S !== y ? !1 : !!r.fromBytes(x);
3852
3852
  } catch {
3853
3853
  return !1;
3854
3854
  }
3855
3855
  }
3856
3856
  function a(x = t(n.seed)) {
3857
- return Hr(V(x, n.seed, "seed"), s.ORDER);
3857
+ return Hr(z(x, n.seed, "seed"), s.ORDER);
3858
3858
  }
3859
3859
  function c(x, w = !0) {
3860
3860
  return r.BASE.multiply(s.fromBytes(x)).toBytes(w);
3861
3861
  }
3862
3862
  function l(x) {
3863
- const { secretKey: w, publicKey: E, publicKeyUncompressed: y } = n;
3864
- if (!ut(x) || "_lengths" in s && s._lengths || w === E)
3863
+ const { secretKey: w, publicKey: v, publicKeyUncompressed: y } = n;
3864
+ if (!ut(x) || "_lengths" in s && s._lengths || w === v)
3865
3865
  return;
3866
- const S = V(x, void 0, "key").length;
3867
- return S === E || S === y;
3866
+ const S = z(x, void 0, "key").length;
3867
+ return S === v || S === y;
3868
3868
  }
3869
- function d(x, w, E = !0) {
3869
+ function d(x, w, v = !0) {
3870
3870
  if (l(x) === !0)
3871
3871
  throw new Error("first arg must be private key");
3872
3872
  if (l(w) === !1)
3873
3873
  throw new Error("second arg must be public key");
3874
3874
  const y = s.fromBytes(x);
3875
- return r.fromBytes(w).multiply(y).toBytes(E);
3875
+ return r.fromBytes(w).multiply(y).toBytes(v);
3876
3876
  }
3877
3877
  const h = {
3878
3878
  isValidSecretKey: o,
@@ -3894,7 +3894,7 @@ function Jr(r, e, s = {}) {
3894
3894
  lowS: typeof s.lowS == "boolean" ? s.lowS : !0,
3895
3895
  format: "compact",
3896
3896
  extraEntropy: !1
3897
- }, E = a * Es < o.ORDER;
3897
+ }, v = a * Es < o.ORDER;
3898
3898
  function y(f) {
3899
3899
  const _ = a >> Re;
3900
3900
  return f > _;
@@ -3905,39 +3905,39 @@ function Jr(r, e, s = {}) {
3905
3905
  return _;
3906
3906
  }
3907
3907
  function C() {
3908
- if (E)
3908
+ if (v)
3909
3909
  throw new Error('"recovered" sig type is not supported for cofactor >2 curves');
3910
3910
  }
3911
- function B(f, _) {
3911
+ function U(f, _) {
3912
3912
  ct(_);
3913
- const v = x.signature, I = _ === "compact" ? v : _ === "recovered" ? v + 1 : void 0;
3914
- return V(f, I);
3915
- }
3916
- class b {
3917
- constructor(_, v, I) {
3918
- A(this, "r");
3919
- A(this, "s");
3920
- A(this, "recovery");
3921
- if (this.r = S("r", _), this.s = S("s", v), I != null) {
3922
- if (C(), ![0, 1, 2, 3].includes(I))
3913
+ const b = x.signature, E = _ === "compact" ? b : _ === "recovered" ? b + 1 : void 0;
3914
+ return z(f, E);
3915
+ }
3916
+ class N {
3917
+ constructor(_, b, E) {
3918
+ I(this, "r");
3919
+ I(this, "s");
3920
+ I(this, "recovery");
3921
+ if (this.r = S("r", _), this.s = S("s", b), E != null) {
3922
+ if (C(), ![0, 1, 2, 3].includes(E))
3923
3923
  throw new Error("invalid recovery id");
3924
- this.recovery = I;
3924
+ this.recovery = E;
3925
3925
  }
3926
3926
  Object.freeze(this);
3927
3927
  }
3928
- static fromBytes(_, v = w.format) {
3929
- B(_, v);
3930
- let I;
3931
- if (v === "der") {
3932
- const { r: T, s: $ } = ye.toSig(V(_));
3933
- return new b(T, $);
3928
+ static fromBytes(_, b = w.format) {
3929
+ U(_, b);
3930
+ let E;
3931
+ if (b === "der") {
3932
+ const { r: T, s: B } = ye.toSig(z(_));
3933
+ return new N(T, B);
3934
3934
  }
3935
- v === "recovered" && (I = _[0], v = "compact", _ = _.subarray(1));
3936
- const L = x.signature / 2, O = _.subarray(0, L), M = _.subarray(L, L * 2);
3937
- return new b(i.fromBytes(O), i.fromBytes(M), I);
3935
+ b === "recovered" && (E = _[0], b = "compact", _ = _.subarray(1));
3936
+ const M = x.signature / 2, O = _.subarray(0, M), $ = _.subarray(M, M * 2);
3937
+ return new N(i.fromBytes(O), i.fromBytes($), E);
3938
3938
  }
3939
- static fromHex(_, v) {
3940
- return this.fromBytes(We(_), v);
3939
+ static fromHex(_, b) {
3940
+ return this.fromBytes(We(_), b);
3941
3941
  }
3942
3942
  assertRecovery() {
3943
3943
  const { recovery: _ } = this;
@@ -3946,16 +3946,16 @@ function Jr(r, e, s = {}) {
3946
3946
  return _;
3947
3947
  }
3948
3948
  addRecoveryBit(_) {
3949
- return new b(this.r, this.s, _);
3949
+ return new N(this.r, this.s, _);
3950
3950
  }
3951
3951
  recoverPublicKey(_) {
3952
- const { r: v, s: I } = this, L = this.assertRecovery(), O = L === 2 || L === 3 ? v + a : v;
3952
+ const { r: b, s: E } = this, M = this.assertRecovery(), O = M === 2 || M === 3 ? b + a : b;
3953
3953
  if (!o.isValid(O))
3954
3954
  throw new Error("invalid recovery id: sig.r+curve.n != R.x");
3955
- const M = o.toBytes(O), T = r.fromBytes(ve(Is((L & 1) === 0), M)), $ = i.inv(O), F = P(V(_, void 0, "msgHash")), J = i.create(-F * $), K = i.create(I * $), H = r.BASE.multiplyUnsafe(J).add(T.multiplyUnsafe(K));
3956
- if (H.is0())
3955
+ const $ = o.toBytes(O), T = r.fromBytes(ve(Is((M & 1) === 0), $)), B = i.inv(O), G = W(z(_, void 0, "msgHash")), J = i.create(-G * B), K = i.create(E * B), F = r.BASE.multiplyUnsafe(J).add(T.multiplyUnsafe(K));
3956
+ if (F.is0())
3957
3957
  throw new Error("invalid recovery: point at infinify");
3958
- return H.assertValidity(), H;
3958
+ return F.assertValidity(), F;
3959
3959
  }
3960
3960
  // Signatures should be low-s, to prevent malleability.
3961
3961
  hasHighS() {
@@ -3964,41 +3964,41 @@ function Jr(r, e, s = {}) {
3964
3964
  toBytes(_ = w.format) {
3965
3965
  if (ct(_), _ === "der")
3966
3966
  return We(ye.hexFromSig(this));
3967
- const { r: v, s: I } = this, L = i.toBytes(v), O = i.toBytes(I);
3968
- return _ === "recovered" ? (C(), ve(Uint8Array.of(this.assertRecovery()), L, O)) : ve(L, O);
3967
+ const { r: b, s: E } = this, M = i.toBytes(b), O = i.toBytes(E);
3968
+ return _ === "recovered" ? (C(), ve(Uint8Array.of(this.assertRecovery()), M, O)) : ve(M, O);
3969
3969
  }
3970
3970
  toHex(_) {
3971
3971
  return Me(this.toBytes(_));
3972
3972
  }
3973
3973
  }
3974
- const k = s.bits2int || function(_) {
3974
+ const V = s.bits2int || function(_) {
3975
3975
  if (_.length > 8192)
3976
3976
  throw new Error("input is too large");
3977
- const v = ze(_), I = _.length * 8 - c;
3978
- return I > 0 ? v >> BigInt(I) : v;
3979
- }, P = s.bits2int_modN || function(_) {
3980
- return i.create(k(_));
3981
- }, G = ft(c);
3982
- function z(f) {
3983
- return Tr("num < 2^" + c, f, _e, G), i.toBytes(f);
3984
- }
3985
- function W(f, _) {
3986
- return V(f, void 0, "message"), _ ? V(e(f), void 0, "prehashed message") : f;
3987
- }
3988
- function q(f, _, v) {
3989
- const { lowS: I, prehash: L, extraEntropy: O } = st(v, w);
3990
- f = W(f, L);
3991
- const M = P(f), T = i.fromBytes(_);
3977
+ const b = ze(_), E = _.length * 8 - c;
3978
+ return E > 0 ? b >> BigInt(E) : b;
3979
+ }, W = s.bits2int_modN || function(_) {
3980
+ return i.create(V(_));
3981
+ }, P = ft(c);
3982
+ function k(f) {
3983
+ return Tr("num < 2^" + c, f, _e, P), i.toBytes(f);
3984
+ }
3985
+ function D(f, _) {
3986
+ return z(f, void 0, "message"), _ ? z(e(f), void 0, "prehashed message") : f;
3987
+ }
3988
+ function q(f, _, b) {
3989
+ const { lowS: E, prehash: M, extraEntropy: O } = st(b, w);
3990
+ f = D(f, M);
3991
+ const $ = W(f), T = i.fromBytes(_);
3992
3992
  if (!i.isValidNot0(T))
3993
3993
  throw new Error("invalid private key");
3994
- const $ = [z(T), z(M)];
3994
+ const B = [k(T), k($)];
3995
3995
  if (O != null && O !== !1) {
3996
- const H = O === !0 ? t(x.secretKey) : O;
3997
- $.push(V(H, void 0, "extraEntropy"));
3996
+ const F = O === !0 ? t(x.secretKey) : O;
3997
+ B.push(z(F, void 0, "extraEntropy"));
3998
3998
  }
3999
- const F = ve(...$), J = M;
4000
- function K(H) {
4001
- const X = k(H);
3999
+ const G = ve(...B), J = $;
4000
+ function K(F) {
4001
+ const X = V(F);
4002
4002
  if (!i.isValidNot0(X))
4003
4003
  return;
4004
4004
  const Z = i.inv(X), oe = r.BASE.multiply(X).toAffine(), j = i.create(oe.x);
@@ -4008,34 +4008,34 @@ function Jr(r, e, s = {}) {
4008
4008
  if (Q === _e)
4009
4009
  return;
4010
4010
  let yt = (oe.x === j ? 0 : 2) | Number(oe.y & Re), bt = Q;
4011
- return I && y(Q) && (bt = i.neg(Q), yt ^= 1), new b(j, bt, E ? void 0 : yt);
4011
+ return E && y(Q) && (bt = i.neg(Q), yt ^= 1), new N(j, bt, v ? void 0 : yt);
4012
4012
  }
4013
- return { seed: F, k2sig: K };
4013
+ return { seed: G, k2sig: K };
4014
4014
  }
4015
- function D(f, _, v = {}) {
4016
- const { seed: I, k2sig: L } = q(f, _, v);
4017
- return kr(e.outputLen, i.BYTES, n)(I, L).toBytes(v.format);
4015
+ function L(f, _, b = {}) {
4016
+ const { seed: E, k2sig: M } = q(f, _, b);
4017
+ return kr(e.outputLen, i.BYTES, n)(E, M).toBytes(b.format);
4018
4018
  }
4019
- function R(f, _, v, I = {}) {
4020
- const { lowS: L, prehash: O, format: M } = st(I, w);
4021
- if (v = V(v, void 0, "publicKey"), _ = W(_, O), !ut(f)) {
4022
- const T = f instanceof b ? ", use sig.toBytes()" : "";
4019
+ function R(f, _, b, E = {}) {
4020
+ const { lowS: M, prehash: O, format: $ } = st(E, w);
4021
+ if (b = z(b, void 0, "publicKey"), _ = D(_, O), !ut(f)) {
4022
+ const T = f instanceof N ? ", use sig.toBytes()" : "";
4023
4023
  throw new Error("verify expects Uint8Array signature" + T);
4024
4024
  }
4025
- B(f, M);
4025
+ U(f, $);
4026
4026
  try {
4027
- const T = b.fromBytes(f, M), $ = r.fromBytes(v);
4028
- if (L && T.hasHighS())
4027
+ const T = N.fromBytes(f, $), B = r.fromBytes(b);
4028
+ if (M && T.hasHighS())
4029
4029
  return !1;
4030
- const { r: F, s: J } = T, K = P(_), H = i.inv(J), X = i.create(K * H), Z = i.create(F * H), oe = r.BASE.multiplyUnsafe(X).add($.multiplyUnsafe(Z));
4031
- return oe.is0() ? !1 : i.create(oe.x) === F;
4030
+ const { r: G, s: J } = T, K = W(_), F = i.inv(J), X = i.create(K * F), Z = i.create(G * F), oe = r.BASE.multiplyUnsafe(X).add(B.multiplyUnsafe(Z));
4031
+ return oe.is0() ? !1 : i.create(oe.x) === G;
4032
4032
  } catch {
4033
4033
  return !1;
4034
4034
  }
4035
4035
  }
4036
- function N(f, _, v = {}) {
4037
- const { prehash: I } = st(v, w);
4038
- return _ = W(_, I), b.fromBytes(f, "recovered").recoverPublicKey(_).toBytes();
4036
+ function A(f, _, b = {}) {
4037
+ const { prehash: E } = st(b, w);
4038
+ return _ = D(_, E), N.fromBytes(f, "recovered").recoverPublicKey(_).toBytes();
4039
4039
  }
4040
4040
  return Object.freeze({
4041
4041
  keygen: l,
@@ -4044,10 +4044,10 @@ function Jr(r, e, s = {}) {
4044
4044
  utils: m,
4045
4045
  lengths: x,
4046
4046
  Point: r,
4047
- sign: D,
4047
+ sign: L,
4048
4048
  verify: R,
4049
- recoverPublicKey: N,
4050
- Signature: b,
4049
+ recoverPublicKey: A,
4050
+ Signature: N,
4051
4051
  hash: e
4052
4052
  });
4053
4053
  }
@@ -4068,10 +4068,10 @@ const gt = {
4068
4068
  ]
4069
4069
  }, qt = /* @__PURE__ */ BigInt(2);
4070
4070
  function Zr(r) {
4071
- const e = gt.p, s = BigInt(3), t = BigInt(6), n = BigInt(11), o = BigInt(22), i = BigInt(23), a = BigInt(44), c = BigInt(88), l = r * r * r % e, d = l * l * r % e, h = ae(d, s, e) * d % e, m = ae(h, s, e) * d % e, x = ae(m, qt, e) * l % e, w = ae(x, n, e) * x % e, E = ae(w, o, e) * w % e, y = ae(E, a, e) * E % e, S = ae(y, c, e) * y % e, C = ae(S, a, e) * E % e, B = ae(C, s, e) * d % e, b = ae(B, i, e) * w % e, k = ae(b, t, e) * l % e, P = ae(k, qt, e);
4072
- if (!lt.eql(lt.sqr(P), r))
4071
+ const e = gt.p, s = BigInt(3), t = BigInt(6), n = BigInt(11), o = BigInt(22), i = BigInt(23), a = BigInt(44), c = BigInt(88), l = r * r * r % e, d = l * l * r % e, h = ae(d, s, e) * d % e, m = ae(h, s, e) * d % e, x = ae(m, qt, e) * l % e, w = ae(x, n, e) * x % e, v = ae(w, o, e) * w % e, y = ae(v, a, e) * v % e, S = ae(y, c, e) * y % e, C = ae(S, a, e) * v % e, U = ae(C, s, e) * d % e, N = ae(U, i, e) * w % e, V = ae(N, t, e) * l % e, W = ae(V, qt, e);
4072
+ if (!lt.eql(lt.sqr(W), r))
4073
4073
  throw new Error("Cannot find square root");
4074
- return P;
4074
+ return W;
4075
4075
  }
4076
4076
  const lt = je(gt.p, { sqrt: Zr }), Qr = /* @__PURE__ */ jr(gt, {
4077
4077
  Fp: lt,
@@ -4113,17 +4113,17 @@ function ln(r, e = 24) {
4113
4113
  class mt {
4114
4114
  // NOTE: we accept arguments in bytes instead of bits here.
4115
4115
  constructor(e, s, t, n = !1, o = 24) {
4116
- A(this, "state");
4117
- A(this, "pos", 0);
4118
- A(this, "posOut", 0);
4119
- A(this, "finished", !1);
4120
- A(this, "state32");
4121
- A(this, "destroyed", !1);
4122
- A(this, "blockLen");
4123
- A(this, "suffix");
4124
- A(this, "outputLen");
4125
- A(this, "enableXOF", !1);
4126
- A(this, "rounds");
4116
+ I(this, "state");
4117
+ I(this, "pos", 0);
4118
+ I(this, "posOut", 0);
4119
+ I(this, "finished", !1);
4120
+ I(this, "state32");
4121
+ I(this, "destroyed", !1);
4122
+ I(this, "blockLen");
4123
+ I(this, "suffix");
4124
+ I(this, "outputLen");
4125
+ I(this, "enableXOF", !1);
4126
+ I(this, "rounds");
4127
4127
  if (this.blockLen = e, this.suffix = s, this.outputLen = t, this.enableXOF = n, this.rounds = o, ge(t, "outputLen"), !(0 < e && e < 200))
4128
4128
  throw new Error("only keccak-f1600 function is supported");
4129
4129
  this.state = new Uint8Array(200), this.state32 = ir(this.state);
@@ -4135,7 +4135,7 @@ class mt {
4135
4135
  Ct(this.state32), ln(this.state32, this.rounds), Ct(this.state32), this.posOut = 0, this.pos = 0;
4136
4136
  }
4137
4137
  update(e) {
4138
- ke(this), V(e);
4138
+ ke(this), z(e);
4139
4139
  const { blockLen: s, state: t } = this, n = e.length;
4140
4140
  for (let o = 0; o < n; ) {
4141
4141
  const i = Math.min(s - this.pos, n - o);
@@ -4153,7 +4153,7 @@ class mt {
4153
4153
  e[t] ^= s, s & 128 && t === n - 1 && this.keccak(), e[n - 1] ^= 128, this.keccak();
4154
4154
  }
4155
4155
  writeInto(e) {
4156
- ke(this, !1), V(e), this.finish();
4156
+ ke(this, !1), z(e), this.finish();
4157
4157
  const s = this.state, { blockLen: t } = this;
4158
4158
  for (let n = 0, o = e.length; n < o; ) {
4159
4159
  this.posOut >= t && this.keccak();
@@ -4254,10 +4254,10 @@ ${t.length}`
4254
4254
  const i = zt(o), a = s.startsWith("0x") ? s.slice(2) : s;
4255
4255
  if (a.length !== 130)
4256
4256
  throw new Error(`서명 길이가 유효하지 않습니다: 130 hex 문자 예상, 현재 ${a.length}`);
4257
- const c = pn(a), l = c.slice(0, 32), d = c.slice(32, 64), h = c[64], m = h >= 27 ? h - 27 : h, E = new en.Signature(
4257
+ const c = pn(a), l = c.slice(0, 32), d = c.slice(32, 64), h = c[64], m = h >= 27 ? h - 27 : h, v = new en.Signature(
4258
4258
  jt(l),
4259
4259
  jt(d)
4260
- ).addRecoveryBit(m).recoverPublicKey(i).toBytes(!1).slice(1), y = zt(E);
4260
+ ).addRecoveryBit(m).recoverPublicKey(i).toBytes(!1).slice(1), y = zt(v);
4261
4261
  return "0x" + Me(y.slice(12));
4262
4262
  }
4263
4263
  }
@@ -4403,58 +4403,58 @@ class be {
4403
4403
  return;
4404
4404
  }
4405
4405
  const x = setTimeout(() => {
4406
- u.warn("[CROSSx] OAuth 타임아웃 (5분) — postMessage를 수신하지 못했습니다"), b(), t(new Error("Authentication timeout"));
4407
- }, 5 * 60 * 1e3), w = 10, E = 30;
4406
+ u.warn("[CROSSx] OAuth 타임아웃 (5분) — postMessage를 수신하지 못했습니다"), N(), t(new Error("Authentication timeout"));
4407
+ }, 5 * 60 * 1e3), w = 10, v = 30;
4408
4408
  let y = 0, S = null;
4409
4409
  const C = () => {
4410
- clearInterval(B), u.warn("[CROSSx] COOP 감지 — OAuth 서버 응답을 " + E + "초간 대기합니다"), S = setTimeout(() => {
4411
- b(), t(new Error(
4410
+ clearInterval(U), u.warn("[CROSSx] COOP 감지 — OAuth 서버 응답을 " + v + "초간 대기합니다"), S = setTimeout(() => {
4411
+ N(), t(new Error(
4412
4412
  "OAuth 서버로부터 응답을 받지 못했습니다. 브라우저 보안 정책(COOP)으로 인해 팝업 통신이 차단되었을 수 있습니다. 다시 시도해 주세요."
4413
4413
  ));
4414
- }, E * 1e3);
4415
- }, B = setInterval(() => {
4414
+ }, v * 1e3);
4415
+ }, U = setInterval(() => {
4416
4416
  y++;
4417
4417
  try {
4418
- m.closed && (y <= w ? C() : (b(), t(new Error("로그인이 취소되었습니다"))));
4418
+ m.closed && (y <= w ? C() : (N(), t(new Error("로그인이 취소되었습니다"))));
4419
4419
  } catch {
4420
4420
  C();
4421
4421
  }
4422
- }, 1e3), b = () => {
4423
- clearTimeout(x), clearInterval(B), S && clearTimeout(S), window.removeEventListener("message", k);
4424
- }, k = (P) => {
4425
- var z, W, q, D, R;
4426
- if (P.origin !== e.expectedOrigin) return;
4427
- if (!gn.has(P.origin)) {
4428
- u.error("[CROSSx] postMessage origin이 허용 목록에 없음:", P.origin), b(), t(new Error("Unauthorized OAuth origin"));
4422
+ }, 1e3), N = () => {
4423
+ clearTimeout(x), clearInterval(U), S && clearTimeout(S), window.removeEventListener("message", V);
4424
+ }, V = (W) => {
4425
+ var k, D, q, L, R;
4426
+ if (W.origin !== e.expectedOrigin) return;
4427
+ if (!gn.has(W.origin)) {
4428
+ u.error("[CROSSx] postMessage origin이 허용 목록에 없음:", W.origin), N(), t(new Error("Unauthorized OAuth origin"));
4429
4429
  return;
4430
4430
  }
4431
- b(), u.log("[CROSSx] OAuth postMessage 수신 — status:", P.data.status);
4432
- const G = P.data.state ?? ((z = P.data.data) == null ? void 0 : z.state);
4433
- if (!G || G !== c) {
4431
+ N(), u.log("[CROSSx] OAuth postMessage 수신 — status:", W.data.status);
4432
+ const P = W.data.state ?? ((k = W.data.data) == null ? void 0 : k.state);
4433
+ if (!P || P !== c) {
4434
4434
  t(new Error("OAuth state mismatch — possible CSRF attack"));
4435
4435
  return;
4436
4436
  }
4437
- if (P.data.status === "success") {
4438
- const N = (W = P.data.data) == null ? void 0 : W.idToken, f = (q = P.data.data) == null ? void 0 : q.accessToken, _ = f ?? N;
4437
+ if (W.data.status === "success") {
4438
+ const A = (D = W.data.data) == null ? void 0 : D.idToken, f = (q = W.data.data) == null ? void 0 : q.accessToken, _ = f ?? A;
4439
4439
  if (u.log("[CROSSx] OAuth 토큰 수신:", {
4440
4440
  hasAccessToken: !!f,
4441
- hasIdToken: !!N
4441
+ hasIdToken: !!A
4442
4442
  }), !_) {
4443
- u.error("[CROSSx] 토큰을 찾을 수 없음:", P.data), t(new Error("Token not found in response"));
4443
+ u.error("[CROSSx] 토큰을 찾을 수 없음:", W.data), t(new Error("Token not found in response"));
4444
4444
  return;
4445
4445
  }
4446
- N ? be.verifyIdTokenNonce(N, l).then(() => s(_)).catch((v) => {
4447
- u.error("[CROSSx] nonce 검증 실패:", v), t(v instanceof Error ? v : new Error("nonce verification failed"));
4448
- }) : f ? f.split(".").length === 3 ? be.verifyIdTokenNonce(f, l).then(() => s(_)).catch((I) => {
4449
- u.error("[CROSSx] accessToken nonce 검증 실패:", I), t(I instanceof Error ? I : new Error("nonce verification failed"));
4446
+ A ? be.verifyIdTokenNonce(A, l).then(() => s(_)).catch((b) => {
4447
+ u.error("[CROSSx] nonce 검증 실패:", b), t(b instanceof Error ? b : new Error("nonce verification failed"));
4448
+ }) : f ? f.split(".").length === 3 ? be.verifyIdTokenNonce(f, l).then(() => s(_)).catch((E) => {
4449
+ u.error("[CROSSx] accessToken nonce 검증 실패:", E), t(E instanceof Error ? E : new Error("nonce verification failed"));
4450
4450
  }) : (u.warn(
4451
4451
  "[CROSSx] opaque accessToken만 수신 (idToken 없음) — nonce 검증 불가.",
4452
4452
  "서버 측 nonce 검증이 필요합니다."
4453
4453
  ), s(_)) : t(new Error("Token not found in response"));
4454
4454
  } else
4455
- u.error("[CROSSx] OAuth 실패:", (D = P.data.data) == null ? void 0 : D.error), t(new Error(((R = P.data.data) == null ? void 0 : R.error) || "Authentication failed"));
4455
+ u.error("[CROSSx] OAuth 실패:", (L = W.data.data) == null ? void 0 : L.error), t(new Error(((R = W.data.data) == null ? void 0 : R.error) || "Authentication failed"));
4456
4456
  };
4457
- window.addEventListener("message", k);
4457
+ window.addEventListener("message", V);
4458
4458
  });
4459
4459
  }
4460
4460
  }
@@ -4650,7 +4650,7 @@ class Le {
4650
4650
  url: o,
4651
4651
  method: e
4652
4652
  });
4653
- const m = Le.mapGatewayError(d.code, d.data), x = Le.getGatewayErrorMessage(d.code, h), w = d.data, E = m === p.PIN_LOCKED ? Le.extractLockDetails(w) : w ?? void 0, y = new g(m, x, E);
4653
+ const m = Le.mapGatewayError(d.code, d.data), x = Le.getGatewayErrorMessage(d.code, h), w = d.data, v = m === p.PIN_LOCKED ? Le.extractLockDetails(w) : w ?? void 0, y = new g(m, x, v);
4654
4654
  throw m === p.AUTH_NOT_AUTHENTICATED && this._onUnauthorized && (u.warn("[CROSSx] Gateway -10002 감지 — 강제 로그아웃 실행"), this._onUnauthorized()), y;
4655
4655
  }
4656
4656
  return u.log("[CROSSx] Wallet Gateway API 성공:", { code: d.code, url: o, method: e }), d.data ?? d;
@@ -6988,7 +6988,7 @@ function Y(r, e) {
6988
6988
  }
6989
6989
  function Tn(r, e) {
6990
6990
  const s = e, t = Ye(r.dappName), n = r.to ? `<span class="__crossx-addr-text">${se(r.to)}</span>
6991
- <button class="__crossx-copy-btn" data-copy="${U(r.to)}" title="Copy address">${xe}</button>` : "<span>—</span>", o = Os(r), i = r.data ?? "0x", a = document.createElement("div");
6991
+ <button class="__crossx-copy-btn" data-copy="${H(r.to)}" title="Copy address">${xe}</button>` : "<span>—</span>", o = Os(r), i = r.data ?? "0x", a = document.createElement("div");
6992
6992
  return a.id = te, a.innerHTML = `
6993
6993
  <div class="__crossx-card __crossx-card--migration __crossx-card--sign-tx" style="${ce(s)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
6994
6994
  <div class="__crossx-header">
@@ -7000,7 +7000,7 @@ function Tn(r, e) {
7000
7000
  <div class="__crossx-body-cols">
7001
7001
  <div class="__crossx-col-left">
7002
7002
  <p class="__crossx-sig-subtitle">
7003
- <span class="__crossx-sig-origin">${U(t)} </span>is requesting a Signature
7003
+ <span class="__crossx-sig-origin">${H(t)} </span>is requesting a Signature
7004
7004
  </p>
7005
7005
  <div class="__crossx-addr-pill">
7006
7006
  ${wt}
@@ -7015,7 +7015,7 @@ function Tn(r, e) {
7015
7015
  ${Y("Network", `<span>${Ns(r.chainId)}</span>`)}
7016
7016
  ${o}
7017
7017
  </div>
7018
- <pre class="__crossx-raw-tx">${U(i)}</pre>
7018
+ <pre class="__crossx-raw-tx">${H(i)}</pre>
7019
7019
  </div>
7020
7020
  </div>
7021
7021
  <div class="__crossx-btn-row">
@@ -7028,7 +7028,7 @@ function Tn(r, e) {
7028
7028
  }
7029
7029
  function Rn(r, e) {
7030
7030
  const s = e, t = r.nativeSymbol ?? "ETH", n = r.nativeDecimals ?? 18, o = Ye(r.dappName), i = r.to ? `<span class="__crossx-addr-text">${se(r.to)}</span>
7031
- <button class="__crossx-copy-btn" data-copy="${U(r.to)}" title="Copy address">${xe}</button>` : "<span>—</span>", a = Os(r), l = bn(r.value, t, n) ?? "—", d = document.createElement("div");
7031
+ <button class="__crossx-copy-btn" data-copy="${H(r.to)}" title="Copy address">${xe}</button>` : "<span>—</span>", a = Os(r), l = bn(r.value, t, n) ?? "—", d = document.createElement("div");
7032
7032
  return d.id = te, d.innerHTML = `
7033
7033
  <div class="__crossx-card __crossx-card--migration __crossx-card--send-tx" style="${ce(s)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
7034
7034
  <div class="__crossx-header">
@@ -7038,7 +7038,7 @@ function Rn(r, e) {
7038
7038
  <hr class="__crossx-divider">
7039
7039
  <div class="__crossx-body">
7040
7040
  <p class="__crossx-tx-subtitle">
7041
- <span class="__crossx-sig-origin">${U(o)}</span> wants your permission to approve the following transaction.
7041
+ <span class="__crossx-sig-origin">${H(o)}</span> wants your permission to approve the following transaction.
7042
7042
  </p>
7043
7043
  <div class="__crossx-body-cols">
7044
7044
  <div class="__crossx-rows">
@@ -7065,17 +7065,17 @@ function Ye(r) {
7065
7065
  return "This site";
7066
7066
  }
7067
7067
  }
7068
- function U(r) {
7068
+ function H(r) {
7069
7069
  return r.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
7070
7070
  }
7071
7071
  function kn(r) {
7072
7072
  return typeof r == "string" && /^0x[0-9a-fA-F]{40}$/i.test(r);
7073
7073
  }
7074
7074
  function Pn(r) {
7075
- if (typeof r == "string") return U(r);
7075
+ if (typeof r == "string") return H(r);
7076
7076
  if (typeof r == "number" || typeof r == "bigint" || typeof r == "boolean") return String(r);
7077
7077
  try {
7078
- return U(JSON.stringify(r));
7078
+ return H(JSON.stringify(r));
7079
7079
  } catch {
7080
7080
  return String(r);
7081
7081
  }
@@ -7084,12 +7084,12 @@ function Nn(r, e) {
7084
7084
  const s = Y(
7085
7085
  "From",
7086
7086
  `<span class="__crossx-addr-text">${se(r.from)}</span>
7087
- <button class="__crossx-copy-btn" data-copy="${U(r.from)}" title="Copy address">${xe}</button>`
7087
+ <button class="__crossx-copy-btn" data-copy="${H(r.from)}" title="Copy address">${xe}</button>`
7088
7088
  ), t = r.to ? Y("To", `<span class="__crossx-addr-text">${se(r.to)}</span>
7089
- <button class="__crossx-copy-btn" data-copy="${U(r.to)}" title="Copy address">${xe}</button>`) : "", n = r.amount ? Y("Transfer", `<span>${U(r.amount)}</span>`) : "", o = r.fees ? Y("Tx Fee", `<span>${U(r.fees)}</span>`) : "", i = r.txHash ? Y("Tx Hash", `<span class="__crossx-addr-text">${se(r.txHash)}</span>
7090
- <button class="__crossx-copy-btn" data-copy="${U(r.txHash)}" title="Copy hash">${xe}</button>`) : "", a = r.total ? `<div class="__crossx-total-pill">
7089
+ <button class="__crossx-copy-btn" data-copy="${H(r.to)}" title="Copy address">${xe}</button>`) : "", n = r.amount ? Y("Transfer", `<span>${H(r.amount)}</span>`) : "", o = r.fees ? Y("Tx Fee", `<span>${H(r.fees)}</span>`) : "", i = r.txHash ? Y("Tx Hash", `<span class="__crossx-addr-text">${se(r.txHash)}</span>
7090
+ <button class="__crossx-copy-btn" data-copy="${H(r.txHash)}" title="Copy hash">${xe}</button>`) : "", a = r.total ? `<div class="__crossx-total-pill">
7091
7091
  <span class="__crossx-total-label">Total<br>(including fees)</span>
7092
- <span class="__crossx-total-amount">${U(r.total)}</span>
7092
+ <span class="__crossx-total-amount">${H(r.total)}</span>
7093
7093
  </div>` : "", c = document.createElement("div");
7094
7094
  return c.id = te, c.innerHTML = `
7095
7095
  <div class="__crossx-card __crossx-card--migration" style="${ce(e)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
@@ -7132,8 +7132,8 @@ function On(r, e) {
7132
7132
  function Cn(r, e, s) {
7133
7133
  const t = e.status !== "reverted" && e.status !== "timeout", n = e.status === "timeout", o = r.querySelector("#__crossx-ttl"), i = r.querySelector(".__crossx-header");
7134
7134
  if (o) {
7135
- const w = n ? An : t ? "" : In, E = n ? "Transaction timeout" : t ? "Transaction complete" : "Transaction failed";
7136
- w ? (o.style.display = "flex", o.style.alignItems = "center", o.style.gap = "8px", o.innerHTML = `${w}<span>${E}</span>`) : o.textContent = E;
7135
+ const w = n ? An : t ? "" : In, v = n ? "Transaction timeout" : t ? "Transaction complete" : "Transaction failed";
7136
+ w ? (o.style.display = "flex", o.style.alignItems = "center", o.style.gap = "8px", o.innerHTML = `${w}<span>${v}</span>`) : o.textContent = v;
7137
7137
  }
7138
7138
  if (i && !r.querySelector("#__crossx-close-btn")) {
7139
7139
  const w = document.createElement("button");
@@ -7142,11 +7142,11 @@ function Cn(r, e, s) {
7142
7142
  const a = r.querySelector("#__crossx-progress-body");
7143
7143
  if (!a) return;
7144
7144
  const c = e.from ? Y("From", `<span class="__crossx-addr-text">${se(e.from)}</span>
7145
- <button class="__crossx-copy-btn" data-copy="${U(e.from)}" title="Copy address">${xe}</button>`) : "", l = e.to ? Y("To", `<span class="__crossx-addr-text">${se(e.to)}</span>
7146
- <button class="__crossx-copy-btn" data-copy="${U(e.to)}" title="Copy address">${xe}</button>`) : "", d = e.amount ? Y("Transfer", `<span>${U(e.amount)}</span>`) : "", h = e.fees ? Y("Tx Fee", `<span>${U(e.fees)}</span>`) : "", m = e.txHash ? Y("Tx Hash", `<span class="__crossx-addr-text">${se(e.txHash)}</span>
7147
- <button class="__crossx-copy-btn" data-copy="${U(e.txHash)}" title="Copy hash">${xe}</button>`) : "", x = e.total ? `<div class="__crossx-total-pill">
7145
+ <button class="__crossx-copy-btn" data-copy="${H(e.from)}" title="Copy address">${xe}</button>`) : "", l = e.to ? Y("To", `<span class="__crossx-addr-text">${se(e.to)}</span>
7146
+ <button class="__crossx-copy-btn" data-copy="${H(e.to)}" title="Copy address">${xe}</button>`) : "", d = e.amount ? Y("Transfer", `<span>${H(e.amount)}</span>`) : "", h = e.fees ? Y("Tx Fee", `<span>${H(e.fees)}</span>`) : "", m = e.txHash ? Y("Tx Hash", `<span class="__crossx-addr-text">${se(e.txHash)}</span>
7147
+ <button class="__crossx-copy-btn" data-copy="${H(e.txHash)}" title="Copy hash">${xe}</button>`) : "", x = e.total ? `<div class="__crossx-total-pill">
7148
7148
  <span class="__crossx-total-label">Total<br>(including fees)</span>
7149
- <span class="__crossx-total-amount">${U(e.total)}</span>
7149
+ <span class="__crossx-total-amount">${H(e.total)}</span>
7150
7150
  </div>` : "";
7151
7151
  a.innerHTML = `
7152
7152
  <div class="__crossx-rows">
@@ -7159,9 +7159,9 @@ function Cn(r, e, s) {
7159
7159
  ${x}
7160
7160
  <button class="__crossx-approve-btn" id="__crossx-done-btn">${t ? "All Done" : "Done"}</button>
7161
7161
  `, a.querySelectorAll(".__crossx-copy-btn").forEach((w) => {
7162
- w.addEventListener("click", (E) => {
7162
+ w.addEventListener("click", (v) => {
7163
7163
  var S;
7164
- E.stopPropagation();
7164
+ v.stopPropagation();
7165
7165
  const y = w.dataset.copy;
7166
7166
  y && ((S = navigator.clipboard) == null || S.writeText(y).catch(() => {
7167
7167
  }));
@@ -7169,7 +7169,7 @@ function Cn(r, e, s) {
7169
7169
  });
7170
7170
  }
7171
7171
  function Ln(r, e) {
7172
- const s = e, t = Ye(r.dappName), n = U(r.message), o = document.createElement("div");
7172
+ const s = e, t = Ye(r.dappName), n = H(r.message), o = document.createElement("div");
7173
7173
  return o.id = te, o.innerHTML = `
7174
7174
  <div class="__crossx-card __crossx-card--migration __crossx-card--sign-msg" style="${ce(s)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
7175
7175
  <div class="__crossx-header">
@@ -7181,7 +7181,7 @@ function Ln(r, e) {
7181
7181
  <div class="__crossx-body-cols">
7182
7182
  <div class="__crossx-col-left">
7183
7183
  <p class="__crossx-sig-subtitle">
7184
- <span class="__crossx-sig-origin">${U(t)} </span>is requesting a Signature
7184
+ <span class="__crossx-sig-origin">${H(t)} </span>is requesting a Signature
7185
7185
  </p>
7186
7186
  <div class="__crossx-addr-pill">
7187
7187
  ${wt}
@@ -7213,14 +7213,14 @@ function Dn(r, e) {
7213
7213
  let a = `
7214
7214
  <div class="__crossx-td-row">
7215
7215
  <span class="__crossx-td-label">Primary Type</span>
7216
- <span class="__crossx-td-value">${U(o)}</span>
7216
+ <span class="__crossx-td-value">${H(o)}</span>
7217
7217
  </div>`;
7218
7218
  for (const [l, d] of Object.entries(i)) {
7219
7219
  const h = Pn(d), x = kn(d) ? `<span class="__crossx-addr-text">${se(d)}</span>
7220
- <button class="__crossx-copy-btn" data-copy="${U(String(d))}" title="Copy">${xe}</button>` : `<span>${h}</span>`;
7220
+ <button class="__crossx-copy-btn" data-copy="${H(String(d))}" title="Copy">${xe}</button>` : `<span>${h}</span>`;
7221
7221
  a += `
7222
7222
  <div class="__crossx-td-row">
7223
- <span class="__crossx-td-label">${U(l)}</span>
7223
+ <span class="__crossx-td-label">${H(l)}</span>
7224
7224
  <div class="__crossx-td-value">${x}</div>
7225
7225
  </div>`;
7226
7226
  }
@@ -7236,7 +7236,7 @@ function Dn(r, e) {
7236
7236
  <div class="__crossx-body-cols">
7237
7237
  <div class="__crossx-col-left">
7238
7238
  <p class="__crossx-sig-subtitle">
7239
- <span class="__crossx-sig-origin">${U(t)} </span>is requesting a Signature
7239
+ <span class="__crossx-sig-origin">${H(t)} </span>is requesting a Signature
7240
7240
  </p>
7241
7241
  <div class="__crossx-addr-pill">
7242
7242
  ${wt}
@@ -7262,7 +7262,7 @@ const Mn = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="
7262
7262
  function $n(r, e, s) {
7263
7263
  const t = s == null ? void 0 : s.toLowerCase(), n = r.map((i) => {
7264
7264
  const a = t && i.address.toLowerCase() === t;
7265
- return `<button class="__crossx-wallet-item" data-wallet-index="${i.index}" data-wallet-address="${U(i.address)}">
7265
+ return `<button class="__crossx-wallet-item" data-wallet-index="${i.index}" data-wallet-address="${H(i.address)}">
7266
7266
  <span class="__crossx-wallet-addr">${se(i.address)}</span>${a ? '<span class="__crossx-wallet-selected">selected</span>' : ""}
7267
7267
  </button>`;
7268
7268
  }).join(""), o = document.createElement("div");
@@ -7339,14 +7339,14 @@ function Hn(r) {
7339
7339
  </div>
7340
7340
  `, s;
7341
7341
  }
7342
- function Fn(r) {
7343
- const e = r, s = document.createElement("div");
7344
- return s.id = te, s.innerHTML = `
7345
- <div class="__crossx-card __crossx-card--migration" style="${ce(e)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
7342
+ function Fn(r, e = !0) {
7343
+ const s = r, t = e ? `<button class="__crossx-close" id="__crossx-close-btn" aria-label="Close">${ie}</button>` : "", n = e ? '<button class="__crossx-skip-btn" id="__crossx-skip-btn">Skip for Now</button>' : "", o = document.createElement("div");
7344
+ return o.id = te, o.innerHTML = `
7345
+ <div class="__crossx-card __crossx-card--migration" style="${ce(s)}" role="dialog" aria-modal="true" aria-labelledby="__crossx-ttl">
7346
7346
  <div class="__crossx-header">
7347
7347
  <p class="__crossx-title" id="__crossx-ttl">Wallet Found on Social Account 🎉</p>
7348
7348
  <p class="__crossx-subtitle--body">We found a wallet linked to your social account. Enter your 4-digit PIN to restore your assets.</p>
7349
- <button class="__crossx-close" id="__crossx-close-btn" aria-label="Close">${ie}</button>
7349
+ ${t}
7350
7350
  </div>
7351
7351
  <hr class="__crossx-divider">
7352
7352
  <div class="__crossx-body">
@@ -7358,10 +7358,10 @@ function Fn(r) {
7358
7358
  <span class="__crossx-recover-icon">${En}</span>
7359
7359
  <span class="__crossx-recover-label">Import from Social Backup</span>
7360
7360
  </button>
7361
- <button class="__crossx-skip-btn" id="__crossx-skip-btn">Skip for Now</button>
7361
+ ${n}
7362
7362
  </div>
7363
7363
  </div>
7364
- `, s;
7364
+ `, o;
7365
7365
  }
7366
7366
  function Gn(r, e) {
7367
7367
  const s = r, { errorMessage: t, attemptCount: n, maxAttempts: o = 5 } = e ?? {}, i = !!t, a = i ? " --error" : "", c = n != null && n > 0 ? `<p class="__crossx-pin-attempt">${n}/${o}</p>` : "", l = n != null && n >= 3 ? '<p class="__crossx-pin-warning">Your account will be locked after further failures.</p>' : "", d = i ? `<p class="__crossx-pin-error-text">${t}</p>` : "", h = document.createElement("div");
@@ -7426,13 +7426,13 @@ function Kn(r) {
7426
7426
  const s = [r.check1, r.check2].map((t, n) => `
7427
7427
  <div class="__crossx-pw-notice-item" data-check-index="${n}" role="checkbox" aria-checked="false" tabindex="0">
7428
7428
  <div class="__crossx-pw-notice-check" id="__crossx-notice-check-${n}">${jn}</div>
7429
- <span class="__crossx-pw-notice-item-text">${U(t)}</span>
7429
+ <span class="__crossx-pw-notice-item-text">${H(t)}</span>
7430
7430
  </div>
7431
7431
  `).join("");
7432
7432
  return `
7433
7433
  <div class="__crossx-header">
7434
- <p class="__crossx-title" id="__crossx-ttl" style="padding-right:48px;">${U(r.title)}</p>
7435
- <p class="__crossx-pw-subtitle">${U(r.headerSubtitle)}</p>
7434
+ <p class="__crossx-title" id="__crossx-ttl" style="padding-right:48px;">${H(r.title)}</p>
7435
+ <p class="__crossx-pw-subtitle">${H(r.headerSubtitle)}</p>
7436
7436
  <button class="__crossx-close" id="__crossx-close-btn" aria-label="Close">${ie}</button>
7437
7437
  </div>
7438
7438
  <hr class="__crossx-divider">
@@ -7441,25 +7441,25 @@ function Kn(r) {
7441
7441
  <div class="__crossx-pw-notice-header">
7442
7442
  <div class="__crossx-pw-notice-title-row">
7443
7443
  <span class="__crossx-pw-notice-icon">${Yn}</span>
7444
- <p class="__crossx-pw-notice-title">${U(r.noticeTitle)}</p>
7444
+ <p class="__crossx-pw-notice-title">${H(r.noticeTitle)}</p>
7445
7445
  </div>
7446
- <p class="__crossx-pw-notice-desc">${U(r.noticeDesc)}</p>
7446
+ <p class="__crossx-pw-notice-desc">${H(r.noticeDesc)}</p>
7447
7447
  </div>
7448
7448
  <div class="__crossx-pw-notice-checks" id="__crossx-notice-checks">
7449
7449
  ${s}
7450
7450
  </div>
7451
7451
  </div>
7452
7452
  <button class="__crossx-pw-btn --disabled" id="__crossx-pin-notice-next"
7453
- data-next-label="${U(r.nextButton)}"
7454
- data-submit-label="${U(r.submitButton)}">
7455
- ${U(r.nextButton)}
7453
+ data-next-label="${H(r.nextButton)}"
7454
+ data-submit-label="${H(r.submitButton)}">
7455
+ ${H(r.nextButton)}
7456
7456
  </button>
7457
7457
  </div>
7458
7458
  <div class="__crossx-home-indicator"></div>
7459
7459
  `;
7460
7460
  }
7461
7461
  function nt(r) {
7462
- const e = !!r.lockExpiresAt && r.lockExpiresAt > Date.now(), s = r.lockExpiresAt ? ` data-lock-expires="${r.lockExpiresAt}"` : "", t = r.headerSubtitle ? `<p class="__crossx-pin6-header-sub">${U(r.headerSubtitle)}</p>` : "", n = r.subtitle ? `<p class="__crossx-pin6-subtitle">${U(r.subtitle)}</p>` : "", o = r.errorMessage ? `<p class="__crossx-pin6-error" id="__crossx-pin6-error">${U(r.errorMessage)}</p>` : '<p class="__crossx-pin6-error" id="__crossx-pin6-error"></p>', i = e ? `<p class="__crossx-pin6-lock-msg" id="__crossx-pin6-lock-msg">
7462
+ const e = !!r.lockExpiresAt && r.lockExpiresAt > Date.now(), s = r.lockExpiresAt ? ` data-lock-expires="${r.lockExpiresAt}"` : "", t = r.headerSubtitle ? `<p class="__crossx-pin6-header-sub">${H(r.headerSubtitle)}</p>` : "", n = r.subtitle ? `<p class="__crossx-pin6-subtitle">${H(r.subtitle)}</p>` : "", o = r.errorMessage ? `<p class="__crossx-pin6-error" id="__crossx-pin6-error">${H(r.errorMessage)}</p>` : '<p class="__crossx-pin6-error" id="__crossx-pin6-error"></p>', i = e ? `<p class="__crossx-pin6-lock-msg" id="__crossx-pin6-lock-msg">
7463
7463
  ${Cs}
7464
7464
  <span id="__crossx-pin6-lock-countdown"></span>
7465
7465
  </p>` : "", a = e ? " --locked" : "", c = Array.from(
@@ -7468,7 +7468,7 @@ function nt(r) {
7468
7468
  ).join("");
7469
7469
  return `
7470
7470
  <div class="__crossx-header">
7471
- <p class="__crossx-title" id="__crossx-ttl" style="padding-right:48px;">${U(r.title)}</p>
7471
+ <p class="__crossx-title" id="__crossx-ttl" style="padding-right:48px;">${H(r.title)}</p>
7472
7472
  ${t}
7473
7473
  <button class="__crossx-close" id="__crossx-close-btn" aria-label="Close">${ie}</button>
7474
7474
  </div>
@@ -7504,62 +7504,63 @@ function zn(r) {
7504
7504
  return s > 0 ? `${s}h ${String(t).padStart(2, "0")}m` : `${String(t).padStart(2, "0")}:${String(n).padStart(2, "0")}`;
7505
7505
  }
7506
7506
  function ot(r, e, s, t, n, o) {
7507
+ var V, W;
7507
7508
  let i = !!(o && o > Date.now()), a = !1;
7508
- const c = () => Array.from(r.querySelectorAll(".__crossx-pin6-box")), l = () => r.querySelector("#__crossx-pin6-boxes"), d = () => r.querySelector("#__crossx-pin6-error"), h = () => r.querySelector("#__crossx-pin6-lock-msg"), m = () => r.querySelector("#__crossx-pin6-lock-countdown"), x = () => r.querySelector(".__crossx-pin6-body"), w = () => c().map((b) => b.value).join(""), E = (b) => {
7509
- i = b, c().forEach((k) => {
7510
- k.disabled = b, k.classList.toggle("--locked", b);
7509
+ const c = () => Array.from(r.querySelectorAll(".__crossx-pin6-box")), l = () => r.querySelector("#__crossx-pin6-boxes"), d = () => r.querySelector("#__crossx-pin6-error"), h = () => r.querySelector("#__crossx-pin6-lock-msg"), m = () => r.querySelector("#__crossx-pin6-lock-countdown"), x = () => r.querySelector(".__crossx-pin6-body"), w = () => c().map((P) => P.value).join(""), v = (P) => {
7510
+ i = P, c().forEach((k) => {
7511
+ k.disabled = P, k.classList.toggle("--locked", P);
7511
7512
  });
7512
7513
  }, y = () => {
7513
- const b = d();
7514
- b && (b.textContent = "");
7515
- }, S = (b) => {
7514
+ const P = d();
7515
+ P && (P.textContent = "");
7516
+ }, S = (P) => {
7516
7517
  const k = d();
7517
- k && (k.textContent = b);
7518
- const P = l();
7519
- P == null || P.classList.add("--shake"), setTimeout(() => P == null ? void 0 : P.classList.remove("--shake"), 500), c().forEach((G) => {
7520
- G.value = "";
7518
+ k && (k.textContent = P);
7519
+ const D = l();
7520
+ D == null || D.classList.add("--shake"), setTimeout(() => D == null ? void 0 : D.classList.remove("--shake"), 500), c().forEach((q) => {
7521
+ q.value = "";
7521
7522
  }), setTimeout(() => {
7522
- var G;
7523
- return (G = c()[0]) == null ? void 0 : G.focus();
7523
+ var q;
7524
+ return (q = c()[0]) == null ? void 0 : q.focus();
7524
7525
  }, 50);
7525
- }, C = (b) => {
7526
- var W;
7527
- E(!0), c().forEach((q) => {
7528
- q.value = "";
7526
+ }, C = (P) => {
7527
+ var R;
7528
+ v(!0), c().forEach((A) => {
7529
+ A.value = "";
7529
7530
  });
7530
7531
  const k = d();
7531
7532
  if (k && (k.textContent = "Too many failed attempts. Please wait."), !h()) {
7532
- const q = document.createElement("p");
7533
- q.className = "__crossx-pin6-lock-msg", q.id = "__crossx-pin6-lock-msg", q.innerHTML = `${Cs}<span id="__crossx-pin6-lock-countdown"></span>`;
7534
- const D = d();
7535
- D ? D.insertAdjacentElement("afterend", q) : (W = x()) == null || W.appendChild(q);
7536
- }
7537
- const P = () => {
7538
- var R;
7539
- const q = b - Date.now(), D = m();
7540
- q <= 0 ? (clearInterval(G), E(!1), (R = h()) == null || R.remove(), k && (k.textContent = ""), setTimeout(() => {
7541
- var N;
7542
- return (N = c()[0]) == null ? void 0 : N.focus();
7543
- }, 50)) : D && (D.textContent = ` ${zn(q)}`);
7544
- }, G = setInterval(P, 1e3);
7545
- P();
7546
- const z = new MutationObserver(() => {
7547
- document.contains(r) || (clearInterval(G), z.disconnect());
7533
+ const A = document.createElement("p");
7534
+ A.className = "__crossx-pin6-lock-msg", A.id = "__crossx-pin6-lock-msg", A.innerHTML = `${Cs}<span id="__crossx-pin6-lock-countdown"></span>`;
7535
+ const f = d();
7536
+ f ? f.insertAdjacentElement("afterend", A) : (R = x()) == null || R.appendChild(A);
7537
+ }
7538
+ const D = () => {
7539
+ var _;
7540
+ const A = P - Date.now(), f = m();
7541
+ A <= 0 ? (clearInterval(q), v(!1), (_ = h()) == null || _.remove(), k && (k.textContent = ""), setTimeout(() => {
7542
+ var b;
7543
+ return (b = c()[0]) == null ? void 0 : b.focus();
7544
+ }, 50)) : f && (f.textContent = ` ${zn(A)}`);
7545
+ }, q = setInterval(D, 1e3);
7546
+ D();
7547
+ const L = new MutationObserver(() => {
7548
+ document.contains(r) || (clearInterval(q), L.disconnect());
7548
7549
  });
7549
- z.observe(document.body, { childList: !0, subtree: !1 });
7550
- }, B = async () => {
7550
+ L.observe(document.body, { childList: !0, subtree: !1 });
7551
+ }, U = async () => {
7551
7552
  if (i || a) return;
7552
- const b = w();
7553
- if (b.length === 6) {
7553
+ const P = w();
7554
+ if (P.length === 6) {
7554
7555
  a = !0, c().forEach((k) => {
7555
7556
  k.disabled = !0;
7556
7557
  });
7557
7558
  try {
7558
7559
  if (n) {
7559
- const k = await n(b);
7560
- k.ok ? e(b) : k.lockExpiresAt ? C(k.lockExpiresAt) : S(k.error ?? "Incorrect PIN. Please try again.");
7560
+ const k = await n(P);
7561
+ k.ok ? e(P) : k.lockExpiresAt ? C(k.lockExpiresAt) : S(k.error ?? "Incorrect PIN. Please try again.");
7561
7562
  } else
7562
- e(b);
7563
+ e(P);
7563
7564
  } catch (k) {
7564
7565
  t && t(k);
7565
7566
  } finally {
@@ -7570,33 +7571,44 @@ function ot(r, e, s, t, n, o) {
7570
7571
  }
7571
7572
  };
7572
7573
  o && o > Date.now() ? C(o) : setTimeout(() => {
7573
- var b;
7574
- return (b = c()[0]) == null ? void 0 : b.focus();
7575
- }, 100), c().forEach((b, k) => {
7576
- b.addEventListener("input", () => {
7577
- var G;
7578
- const P = b.value.replace(/\D/g, "").slice(-1);
7579
- b.value = P, y(), P && k < 5 && ((G = c()[k + 1]) == null || G.focus()), w().length === 6 && setTimeout(B, 80);
7580
- }), b.addEventListener("keydown", (P) => {
7581
- var G, z;
7582
- if (P.key === "Backspace") {
7583
- if (P.preventDefault(), b.value)
7584
- b.value = "";
7574
+ var P;
7575
+ return (P = c()[0]) == null ? void 0 : P.focus();
7576
+ }, 100);
7577
+ const N = () => {
7578
+ if (i || a) return;
7579
+ const P = c(), k = P.find((D) => !D.value) ?? P[P.length - 1];
7580
+ k == null || k.focus();
7581
+ };
7582
+ (V = l()) == null || V.addEventListener("click", (P) => {
7583
+ P.target.classList.contains("__crossx-pin6-box") || N();
7584
+ }), (W = x()) == null || W.addEventListener("click", (P) => {
7585
+ const k = P.target;
7586
+ k.classList.contains("__crossx-pin6-box") || k.closest("button") || N();
7587
+ }), c().forEach((P, k) => {
7588
+ P.addEventListener("input", () => {
7589
+ var q;
7590
+ const D = P.value.replace(/\D/g, "").slice(-1);
7591
+ P.value = D, y(), D && k < 5 && ((q = c()[k + 1]) == null || q.focus()), w().length === 6 && setTimeout(U, 80);
7592
+ }), P.addEventListener("keydown", (D) => {
7593
+ var q, L;
7594
+ if (D.key === "Backspace") {
7595
+ if (D.preventDefault(), P.value)
7596
+ P.value = "";
7585
7597
  else if (k > 0) {
7586
- const W = c()[k - 1];
7587
- W.value = "", W.focus();
7598
+ const R = c()[k - 1];
7599
+ R.value = "", R.focus();
7588
7600
  }
7589
- } else P.key === "ArrowLeft" && k > 0 ? (P.preventDefault(), (G = c()[k - 1]) == null || G.focus()) : P.key === "ArrowRight" && k < 5 ? (P.preventDefault(), (z = c()[k + 1]) == null || z.focus()) : P.key === "Escape" && s();
7590
- }), b.addEventListener("paste", (P) => {
7591
- var W, q;
7592
- P.preventDefault();
7593
- const G = (((W = P.clipboardData) == null ? void 0 : W.getData("text")) ?? "").replace(/\D/g, "").slice(0, 6);
7594
- if (!G) return;
7595
- const z = c();
7596
- G.split("").forEach((D, R) => {
7597
- z[R] && (z[R].value = D);
7598
- }), (q = z[Math.min(G.length - 1, 5)]) == null || q.focus(), y(), w().length === 6 && setTimeout(B, 80);
7599
- }), b.addEventListener("focus", () => b.select());
7601
+ } else D.key === "ArrowLeft" && k > 0 ? (D.preventDefault(), (q = c()[k - 1]) == null || q.focus()) : D.key === "ArrowRight" && k < 5 ? (D.preventDefault(), (L = c()[k + 1]) == null || L.focus()) : D.key === "Escape" && s();
7602
+ }), P.addEventListener("paste", (D) => {
7603
+ var R, A;
7604
+ D.preventDefault();
7605
+ const q = (((R = D.clipboardData) == null ? void 0 : R.getData("text")) ?? "").replace(/\D/g, "").slice(0, 6);
7606
+ if (!q) return;
7607
+ const L = c();
7608
+ q.split("").forEach((f, _) => {
7609
+ L[_] && (L[_].value = f);
7610
+ }), (A = L[Math.min(q.length - 1, 5)]) == null || A.focus(), y(), w().length === 6 && setTimeout(U, 80);
7611
+ }), P.addEventListener("focus", () => P.select());
7600
7612
  });
7601
7613
  }
7602
7614
  const Cs = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -7607,30 +7619,37 @@ const Cs = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="h
7607
7619
  <path d="M12 0C18.6274 0 24 5.37258 24 12C23.9999 18.6273 18.6274 24 12 24C5.37264 24 9.89594e-05 18.6273 0 12C0 5.37258 5.37258 0 12 0ZM10.875 15.127V17.377H13.125V15.127H10.875ZM10.875 6.62207V13.627H13.125V6.62207H10.875Z" fill="currentColor"/>
7608
7620
  </svg>`;
7609
7621
  function Jn(r, e, s) {
7610
- var n;
7622
+ var o;
7611
7623
  const t = r.querySelectorAll(".__crossx-pin-input");
7612
- t.forEach((o, i) => {
7613
- o.addEventListener("input", () => {
7614
- const a = o.value.replace(/\D/g, "");
7615
- o.value = a ? a[0] : "", a && i < 3 && t[i + 1].focus();
7616
- const c = Array.from(t).map((l) => l.value).join("");
7617
- c.length === 4 && setTimeout(() => e(c), 200);
7618
- }), o.addEventListener("keydown", (a) => {
7619
- a.key === "Backspace" && !o.value && i > 0 && (t[i - 1].focus(), t[i - 1].value = ""), a.key === "Escape" && s();
7620
- }), o.addEventListener("keypress", (a) => {
7621
- /[0-9]/.test(a.key) || a.preventDefault();
7622
- }), o.addEventListener("paste", (a) => {
7623
- var d;
7624
- a.preventDefault();
7625
- const c = (((d = a.clipboardData) == null ? void 0 : d.getData("text")) ?? "").replace(/\D/g, "").slice(0, 4);
7626
- if (!c) return;
7627
- c.split("").forEach((h, m) => {
7628
- t[m] && (t[m].value = h);
7624
+ t.forEach((i, a) => {
7625
+ i.addEventListener("input", () => {
7626
+ const c = i.value.replace(/\D/g, "");
7627
+ i.value = c ? c[0] : "", c && a < 3 && t[a + 1].focus();
7628
+ const l = Array.from(t).map((d) => d.value).join("");
7629
+ l.length === 4 && setTimeout(() => e(l), 200);
7630
+ }), i.addEventListener("keydown", (c) => {
7631
+ c.key === "Backspace" && !i.value && a > 0 && (t[a - 1].focus(), t[a - 1].value = ""), c.key === "Escape" && s();
7632
+ }), i.addEventListener("keypress", (c) => {
7633
+ /[0-9]/.test(c.key) || c.preventDefault();
7634
+ }), i.addEventListener("paste", (c) => {
7635
+ var h;
7636
+ c.preventDefault();
7637
+ const l = (((h = c.clipboardData) == null ? void 0 : h.getData("text")) ?? "").replace(/\D/g, "").slice(0, 4);
7638
+ if (!l) return;
7639
+ l.split("").forEach((m, x) => {
7640
+ t[x] && (t[x].value = m);
7629
7641
  });
7630
- const l = Math.min(c.length, 3);
7631
- t[l].focus(), c.length === 4 && setTimeout(() => e(c), 200);
7642
+ const d = Math.min(l.length, 3);
7643
+ t[d].focus(), l.length === 4 && setTimeout(() => e(l), 200);
7632
7644
  });
7633
- }), (n = t[0]) == null || n.focus();
7645
+ });
7646
+ const n = r.querySelector(".__crossx-pin-inputs");
7647
+ n == null || n.addEventListener("click", (i) => {
7648
+ if (!i.target.classList.contains("__crossx-pin-input")) {
7649
+ const a = Array.from(t).find((c) => !c.value) ?? t[t.length - 1];
7650
+ a == null || a.focus();
7651
+ }
7652
+ }), (o = t[0]) == null || o.focus();
7634
7653
  }
7635
7654
  class Xn {
7636
7655
  constructor(e = "light", s) {
@@ -7652,7 +7671,7 @@ class Xn {
7652
7671
  */
7653
7672
  showWalletSelector(e, s, t) {
7654
7673
  return new Promise((n) => {
7655
- var E;
7674
+ var v;
7656
7675
  he();
7657
7676
  const o = [...e], i = $n(o, this.tokens, t), a = document.body.style.overflow;
7658
7677
  document.body.style.overflow = "hidden", pe(i);
@@ -7687,7 +7706,7 @@ class Xn {
7687
7706
  } finally {
7688
7707
  x.disabled = !1;
7689
7708
  }
7690
- }), (E = i.querySelector("#__crossx-close-btn")) == null || E.addEventListener("click", h), i.addEventListener("click", (y) => {
7709
+ }), (v = i.querySelector("#__crossx-close-btn")) == null || v.addEventListener("click", h), i.addEventListener("click", (y) => {
7691
7710
  y.target === i && h();
7692
7711
  });
7693
7712
  const w = (y) => {
@@ -7725,26 +7744,31 @@ class Xn {
7725
7744
  }
7726
7745
  /**
7727
7746
  * 마이그레이션 발견 팝업: "Wallet Found on Social Account"
7747
+ * @param options.allowSkip false이면 Skip/닫기/오버레이/ESC 모두 비활성화
7728
7748
  * @returns 'recover' 또는 'skip'
7729
7749
  */
7730
- showMigrationFoundPrompt() {
7731
- return new Promise((e) => {
7750
+ showMigrationFoundPrompt(e) {
7751
+ const s = (e == null ? void 0 : e.allowSkip) ?? !0;
7752
+ return new Promise((t) => {
7732
7753
  var a, c, l;
7733
7754
  he();
7734
- const s = Fn(this.tokens);
7735
- pe(s);
7736
- const t = () => s.remove(), n = () => {
7737
- t(), e("recover");
7738
- }, o = () => {
7739
- t(), e("skip");
7740
- };
7741
- (a = s.querySelector("#__crossx-recover-btn")) == null || a.addEventListener("click", n), (c = s.querySelector("#__crossx-skip-btn")) == null || c.addEventListener("click", o), (l = s.querySelector("#__crossx-close-btn")) == null || l.addEventListener("click", o), s.addEventListener("click", (d) => {
7742
- d.target === s && o();
7743
- });
7744
- const i = (d) => {
7745
- d.key === "Escape" && (document.removeEventListener("keydown", i), o());
7755
+ const n = Fn(this.tokens, s);
7756
+ pe(n);
7757
+ const o = () => n.remove(), i = () => {
7758
+ o(), t("recover");
7746
7759
  };
7747
- document.addEventListener("keydown", i);
7760
+ if ((a = n.querySelector("#__crossx-recover-btn")) == null || a.addEventListener("click", i), s) {
7761
+ const d = () => {
7762
+ o(), t("skip");
7763
+ };
7764
+ (c = n.querySelector("#__crossx-skip-btn")) == null || c.addEventListener("click", d), (l = n.querySelector("#__crossx-close-btn")) == null || l.addEventListener("click", d), n.addEventListener("click", (m) => {
7765
+ m.target === n && d();
7766
+ });
7767
+ const h = (m) => {
7768
+ m.key === "Escape" && (document.removeEventListener("keydown", h), d());
7769
+ };
7770
+ document.addEventListener("keydown", h);
7771
+ }
7748
7772
  });
7749
7773
  }
7750
7774
  /**
@@ -7789,62 +7813,62 @@ class Xn {
7789
7813
  repeatingDigit: (t == null ? void 0 : t.pinValidation_repeatingDigit) ?? "Cannot use the same number 3+ times in a row.",
7790
7814
  sequential: (t == null ? void 0 : t.pinValidation_sequential) ?? "Sequential numbers (e.g., 123456) are not allowed.",
7791
7815
  alternatingPattern: (t == null ? void 0 : t.pinValidation_alternatingPattern) ?? "Repeating patterns (e.g., 121212) are not allowed."
7792
- }, E = (C) => {
7793
- var B;
7816
+ }, v = (C) => {
7817
+ var U;
7794
7818
  x.innerHTML = nt({
7795
7819
  title: i.title,
7796
7820
  headerSubtitle: i.headerSubtitle
7797
- }), (B = x.querySelector("#__crossx-close-btn")) == null || B.addEventListener("click", m), ot(x, (b) => {
7798
- b === C ? h(C) : y(o.mismatchError);
7821
+ }), (U = x.querySelector("#__crossx-close-btn")) == null || U.addEventListener("click", m), ot(x, (N) => {
7822
+ N === C ? h(C) : y(o.mismatchError);
7799
7823
  }, m);
7800
7824
  }, y = (C) => {
7801
- var B;
7825
+ var U;
7802
7826
  x.innerHTML = nt({
7803
7827
  title: o.title,
7804
7828
  headerSubtitle: o.headerSubtitle,
7805
7829
  subtitle: o.subtitle,
7806
7830
  errorMessage: C
7807
- }), (B = x.querySelector("#__crossx-close-btn")) == null || B.addEventListener("click", m), ot(x, (b) => {
7808
- const k = Vn(b, w);
7809
- k ? y(k) : E(b);
7831
+ }), (U = x.querySelector("#__crossx-close-btn")) == null || U.addEventListener("click", m), ot(x, (N) => {
7832
+ const V = Vn(N, w);
7833
+ V ? y(V) : v(N);
7810
7834
  }, m);
7811
7835
  };
7812
7836
  (() => {
7813
7837
  var q;
7814
- const C = Array.from(x.querySelectorAll(".__crossx-pw-notice-item")), B = x.querySelector("#__crossx-pin-notice-next"), b = /* @__PURE__ */ new Set();
7815
- B.removeAttribute("disabled");
7816
- const k = B.dataset.nextLabel ?? "Next", P = B.dataset.submitLabel ?? "I Understand", G = () => {
7817
- const D = b.size === C.length;
7818
- B.classList.toggle("--disabled", !D), B.textContent = D ? P : k;
7819
- }, z = (D, R) => {
7820
- if (b.has(R)) return;
7821
- const N = D.querySelector(`#__crossx-notice-check-${R}`);
7822
- b.add(R), N.classList.add("--checked"), D.setAttribute("aria-checked", "true"), G();
7823
- }, W = (D, R) => {
7824
- if (!b.has(R)) return;
7825
- const N = D.querySelector(`#__crossx-notice-check-${R}`);
7826
- b.delete(R), N.classList.remove("--checked"), D.setAttribute("aria-checked", "false"), G();
7838
+ const C = Array.from(x.querySelectorAll(".__crossx-pw-notice-item")), U = x.querySelector("#__crossx-pin-notice-next"), N = /* @__PURE__ */ new Set();
7839
+ U.removeAttribute("disabled");
7840
+ const V = U.dataset.nextLabel ?? "Next", W = U.dataset.submitLabel ?? "I Understand", P = () => {
7841
+ const L = N.size === C.length;
7842
+ U.classList.toggle("--disabled", !L), U.textContent = L ? W : V;
7843
+ }, k = (L, R) => {
7844
+ if (N.has(R)) return;
7845
+ const A = L.querySelector(`#__crossx-notice-check-${R}`);
7846
+ N.add(R), A.classList.add("--checked"), L.setAttribute("aria-checked", "true"), P();
7847
+ }, D = (L, R) => {
7848
+ if (!N.has(R)) return;
7849
+ const A = L.querySelector(`#__crossx-notice-check-${R}`);
7850
+ N.delete(R), A.classList.remove("--checked"), L.setAttribute("aria-checked", "false"), P();
7827
7851
  };
7828
- C.forEach((D) => {
7829
- const R = parseInt(D.dataset.checkIndex ?? "0", 10);
7830
- D.addEventListener("click", () => {
7831
- b.has(R) ? W(D, R) : z(D, R);
7832
- }), D.addEventListener("keydown", (N) => {
7833
- (N.key === " " || N.key === "Enter") && (N.preventDefault(), b.has(R) ? W(D, R) : z(D, R));
7852
+ C.forEach((L) => {
7853
+ const R = parseInt(L.dataset.checkIndex ?? "0", 10);
7854
+ L.addEventListener("click", () => {
7855
+ N.has(R) ? D(L, R) : k(L, R);
7856
+ }), L.addEventListener("keydown", (A) => {
7857
+ (A.key === " " || A.key === "Enter") && (A.preventDefault(), N.has(R) ? D(L, R) : k(L, R));
7834
7858
  });
7835
- }), B.addEventListener("click", () => {
7836
- if (b.size === C.length) {
7859
+ }), U.addEventListener("click", () => {
7860
+ if (N.size === C.length) {
7837
7861
  y(e == null ? void 0 : e.errorMessage);
7838
7862
  return;
7839
7863
  }
7840
- const D = C.find((N) => {
7841
- const f = parseInt(N.dataset.checkIndex ?? "0", 10);
7842
- return !b.has(f);
7864
+ const L = C.find((A) => {
7865
+ const f = parseInt(A.dataset.checkIndex ?? "0", 10);
7866
+ return !N.has(f);
7843
7867
  });
7844
- if (!D) return;
7845
- const R = parseInt(D.dataset.checkIndex ?? "0", 10);
7846
- D.scrollIntoView({ behavior: "smooth", block: "nearest" }), D.classList.add("--highlight"), setTimeout(() => {
7847
- D.classList.remove("--highlight"), z(D, R);
7868
+ if (!L) return;
7869
+ const R = parseInt(L.dataset.checkIndex ?? "0", 10);
7870
+ L.scrollIntoView({ behavior: "smooth", block: "nearest" }), L.classList.add("--highlight"), setTimeout(() => {
7871
+ L.classList.remove("--highlight"), k(L, R);
7848
7872
  }, 400);
7849
7873
  }), (q = x.querySelector("#__crossx-close-btn")) == null || q.addEventListener("click", m);
7850
7874
  })(), a.addEventListener("click", (C) => {
@@ -7880,8 +7904,8 @@ class Xn {
7880
7904
  h(), s(null);
7881
7905
  }, w = (S) => {
7882
7906
  h(), t(S);
7883
- }, E = c.querySelector(".__crossx-card");
7884
- (y = E.querySelector("#__crossx-close-btn")) == null || y.addEventListener("click", x), ot(E, m, x, w, e == null ? void 0 : e.onSubmit, e == null ? void 0 : e.lockExpiresAt), c.addEventListener("click", (S) => {
7907
+ }, v = c.querySelector(".__crossx-card");
7908
+ (y = v.querySelector("#__crossx-close-btn")) == null || y.addEventListener("click", x), ot(v, m, x, w, e == null ? void 0 : e.onSubmit, e == null ? void 0 : e.lockExpiresAt), c.addEventListener("click", (S) => {
7885
7909
  S.target === c && x();
7886
7910
  });
7887
7911
  });
@@ -8066,7 +8090,7 @@ function so(r, e) {
8066
8090
  d,
8067
8091
  h
8068
8092
  ));
8069
- const x = new De(n, c), w = new Xn(r.theme ?? "light", r.themeTokens), E = e != null && e.wrapConfirmation ? e.wrapConfirmation(w) : w;
8093
+ const x = new De(n, c), w = new Xn(r.theme ?? "light", r.themeTokens), v = e != null && e.wrapConfirmation ? e.wrapConfirmation(w) : w;
8070
8094
  return new it(
8071
8095
  t,
8072
8096
  n,
@@ -8076,7 +8100,7 @@ function so(r, e) {
8076
8100
  l,
8077
8101
  m,
8078
8102
  d,
8079
- E,
8103
+ v,
8080
8104
  x,
8081
8105
  h
8082
8106
  );