diff --git a/backend/pages/other/altcha.js b/backend/pages/other/altcha.js
new file mode 100644
index 00000000..e6dd41cf
--- /dev/null
+++ b/backend/pages/other/altcha.js
@@ -0,0 +1,48 @@
+const { createChallenge, verifySolution, sha } = require("altcha/lib");
+
+var hmacKey = null;
+
+function getHmacKey() {
+ if(!hmacKey) {
+ hmacKey = require("crypto").randomBytes(32).toString("hex");
+ }
+ return hmacKey;
+}
+
+module.exports.GET = async function(req, write, server, ctx) {
+ var challenge = await createChallenge({
+ algorithm: "SHA-256",
+ deriveKey: sha.deriveKey,
+ hmacSignatureSecret: getHmacKey(),
+ cost: 1000
+ });
+ write(JSON.stringify(challenge), 200, {
+ mime: "application/json"
+ });
+}
+
+module.exports.POST = async function(req, write, server, ctx) {
+ var post_data = ctx.post_data;
+ var payload = post_data.altcha;
+ if(!payload) {
+ return write(JSON.stringify({ verified: false }), 200, {
+ mime: "application/json"
+ });
+ }
+ try {
+ var data = JSON.parse(Buffer.from(payload, "base64").toString("utf8"));
+ var result = await verifySolution({
+ challenge: data.challenge,
+ solution: data.solution,
+ deriveKey: sha.deriveKey,
+ hmacSignatureSecret: getHmacKey()
+ });
+ write(JSON.stringify({ verified: result.verified }), 200, {
+ mime: "application/json"
+ });
+ } catch(e) {
+ write(JSON.stringify({ verified: false }), 200, {
+ mime: "application/json"
+ });
+ }
+}
diff --git a/frontend/static/css/yourworld.css b/frontend/static/css/yourworld.css
index bea41f1e..1bfd329d 100644
--- a/frontend/static/css/yourworld.css
+++ b/frontend/static/css/yourworld.css
@@ -498,6 +498,49 @@ a:visited {
align-items: center;
z-index: 1000;
}
+#captcha_overlay {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ cursor: default;
+ background-color: rgba(0, 0, 0, 0.5);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 2000;
+}
+.captcha_frame {
+ background-color: #C3C3FF;
+ display: flex;
+ flex-direction: column;
+ position: absolute;
+ min-width: 280px;
+}
+.captcha_client {
+ background-color: #E5E5FF;
+ flex: 1;
+ margin: 6px;
+ padding: 18px 24px;
+ position: relative;
+ text-align: center;
+}
+.captcha_title {
+ font-family: Verdana;
+ font-size: 14px;
+ font-weight: bold;
+ color: #000;
+ margin-bottom: 14px;
+ text-align: center;
+}
+#captcha_error {
+ font-family: Verdana;
+ font-size: 12px;
+ color: red;
+ margin-top: 10px;
+ text-align: center;
+}
.modal_close {
position: absolute;
right: 0px;
diff --git a/frontend/static/lib/altcha-wrapped.min.js b/frontend/static/lib/altcha-wrapped.min.js
new file mode 100644
index 00000000..86c20a17
--- /dev/null
+++ b/frontend/static/lib/altcha-wrapped.min.js
@@ -0,0 +1,4315 @@
+// wrapped with beautifier.io - Alan Myers
+(function() {
+ const e = !1;
+ var t = Array.isArray,
+ n = Array.prototype.indexOf,
+ r = Array.prototype.includes,
+ a = Array.from,
+ o = Object.keys,
+ i = Object.defineProperty,
+ l = Object.getOwnPropertyDescriptor,
+ s = Object.getOwnPropertyDescriptors,
+ c = Object.prototype,
+ u = Array.prototype,
+ f = Object.getPrototypeOf,
+ d = Object.isExtensible;
+ const h = () => {};
+
+ function p() {
+ var e, t;
+ return {
+ promise: new Promise((n, r) => {
+ e = n, t = r
+ }),
+ resolve: e,
+ reject: t
+ }
+ }
+ const v = 1 << 24,
+ g = 16,
+ m = 32,
+ b = 64,
+ y = 512,
+ w = 1024,
+ x = 2048,
+ k = 4096,
+ _ = 8192,
+ $ = 16384,
+ S = 32768,
+ C = 1 << 25,
+ E = 65536,
+ T = 1 << 17,
+ A = 1 << 19,
+ I = 65536,
+ P = 1 << 21,
+ O = 1 << 23,
+ R = Symbol("$state"),
+ L = Symbol("legacy props"),
+ M = Symbol(""),
+ D = Symbol("attributes"),
+ U = Symbol("class"),
+ V = Symbol("style"),
+ N = Symbol("text"),
+ z = Symbol("form reset"),
+ j = new class extends Error {
+ name = "StaleReactionError";
+ message = "The reaction that called `getAbortSignal()` was re-run or destroyed"
+ },
+ B = !!globalThis.document?.contentType && globalThis.document.contentType.includes("xml");
+
+ function F(e) {
+ return e === this.v
+ }
+
+ function H(e, t) {
+ return e != e ? t == t : e !== t || null !== e && "object" == typeof e || "function" == typeof e
+ }
+
+ function K(e) {
+ return !H(e, this.v)
+ }
+ const q = {},
+ Y = Symbol("uninitialized"),
+ G = "http://www.w3.org/1999/xhtml";
+ let W = null;
+
+ function J(e) {
+ W = e
+ }
+
+ function Z(e, t = !1, n) {
+ W = {
+ p: W,
+ i: !1,
+ c: null,
+ e: null,
+ s: e,
+ x: null,
+ r: jt,
+ l: null
+ }
+ }
+
+ function X(e) {
+ var t = W,
+ n = t.e;
+ if (null !== n)
+ for (var r of (t.e = null, n)) gn(r);
+ return void 0 !== e && (t.x = e), t.i = !0, W = t.p, e ?? {}
+ }
+ let Q = [];
+
+ function ee() {
+ var e = Q;
+ Q = [],
+ function(e) {
+ for (var t = 0; t < e.length; t++) e[t]()
+ }(e)
+ }
+
+ function te(e) {
+ if (0 === Q.length && !We) {
+ var t = Q;
+ queueMicrotask(() => {
+ t === Q && ee()
+ })
+ }
+ Q.push(e)
+ }
+
+ function ne() {
+ for (; Q.length > 0;) ee()
+ }
+
+ function re(e) {
+ console.warn("https://svelte.dev/e/hydration_mismatch")
+ }
+ let ae, oe = !1;
+
+ function ie(e) {
+ oe = e
+ }
+
+ function le(e) {
+ if (null === e) throw re(), q;
+ return ae = e
+ }
+
+ function se() {
+ return le($e(ae))
+ }
+
+ function ce(e) {
+ if (oe) {
+ if (null !== $e(ae)) throw re(), q;
+ ae = e
+ }
+ }
+
+ function ue(e = 1) {
+ if (oe) {
+ for (var t = e, n = ae; t--;) n = $e(n);
+ ae = n
+ }
+ }
+
+ function fe(e = !0) {
+ for (var t = 0, n = ae;;) {
+ if (8 === n.nodeType) {
+ var r = n.data;
+ if ("]" === r) {
+ if (0 === t) return n;
+ t -= 1
+ } else("[" === r || "[!" === r || "[" === r[0] && !isNaN(Number(r.slice(1)))) && (t += 1)
+ }
+ var a = $e(n);
+ e && n.remove(), n = a
+ }
+ }
+
+ function de(e) {
+ if (!e || 8 !== e.nodeType) throw re(), q;
+ return e.data
+ }
+
+ function he(e) {
+ if ("object" != typeof e || null === e || R in e) return e;
+ const n = f(e);
+ if (n !== c && n !== u) return e;
+ var r = new Map,
+ a = t(e),
+ o = St(0),
+ i = Jt,
+ s = e => {
+ if (Jt === i) return e();
+ var t = Vt,
+ n = Jt;
+ zt(null), Zt(i);
+ var r = e();
+ return zt(t), Zt(n), r
+ };
+ return a && r.set("length", St(e.length)), new Proxy(e, {
+ defineProperty(e, t, n) {
+ "value" in n && !1 !== n.configurable && !1 !== n.enumerable && !1 !== n.writable || function() {
+ throw new Error("https://svelte.dev/e/state_descriptors_fixed")
+ }();
+ var a = r.get(t);
+ return void 0 === a ? s(() => {
+ var e = St(n.value);
+ return r.set(t, e), e
+ }) : Et(a, n.value, !0), !0
+ },
+ deleteProperty(e, t) {
+ var n = r.get(t);
+ if (void 0 === n) {
+ if (t in e) {
+ const e = s(() => St(Y));
+ r.set(t, e), At(o)
+ }
+ } else Et(n, Y), At(o);
+ return !0
+ },
+ get(t, n, a) {
+ if (n === R) return e;
+ var o = r.get(n),
+ i = n in t;
+ if (void 0 !== o || i && !l(t, n)?.writable || (o = s(() => St(he(i ? t[n] : Y))), r.set(n, o)), void 0 !== o) {
+ var c = ln(o);
+ return c === Y ? void 0 : c
+ }
+ return Reflect.get(t, n, a)
+ },
+ getOwnPropertyDescriptor(e, t) {
+ var n = Reflect.getOwnPropertyDescriptor(e, t);
+ if (n && "value" in n) {
+ var a = r.get(t);
+ a && (n.value = ln(a))
+ } else if (void 0 === n) {
+ var o = r.get(t),
+ i = o?.v;
+ if (void 0 !== o && i !== Y) return {
+ enumerable: !0,
+ configurable: !0,
+ value: i,
+ writable: !0
+ }
+ }
+ return n
+ },
+ has(e, t) {
+ if (t === R) return !0;
+ var n = r.get(t),
+ a = void 0 !== n && n.v !== Y || Reflect.has(e, t);
+ if ((void 0 !== n || null !== jt && (!a || l(e, t)?.writable)) && (void 0 === n && (n = s(() => St(a ? he(e[t]) : Y)), r.set(t, n)), ln(n) === Y)) return !1;
+ return a
+ },
+ set(e, t, n, i) {
+ var c = r.get(t),
+ u = t in e;
+ if (a && "length" === t)
+ for (var f = n; f < c.v; f += 1) {
+ var d = r.get(f + "");
+ void 0 !== d ? Et(d, Y) : f in e && (d = s(() => St(Y)), r.set(f + "", d))
+ }
+ void 0 === c ? u && !l(e, t)?.writable || (Et(c = s(() => St(void 0)), he(n)), r.set(t, c)) : (u = c.v !== Y, Et(c, s(() => he(n))));
+ var h = Reflect.getOwnPropertyDescriptor(e, t);
+ if (h?.set && h.set.call(i, n), !u) {
+ if (a && "string" == typeof t) {
+ var p = r.get("length"),
+ v = Number(t);
+ Number.isInteger(v) && v >= p.v && Et(p, v + 1)
+ }
+ At(o)
+ }
+ return !0
+ },
+ ownKeys(e) {
+ ln(o);
+ var t = Reflect.ownKeys(e).filter(e => {
+ var t = r.get(e);
+ return void 0 === t || t.v !== Y
+ });
+ for (var [n, a] of r) a.v === Y || n in e || t.push(n);
+ return t
+ },
+ setPrototypeOf() {
+ ! function() {
+ throw new Error("https://svelte.dev/e/state_prototype_fixed")
+ }()
+ }
+ })
+ }
+
+ function pe(e) {
+ try {
+ if (null !== e && "object" == typeof e && R in e) return e[R]
+ } catch {}
+ return e
+ }
+
+ function ve(e, t) {
+ return Object.is(pe(e), pe(t))
+ }
+ var ge, me, be, ye, we;
+
+ function xe() {
+ if (void 0 === ge) {
+ ge = window, me = document, be = /Firefox/.test(navigator.userAgent);
+ var e = Element.prototype,
+ t = Node.prototype,
+ n = Text.prototype;
+ ye = l(t, "firstChild").get, we = l(t, "nextSibling").get, d(e) && (e[U] = void 0, e[D] = null, e[V] = void 0, e.__e = void 0), d(n) && (n[N] = void 0)
+ }
+ }
+
+ function ke(e = "") {
+ return document.createTextNode(e)
+ }
+
+ function _e(e) {
+ return ye.call(e)
+ }
+
+ function $e(e) {
+ return we.call(e)
+ }
+
+ function Se(e, t) {
+ if (!oe) return _e(e);
+ var n = _e(ae);
+ if (null === n) n = ae.appendChild(ke());
+ else if (t && 3 !== n.nodeType) {
+ var r = ke();
+ return n?.before(r), le(r), r
+ }
+ return t && Ae(n), le(n), n
+ }
+
+ function Ce(e, t = !1) {
+ if (!oe) {
+ var n = _e(e);
+ return n instanceof Comment && "" === n.data ? $e(n) : n
+ }
+ if (t) {
+ if (3 !== ae?.nodeType) {
+ var r = ke();
+ return ae?.before(r), le(r), r
+ }
+ Ae(ae)
+ }
+ return ae
+ }
+
+ function Ee(e, t = 1, n = !1) {
+ let r = oe ? ae : e;
+ for (var a; t--;) a = r, r = $e(r);
+ if (!oe) return r;
+ if (n) {
+ if (3 !== r?.nodeType) {
+ var o = ke();
+ return null === r ? a?.after(o) : r.before(o), le(o), o
+ }
+ Ae(r)
+ }
+ return le(r), r
+ }
+
+ function Te(e, t, n) {
+ let r;
+ return document.createElementNS(t ?? G, e, r)
+ }
+
+ function Ae(e) {
+ if (e.nodeValue.length < 65536) return;
+ let t = e.nextSibling;
+ for (; null !== t && 3 === t.nodeType;) t.remove(), e.nodeValue += t.nodeValue, t = e.nextSibling
+ }
+
+ function Ie(e) {
+ var t = jt;
+ if (null === t) return Vt.f |= O, e;
+ if (0 === (t.f & S) && !(4 & t.f)) throw e;
+ Pe(e, t)
+ }
+
+ function Pe(e, t) {
+ for (; null !== t;) {
+ if (128 & t.f) {
+ if (0 === (t.f & S)) throw e;
+ try {
+ return void t.b.error(e)
+ } catch (t) {
+ e = t
+ }
+ }
+ t = t.parent
+ }
+ throw e
+ }
+ const Oe = -7169;
+
+ function Re(e, t) {
+ e.f = e.f & Oe | t
+ }
+
+ function Le(e) {
+ 0 !== (e.f & y) || null === e.deps ? Re(e, w) : Re(e, k)
+ }
+
+ function Me(e) {
+ if (null !== e)
+ for (const t of e) 2 & t.f && 0 !== (t.f & I) && (t.f ^= I, Me(t.deps))
+ }
+
+ function De(e, t, n) {
+ 0 !== (e.f & x) ? t.add(e) : 0 !== (e.f & k) && n.add(e), Me(e.deps), Re(e, w)
+ }
+
+ function Ue(e, t, n) {
+ if (null == e) return t(void 0), h;
+ const r = un(() => e.subscribe(t, n));
+ return r.unsubscribe ? () => r.unsubscribe() : r
+ }
+ const Ve = [];
+
+ function Ne(e, t = h) {
+ let n = null;
+ const r = new Set;
+
+ function a(t) {
+ if (H(e, t) && (e = t, n)) {
+ const t = !Ve.length;
+ for (const t of r) t[1](), Ve.push(t, e);
+ if (t) {
+ for (let e = 0; e < Ve.length; e += 2) Ve[e][0](Ve[e + 1]);
+ Ve.length = 0
+ }
+ }
+ }
+
+ function o(t) {
+ a(t(e))
+ }
+ return {
+ set: a,
+ update: o,
+ subscribe: function(i, l = h) {
+ const s = [i, l];
+ return r.add(s), 1 === r.size && (n = t(a, o) || h), i(e), () => {
+ r.delete(s), 0 === r.size && n && (n(), n = null)
+ }
+ }
+ }
+ }
+
+ function ze(e) {
+ let t;
+ return Ue(e, e => t = e)(), t
+ }
+ let je = Symbol("unmounted");
+
+ function Be(e, t, n) {
+ const r = n[t] ??= {
+ store: null,
+ source: Ct(void 0),
+ unsubscribe: h
+ };
+ if (r.store !== e && !(je in n))
+ if (r.unsubscribe(), r.store = e ?? null, null == e) r.source.v = void 0, r.unsubscribe = h;
+ else {
+ var a = !0;
+ r.unsubscribe = Ue(e, e => {
+ a ? r.source.v = e : Et(r.source, e)
+ }), a = !1
+ } return e && je in n ? ze(e) : ln(r.source)
+ }
+ let Fe = null,
+ He = null,
+ Ke = null,
+ qe = null,
+ Ye = null,
+ Ge = null,
+ We = !1,
+ Je = !1,
+ Ze = null,
+ Xe = null;
+ var Qe = 0;
+ let et = 1;
+ class tt {
+ id = et++;
+ #e = !1;
+ linked = !0;
+ #t = null;
+ #n = null;
+ async_deriveds = new Map;
+ current = new Map;
+ previous = new Map;
+ unblocked = new Set;
+ #r = new Set;
+ #a = new Set;
+ #o = new Set;
+ #i = 0;
+ #l = new Map;
+ #s = null;
+ #c = [];
+ #u = [];
+ #f = new Set;
+ #d = new Set;
+ #h = new Map;
+ #p = new Set;
+ is_fork = !1;
+ #v = !1;
+ #g() {
+ if (this.is_fork) return !0;
+ for (const n of this.#l.keys()) {
+ for (var e = n, t = !1; null !== e.parent;) {
+ if (this.#h.has(e)) {
+ t = !0;
+ break
+ }
+ e = e.parent
+ }
+ if (!t) return !0
+ }
+ return !1
+ }
+ skip_effect(e) {
+ this.#h.has(e) || this.#h.set(e, {
+ d: [],
+ m: []
+ }), this.#p.delete(e)
+ }
+ unskip_effect(e, t = e => this.schedule(e)) {
+ var n = this.#h.get(e);
+ if (n) {
+ for (var r of (this.#h.delete(e), n.d)) Re(r, x), t(r);
+ for (r of n.m) Re(r, k), t(r)
+ }
+ this.#p.add(e)
+ }
+ #m() {
+ if (this.#e = !0, Qe++ > 1e3 && (this.#b(), function() {
+ try {
+ ! function() {
+ throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")
+ }()
+ } catch (e) {
+ Pe(e, Ge)
+ }
+ }()), !this.#g()) {
+ for (const e of this.#f) this.#d.delete(e), Re(e, x), this.schedule(e);
+ for (const e of this.#d) Re(e, k), this.schedule(e)
+ }
+ const e = this.#c;
+ this.#c = [], this.apply();
+ var t = Ze = [],
+ n = [],
+ r = Xe = [];
+ for (const r of e) try {
+ this.#y(r, t, n)
+ } catch (e) {
+ throw ct(r), e
+ }
+ if (Ke = null, r.length > 0) {
+ var a = tt.ensure();
+ for (const e of r) a.schedule(e)
+ }
+ if (Ze = null, Xe = null, this.#g()) {
+ this.#w(n), this.#w(t);
+ for (const [e, t] of this.#h) st(e, t);
+ return void(r.length > 0 && Ke.#m())
+ }
+ const o = this.#x();
+ if (o) o.#k(this);
+ else {
+ this.#f.clear(), this.#d.clear();
+ for (const e of this.#r) e(this);
+ this.#r.clear(), qe = this, at(n), at(t), qe = null, this.#s?.resolve();
+ var i = Ke;
+ if (this.linked && 0 === this.#i && this.#b(), this.#c.length > 0) {
+ null === i && (i = this, this.#_());
+ const e = i;
+ e.#c.push(...this.#c.filter(t => !e.#c.includes(t)))
+ }
+ null !== i && i.#m()
+ }
+ }
+ #y(e, t, n) {
+ e.f ^= w;
+ for (var r = e.first; null !== r;) {
+ var a = r.f,
+ o = !!(96 & a);
+ if (!(o && 0 !== (a & w) || 0 !== (a & _) || this.#h.has(r)) && null !== r.fn) {
+ o ? r.f ^= w : 4 & a ? t.push(r) : Qt(r) && (0 !== (a & g) && this.#d.add(r), an(r));
+ var i = r.first;
+ if (null !== i) {
+ r = i;
+ continue
+ }
+ }
+ for (; null !== r;) {
+ var l = r.next;
+ if (null !== l) {
+ r = l;
+ break
+ }
+ r = r.parent
+ }
+ }
+ }
+ #x() {
+ for (var e = this.#t; null !== e;) {
+ if (!e.is_fork)
+ for (const [t, [, n]] of this.current)
+ if (e.current.has(t) && !n) return e;
+ e = e.#t
+ }
+ return null
+ }
+ #k(e) {
+ for (const [t, n] of e.current) !this.previous.has(t) && e.previous.has(t) && this.previous.set(t, e.previous.get(t)), this.current.set(t, n);
+ for (const [t, n] of e.async_deriveds) {
+ const e = this.async_deriveds.get(t);
+ e && n.promise.then(e.resolve)
+ }
+ const t = e => {
+ var n = e.reactions;
+ if (null !== n)
+ for (const e of n) {
+ var r = e.f;
+ if (2 & r) t(e);
+ else {
+ var a = e;
+ 4194320 & r && !this.async_deriveds.has(a) && (this.#d.delete(a), Re(a, x), this.schedule(a))
+ }
+ }
+ };
+ for (const e of this.current.keys()) t(e);
+ this.oncommit(() => e.discard()), e.#b(), Ke = this, this.#m()
+ }
+ #w(e) {
+ for (var t = 0; t < e.length; t += 1) De(e[t], this.#f, this.#d)
+ }
+ capture(e, t, n = !1) {
+ e.v === Y || this.previous.has(e) || this.previous.set(e, e.v), 0 === (e.f & O) && (this.current.set(e, [t, n]), Ye?.set(e, t)), this.is_fork || (e.v = t)
+ }
+ activate() {
+ Ke = this
+ }
+ deactivate() {
+ Ke = null, Ye = null
+ }
+ flush() {
+ try {
+ e,
+ Je = !0,
+ Ke = this,
+ this.#m()
+ }
+ finally {
+ Qe = 0, Ge = null, Ze = null, Xe = null, Je = !1, Ke = null, Ye = null, kt.clear()
+ }
+ }
+ discard() {
+ for (const e of this.#a) e(this);
+ this.#a.clear(), this.#o.clear(), this.#b()
+ }
+ register_created_effect(e) {
+ this.#u.push(e)
+ }
+ #$() {
+ this.#b();
+ for (let c = Fe; null !== c; c = c.#n) {
+ var e = c.id < this.id,
+ t = [];
+ for (const [r, [a, o]] of this.current) {
+ if (c.current.has(r)) {
+ var n = c.current.get(r)[0];
+ if (!e || a === n) continue;
+ c.current.set(r, [a, o])
+ }
+ t.push(r)
+ }
+ if (e)
+ for (const [e, t] of this.async_deriveds) {
+ const n = c.async_deriveds.get(e);
+ n && t.promise.then(n.resolve)
+ }
+ if (c.#e) {
+ var r = [...c.current.keys()].filter(e => !this.current.has(e));
+ if (0 === r.length) e && c.discard();
+ else if (t.length > 0) {
+ if (e)
+ for (const e of this.#p) c.unskip_effect(e, e => {
+ 4194320 & e.f ? c.schedule(e) : c.#w([e])
+ });
+ c.activate();
+ var a = new Set,
+ o = new Map;
+ for (var i of t) ot(i, r, a, o);
+ o = new Map;
+ var l = [...c.current.keys()].filter(e => !this.current.has(e) || this.current.get(e)[0] !== e.v);
+ if (l.length > 0)
+ for (const e of this.#u) 155648 & e.f || !it(e, l, o) || (4194320 & e.f ? (Re(e, x), c.schedule(e)) : c.#f.add(e));
+ if (c.#c.length > 0) {
+ for (var s of (c.apply(), c.#c)) c.#y(s, [], []);
+ c.#c = []
+ }
+ c.deactivate()
+ }
+ }
+ }
+ }
+ increment(e, t) {
+ if (this.#i += 1, e) {
+ let e = this.#l.get(t) ?? 0;
+ this.#l.set(t, e + 1)
+ }
+ }
+ decrement(e, t) {
+ if (this.#i -= 1, e) {
+ let e = this.#l.get(t) ?? 0;
+ 1 === e ? this.#l.delete(t) : this.#l.set(t, e - 1)
+ }
+ this.#v || (this.#v = !0, te(() => {
+ this.#v = !1, this.linked && this.flush()
+ }))
+ }
+ transfer_effects(e, t) {
+ for (const t of e) this.#f.add(t);
+ for (const e of t) this.#d.add(e);
+ e.clear(), t.clear()
+ }
+ oncommit(e) {
+ this.#r.add(e)
+ }
+ ondiscard(e) {
+ this.#a.add(e)
+ }
+ on_fork_commit(e) {
+ this.#o.add(e)
+ }
+ run_fork_commit_callbacks() {
+ for (const e of this.#o) e(this);
+ this.#o.clear()
+ }
+ settled() {
+ return (this.#s ??= p()).promise
+ }
+ static ensure() {
+ if (null === Ke) {
+ const e = Ke = new tt;
+ e.#_(), Je || We || te(() => {
+ e.#e || e.flush()
+ })
+ }
+ return Ke
+ }
+ apply() {
+ Ye = null
+ }
+ schedule(e) {
+ if (Ge = e, e.b?.is_pending && 16777228 & e.f && 0 === (e.f & S)) e.b.defer_effect(e);
+ else {
+ for (var t = e; null !== t.parent;) {
+ var n = (t = t.parent).f;
+ if (!(null === Ze || t !== jt || null !== Vt && 2 & Vt.f)) return;
+ if (96 & n) {
+ if (0 === (n & w)) return;
+ t.f ^= w
+ }
+ }
+ this.#c.push(t)
+ }
+ }
+ #_() {
+ null === He ? Fe = He = this : (He.#n = this, this.#t = He), He = this
+ }
+ #b() {
+ var e = this.#t,
+ t = this.#n;
+ null === e ? Fe = t : e.#n = t, null === t ? He = e : t.#t = e, this.linked = !1
+ }
+ }
+
+ function nt(e) {
+ var t = We;
+ We = !0;
+ try {
+ for (;;) {
+ if (ne(), null === Ke) return;
+ Ke.flush()
+ }
+ } finally {
+ We = t
+ }
+ }
+ let rt = null;
+
+ function at(e) {
+ var t = e.length;
+ if (0 !== t) {
+ for (var n = 0; n < t;) {
+ var r = e[n++];
+ if (!(24576 & r.f) && Qt(r) && (rt = new Set, an(r), null === r.deps && null === r.first && null === r.nodes && null === r.teardown && null === r.ac && En(r), rt?.size > 0)) {
+ kt.clear();
+ for (const e of rt) {
+ if (24576 & e.f) continue;
+ const t = [e];
+ let n = e.parent;
+ for (; null !== n;) rt.has(n) && (rt.delete(n), t.push(n)), n = n.parent;
+ for (let e = t.length - 1; e >= 0; e--) {
+ const n = t[e];
+ 24576 & n.f || an(n)
+ }
+ }
+ rt.clear()
+ }
+ }
+ rt = null
+ }
+ }
+
+ function ot(e, t, n, r) {
+ if (!n.has(e) && (n.add(e), null !== e.reactions))
+ for (const a of e.reactions) {
+ const e = a.f;
+ 2 & e ? ot(a, t, n, r) : 4194320 & e && 0 === (e & x) && it(a, t, r) && (Re(a, x), lt(a))
+ }
+ }
+
+ function it(e, t, n) {
+ const a = n.get(e);
+ if (void 0 !== a) return a;
+ if (null !== e.deps)
+ for (const a of e.deps) {
+ if (r.call(t, a)) return !0;
+ if (2 & a.f && it(a, t, n)) return n.set(a, !0), !0
+ }
+ return n.set(e, !1), !1
+ }
+
+ function lt(e) {
+ Ke.schedule(e)
+ }
+
+ function st(e, t) {
+ if (0 === (e.f & m) || 0 === (e.f & w)) {
+ 0 !== (e.f & x) ? t.d.push(e) : 0 !== (e.f & k) && t.m.push(e), Re(e, w);
+ for (var n = e.first; null !== n;) st(n, t), n = n.next
+ }
+ }
+
+ function ct(e) {
+ Re(e, w);
+ for (var t = e.first; null !== t;) ct(t), t = t.next
+ }
+ class ut {
+ parent;
+ is_pending = !1;
+ transform_error;
+ #S;
+ #C = oe ? ae : null;
+ #E;
+ #T;
+ #A;
+ #I = null;
+ #P = null;
+ #O = null;
+ #R = null;
+ #L = 0;
+ #M = 0;
+ #D = !1;
+ #f = new Set;
+ #d = new Set;
+ #U = null;
+ #V = function(e) {
+ let t, n = 0,
+ r = $t(0);
+ return () => {
+ hn() && (ln(r), bn(() => (0 === n && (t = un(() => e(() => At(r)))), n += 1, () => {
+ te(() => {
+ n -= 1, 0 === n && (t?.(), t = void 0, At(r))
+ })
+ })))
+ }
+ }(() => (this.#U = $t(this.#L), () => {
+ this.#U = null
+ }));
+ constructor(e, t, n, r) {
+ this.#S = e, this.#E = t, this.#T = e => {
+ var t = jt;
+ t.b = this, t.f |= 128, n(e)
+ }, this.parent = jt.b, this.transform_error = r ?? this.parent?.transform_error ?? (e => e), this.#A = wn(() => {
+ if (oe) {
+ const e = this.#C;
+ se();
+ const t = "[!" === e.data;
+ if (e.data.startsWith("[?")) {
+ const t = JSON.parse(e.data.slice(2));
+ this.#N(t)
+ } else t ? this.#z() : this.#j()
+ } else this.#B()
+ }, 589824), oe && (this.#S = ae)
+ }
+ #j() {
+ try {
+ this.#I = kn(() => this.#T(this.#S))
+ } catch (e) {
+ this.error(e)
+ }
+ }
+ #N(e) {
+ const t = this.#E.failed;
+ t && (this.#O = kn(() => {
+ t(this.#S, () => e, () => () => {})
+ }))
+ }
+ #z() {
+ const e = this.#E.pending;
+ e && (this.is_pending = !0, this.#P = kn(() => e(this.#S)), te(() => {
+ var e = this.#R = document.createDocumentFragment(),
+ t = ke();
+ e.append(t), this.#I = this.#F(() => kn(() => this.#T(t))), 0 === this.#M && (this.#S.before(e), this.#R = null, Tn(this.#P, () => {
+ this.#P = null
+ }), this.#H(Ke))
+ }))
+ }
+ #B() {
+ try {
+ if (this.is_pending = this.has_pending_snippet(), this.#M = 0, this.#L = 0, this.#I = kn(() => {
+ this.#T(this.#S)
+ }), this.#M > 0) {
+ var e = this.#R = document.createDocumentFragment();
+ On(this.#I, e);
+ const t = this.#E.pending;
+ this.#P = kn(() => t(this.#S))
+ } else this.#H(Ke)
+ } catch (e) {
+ this.error(e)
+ }
+ }
+ #H(e) {
+ this.is_pending = !1, e.transfer_effects(this.#f, this.#d)
+ }
+ defer_effect(e) {
+ De(e, this.#f, this.#d)
+ }
+ is_rendered() {
+ return !this.is_pending && (!this.parent || this.parent.is_rendered())
+ }
+ has_pending_snippet() {
+ return !!this.#E.pending
+ }
+ #F(e) {
+ var t = jt,
+ n = Vt,
+ r = W;
+ Bt(this.#A), zt(this.#A), J(this.#A.ctx);
+ try {
+ return tt.ensure(), e()
+ } catch (e) {
+ return Ie(e), null
+ } finally {
+ Bt(t), zt(n), J(r)
+ }
+ }
+ #K(e, t) {
+ this.has_pending_snippet() ? (this.#M += e, 0 === this.#M && (this.#H(t), this.#P && Tn(this.#P, () => {
+ this.#P = null
+ }), this.#R && (this.#S.before(this.#R), this.#R = null))) : this.parent && this.parent.#K(e, t)
+ }
+ update_pending_count(e, t) {
+ this.#K(e, t), this.#L += e, this.#U && !this.#D && (this.#D = !0, te(() => {
+ this.#D = !1, this.#U && Tt(this.#U, this.#L)
+ }))
+ }
+ get_effect_pending() {
+ return this.#V(), ln(this.#U)
+ }
+ error(e) {
+ if (!this.#E.onerror && !this.#E.failed) throw e;
+ Ke?.is_fork ? (this.#I && Ke.skip_effect(this.#I), this.#P && Ke.skip_effect(this.#P), this.#O && Ke.skip_effect(this.#O), Ke.on_fork_commit(() => {
+ this.#q(e)
+ })) : this.#q(e)
+ }
+ #q(e) {
+ this.#I && (Sn(this.#I), this.#I = null), this.#P && (Sn(this.#P), this.#P = null), this.#O && (Sn(this.#O), this.#O = null), oe && (le(this.#C), ue(), le(fe()));
+ var t = this.#E.onerror;
+ let n = this.#E.failed;
+ var r = !1,
+ a = !1;
+ const o = () => {
+ r ? console.warn("https://svelte.dev/e/svelte_boundary_reset_noop") : (r = !0, a && function() {
+ throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")
+ }(), null !== this.#O && Tn(this.#O, () => {
+ this.#O = null
+ }), this.#F(() => {
+ this.#B()
+ }))
+ },
+ i = e => {
+ try {
+ a = !0, t?.(e, o), a = !1
+ } catch (e) {
+ Pe(e, this.#A && this.#A.parent)
+ }
+ n && (this.#O = this.#F(() => {
+ try {
+ return kn(() => {
+ var t = jt;
+ t.b = this, t.f |= 128, n(this.#S, () => e, () => o)
+ })
+ } catch (e) {
+ return Pe(e, this.#A.parent), null
+ }
+ }))
+ };
+ te(() => {
+ var t;
+ try {
+ t = this.transform_error(e)
+ } catch (e) {
+ return void Pe(e, this.#A && this.#A.parent)
+ }
+ null !== t && "object" == typeof t && "function" == typeof t.then ? t.then(i, e => Pe(e, this.#A && this.#A.parent)) : i(t)
+ })
+ }
+ }
+
+ function ft(e, t, n, r) {
+ const a = pt;
+ var o = e.filter(e => !e.settled);
+ if (0 !== n.length || 0 !== o.length) {
+ var i, l, s, c, u = jt,
+ f = (i = jt, l = Vt, s = W, c = Ke, function(e = !0) {
+ Bt(i), zt(l), J(s), e && 0 === (i.f & $) && (c?.activate(), c?.apply())
+ }),
+ d = 1 === o.length ? o[0].promise : o.length > 1 ? Promise.all(o.map(e => e.promise)) : null,
+ h = ht();
+ 0 !== n.length ? d ? d.then(() => {
+ f(), v(), dt()
+ }) : v() : d.then(() => p(t.map(a))).finally(h)
+ } else r(t.map(a));
+
+ function p(e) {
+ if (0 === (u.f & $)) {
+ f();
+ try {
+ r(e)
+ } catch (e) {
+ Pe(e, u)
+ }
+ dt()
+ }
+ }
+
+ function v() {
+ Promise.all(n.map(e => gt(e))).then(e => p([...t.map(a), ...e])).catch(e => Pe(e, u)).finally(h)
+ }
+ }
+
+ function dt(e = !0) {
+ Bt(null), zt(null), J(null), e && Ke?.deactivate()
+ }
+
+ function ht() {
+ var e = jt,
+ t = e.b,
+ n = Ke,
+ r = t.is_rendered();
+ return t.update_pending_count(1, n), n.increment(r, e), () => {
+ t.update_pending_count(-1, n), n.decrement(r, e)
+ }
+ }
+
+ function pt(e) {
+ null !== jt && (jt.f |= A);
+ return {
+ ctx: W,
+ deps: null,
+ effects: null,
+ equals: F,
+ f: 2050,
+ fn: e,
+ reactions: null,
+ rv: 0,
+ v: Y,
+ wv: 0,
+ parent: jt,
+ ac: null
+ }
+ }
+ const vt = Symbol("obsolete");
+
+ function gt(e, t, n) {
+ let r = jt;
+ null === r && function() {
+ throw new Error("https://svelte.dev/e/async_derived_orphan")
+ }();
+ var a = void 0,
+ o = $t(Y),
+ i = !Vt,
+ l = new Set;
+ return function(e) {
+ dn(4718592, e)
+ }(() => {
+ var t = jt,
+ n = p();
+ a = n.promise;
+ try {
+ Promise.resolve(e()).then(n.resolve, e => {
+ e !== j && n.reject(e)
+ }).finally(dt)
+ } catch (e) {
+ n.reject(e), dt()
+ }
+ var s = Ke;
+ if (i) {
+ if (0 !== (t.f & S)) var c = ht();
+ if (r.b.is_rendered()) s.async_deriveds.get(t)?.reject(vt);
+ else
+ for (const e of l.values()) e.reject(vt);
+ l.add(n), s.async_deriveds.set(t, n)
+ }
+ const u = (e, t = void 0) => {
+ c?.(), l.delete(n), t !== vt && (s.activate(), t ? (o.f |= O, Tt(o, t)) : (0 !== (o.f & O) && (o.f ^= O), Tt(o, e)), s.deactivate())
+ };
+ n.promise.then(u, e => u(null, e || "unknown"))
+ }), pn(() => {
+ for (const e of l) e.reject(vt)
+ }), new Promise(e => {
+ ! function t(n) {
+ function r() {
+ n === a ? e(o) : t(a)
+ }
+ n.then(r, r)
+ }(a)
+ })
+ }
+
+ function mt(e) {
+ const t = pt(e);
+ return Ht(t), t
+ }
+
+ function bt(e) {
+ var t, n = jt,
+ r = e.parent;
+ if (!Dt && null !== r && e.v !== Y && 24576 & r.f) return console.warn("https://svelte.dev/e/derived_inert"), e.v;
+ Bt(r);
+ try {
+ e.f &= -65537,
+ function(e) {
+ var t = e.effects;
+ if (null !== t) {
+ e.effects = null;
+ for (var n = 0; n < t.length; n += 1) Sn(t[n])
+ }
+ }(e), t = tn(e)
+ } finally {
+ Bt(n)
+ }
+ return t
+ }
+
+ function yt(e) {
+ var t = bt(e);
+ e.equals(t) || (e.wv = Xt(), Ke?.is_fork && null !== e.deps || (null !== Ke ? (Ke.capture(e, t, !0), qe?.capture(e, t, !0)) : e.v = t, null !== e.deps)) ? Dt || (null !== Ye ? (hn() || Ke?.is_fork) && Ye.set(e, t) : Le(e)) : Re(e, w)
+ }
+
+ function wt(e) {
+ if (null !== e.effects)
+ for (const t of e.effects) t.teardown && null !== t.fn && an(t)
+ }
+ let xt = new Set;
+ const kt = new Map;
+ let _t = !1;
+
+ function $t(e, t) {
+ return {
+ f: 0,
+ v: e,
+ reactions: null,
+ equals: F,
+ rv: 0,
+ wv: 0
+ }
+ }
+
+ function St(e, t) {
+ const n = $t(e);
+ return Ht(n), n
+ }
+
+ function Ct(e, t = !1, n = !0) {
+ const r = $t(e);
+ return t || (r.equals = K), r
+ }
+
+ function Et(e, t, n = !1) {
+ return null === Vt || Nt && 0 === (Vt.f & T) || !(4325394 & Vt.f) || null !== Ft && r.call(Ft, e) || function() {
+ throw new Error("https://svelte.dev/e/state_unsafe_mutation")
+ }(), Tt(e, n ? he(t) : t, Xe)
+ }
+
+ function Tt(e, t, n = null) {
+ if (!e.equals(t)) {
+ kt.set(e, Dt ? t : e.v);
+ var r = tt.ensure();
+ if (r.capture(e, t), 2 & e.f) {
+ const t = e;
+ 0 !== (e.f & x) && bt(t), null === Ye && Le(t)
+ }
+ e.wv = Xt(), It(e, x, n), null === jt || 0 === (jt.f & w) || 96 & jt.f || (null === Yt ? function(e) {
+ Yt = e
+ }([e]) : Yt.push(e)), !r.is_fork && xt.size > 0 && !_t && function() {
+ _t = !1;
+ for (const e of xt) {
+ let t;
+ 0 !== (e.f & w) && Re(e, k);
+ try {
+ t = Qt(e)
+ } catch {
+ t = !0
+ }
+ t && an(e)
+ }
+ xt.clear()
+ }()
+ }
+ return t
+ }
+
+ function At(e) {
+ Et(e, e.v + 1)
+ }
+
+ function It(e, t, n) {
+ var r = e.reactions;
+ if (null !== r)
+ for (var a = r.length, o = 0; o < a; o++) {
+ var i = r[o],
+ l = i.f,
+ s = 0 === (l & x);
+ if (s && Re(i, t), 0 !== (l & T)) xt.add(i);
+ else if (2 & l) {
+ var c = i;
+ Ye?.delete(c), 0 === (l & I) && (l & y && (null === jt || 0 === (jt.f & P)) && (i.f |= I), It(c, k, n))
+ } else if (s) {
+ var u = i;
+ 0 !== (l & g) && null !== rt && rt.add(u), null !== n ? n.push(u) : lt(u)
+ }
+ }
+ }
+
+ function Pt(e, t) {
+ if (t) {
+ const t = document.body;
+ e.autofocus = !0, te(() => {
+ document.activeElement === t && e.focus()
+ })
+ }
+ }
+ let Ot = !1;
+
+ function Rt() {
+ Ot || (Ot = !0, document.addEventListener("reset", e => {
+ Promise.resolve().then(() => {
+ if (!e.defaultPrevented)
+ for (const t of e.target.elements) t[z]?.()
+ })
+ }, {
+ capture: !0
+ }))
+ }
+
+ function Lt(e) {
+ var t = Vt,
+ n = jt;
+ zt(null), Bt(null);
+ try {
+ return e()
+ } finally {
+ zt(t), Bt(n)
+ }
+ }
+ let Mt = !1,
+ Dt = !1;
+
+ function Ut(e) {
+ Dt = e
+ }
+ let Vt = null,
+ Nt = !1;
+
+ function zt(e) {
+ Vt = e
+ }
+ let jt = null;
+
+ function Bt(e) {
+ jt = e
+ }
+ let Ft = null;
+
+ function Ht(e) {
+ null !== Vt && (null === Ft ? Ft = [e] : Ft.push(e))
+ }
+ let Kt = null,
+ qt = 0,
+ Yt = null;
+ let Gt = 1,
+ Wt = 0,
+ Jt = Wt;
+
+ function Zt(e) {
+ Jt = e
+ }
+
+ function Xt() {
+ return ++Gt
+ }
+
+ function Qt(e) {
+ var t = e.f;
+ if (0 !== (t & x)) return !0;
+ if (2 & t && (e.f &= -65537), 0 !== (t & k)) {
+ for (var n = e.deps, r = n.length, a = 0; a < r; a++) {
+ var o = n[a];
+ if (Qt(o) && yt(o), o.wv > e.wv) return !0
+ }
+ 0 !== (t & y) && null === Ye && Re(e, w)
+ }
+ return !1
+ }
+
+ function en(e, t, n = !0) {
+ var a = e.reactions;
+ if (null !== a && (null === Ft || !r.call(Ft, e)))
+ for (var o = 0; o < a.length; o++) {
+ var i = a[o];
+ 2 & i.f ? en(i, t, !1) : t === i && (n ? Re(i, x) : 0 !== (i.f & w) && Re(i, k), lt(i))
+ }
+ }
+
+ function tn(e) {
+ var t = Kt,
+ n = qt,
+ r = Yt,
+ a = Vt,
+ o = Ft,
+ i = W,
+ l = Nt,
+ s = Jt,
+ c = e.f;
+ Kt = null, qt = 0, Yt = null, Vt = 96 & c ? null : e, Ft = null, J(e.ctx), Nt = !1, Jt = ++Wt, null !== e.ac && (Lt(() => {
+ e.ac.abort(j)
+ }), e.ac = null);
+ try {
+ e.f |= P;
+ var u = (0, e.fn)();
+ e.f |= S;
+ var f = e.deps,
+ d = Ke?.is_fork;
+ if (null !== Kt) {
+ var h;
+ if (d || rn(e, qt), null !== f && qt > 0)
+ for (f.length = qt + Kt.length, h = 0; h < Kt.length; h++) f[qt + h] = Kt[h];
+ else e.deps = f = Kt;
+ if (hn() && 0 !== (e.f & y))
+ for (h = qt; h < f.length; h++)(f[h].reactions ??= []).push(e)
+ } else !d && null !== f && qt < f.length && (rn(e, qt), f.length = qt);
+ if (!(null === Yt || Nt || null === f || 6146 & e.f))
+ for (h = 0; h < Yt.length; h++) en(Yt[h], e);
+ if (null !== a && a !== e) {
+ if (Wt++, null !== a.deps)
+ for (let e = 0; e < n; e += 1) a.deps[e].rv = Wt;
+ if (null !== t)
+ for (const e of t) e.rv = Wt;
+ null !== Yt && (null === r ? r = Yt : r.push(...Yt))
+ }
+ return 0 !== (e.f & O) && (e.f ^= O), u
+ } catch (e) {
+ return Ie(e)
+ } finally {
+ e.f ^= P, Kt = t, qt = n, Yt = r, Vt = a, Ft = o, J(i), Nt = l, Jt = s
+ }
+ }
+
+ function nn(e, t) {
+ let a = t.reactions;
+ if (null !== a) {
+ var o = n.call(a, e);
+ if (-1 !== o) {
+ var i = a.length - 1;
+ 0 === i ? a = t.reactions = null : (a[o] = a[i], a.pop())
+ }
+ }
+ if (null === a && 2 & t.f && (null === Kt || !r.call(Kt, t))) {
+ var l = t;
+ 0 !== (l.f & y) && (l.f ^= y, l.f &= -65537), l.v !== Y && Le(l),
+ function(e) {
+ if (null !== e.effects)
+ for (const t of e.effects)(t.teardown || t.ac) && (t.teardown?.(), t.ac?.abort(j), null !== t.fn && (t.teardown = h), t.ac = null, rn(t, 0), $n(t))
+ }(l), rn(l, 0)
+ }
+ }
+
+ function rn(e, t) {
+ var n = e.deps;
+ if (null !== n)
+ for (var r = t; r < n.length; r++) nn(e, n[r])
+ }
+
+ function an(e) {
+ var t = e.f;
+ if (0 === (t & $)) {
+ Re(e, w);
+ var n = jt,
+ r = Mt;
+ jt = e, Mt = !0;
+ try {
+ 16777232 & t ? function(e) {
+ var t = e.first;
+ for (; null !== t;) {
+ var n = t.next;
+ 0 === (t.f & m) && Sn(t), t = n
+ }
+ }(e) : $n(e), _n(e);
+ var a = tn(e);
+ e.teardown = "function" == typeof a ? a : null, e.wv = Gt
+ } finally {
+ Mt = r, jt = n
+ }
+ }
+ }
+ async function on() {
+ await Promise.resolve(), nt()
+ }
+
+ function ln(e) {
+ var t = !!(2 & e.f);
+ if (null !== Vt && !Nt && !(null !== jt && 0 !== (jt.f & $) || null !== Ft && r.call(Ft, e))) {
+ var n = Vt.deps;
+ if (0 !== (Vt.f & P)) e.rv < Wt && (e.rv = Wt, null === Kt && null !== n && n[qt] === e ? qt++ : null === Kt ? Kt = [e] : Kt.push(e));
+ else {
+ (Vt.deps ??= []).push(e);
+ var a = e.reactions;
+ null === a ? e.reactions = [Vt] : r.call(a, Vt) || a.push(Vt)
+ }
+ }
+ if (Dt && kt.has(e)) return kt.get(e);
+ if (t) {
+ var o = e;
+ if (Dt) {
+ var i = o.v;
+ return (0 === (o.f & w) && null !== o.reactions || cn(o)) && (i = bt(o)), kt.set(o, i), i
+ }
+ var l = 0 === (o.f & y) && !Nt && null !== Vt && (Mt || 0 !== (Vt.f & y)),
+ s = 0 === (o.f & S);
+ Qt(o) && (l && (o.f |= y), yt(o)), l && !s && (wt(o), sn(o))
+ }
+ if (Ye?.has(e)) return Ye.get(e);
+ if (0 !== (e.f & O)) throw e.v;
+ return e.v
+ }
+
+ function sn(e) {
+ if (e.f |= y, null !== e.deps)
+ for (const t of e.deps)(t.reactions ??= []).push(e), 2 & t.f && 0 === (t.f & y) && (wt(t), sn(t))
+ }
+
+ function cn(e) {
+ if (e.v === Y) return !0;
+ if (null === e.deps) return !1;
+ for (const t of e.deps) {
+ if (kt.has(t)) return !0;
+ if (2 & t.f && cn(t)) return !0
+ }
+ return !1
+ }
+
+ function un(e) {
+ var t = Nt;
+ try {
+ return Nt = !0, e()
+ } finally {
+ Nt = t
+ }
+ }
+
+ function fn(e) {
+ null === jt && (null === Vt && function() {
+ throw new Error("https://svelte.dev/e/effect_orphan")
+ }(), function() {
+ throw new Error("https://svelte.dev/e/effect_in_unowned_derived")
+ }()), Dt && function() {
+ throw new Error("https://svelte.dev/e/effect_in_teardown")
+ }()
+ }
+
+ function dn(e, t) {
+ var n = jt;
+ null !== n && 0 !== (n.f & _) && (e |= _);
+ var r = {
+ ctx: W,
+ deps: null,
+ nodes: null,
+ f: e | x | y,
+ first: null,
+ fn: t,
+ last: null,
+ next: null,
+ parent: n,
+ b: n && n.b,
+ prev: null,
+ teardown: null,
+ wv: 0,
+ ac: null
+ };
+ Ke?.register_created_effect(r);
+ var a = r;
+ if (4 & e) null !== Ze ? Ze.push(r) : tt.ensure().schedule(r);
+ else if (null !== t) {
+ try {
+ an(r)
+ } catch (e) {
+ throw Sn(r), e
+ }
+ null === a.deps && null === a.teardown && null === a.nodes && a.first === a.last && 0 === (a.f & A) && (a = a.first, 0 !== (e & g) && 0 !== (e & E) && null !== a && (a.f |= E))
+ }
+ if (null !== a && (a.parent = n, null !== n && function(e, t) {
+ var n = t.last;
+ null === n ? t.last = t.first = e : (n.next = e, e.prev = n, t.last = e)
+ }(a, n), null !== Vt && 2 & Vt.f && 0 === (e & b))) {
+ var o = Vt;
+ (o.effects ??= []).push(a)
+ }
+ return r
+ }
+
+ function hn() {
+ return null !== Vt && !Nt
+ }
+
+ function pn(e) {
+ const t = dn(8, null);
+ return Re(t, w), t.teardown = e, t
+ }
+
+ function vn(e) {
+ fn();
+ var t = jt.f;
+ if (!(!Vt && 0 !== (t & m) && 0 === (t & S))) return gn(e);
+ var n = W;
+ (n.e ??= []).push(e)
+ }
+
+ function gn(e) {
+ return dn(1048580, e)
+ }
+
+ function mn(e) {
+ return dn(4, e)
+ }
+
+ function bn(e, t = 0) {
+ return dn(8 | t, e)
+ }
+
+ function yn(e, t = [], n = [], r = []) {
+ ft(r, t, n, t => {
+ dn(8, () => e(...t.map(ln)))
+ })
+ }
+
+ function wn(e, t = 0) {
+ return dn(g | t, e)
+ }
+
+ function xn(e, t = 0) {
+ return dn(v | t, e)
+ }
+
+ function kn(e) {
+ return dn(524320, e)
+ }
+
+ function _n(e) {
+ var t = e.teardown;
+ if (null !== t) {
+ const e = Dt,
+ n = Vt;
+ Ut(!0), zt(null);
+ try {
+ t.call(null)
+ } finally {
+ Ut(e), zt(n)
+ }
+ }
+ }
+
+ function $n(e, t = !1) {
+ var n = e.first;
+ for (e.first = e.last = null; null !== n;) {
+ const e = n.ac;
+ null !== e && Lt(() => {
+ e.abort(j)
+ });
+ var r = n.next;
+ 0 !== (n.f & b) ? n.parent = null : Sn(n, t), n = r
+ }
+ }
+
+ function Sn(e, t = !0) {
+ var n = !1;
+ (t || 262144 & e.f) && null !== e.nodes && null !== e.nodes.end && (Cn(e.nodes.start, e.nodes.end), n = !0), Re(e, C), $n(e, t && !n), rn(e, 0);
+ var r = e.nodes && e.nodes.t;
+ if (null !== r)
+ for (const e of r) e.stop();
+ _n(e), e.f ^= C, e.f |= $;
+ var a = e.parent;
+ null !== a && null !== a.first && En(e), e.next = e.prev = e.teardown = e.ctx = e.deps = e.fn = e.nodes = e.ac = e.b = null
+ }
+
+ function Cn(e, t) {
+ for (; null !== e;) {
+ var n = e === t ? null : $e(e);
+ e.remove(), e = n
+ }
+ }
+
+ function En(e) {
+ var t = e.parent,
+ n = e.prev,
+ r = e.next;
+ null !== n && (n.next = r), null !== r && (r.prev = n), null !== t && (t.first === e && (t.first = r), t.last === e && (t.last = n))
+ }
+
+ function Tn(e, t, n = !0) {
+ var r = [];
+ An(e, r, !0);
+ var a = () => {
+ n && Sn(e), t && t()
+ },
+ o = r.length;
+ if (o > 0) {
+ var i = () => --o || a();
+ for (var l of r) l.out(i)
+ } else a()
+ }
+
+ function An(e, t, n) {
+ if (0 === (e.f & _)) {
+ e.f ^= _;
+ var r = e.nodes && e.nodes.t;
+ if (null !== r)
+ for (const e of r)(e.is_global || n) && t.push(e);
+ for (var a = e.first; null !== a;) {
+ var o = a.next;
+ if (0 === (a.f & b)) An(a, t, !!(0 !== (a.f & E) || 0 !== (a.f & m) && 0 !== (e.f & g)) && n);
+ a = o
+ }
+ }
+ }
+
+ function In(e) {
+ Pn(e, !0)
+ }
+
+ function Pn(e, t) {
+ if (0 !== (e.f & _)) {
+ e.f ^= _, 0 === (e.f & w) && (Re(e, x), tt.ensure().schedule(e));
+ for (var n = e.first; null !== n;) {
+ var r = n.next;
+ Pn(n, !!(0 !== (n.f & E) || 0 !== (n.f & m)) && t), n = r
+ }
+ var a = e.nodes && e.nodes.t;
+ if (null !== a)
+ for (const e of a)(e.is_global || t) && e.in()
+ }
+ }
+
+ function On(e, t) {
+ if (e.nodes)
+ for (var n = e.nodes.start, r = e.nodes.end; null !== n;) {
+ var a = n === r ? null : $e(n);
+ t.append(n), n = a
+ }
+ }
+
+ function Rn(e) {
+ const t = {
+ get: e => ze(t.store)[e],
+ set: (e, n) => {
+ "string" == typeof e ? Object.assign(ze(t.store), {
+ [e]: n
+ }) : Object.assign(ze(t.store), e), t.store.set(ze(t.store))
+ },
+ store: Ne(e)
+ };
+ return t
+ }
+ globalThis.$altcha = globalThis.$altcha || {
+ algorithms: new Map,
+ defaults: Rn({}),
+ i18n: Rn({}),
+ instances: new Set,
+ plugins: new Set
+ };
+ const Ln = {
+ ariaLinkLabel: "Altcha (official website)",
+ cancel: "Cancel",
+ enterCode: "Enter code",
+ enterCodeAria: "Enter code you hear. Press Space to play audio.",
+ enterCodeFromImage: "To proceed, please enter the code from the image below.",
+ error: "Verification failed. Try again later.",
+ expired: "Verification expired. Try again.",
+ footer: 'Protected by ALTCHA',
+ getAudioChallenge: "Get an audio challenge",
+ label: "I'm not a robot",
+ loading: "Loading...",
+ reload: "Reload",
+ verify: "Verify",
+ verificationRequired: "Verification required!",
+ verified: "Verified",
+ verifying: "Verifying...",
+ waitAlert: "Verifying... please wait."
+ };
+ "$altcha" in globalThis && globalThis.$altcha.i18n.set("en", Ln);
+ "undefined" != typeof window && ((window.__svelte ??= {}).v ??= new Set).add("5");
+ const Mn = Symbol("events"),
+ Dn = new Set,
+ Un = new Set;
+
+ function Vn(e, t, n, r = {}) {
+ function a(e) {
+ if (r.capture || Fn.call(t, e), !e.cancelBubble) return Lt(() => n?.call(this, e))
+ }
+ return e.startsWith("pointer") || e.startsWith("touch") || "wheel" === e ? te(() => {
+ t.addEventListener(e, a, r)
+ }) : t.addEventListener(e, a, r), a
+ }
+
+ function Nn(e, t, n, r, a) {
+ var o = {
+ capture: r,
+ passive: a
+ },
+ i = Vn(e, t, n, o);
+ (t === document.body || t === window || t === document || t instanceof HTMLMediaElement) && pn(() => {
+ t.removeEventListener(e, i, o)
+ })
+ }
+
+ function zn(e, t, n) {
+ (t[Mn] ??= {})[e] = n
+ }
+
+ function jn(e) {
+ for (var t = 0; t < e.length; t++) Dn.add(e[t]);
+ for (var n of Un) n(e)
+ }
+ let Bn = null;
+
+ function Fn(e) {
+ var t = this,
+ n = t.ownerDocument,
+ r = e.type,
+ a = e.composedPath?.() || [],
+ o = a[0] || e.target;
+ Bn = e;
+ var l = 0,
+ s = Bn === e && e[Mn];
+ if (s) {
+ var c = a.indexOf(s);
+ if (-1 !== c && (t === document || t === window)) return void(e[Mn] = t);
+ var u = a.indexOf(t);
+ if (-1 === u) return;
+ c <= u && (l = c)
+ }
+ if ((o = a[l] || e.target) !== t) {
+ i(e, "currentTarget", {
+ configurable: !0,
+ get: () => o || n
+ });
+ var f = Vt,
+ d = jt;
+ zt(null), Bt(null);
+ try {
+ for (var h, p = []; null !== o;) {
+ var v = o.assignedSlot || o.parentNode || o.host || null;
+ try {
+ var g = o[Mn]?.[r];
+ null == g || o.disabled && e.target !== o || g.call(o, e)
+ } catch (e) {
+ h ? p.push(e) : h = e
+ }
+ if (e.cancelBubble || v === t || null === v) break;
+ o = v
+ }
+ if (h) {
+ for (let e of p) queueMicrotask(() => {
+ throw e
+ });
+ throw h
+ }
+ } finally {
+ e[Mn] = t, delete e.currentTarget, zt(f), Bt(d)
+ }
+ }
+ }
+ const Hn = globalThis?.window?.trustedTypes && globalThis.window.trustedTypes.createPolicy("svelte-trusted-html", {
+ createHTML: e => e
+ });
+
+ function Kn(e) {
+ var t = Te("template");
+ return t.innerHTML = function(e) {
+ return Hn?.createHTML(e) ?? e
+ }(e.replaceAll("", "\x3c!----\x3e")), t.content
+ }
+
+ function qn(e, t) {
+ var n = jt;
+ null === n.nodes && (n.nodes = {
+ start: e,
+ end: t,
+ a: null,
+ t: null
+ })
+ }
+
+ function Yn(e, t) {
+ var n, r = !!(1 & t),
+ a = !!(2 & t),
+ o = !e.startsWith("");
+ return () => {
+ if (oe) return qn(ae, null), ae;
+ void 0 === n && (n = Kn(o ? e : "" + e), r || (n = _e(n)));
+ var t = a || be ? document.importNode(n, !0) : n.cloneNode(!0);
+ r ? qn(_e(t), t.lastChild) : qn(t, t);
+ return t
+ }
+ }
+
+ function Gn(e, t, n = "svg") {
+ var r, a = `<${n}>${!e.startsWith("") ? e : "" + e}${n}>`;
+ return () => {
+ if (oe) return qn(ae, null), ae;
+ if (!r) {
+ var e = Kn(a);
+ r = _e(_e(e))
+ }
+ var t = r.cloneNode(!0);
+ return qn(t, t), t
+ }
+ }
+
+ function Wn(e, t) {
+ return Gn(e, 0, "svg")
+ }
+
+ function Jn(e = "") {
+ if (!oe) {
+ var t = ke(e + "");
+ return qn(t, t), t
+ }
+ var n = ae;
+ return 3 !== n.nodeType ? (n.before(n = ke()), le(n)) : Ae(n), qn(n, n), n
+ }
+
+ function Zn() {
+ if (oe) return qn(ae, null), ae;
+ var e = document.createDocumentFragment(),
+ t = document.createComment(""),
+ n = ke();
+ return e.append(t, n), qn(t, n), e
+ }
+
+ function Xn(e, t) {
+ if (oe) {
+ var n = jt;
+ return 0 !== (n.f & S) && null !== n.nodes.end || (n.nodes.end = ae), void se()
+ }
+ null !== e && e.before(t)
+ }
+
+ function Qn(e) {
+ return e.endsWith("capture") && "gotpointercapture" !== e && "lostpointercapture" !== e
+ }
+ const er = ["beforeinput", "click", "change", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"];
+
+ function tr(e) {
+ return er.includes(e)
+ }
+ const nr = {
+ formnovalidate: "formNoValidate",
+ ismap: "isMap",
+ nomodule: "noModule",
+ playsinline: "playsInline",
+ readonly: "readOnly",
+ defaultvalue: "defaultValue",
+ defaultchecked: "defaultChecked",
+ srcobject: "srcObject",
+ novalidate: "noValidate",
+ allowfullscreen: "allowFullscreen",
+ disablepictureinpicture: "disablePictureInPicture",
+ disableremoteplayback: "disableRemotePlayback"
+ };
+
+ function rr(e) {
+ return e = e.toLowerCase(), nr[e] ?? e
+ }
+ const ar = ["touchstart", "touchmove"];
+
+ function or(e) {
+ return ar.includes(e)
+ }
+
+ function ir(e, t) {
+ var n = null == t ? "" : "object" == typeof t ? `${t}` : t;
+ n !== (e[N] ??= e.nodeValue) && (e[N] = n, e.nodeValue = `${n}`)
+ }
+
+ function lr(e, t) {
+ return ur(e, t)
+ }
+
+ function sr(e, t) {
+ xe(), t.intro = t.intro ?? !1;
+ const n = t.target,
+ r = oe,
+ a = ae;
+ try {
+ for (var o = _e(n); o && (8 !== o.nodeType || "[" !== o.data);) o = $e(o);
+ if (!o) throw q;
+ ie(!0), le(o);
+ const r = ur(e, {
+ ...t,
+ anchor: o
+ });
+ return ie(!1), r
+ } catch (r) {
+ if (r instanceof Error && r.message.split("\n").some(e => e.startsWith("https://svelte.dev/e/"))) throw r;
+ return r !== q && console.warn("Failed to hydrate: ", r), !1 === t.recover && function() {
+ throw new Error("https://svelte.dev/e/hydration_failed")
+ }(), xe(), n.textContent = "", ie(!1), lr(e, t)
+ } finally {
+ ie(r), le(a)
+ }
+ }
+ const cr = new Map;
+
+ function ur(e, {
+ target: t,
+ anchor: n,
+ props: r = {},
+ events: o,
+ context: i,
+ intro: l = !0,
+ transformError: s
+ }) {
+ xe();
+ var c = void 0,
+ u = function(e) {
+ tt.ensure();
+ const t = dn(524352, e);
+ return (e = {}) => new Promise(n => {
+ e.outro ? Tn(t, () => {
+ Sn(t), n(void 0)
+ }) : (Sn(t), n(void 0))
+ })
+ }(() => {
+ var l = n ?? t.appendChild(ke());
+ ! function(e, t, n, r) {
+ new ut(e, t, n, r)
+ }(l, {
+ pending: () => {}
+ }, t => {
+ if (Z({}), i && (W.c = i), o && (r.$$events = o), oe && qn(t, null), c = e(t, r) || {}, oe && (jt.nodes.end = ae, null === ae || 8 !== ae.nodeType || "]" !== ae.data)) throw re(), q;
+ X()
+ }, s);
+ var u = new Set,
+ f = e => {
+ for (var n = 0; n < e.length; n++) {
+ var r = e[n];
+ if (!u.has(r)) {
+ u.add(r);
+ var a = or(r);
+ for (const e of [t, document]) {
+ var o = cr.get(e);
+ void 0 === o && (o = new Map, cr.set(e, o));
+ var i = o.get(r);
+ void 0 === i ? (e.addEventListener(r, Fn, {
+ passive: a
+ }), o.set(r, 1)) : o.set(r, i + 1)
+ }
+ }
+ }
+ };
+ return f(a(Dn)), Un.add(f), () => {
+ for (var e of u)
+ for (const n of [t, document]) {
+ var r = cr.get(n),
+ a = r.get(e);
+ 0 == --a ? (n.removeEventListener(e, Fn), r.delete(e), 0 === r.size && cr.delete(n)) : r.set(e, a)
+ }
+ Un.delete(f), l !== n && l.parentNode?.removeChild(l)
+ }
+ });
+ return fr.set(c, u), c
+ }
+ let fr = new WeakMap;
+ class dr {
+ anchor;
+ #Y = new Map;
+ #G = new Map;
+ #W = new Map;
+ #J = new Set;
+ #Z = !0;
+ constructor(e, t = !0) {
+ this.anchor = e, this.#Z = t
+ }
+ #$ = e => {
+ if (this.#Y.has(e)) {
+ var t = this.#Y.get(e),
+ n = this.#G.get(t);
+ if (n) In(n), this.#J.delete(t);
+ else {
+ var r = this.#W.get(t);
+ r && (this.#G.set(t, r.effect), this.#W.delete(t), r.fragment.lastChild.remove(), this.anchor.before(r.fragment), n = r.effect)
+ }
+ for (const [t, n] of this.#Y) {
+ if (this.#Y.delete(t), t === e) break;
+ const r = this.#W.get(n);
+ r && (Sn(r.effect), this.#W.delete(n))
+ }
+ for (const [e, r] of this.#G) {
+ if (e === t || this.#J.has(e)) continue;
+ const a = () => {
+ if (Array.from(this.#Y.values()).includes(e)) {
+ var t = document.createDocumentFragment();
+ On(r, t), t.append(ke()), this.#W.set(e, {
+ effect: r,
+ fragment: t
+ })
+ } else Sn(r);
+ this.#J.delete(e), this.#G.delete(e)
+ };
+ this.#Z || !n ? (this.#J.add(e), Tn(r, a, !1)) : a()
+ }
+ }
+ };
+ #X = e => {
+ this.#Y.delete(e);
+ const t = Array.from(this.#Y.values());
+ for (const [e, n] of this.#W) t.includes(e) || (Sn(n.effect), this.#W.delete(e))
+ };
+ ensure(e, t) {
+ var n = Ke;
+ !t || this.#G.has(e) || this.#W.has(e) || this.#G.set(e, kn(() => t(this.anchor)));
+ this.#Y.set(n, e), oe && (this.anchor = ae), this.#$(n)
+ }
+ }
+
+ function hr(e) {
+ null === W && function() {
+ throw new Error("https://svelte.dev/e/lifecycle_outside_component")
+ }(), vn(() => {
+ const t = un(e);
+ if ("function" == typeof t) return t
+ })
+ }
+
+ function pr(e, t, n = !1) {
+ var r;
+ oe && (r = ae, se());
+ var a = new dr(e);
+
+ function o(e, t) {
+ if (oe) {
+ var n = de(r);
+ if (e !== parseInt(n.substring(1))) {
+ var o = fe();
+ return le(o), a.anchor = o, ie(!1), a.ensure(e, t), void ie(!0)
+ }
+ }
+ a.ensure(e, t)
+ }
+ wn(() => {
+ var e = !1;
+ t((t, n = 0) => {
+ e = !0, o(n, t)
+ }), e || o(-1, null)
+ }, n ? E : 0)
+ }
+ const vr = Symbol("NaN");
+
+ function gr(e, t, n = !1, r = !1, a = !1, o = !1) {
+ var i = e,
+ l = "";
+ if (n) {
+ var s = e;
+ oe && (i = le(_e(s)))
+ }
+ yn(() => {
+ var e = jt;
+ if (l !== (l = t() ?? "")) {
+ if (n && !oe) return e.nodes = null, s.innerHTML = l, void("" !== l && qn(_e(s), s.lastChild));
+ if (null !== e.nodes && (Cn(e.nodes.start, e.nodes.end), e.nodes = null), "" !== l) {
+ if (oe) {
+ ae.data;
+ for (var o = se(), c = o; null !== o && (8 !== o.nodeType || "" !== o.data);) c = o, o = $e(o);
+ if (null === o) throw re(), q;
+ return qn(ae, c), void(i = le(o))
+ }
+ var u = Te(r ? "svg" : a ? "math" : "template", r ? "http://www.w3.org/2000/svg" : a ? "http://www.w3.org/1998/Math/MathML" : void 0);
+ u.innerHTML = l;
+ var f = r || a ? u : u.content;
+ if (qn(_e(f), f.lastChild), r || a)
+ for (; _e(f);) i.before(_e(f));
+ else i.before(f)
+ }
+ } else oe && se()
+ })
+ }
+
+ function mr(e, t) {
+ var n, r = void 0;
+ xn(() => {
+ r !== (r = t()) && (n && (Sn(n), n = null), r && (n = kn(() => {
+ mn(() => r(e))
+ })))
+ })
+ }
+
+ function br(e) {
+ var t, n, r = "";
+ if ("string" == typeof e || "number" == typeof e) r += e;
+ else if ("object" == typeof e)
+ if (Array.isArray(e)) {
+ var a = e.length;
+ for (t = 0; t < a; t++) e[t] && (n = br(e[t])) && (r && (r += " "), r += n)
+ } else
+ for (n in e) e[n] && (r && (r += " "), r += n);
+ return r
+ }
+
+ function yr(e) {
+ return "object" == typeof e ? function() {
+ for (var e, t, n = 0, r = "", a = arguments.length; n < a; n++)(e = arguments[n]) && (t = br(e)) && (r && (r += " "), r += t);
+ return r
+ }(e) : e ?? ""
+ }
+ const wr = [..." \t\n\r\f \v\ufeff"];
+
+ function xr(e, t = !1) {
+ var n = t ? " !important;" : ";",
+ r = "";
+ for (var a of Object.keys(e)) {
+ var o = e[a];
+ null != o && "" !== o && (r += " " + a + ": " + o + n)
+ }
+ return r
+ }
+
+ function kr(e) {
+ return "-" !== e[0] || "-" !== e[1] ? e.toLowerCase() : e
+ }
+
+ function _r(e, t, n, r, a, o) {
+ var i = e[U];
+ if (oe || i !== n || void 0 === i) {
+ var l = function(e, t, n) {
+ var r = null == e ? "" : "" + e;
+ if (n)
+ for (var a of Object.keys(n))
+ if (n[a]) r = r ? r + " " + a : a;
+ else if (r.length)
+ for (var o = a.length, i = 0;
+ (i = r.indexOf(a, i)) >= 0;) {
+ var l = i + o;
+ 0 !== i && !wr.includes(r[i - 1]) || l !== r.length && !wr.includes(r[l]) ? i = l : r = (0 === i ? "" : r.substring(0, i)) + r.substring(l + 1)
+ }
+ return "" === r ? null : r
+ }(n, 0, o);
+ oe && l === e.getAttribute("class") || (null == l ? e.removeAttribute("class") : t ? e.className = l : e.setAttribute("class", l)), e[U] = n
+ } else if (o && a !== o)
+ for (var s in o) {
+ var c = !!o[s];
+ null != a && c === !!a[s] || e.classList.toggle(s, c)
+ }
+ return o
+ }
+
+ function $r(e, t = {}, n, r) {
+ for (var a in n) {
+ var o = n[a];
+ t[a] !== o && (null == n[a] ? e.style.removeProperty(a) : e.style.setProperty(a, o, r))
+ }
+ }
+
+ function Sr(e, t, n, r) {
+ var a = e[V];
+ if (oe || a !== t) {
+ var o = function(e, t) {
+ if (t) {
+ var n, r, a = "";
+ if (Array.isArray(t) ? (n = t[0], r = t[1]) : n = t, e) {
+ e = String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g, "").trim();
+ var o = !1,
+ i = 0,
+ l = !1,
+ s = [];
+ n && s.push(...Object.keys(n).map(kr)), r && s.push(...Object.keys(r).map(kr));
+ var c = 0,
+ u = -1;
+ const t = e.length;
+ for (var f = 0; f < t; f++) {
+ var d = e[f];
+ if (l ? "/" === d && "*" === e[f - 1] && (l = !1) : o ? o === d && (o = !1) : "/" === d && "*" === e[f + 1] ? l = !0 : '"' === d || "'" === d ? o = d : "(" === d ? i++ : ")" === d && i--, !l && !1 === o && 0 === i)
+ if (":" === d && -1 === u) u = f;
+ else if (";" === d || f === t - 1) {
+ if (-1 !== u) {
+ var h = kr(e.substring(c, u).trim());
+ s.includes(h) || (";" !== d && f++, a += " " + e.substring(c, f).trim() + ";")
+ }
+ c = f + 1, u = -1
+ }
+ }
+ }
+ return n && (a += xr(n)), r && (a += xr(r, !0)), "" === (a = a.trim()) ? null : a
+ }
+ return null == e ? null : String(e)
+ }(t, r);
+ oe && o === e.getAttribute("style") || (null == o ? e.removeAttribute("style") : e.style.cssText = o), e[V] = t
+ } else r && (Array.isArray(r) ? ($r(e, n?.[0], r[0]), $r(e, n?.[1], r[1], "important")) : $r(e, n, r));
+ return r
+ }
+
+ function Cr(e, n, r = !1) {
+ if (e.multiple) {
+ if (null == n) return;
+ if (!t(n)) return void console.warn("https://svelte.dev/e/select_multiple_invalid_value");
+ for (var a of e.options) a.selected = n.includes(Er(a))
+ } else {
+ for (a of e.options) {
+ if (ve(Er(a), n)) return void(a.selected = !0)
+ }
+ r && void 0 === n || (e.selectedIndex = -1)
+ }
+ }
+
+ function Er(e) {
+ return "__value" in e ? e.__value : e.value
+ }
+ const Tr = Symbol("class"),
+ Ar = Symbol("style"),
+ Ir = Symbol("is custom element"),
+ Pr = Symbol("is html"),
+ Or = B ? "link" : "LINK",
+ Rr = B ? "input" : "INPUT",
+ Lr = B ? "option" : "OPTION",
+ Mr = B ? "select" : "SELECT",
+ Dr = B ? "progress" : "PROGRESS";
+
+ function Ur(e) {
+ if (oe) {
+ var t = !1,
+ n = () => {
+ if (!t) {
+ if (t = !0, e.hasAttribute("value")) {
+ var n = e.value;
+ Nr(e, "value", null), e.value = n
+ }
+ if (e.hasAttribute("checked")) {
+ var r = e.checked;
+ Nr(e, "checked", null), e.checked = r
+ }
+ }
+ };
+ e[z] = n, te(n), Rt()
+ }
+ }
+
+ function Vr(e, t) {
+ t ? e.hasAttribute("selected") || e.setAttribute("selected", "") : e.removeAttribute("selected")
+ }
+
+ function Nr(e, t, n, r) {
+ var a = jr(e);
+ oe && (a[t] = e.getAttribute(t), "src" === t || "srcset" === t || "href" === t && e.nodeName === Or) || a[t] !== (a[t] = n) && ("loading" === t && (e[M] = n), null == n ? e.removeAttribute(t) : "string" != typeof n && Fr(e).includes(t) ? e[t] = n : e.setAttribute(t, n))
+ }
+
+ function zr(e, t, n = [], r = [], a = [], o, i = !1, l = !1) {
+ ft(a, n, r, n => {
+ var r = void 0,
+ a = {},
+ o = e.nodeName === Mr,
+ s = !1;
+ if (xn(() => {
+ var c = t(...n.map(ln)),
+ u = function(e, t, n, r, a = !1) {
+ if (oe && a && e.nodeName === Rr) {
+ var o = e;
+ ("checkbox" === o.type ? "defaultChecked" : "defaultValue") in n || Ur(o)
+ }
+ var i = jr(e),
+ l = i[Ir],
+ s = !i[Pr];
+ let c = oe && l;
+ c && ie(!1);
+ var u = t || {},
+ f = e.nodeName === Lr;
+ for (var d in t) d in n || (n[d] = null);
+ n.class ? n.class = yr(n.class) : n[Tr] && (n.class = null), n[Ar] && (n.style ??= null);
+ var h = Fr(e);
+ for (const r in n) {
+ let a = n[r];
+ if (f && "value" === r && null == a) e.value = e.__value = "", u[r] = a;
+ else if ("class" !== r)
+ if ("style" !== r) {
+ var p = u[r];
+ if (a !== p || void 0 === a && e.hasAttribute(r)) {
+ u[r] = a;
+ var v = r[0] + r[1];
+ if ("$$" !== v)
+ if ("on" === v) {
+ const t = {},
+ n = "$$" + r;
+ let o = r.slice(2);
+ var g = tr(o);
+ if (Qn(o) && (o = o.slice(0, -7), t.capture = !0), !g && p) {
+ if (null != a) continue;
+ e.removeEventListener(o, u[n], t), u[n] = null
+ }
+ if (g) zn(o, e, a), jn([o]);
+ else if (null != a) {
+ let a = function(e) {
+ u[r].call(this, e)
+ };
+ u[n] = Vn(o, e, a, t)
+ }
+ } else if ("style" === r) Nr(e, r, a);
+ else if ("autofocus" === r) Pt(e, Boolean(a));
+ else if (l || "__value" !== r && ("value" !== r || null == a))
+ if ("selected" === r && f) Vr(e, a);
+ else {
+ var m = r;
+ s || (m = rr(m));
+ var b = "defaultValue" === m || "defaultChecked" === m;
+ if (null != a || l || b) b || h.includes(m) && (l || "string" != typeof a) ? (e[m] = a, m in i && (i[m] = Y)) : "function" != typeof a && Nr(e, m, a);
+ else if (i[r] = null, "value" === m || "checked" === m) {
+ let n = e;
+ const r = void 0 === t;
+ if ("value" === m) {
+ let e = n.defaultValue;
+ n.removeAttribute(m), n.defaultValue = e, n.value = n.__value = r ? e : null
+ } else {
+ let e = n.defaultChecked;
+ n.removeAttribute(m), n.defaultChecked = e, n.checked = !!r && e
+ }
+ } else e.removeAttribute(r)
+ }
+ else e.value = e.__value = a
+ }
+ } else Sr(e, a, t?.[Ar], n[Ar]), u[r] = a, u[Ar] = n[Ar];
+ else _r(e, "http://www.w3.org/1999/xhtml" === e.namespaceURI, a, 0, t?.[Tr], n[Tr]), u[r] = a, u[Tr] = n[Tr]
+ }
+ return c && ie(!0), u
+ }(e, r, c, 0, i, l);
+ s && o && "value" in c && Cr(e, c.value);
+ for (let e of Object.getOwnPropertySymbols(a)) c[e] || Sn(a[e]);
+ for (let t of Object.getOwnPropertySymbols(c)) {
+ var f = c[t];
+ "@attach" !== t.description || r && f === r[t] || (a[t] && Sn(a[t]), a[t] = kn(() => mr(e, () => f))), u[t] = f
+ }
+ r = u
+ }), o) {
+ var c = e;
+ mn(() => {
+ Cr(c, r.value, !0),
+ function(e) {
+ var t = new MutationObserver(() => {
+ Cr(e, e.__value)
+ });
+ t.observe(e, {
+ childList: !0,
+ subtree: !0,
+ attributes: !0,
+ attributeFilter: ["value"]
+ }), pn(() => {
+ t.disconnect()
+ })
+ }(c)
+ })
+ }
+ s = !0
+ })
+ }
+
+ function jr(e) {
+ return e[D] ??= {
+ [Ir]: e.nodeName.includes("-"),
+ [Pr]: e.namespaceURI === G
+ }
+ }
+ var Br = new Map;
+
+ function Fr(e) {
+ var t, n = e.getAttribute("is") || e.nodeName,
+ r = Br.get(n);
+ if (r) return r;
+ Br.set(n, r = []);
+ for (var a = e, o = Element.prototype; o !== a;) {
+ for (var i in t = s(a)) t[i].set && "innerHTML" !== i && "textContent" !== i && "innerText" !== i && r.push(i);
+ a = f(a)
+ }
+ return r
+ }
+
+ function Hr(e, t, n = t) {
+ var r = new WeakSet;
+ ! function(e, t, n, r = n) {
+ e.addEventListener(t, () => Lt(n));
+ const a = e[z];
+ e[z] = a ? () => {
+ a(), r(!0)
+ } : () => r(!0), Rt()
+ }(e, "input", async a => {
+ var o = a ? e.defaultValue : e.value;
+ if (o = Kr(e) ? qr(o) : o, n(o), null !== Ke && r.add(Ke), await on(), o !== (o = t())) {
+ var i = e.selectionStart,
+ l = e.selectionEnd,
+ s = e.value.length;
+ if (e.value = o ?? "", null !== l) {
+ var c = e.value.length;
+ i === l && l === s && c > s ? (e.selectionStart = c, e.selectionEnd = c) : (e.selectionStart = i, e.selectionEnd = Math.min(l, c))
+ }
+ }
+ }), (oe && e.defaultValue !== e.value || null == un(t) && e.value) && (n(Kr(e) ? qr(e.value) : e.value), null !== Ke && r.add(Ke)), bn(() => {
+ var n = t();
+ if (e === document.activeElement) {
+ var a = Ke;
+ if (r.has(a)) return
+ }
+ Kr(e) && n === qr(e.value) || ("date" !== e.type || n || e.value) && n !== e.value && (e.value = n ?? "")
+ })
+ }
+
+ function Kr(e) {
+ var t = e.type;
+ return "number" === t || "range" === t
+ }
+
+ function qr(e) {
+ return "" === e ? null : +e
+ }
+
+ function Yr(e, t) {
+ return e === t || e?.[R] === t
+ }
+
+ function Gr(e = {}, t, n, r) {
+ var a = W.r,
+ o = jt;
+ return mn(() => {
+ var r, i;
+ return bn(() => {
+ r = i, i = [], un(() => {
+ Yr(n(...i), e) || (t(e, ...i), r && Yr(n(...r), e) && t(null, ...r))
+ })
+ }), () => {
+ let r = o;
+ for (; r !== a && null !== r.parent && r.parent.f & C;) r = r.parent;
+ const l = r.teardown;
+ r.teardown = () => {
+ i && Yr(n(...i), e) && t(null, ...i), l?.()
+ }
+ }
+ }), e
+ }
+ const Wr = {
+ get(e, t) {
+ if (!e.exclude.includes(t)) return e.props[t]
+ },
+ set: (e, t) => !1,
+ getOwnPropertyDescriptor(e, t) {
+ if (!e.exclude.includes(t)) return t in e.props ? {
+ enumerable: !0,
+ configurable: !0,
+ value: e.props[t]
+ } : void 0
+ },
+ has: (e, t) => !e.exclude.includes(t) && t in e.props,
+ ownKeys: e => Reflect.ownKeys(e.props).filter(t => !e.exclude.includes(t))
+ };
+
+ function Jr(e, t, n) {
+ return new Proxy({
+ props: e,
+ exclude: t
+ }, Wr)
+ }
+
+ function Zr(e, t, n, r) {
+ var a, o = r,
+ i = !0,
+ l = () => (i && (i = !1, o = r), o);
+ void 0 === e[t] && void 0 !== r && l(), a = () => {
+ var n = e[t];
+ return void 0 === n ? l() : (i = !0, n)
+ };
+ var s = !1,
+ c = pt(() => (s = !1, a())),
+ u = jt;
+ return function(e, t) {
+ if (arguments.length > 0) {
+ const n = t ? ln(c) : e;
+ return Et(c, n), s = !0, void 0 !== o && (o = n), e
+ }
+ return Dt && s || 0 !== (u.f & $) ? c.v : ln(c)
+ }
+ }
+ class Xr {
+ #Q;
+ #ee;
+ constructor(e) {
+ var t = new Map,
+ n = (e, n) => {
+ var r = Ct(n, !1, !1);
+ return t.set(e, r), r
+ };
+ const r = new Proxy({
+ ...e.props || {},
+ $$events: {}
+ }, {
+ get: (e, r) => ln(t.get(r) ?? n(r, Reflect.get(e, r))),
+ has: (e, r) => r === L || (ln(t.get(r) ?? n(r, Reflect.get(e, r))), Reflect.has(e, r)),
+ set: (e, r, a) => (Et(t.get(r) ?? n(r, a), a), Reflect.set(e, r, a))
+ });
+ this.#ee = (e.hydrate ? sr : lr)(e.component, {
+ target: e.target,
+ anchor: e.anchor,
+ props: r,
+ context: e.context,
+ intro: e.intro ?? !1,
+ recover: e.recover,
+ transformError: e.transformError
+ }), e?.props?.$$host && !1 !== e.sync || nt(), this.#Q = r.$$events;
+ for (const e of Object.keys(this.#ee)) "$set" !== e && "$destroy" !== e && "$on" !== e && i(this, e, {
+ get() {
+ return this.#ee[e]
+ },
+ set(t) {
+ this.#ee[e] = t
+ },
+ enumerable: !0
+ });
+ this.#ee.$set = e => {
+ Object.assign(r, e)
+ }, this.#ee.$destroy = () => {
+ ! function(e, t) {
+ const n = fr.get(e);
+ n ? (fr.delete(e), n(t)) : Promise.resolve()
+ }(this.#ee)
+ }
+ }
+ $set(e) {
+ this.#ee.$set(e)
+ }
+ $on(e, t) {
+ this.#Q[e] = this.#Q[e] || [];
+ const n = (...e) => t.call(this, ...e);
+ return this.#Q[e].push(n), () => {
+ this.#Q[e] = this.#Q[e].filter(e => e !== n)
+ }
+ }
+ $destroy() {
+ this.#ee.$destroy()
+ }
+ }
+ let Qr = class {};
+
+ function ea(e, t, n, r) {
+ const a = n[e]?.type;
+ if (t = "Boolean" === a && "boolean" != typeof t ? null != t : t, !r || !n[e]) return t;
+ if ("toAttribute" === r) switch (a) {
+ case "Object":
+ case "Array":
+ return null == t ? null : JSON.stringify(t);
+ case "Boolean":
+ return t ? "" : null;
+ case "Number":
+ return null == t ? null : t;
+ default:
+ return t
+ } else switch (a) {
+ case "Object":
+ case "Array":
+ return t && JSON.parse(t);
+ case "Boolean":
+ default:
+ return t;
+ case "Number":
+ return null != t ? +t : t
+ }
+ }
+
+ function ta(e, t, n, r, a, s) {
+ let c = class extends Qr {
+ constructor() {
+ super(e, n, a), this.$$p_d = t
+ }
+ static get observedAttributes() {
+ return o(t).map(e => (t[e].attribute || e).toLowerCase())
+ }
+ };
+ return o(t).forEach(e => {
+ i(c.prototype, e, {
+ get() {
+ return this.$$c && e in this.$$c ? this.$$c[e] : this.$$d[e]
+ },
+ set(n) {
+ n = ea(e, n, t), this.$$d[e] = n;
+ var r = this.$$c;
+ if (r) {
+ var a = l(r, e)?.get;
+ a ? r[e] = n : r.$set({
+ [e]: n
+ })
+ }
+ }
+ })
+ }), r.forEach(e => {
+ i(c.prototype, e, {
+ get() {
+ return this.$$c?.[e]
+ }
+ })
+ }), e.element = c, c
+ }
+ "function" == typeof HTMLElement && (Qr = class extends HTMLElement {
+ $$ctor;
+ $$s;
+ $$c;
+ $$cn = !1;
+ $$d = {};
+ $$r = !1;
+ $$p_d = {};
+ $$l = {};
+ $$l_u = new Map;
+ $$me;
+ $$shadowRoot = null;
+ constructor(e, t, n) {
+ super(), this.$$ctor = e, this.$$s = t, n && (this.$$shadowRoot = this.attachShadow(n))
+ }
+ addEventListener(e, t, n) {
+ if (this.$$l[e] = this.$$l[e] || [], this.$$l[e].push(t), this.$$c) {
+ const n = this.$$c.$on(e, t);
+ this.$$l_u.set(t, n)
+ }
+ super.addEventListener(e, t, n)
+ }
+ removeEventListener(e, t, n) {
+ if (super.removeEventListener(e, t, n), this.$$c) {
+ const e = this.$$l_u.get(t);
+ e && (e(), this.$$l_u.delete(t))
+ }
+ }
+ async connectedCallback() {
+ if (this.$$cn = !0, !this.$$c) {
+ let t = function(e) {
+ return t => {
+ const n = Te("slot");
+ "default" !== e && (n.name = e), Xn(t, n)
+ }
+ };
+ if (await Promise.resolve(), !this.$$cn || this.$$c) return;
+ const n = {},
+ r = function(e) {
+ const t = {};
+ return e.childNodes.forEach(e => {
+ t[e.slot || "default"] = !0
+ }), t
+ }(this);
+ for (const e of this.$$s) e in r && ("default" !== e || this.$$d.children ? n[e] = t(e) : (this.$$d.children = t(e), n.default = !0));
+ for (const e of this.attributes) {
+ const t = this.$$g_p(e.name);
+ t in this.$$d || (this.$$d[t] = ea(t, e.value, this.$$p_d, "toProp"))
+ }
+ for (const e in this.$$p_d) e in this.$$d || void 0 === this[e] || (this.$$d[e] = this[e], delete this[e]);
+ this.$$c = (e = {
+ component: this.$$ctor,
+ target: this.$$shadowRoot || this,
+ props: {
+ ...this.$$d,
+ $$slots: n,
+ $$host: this
+ }
+ }, new Xr(e)), this.$$me = function(e) {
+ tt.ensure();
+ const t = dn(524352, e);
+ return () => {
+ Sn(t)
+ }
+ }(() => {
+ bn(() => {
+ this.$$r = !0;
+ for (const e of o(this.$$c)) {
+ if (!this.$$p_d[e]?.reflect) continue;
+ this.$$d[e] = this.$$c[e];
+ const t = ea(e, this.$$d[e], this.$$p_d, "toAttribute");
+ null == t ? this.removeAttribute(this.$$p_d[e].attribute || e) : this.setAttribute(this.$$p_d[e].attribute || e, t)
+ }
+ this.$$r = !1
+ })
+ });
+ for (const e in this.$$l)
+ for (const t of this.$$l[e]) {
+ const n = this.$$c.$on(e, t);
+ this.$$l_u.set(t, n)
+ }
+ this.$$l = {}
+ }
+ var e
+ }
+ attributeChangedCallback(e, t, n) {
+ this.$$r || (e = this.$$g_p(e), this.$$d[e] = ea(e, n, this.$$p_d, "toProp"), this.$$c?.$set({
+ [e]: this.$$d[e]
+ }))
+ }
+ disconnectedCallback() {
+ this.$$cn = !1, Promise.resolve().then(() => {
+ !this.$$cn && this.$$c && (this.$$c.$destroy(), this.$$me(), this.$$c = void 0)
+ })
+ }
+ $$g_p(e) {
+ return o(this.$$p_d).find(t => this.$$p_d[t].attribute === e || !this.$$p_d[t].attribute && t.toLowerCase() === e) || e
+ }
+ });
+ var na = Yn('
');
+
+ function ra(e, t) {
+ Z(t, !0);
+ let n, r = Zr(t, "loading"),
+ a = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]);
+ var o = {
+ get loading() {
+ return r()
+ },
+ set loading(e) {
+ r(e), nt()
+ }
+ },
+ i = na(),
+ l = Se(i);
+ zr(l, () => ({
+ type: "checkbox",
+ ...a
+ }), void 0, void 0, void 0, 0, !0), Gr(l, e => n = e, () => n);
+ var s = Ee(l, 2);
+ return ue(2), ce(i), yn(() => Nr(i, "data-loading", r())), zn("click", s, function() {
+ n?.click()
+ }), Xn(e, i), X(o)
+ }
+ jn(["click"]), ta(ra, {
+ loading: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var aa = Yn('');
+
+ function oa(e, t) {
+ Z(t, !0);
+ let n = Zr(t, "loading"),
+ r = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]);
+ var a = {
+ get loading() {
+ return n()
+ },
+ set loading(e) {
+ n(e), nt()
+ }
+ },
+ o = aa();
+ return zr(Se(o), () => ({
+ type: "checkbox",
+ ...r
+ }), void 0, void 0, void 0, 0, !0), ue(2), ce(o), yn(() => Nr(o, "data-loading", n())), Xn(e, o), X(a)
+ }
+ ta(oa, {
+ loading: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var ia = Yn('');
+
+ function la(e, t) {
+ Z(t, !0);
+ let n = Zr(t, "strings");
+ var r = {
+ get strings() {
+ return n()
+ },
+ set strings(e) {
+ n(e), nt()
+ }
+ },
+ a = ia(),
+ o = Se(a);
+ return Nr(o, "href", "https://altcha.org"), ce(a), yn(() => Nr(o, "aria-label", n().ariaLinkLabel)), Xn(e, a), X(r)
+ }
+ ta(la, {
+ strings: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var sa = Yn('');
+
+ function ca(e, t) {
+ Z(t, !0);
+ let n = Zr(t, "logo"),
+ r = Zr(t, "strings");
+ var a = {
+ get logo() {
+ return n()
+ },
+ set logo(e) {
+ n(e), nt()
+ },
+ get strings() {
+ return r()
+ },
+ set strings(e) {
+ r(e), nt()
+ }
+ },
+ o = sa(),
+ i = Se(o);
+ gr(i, () => r().footer, !0), ce(i);
+ var l = Ee(i, 2),
+ s = e => {
+ la(e, {
+ get strings() {
+ return r()
+ }
+ })
+ };
+ return pr(l, e => {
+ n() && e(s)
+ }), ce(o), Xn(e, o), X(a)
+ }
+ ta(ca, {
+ logo: {},
+ strings: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var ua = Yn('');
+
+ function fa(e, t) {
+ Z(t, !0);
+ let n, r = Zr(t, "loading"),
+ a = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "loading"]);
+ var o = {
+ get loading() {
+ return r()
+ },
+ set loading(e) {
+ r(e), nt()
+ }
+ },
+ i = ua(),
+ l = Se(i);
+ zr(l, () => ({
+ type: "checkbox",
+ ...a
+ }), void 0, void 0, void 0, 0, !0), Gr(l, e => n = e, () => n);
+ var s = Ee(l, 2);
+ return ce(i), yn(() => Nr(i, "data-loading", r())), zn("click", s, function() {
+ n?.click()
+ }), Xn(e, i), X(o)
+ }
+ jn(["click"]), ta(fa, {
+ loading: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var da = (e => (e.ERROR = "error", e.LOADING = "loading", e.PLAYING = "playing", e.PAUSED = "paused", e.READY = "ready", e))(da || {}),
+ ha = (e => (e.CODE = "code", e.ERROR = "error", e.VERIFIED = "verified", e.VERIFYING = "verifying", e.UNVERIFIED = "unverified", e.EXPIRED = "expired", e))(ha || {}),
+ pa = Yn('
'),
+ va = Yn(''),
+ ga = Wn(''),
+ ma = Wn(''),
+ ba = Wn(''),
+ ya = Yn(''),
+ wa = Yn(''),
+ xa = Yn('');
+
+ function ka(e, t) {
+ Z(t, !0);
+ let n = Zr(t, "audioUrl"),
+ r = Zr(t, "codeChallenge"),
+ a = Zr(t, "config"),
+ o = Zr(t, "imageUrl"),
+ i = Zr(t, "onCancel"),
+ l = Zr(t, "onReload"),
+ s = Zr(t, "onSubmit"),
+ c = Zr(t, "strings"),
+ u = St(void 0),
+ f = St(void 0),
+ d = St(void 0),
+ h = St(!1),
+ p = St(""),
+ v = St(!1);
+
+ function g() {
+ Et(u, da.PAUSED, !0)
+ }
+
+ function m(e) {
+ Et(u, da.ERROR, !0)
+ }
+
+ function b() {
+ Et(u, da.READY, !0)
+ }
+
+ function y() {
+ Et(u, da.LOADING, !0)
+ }
+
+ function w() {
+ Et(u, da.PLAYING, !0)
+ }
+
+ function x() {
+ Et(u, da.PAUSED, !0)
+ }
+
+ function k() {
+ ln(f) ? ln(u) === da.LOADING || (ln(f).paused ? (n() && ln(f).src !== n() && (ln(f).src = n()), ln(f).currentTime = 0, ln(f).play()) : ln(f).pause()) : (Et(v, !0), requestAnimationFrame(() => {
+ ln(f) && n() && (ln(f).src = n(), ln(f).play())
+ }))
+ }
+ hr(() => (a().disableAutoFocus || on().then(() => {
+ ln(d)?.focus()
+ }), () => {
+ ln(f) && (ln(f).pause(), Et(f, void 0))
+ }));
+ var _ = {
+ get audioUrl() {
+ return n()
+ },
+ set audioUrl(e) {
+ n(e), nt()
+ },
+ get codeChallenge() {
+ return r()
+ },
+ set codeChallenge(e) {
+ r(e), nt()
+ },
+ get config() {
+ return a()
+ },
+ set config(e) {
+ a(e), nt()
+ },
+ get imageUrl() {
+ return o()
+ },
+ set imageUrl(e) {
+ o(e), nt()
+ },
+ get onCancel() {
+ return i()
+ },
+ set onCancel(e) {
+ i(e), nt()
+ },
+ get onReload() {
+ return l()
+ },
+ set onReload(e) {
+ l(e), nt()
+ },
+ get onSubmit() {
+ return s()
+ },
+ set onSubmit(e) {
+ s(e), nt()
+ },
+ get strings() {
+ return c()
+ },
+ set strings(e) {
+ c(e), nt()
+ }
+ },
+ $ = xa(),
+ S = Se($),
+ C = Se(S),
+ E = e => {
+ var t = pa(),
+ n = Se(t, !0);
+ ce(t), yn(() => ir(n, c().verificationRequired)), Xn(e, t)
+ };
+ pr(C, e => {
+ "standard" !== a().codeChallengeDisplay && e(E)
+ });
+ var T = Ee(C, 2),
+ A = Se(T, !0);
+ ce(T);
+ var I = Ee(T, 2),
+ P = Ee(I, 2),
+ O = Se(P);
+ Ur(O), O.disabled = ln(h), Gr(O, e => Et(d, e), () => ln(d));
+ var R = Ee(O, 2),
+ L = e => {
+ var t = ya(),
+ n = Se(t),
+ r = e => {
+ Xn(e, va())
+ },
+ a = e => {
+ Xn(e, ga())
+ },
+ o = e => {
+ Xn(e, ma())
+ },
+ i = e => {
+ Xn(e, ba())
+ };
+ pr(n, e => {
+ ln(u) === da.LOADING ? e(r) : ln(u) === da.ERROR ? e(a, 1) : ln(u) === da.PLAYING ? e(o, 2) : e(i, -1)
+ }), ce(t), yn(() => {
+ Nr(t, "title", c().getAudioChallenge), t.disabled = ln(u) === da.LOADING || ln(u) === da.ERROR, Nr(t, "aria-label", ln(u) === da.LOADING ? c().loading : c().getAudioChallenge)
+ }), Nn("click", t, () => k(), !0), Xn(e, t)
+ };
+ pr(R, e => {
+ r().audio && e(L)
+ });
+ var M = Ee(R, 2);
+ ce(P);
+ var D = Ee(P, 2),
+ U = Se(D),
+ V = Se(U, !0);
+ ce(U);
+ var N = Ee(U, 2),
+ z = Se(N, !0);
+ ce(N), ce(D), ce(S);
+ var j = Ee(S, 2),
+ B = e => {
+ var t = wa();
+ Gr(t, e => Et(f, e), () => ln(f)), Nn("error", t, m), Nn("loadstart", t, y), Nn("canplay", t, b), Nn("pause", t, x), Nn("playing", t, w), Nn("ended", t, g), Xn(e, t)
+ };
+ return pr(j, e => {
+ ln(v) && e(B)
+ }), ce($), yn(() => {
+ ir(A, c().enterCodeFromImage), Nr(I, "src", o()), Nr(O, "minlength", r().length || 1), Nr(O, "maxlength", r().length), Nr(O, "placeholder", c().enterCode), Nr(O, "aria-label", ln(u) === da.LOADING ? c().loading : ln(u) === da.PLAYING ? "" : c().enterCodeAria), Nr(O, "aria-live", ln(u) ? "assertive" : "polite"), Nr(O, "aria-busy", ln(u) === da.LOADING), Nr(M, "title", c().reload), Nr(M, "aria-label", c().reload), Nr(U, "aria-label", c().verify), ir(V, c().verify), Nr(N, "aria-label", c().cancel), ir(z, c().cancel)
+ }), Nn("submit", S, function(e) {
+ e.preventDefault(), e.stopPropagation(), s()?.(ln(p))
+ }, !0), zn("keydown", O, function(e) {
+ "Space" === e.code ? (e.preventDefault(), e.stopPropagation(), k()) : "Escape" === e.code && (e.preventDefault(), e.stopPropagation(), i()?.())
+ }), Hr(O, () => ln(p), e => Et(p, e)), Nn("click", M, () => l()?.(), !0), Nn("click", N, () => i()?.(), !0), Xn(e, $), X(_)
+ }
+ jn(["keydown"]), ta(ka, {
+ audioUrl: {},
+ codeChallenge: {},
+ config: {},
+ imageUrl: {},
+ onCancel: {},
+ onReload: {},
+ onSubmit: {},
+ strings: {}
+ }, [], [], {
+ mode: "open"
+ });
+ var _a = Yn(''),
+ $a = Yn(''),
+ Sa = Yn('×
'),
+ Ca = Yn(' ', 1);
+
+ function Ea(e, t) {
+ Z(t, !0);
+ let n = Zr(t, "anchor"),
+ r = Zr(t, "children"),
+ a = Zr(t, "display", 0, "standard"),
+ o = Zr(t, "backdrop", 0, !1),
+ i = Zr(t, "onClickOutside"),
+ l = Zr(t, "onClickOutsideDelay", 0, 600),
+ s = Zr(t, "onClose"),
+ c = Zr(t, "placement", 0, "auto"),
+ u = Zr(t, "updateUISignal"),
+ f = Zr(t, "variant", 0, "neutral"),
+ d = Jr(t, ["$$slots", "$$events", "$$legacy", "$$host", "anchor", "children", "display", "backdrop", "onClickOutside", "onClickOutsideDelay", "onClose", "placement", "updateUISignal", "variant"]),
+ p = St(void 0),
+ v = St(void 0),
+ g = St(!1),
+ m = St(0);
+
+ function b() {
+ s()?.()
+ }
+
+ function y() {
+ if (n() && "auto" === c() && ln(p)) {
+ const e = n().getBoundingClientRect(),
+ t = document.documentElement.clientHeight - (e.top + e.height) < ln(p).clientHeight;
+ ln(g) !== t && Et(g, t)
+ }
+ }
+ vn(() => {
+ "auto" !== c() && Et(g, "top" === c())
+ }), vn(() => {
+ u() && y()
+ }), hr(() => {
+ const e = "bottomsheet" === a() || "overlay" === a();
+ return e && (ln(v) && document.body.append(ln(v)), ln(p) && document.body.append(ln(p))), y(), on().then(() => {
+ Et(m, Date.now(), !0)
+ }), () => {
+ e && (ln(v) && document.body.removeChild(ln(v)), ln(p) && document.body.removeChild(ln(p)))
+ }
+ });
+ var w = {
+ get anchor() {
+ return n()
+ },
+ set anchor(e) {
+ n(e), nt()
+ },
+ get children() {
+ return r()
+ },
+ set children(e) {
+ r(e), nt()
+ },
+ get display() {
+ return a()
+ },
+ set display(e = "standard") {
+ a(e), nt()
+ },
+ get backdrop() {
+ return o()
+ },
+ set backdrop(e = !1) {
+ o(e), nt()
+ },
+ get onClickOutside() {
+ return i()
+ },
+ set onClickOutside(e) {
+ i(e), nt()
+ },
+ get onClickOutsideDelay() {
+ return l()
+ },
+ set onClickOutsideDelay(e = 600) {
+ l(e), nt()
+ },
+ get onClose() {
+ return s()
+ },
+ set onClose(e) {
+ s(e), nt()
+ },
+ get placement() {
+ return c()
+ },
+ set placement(e = "auto") {
+ c(e), nt()
+ },
+ get updateUISignal() {
+ return u()
+ },
+ set updateUISignal(e) {
+ u(e), nt()
+ },
+ get variant() {
+ return f()
+ },
+ set variant(e = "neutral") {
+ f(e), nt()
+ }
+ },
+ x = Ca();
+ Nn("click", ge, function(e) {
+ const t = e.target;
+ ln(p)?.contains(t) || l() && !(ln(m) + l() < Date.now()) || i()?.()
+ }, !0), Nn("resize", ge, function() {
+ y()
+ }), Nn("scroll", ge, function() {
+ y()
+ });
+ var k = Ce(x),
+ _ = e => {
+ var t = _a();
+ Gr(t, e => Et(v, e), () => ln(v)), Xn(e, t)
+ };
+ pr(k, e => {
+ o() && e(_)
+ });
+ var $ = Ee(k, 2);
+ zr($, () => ({
+ ...d,
+ class: `altcha-popover ${(t.class || "") ?? ""}`,
+ "data-popover": !0,
+ "data-variant": f(),
+ "data-top": ln(g),
+ "data-display": a()
+ }));
+ var S = Se($),
+ C = e => {
+ Xn(e, $a())
+ };
+ pr(S, e => {
+ "standard" === a() && e(C)
+ });
+ var T = Ee(S, 2),
+ A = e => {
+ var t = Sa();
+ Nn("click", t, b, !0), Xn(e, t)
+ };
+ pr(T, e => {
+ "standard" !== a() && e(A)
+ });
+ var I = Ee(T, 2);
+ return function(e, t, ...n) {
+ var r = new dr(e);
+ wn(() => {
+ const e = t() ?? null;
+ r.ensure(e, e && (t => e(t, ...n)))
+ }, E)
+ }(Se(I), () => r() ?? h), ce(I), ce($), Gr($, e => Et(p, e), () => ln(p)), Xn(e, x), X(w)
+ }
+ async function Ta(e) {
+ const {
+ challenge: t,
+ concurrency: n = navigator.hardwareConcurrency,
+ controller: r = new AbortController,
+ createWorker: a,
+ onOutOfMemory: o = e => e > 1 ? Math.floor(e / 2) : 0,
+ counterMode: i,
+ timeout: l = 9e4
+ } = e, s = Math.min(16, Math.max(1, n)), c = [], u = () => {
+ for (const e of c) e.terminate()
+ };
+ for (let e = 0; e < s; e++) c.push(await a(t.parameters.algorithm));
+ let f = null;
+ try {
+ f = await Promise.race(c.map((e, n) => (r.signal.addEventListener("abort", () => {
+ e.postMessage({
+ type: "abort"
+ })
+ }), new Promise((r, a) => {
+ e.addEventListener("error", e => {
+ a(e)
+ }), e.addEventListener("message", t => {
+ if (t.data) {
+ for (const t of c) t !== e && t.postMessage({
+ type: "abort"
+ });
+ if (t.data.error) return a(new Error(t.data.error))
+ }
+ r(t.data)
+ }), e.postMessage({
+ challenge: t,
+ counterMode: i,
+ counterStart: n,
+ counterStep: s,
+ timeout: l,
+ type: "work"
+ })
+ }))))
+ } catch (n) {
+ if (n instanceof Error && !!n?.message?.includes("Out of memory") && o) {
+ u();
+ const n = o(s);
+ if (n) return Ta({
+ ...e,
+ challenge: t,
+ controller: r,
+ concurrency: n,
+ createWorker: a
+ })
+ }
+ throw n
+ } finally {
+ u()
+ }
+ return r.signal.aborted ? null : f || null
+ }
+ ta(Ea, {
+ anchor: {},
+ children: {},
+ display: {},
+ backdrop: {},
+ onClickOutside: {},
+ onClickOutsideDelay: {},
+ onClose: {},
+ placement: {},
+ updateUISignal: {},
+ variant: {}
+ }, [], [], {
+ mode: "open"
+ });
+ class Aa {
+ TAG_CODES = {
+ INPUT: 1,
+ TEXTAREA: 2,
+ SELECT: 3,
+ BUTTON: 4,
+ A: 5,
+ DETAILS: 6,
+ SUMMARY: 7,
+ IFRAME: 8,
+ VIDEO: 9,
+ AUDIO: 10
+ };
+ maxSamples;
+ sampleInterval;
+ target;
+ focusStartTime = 0;
+ focusInteraction = 0;
+ focusInteractionTimer = null;
+ lastPointerSample = 0;
+ lastTouchSample = 0;
+ lastScrollSample = 0;
+ pendingPointer = null;
+ pendingTouch = null;
+ focus = [];
+ pointer = [];
+ scroll = [];
+ touch = [];
+ constructor(e = {}) {
+ const {
+ maxSamples: t = 60,
+ sampleInterval: n = 50,
+ target: r = window
+ } = e;
+ this.maxSamples = t, this.sampleInterval = n, this.target = r, this.attach()
+ }
+ destroy() {
+ const e = {
+ capture: !0
+ };
+ this.target.removeEventListener("focusin", this.onFocus, e), this.target.removeEventListener("keydown", this.onInteraction, e), this.target.removeEventListener("pointerdown", this.onInteraction, e), this.target.removeEventListener("pointermove", this.onPointer, e), this.target.removeEventListener("scroll", this.onScroll, e), this.target.removeEventListener("touchmove", this.onTouchMove, e)
+ }
+ export () {
+ return {
+ focus: this.focus,
+ maxTouchPoints: navigator.maxTouchPoints || 0,
+ pointer: this.pointer,
+ scroll: this.scroll,
+ time: Date.now(),
+ touch: this.touch
+ }
+ }
+ attach() {
+ const e = {
+ passive: !0,
+ capture: !0
+ };
+ this.target.addEventListener("focusin", this.onFocus, e), this.target.addEventListener("keydown", this.onInteraction, e), this.target.addEventListener("pointerdown", this.onInteraction, e), this.target.addEventListener("pointermove", this.onPointer, e), this.target.addEventListener("scroll", this.onScroll, e), this.target.addEventListener("touchmove", this.onTouchMove, e)
+ }
+ evict(e) {
+ e.length > this.maxSamples && e.splice(0, e.length - this.maxSamples)
+ }
+ onFocus = e => {
+ if (2 === this.focusInteraction) return;
+ const t = e.target;
+ if (!(t instanceof Element)) return;
+ const n = performance.now();
+ 0 === this.focusStartTime && (this.focusStartTime = n), this.focus.push([Math.round(n - this.focusStartTime), t.tabIndex, this.TAG_CODES[t.tagName] ?? 0, this.focusInteraction ? 1 : 0]), this.evict(this.focus)
+ };
+ onInteraction = e => {
+ this.focusInteraction = "keyCode" in e ? 1 : 2, this.focusInteractionTimer && clearTimeout(this.focusInteractionTimer), this.focusInteractionTimer = setTimeout(() => {
+ this.focusInteraction = 0
+ }, 100)
+ };
+ onPointer = e => {
+ if ("touch" === e.pointerType) return;
+ const t = e.timeStamp || performance.now();
+ this.pendingPointer = [Math.round(e.clientX), Math.round(e.clientY), Math.round(t)], t - this.lastPointerSample >= this.sampleInterval && (this.pointer.push(this.pendingPointer), this.lastPointerSample = t, this.pendingPointer = null, this.evict(this.pointer))
+ };
+ onScroll = () => {
+ const e = performance.now();
+ e - this.lastScrollSample < this.sampleInterval || (this.scroll.push([Math.round(window.scrollY), Math.round(e)]), this.lastScrollSample = e, this.evict(this.scroll))
+ };
+ onTouchMove = e => {
+ const t = e.timeStamp || performance.now(),
+ n = e.touches[0];
+ n && (this.pendingTouch = [Math.round(n.clientX), Math.round(n.clientY), Math.round(t), Math.round(1e3 * n.force) / 1e3, Math.round(n.radiusX || 0), Math.round(n.radiusY || 0)], t - this.lastTouchSample >= this.sampleInterval && (this.touch.push(this.pendingTouch), this.lastTouchSample = t, this.pendingTouch = null, this.evict(this.touch)))
+ }
+ }
+ var Ia = Yn(''),
+ Pa = Yn(''),
+ Oa = Yn('×
', 1),
+ Ra = Yn(''),
+ La = Yn(''),
+ Ma = Yn('Secure context (HTTPS) required.
'),
+ Da = Yn('
'),
+ Ua = Yn('
'),
+ Va = Yn(" ", 1),
+ Na = Yn(' ', 1);
+ "undefined" != typeof window && window.customElements && !customElements.get("altcha-widget") && customElements.define("altcha-widget", ta(function(e, t) {
+ Z(t, !0);
+ const [n, r] = function() {
+ const e = {};
+ return [e, function() {
+ pn(() => {
+ for (var t in e) e[t].unsubscribe();
+ i(e, je, {
+ enumerable: !1,
+ value: !0
+ })
+ })
+ }]
+ }(), a = ["ar", "fa", "he", "ur"], {
+ isSecureContext: o
+ } = globalThis, {
+ store: l
+ } = globalThis.$altcha.defaults, s = navigator.hardwareConcurrency || 2, c = navigator.deviceMemory || 0, u = c && c <= 4 ? Math.min(4, s) : s, f = globalThis.$altcha.i18n.store, d = t.$$host, h = (e, t) => {
+ on().then(() => {
+ d?.dispatchEvent(new CustomEvent(e, {
+ detail: t
+ }))
+ })
+ };
+ let p = null,
+ v = St(he(new URL(location.origin))),
+ g = St(!1),
+ m = St(null),
+ b = St(null),
+ y = St(null),
+ w = St(he(ha.UNVERIFIED)),
+ x = St(void 0),
+ k = St(void 0),
+ _ = St(null),
+ $ = St(void 0),
+ S = St(null),
+ C = St(null),
+ T = St(null),
+ A = St(null),
+ I = St(he([])),
+ P = St(0),
+ O = St(he({})),
+ R = St(!0);
+ const L = mt(() => ({
+ fetch: (e, t) => fetch(e, t),
+ audioChallengeLanguage: "",
+ auto: "off",
+ barPlacement: "bottom",
+ challenge: "",
+ codeChallenge: null,
+ codeChallengeDisplay: "standard",
+ credentials: null,
+ debug: !1,
+ disableAutoFocus: !1,
+ display: "standard",
+ floatingAnchor: "",
+ floatingOffset: 8,
+ floatingPersist: !1,
+ floatingPlacement: "auto",
+ hideFooter: !1,
+ hideLogo: !1,
+ humanInteractionSignature: !0,
+ language: "",
+ mockError: !1,
+ minDuration: 500,
+ overlayContent: "",
+ name: "altcha",
+ popoverPlacement: "auto",
+ retryOnOutOfMemoryError: !0,
+ setCookie: null,
+ serverVerificationFields: !1,
+ serverVerificationTimeZone: !1,
+ test: !1,
+ timeout: 9e4,
+ type: "checkbox",
+ validationMessage: "",
+ verifyFunction: null,
+ verifyUrl: "",
+ workers: u,
+ ...Be(l, "$altchaDefaults", n),
+ ...ln(O)
+ })),
+ M = mt(() => `altcha-checkbox-${t.id || Math.floor(1e12 * Math.random()).toString(16)}`),
+ D = mt(() => function(e) {
+ switch (e) {
+ case "checkbox":
+ return ra;
+ case "switch":
+ return fa;
+ default:
+ return oa
+ }
+ }(ln(L).type)),
+ U = mt(() => ln(L).auto),
+ V = mt(() => ln(w) === ha.VERIFYING),
+ N = mt(() => !ln(L).hideFooter),
+ z = mt(() => !ln(L).hideLogo && "bar" !== ln(L).display),
+ j = mt(() => function(e, t) {
+ const n = Object.keys(e).map(e => e.toLowerCase());
+ let r = t.reduce((t, r) => (r = r.toLowerCase(), t || (e[r] ? r : null) || n.find(e => r.split("-")[0] === e.split("-")[0]) || null), null);
+ e[r || ""] || (r = "en");
+ return {
+ language: r,
+ strings: e[r]
+ }
+ }(Be(f, "$altchaI18nStore", n), [ln(L).language, document.documentElement.lang, ...navigator.languages])),
+ B = mt(() => a.includes(ln(j).language) ? "rtl" : void 0),
+ F = mt(() => ({
+ ...ln(j).strings
+ })),
+ H = mt(() => ln(m)?.audio?.match(/^(https?:)?\//) ? Q(ln(m).audio, ln(v), {
+ language: ln(L).audioChallengeLanguage || ln(j).language
+ }).toString() : ln(m)?.audio),
+ K = mt(() => ln(m)?.image?.match(/^(https?:)?\//) ? Q(ln(m).image, ln(v)) : ln(m)?.image);
+ async function q(e, ...t) {
+ let n;
+ for (const r of ln(I)) n = await r[e].call(r, ...t);
+ return n
+ }
+ async function Y(e) {
+ await new Promise(t => setTimeout(t, e))
+ }
+ async function G(e = ln(L).challenge, t) {
+ const n = await q("onFetchChallenge", e);
+ let r = null;
+ if (void 0 !== n) return n;
+ if ("string" == typeof e)
+ if (e.startsWith("{")) {
+ _e("parsing JSON challenge");
+ try {
+ r = JSON.parse(e)
+ } catch {
+ throw new Error("Unable to parse JSON challenge.")
+ }
+ } else {
+ _e("fetching challenge from", t?.method || "GET", e), Et(v, new URL(e, location.origin), !0);
+ const n = await ln(L).fetch(e, {
+ credentials: ln(L).credentials || void 0,
+ ...t
+ });
+ await ye(n);
+ const a = n.headers.get("x-altcha-config");
+ a && function(e) {
+ try {
+ const t = JSON.parse(e);
+ t && "object" == typeof t && xe({
+ serverVerificationFields: t?.sentinel?.fields,
+ serverVerificationTimeZone: t?.sentinel?.timeZone,
+ verifyUrl: t.verifyurl,
+ ...t
+ })
+ } catch (e) {
+ _e("unable to configure from x-altcha-config header", e)
+ }
+ }(a);
+ const o = await n.json();
+ if (o && "his" in o && o.his) {
+ if (_e("requested HIS"), !p) throw new Error("Server requested HIS data but collector is disabled.");
+ return G(Q(o.his.url, ln(v)), {
+ body: JSON.stringify({
+ his: p.export()
+ }),
+ headers: {
+ "content-type": "application/json"
+ },
+ method: "POST"
+ })
+ }
+ o && "hisResult" in o && o.hisResult && _e("HIS result", o.hisResult), r = o
+ }
+ else if (e && "object" == typeof e) try {
+ r = JSON.parse(JSON.stringify(e))
+ } catch {
+ throw new Error("Unable to parse JSON challenge.")
+ }
+ if (function(e) {
+ return "object" == typeof e && "challenge" in e
+ }(r) && (r = function(e) {
+ const [t, n] = e.salt.split("?"), r = {};
+ if (n) try {
+ Object.assign(r, Object.fromEntries(new URLSearchParams(n).entries()))
+ } catch {}
+ const a = {
+ codeChallenge: e.codeChallenge,
+ parameters: {
+ algorithm: e.algorithm,
+ cost: 1,
+ data: r,
+ expiresAt: r?.expires ? parseInt(r.expires, 10) : void 0,
+ keyLength: "SHA-512" === e.algorithm ? 64 : "SHA-384" === e.algorithm ? 48 : 32,
+ nonce: (o = (new TextEncoder).encode(e.salt), Array.from(new Uint8Array(o)).map(e => e.toString(16).padStart(2, "0")).join("")),
+ keyPrefix: e.challenge,
+ salt: ""
+ },
+ signature: e.signature
+ };
+ var o;
+ return Object.defineProperties(a, {
+ _originalSalt: {
+ enumerable: !1,
+ value: e.salt,
+ writable: !1
+ },
+ _version: {
+ enumerable: !1,
+ value: 1,
+ writable: !1
+ }
+ }), a
+ }(r)), ! function(e) {
+ return !!e && "object" == typeof e && "parameters" in e && !!e.parameters && "object" == typeof e.parameters && "algorithm" in e.parameters && "nonce" in e.parameters && "salt" in e.parameters && "keyPrefix" in e.parameters
+ }(r)) throw new Error("Challenge validation failed.");
+ return r
+ }
+
+ function W() {
+ return document.getElementById(ln(M))
+ }
+
+ function J() {
+ try {
+ return Intl.DateTimeFormat().resolvedOptions().timeZone
+ } catch {}
+ }
+
+ function Q(e, t, n) {
+ const r = new URL(e, t);
+ if (r.search || (r.search = t.search), n)
+ for (const e in n) void 0 !== n[e] && null !== n[e] && r.searchParams.set(e, n[e]);
+ return r.toString()
+ }
+
+ function ee(e) {
+ !ln(g) && e.currentTarget.checked ? (e.preventDefault(), e.currentTarget.checked = !1, ln(w) !== ha.VERIFYING && Pe()) : e.currentTarget.checked || (e.preventDefault(), $e())
+ }
+
+ function te(e) {
+ ln(w) === ha.VERIFYING ? e.currentTarget.setCustomValidity(ln(F).waitAlert) : ln(L).validationMessage && e.currentTarget.setCustomValidity(ln(L).validationMessage)
+ }
+
+ function ne() {
+ be(ln(L).display), $e()
+ }
+
+ function re(e) {
+ "onfocus" === ln(U) && ln(w) === ha.UNVERIFIED && Pe()
+ }
+
+ function ue() {
+ be(ln(L).display), $e()
+ }
+
+ function pe(e) {
+ const t = e.target;
+ "true" !== t?.getAttribute("data-code-challenge") && "onsubmit" === ln(U) && ln(w) === ha.UNVERIFIED && (e.preventDefault(), e.stopPropagation(), Et(S, e.submitter, !0), Ae(), Pe().then(e => {
+ e && !ln(m) && on().then(() => {
+ ve(ln(S))
+ })
+ }))
+ }
+
+ function ve(e) {
+ ln(_) && "requestSubmit" in ln(_) ? ln(_).requestSubmit(e) : ln(_)?.reportValidity() && (e ? e.click() : ln(_).submit())
+ }
+
+ function be(e) {
+ switch (e) {
+ case "bar":
+ case "floating":
+ case "overlay":
+ ke(), ln(U) && "off" !== ln(U) || (ln(O).auto = "onsubmit");
+ break;
+ case "standard":
+ Ae()
+ }
+ ln(y) !== e && Et(y, e, !0)
+ }
+ async function ye(e) {
+ if (e.status >= 400) {
+ if (e.headers.get("content-type")?.includes("/json")) {
+ let t;
+ try {
+ t = await e.json()
+ } catch {}
+ if (t && "error" in t) throw new Error(`Server responded with ${e.status} - ${t.error}`)
+ }
+ throw new Error(`Server responded with ${e.status}.`)
+ }
+ const t = e.headers.get("content-type");
+ if (!t || !t.includes("/json")) throw new Error(`Server responded with invalid content-type. Expected application/json, received ${t}.`)
+ }
+ async function we(e) {
+ if (!ln(A)) return void Te(ha.ERROR, "Cannot verify code challenge without PoW payload.");
+ Te(ha.VERIFYING);
+ let t = null;
+ if (ln(L).verifyUrl) t = await async function(e, t) {
+ const n = await q("onRequestServerVerification", e, t);
+ if (void 0 !== n) return n;
+ if (_e("requesting server verification from", ln(L).verifyUrl), !ln(L).verifyUrl) throw new Error("Parameter verifyUrl must be set for server verification.");
+ const r = await ln(L).fetch(Q(ln(L).verifyUrl, ln(v)), {
+ body: JSON.stringify({
+ code: t,
+ fields: ln(L).serverVerificationFields ? [...ln(_)?.querySelectorAll('input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])') || []].reduce((e, t) => {
+ const n = t.name,
+ r = t.value;
+ return n && r && (e[n] = /\n/.test(r) ? r.replace(new RegExp("(? {
+ ve(ln(S))
+ })) : Te(ha.ERROR, t?.reason || "Verification failed."), ln(L).disableAutoFocus || W()?.focus()
+ }
+
+ function xe(e) {
+ Object.assign(ln(O), {
+ ...Object.fromEntries(Object.entries(e).filter(([e, t]) => void 0 !== t))
+ })
+ }
+
+ function ke() {
+ Et(R, !1)
+ }
+
+ function _e(...e) {
+ (ln(L).debug || e.some(e => e instanceof Error)) && console[e[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${ln(L).name}]`, ...e)
+ }
+
+ function $e(e = ha.UNVERIFIED, t = null) {
+ Et(g, !1), Et(C, t, !0), Et(A, null), ln(b) && ln(b).abort(), ln(T) && (clearTimeout(ln(T)), Et(T, null)), Te(e)
+ }
+
+ function Te(e, t = null) {
+ Et(w, e, !0), Et(C, t, !0), h("statechange", {
+ payload: ln(A),
+ state: ln(w)
+ })
+ }
+
+ function Ae() {
+ Et(R, !0), on().then(() => {
+ Ie()
+ })
+ }
+
+ function Ie() {
+ if ("floating" === ln(L).display) return function(e = 20) {
+ if (!ln($)) return;
+ const t = ln(L).floatingPlacement;
+ if (!ln(k) && (Et(k, (ln(L).floatingAnchor instanceof HTMLElement ? ln(L).floatingAnchor : ln(L).floatingAnchor ? document.querySelector(ln(L).floatingAnchor) : ln(_)?.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || ln(_), !0), !ln(k))) return void _e("unable to find floating anchor element");
+ const n = parseInt(ln(L).floatingOffset, 10) || 12,
+ r = ln(k).getBoundingClientRect(),
+ a = ln($).getBoundingClientRect(),
+ o = document.documentElement.clientHeight,
+ i = document.documentElement.clientWidth,
+ l = t && "auto" !== t ? "top" === t : r.bottom + a.height + n + e > o,
+ s = Math.max(e, Math.min(i - e - a.width, r.left + r.width / 2 - a.width / 2));
+ if (ln($).style.setProperty("--altcha-floating-left", `${s}px`), ln($).style.setProperty("--altcha-floating-top", l ? r.top - (a.height + n) + "px" : `${r.bottom + n}px`), ln($).setAttribute("data-floating-position", l ? "top" : "bottom"), ln(x)) {
+ const e = ln(x).getBoundingClientRect();
+ ln(x).style.left = r.left - s + r.width / 2 - e.width / 2 + "px"
+ }
+ }();
+ Et(P, ln(P) + 1)
+ }
+ async function Pe(e = {}) {
+ const {
+ concurrency: t = Math.max(1, ln(L).workers),
+ controller: n = new AbortController,
+ minDuration: r = ln(L).minDuration
+ } = e, a = performance.now();
+ let i = null,
+ l = null,
+ s = !1;
+ const c = await q("onVerify", e);
+ if (void 0 !== c) return c;
+ $e(ha.VERIFYING), Et(b, n, !0);
+ try {
+ if (!o) throw new Error("Secure context (HTTPS) required.");
+ if (ln(L).mockError) throw new Error("Mock error.");
+ if (ln(L).test) return _e("running test mode with null challenge"), await Y(Math.max(0, r - (performance.now() - a))), ln(b)?.signal.aborted ? ($e(), null) : (Et(A, btoa(JSON.stringify({
+ challenge: null,
+ solution: null,
+ test: !0
+ })), !0), _e("verified"), Te(ha.VERIFIED), h("verified", {
+ payload: ln(A)
+ }), {
+ payload: ln(A)
+ });
+ if (i = await G(), !i) throw new Error("Failed to fetch challenge.");
+ _e("challenge", i), "configuration" in i && (_e("re-configuring from challenge", i.configuration), xe(i.configuration)), i.parameters.expiresAt && function(e) {
+ ln(T) && clearTimeout(ln(T));
+ const t = () => {
+ ln(w) !== ha.UNVERIFIED ? (Et(g, !1), Te(ha.EXPIRED)) : $e(), h("expired")
+ },
+ n = 1e3 * e - Date.now();
+ n >= 1 ? Et(T, setTimeout(t, n), !0) : t()
+ }(i.parameters.expiresAt), s = "_version" in i && 1 === i._version;
+ const e = globalThis.$altcha.algorithms.get(i.parameters.algorithm);
+ if (!e) throw new Error(`Unsupported algorithm ${i.parameters.algorithm}.`);
+ if (l = await Ta({
+ challenge: i,
+ concurrency: t,
+ controller: n,
+ createWorker: e,
+ counterMode: s ? "string" : "uint32",
+ onOutOfMemory: e => {
+ if (_e("out of memory error received"), h("outofmemory"), ln(L).retryOnOutOfMemoryError && e > 1) {
+ const t = Math.floor(e / 2);
+ return _e(`retrying with ${t} workers...`), t
+ }
+ },
+ timeout: ln(L).timeout
+ }), ln(b)?.signal.aborted) return $e(), null;
+ if (!l) throw new Error("Failed to find solution.");
+ _e("solution", l), await Y(Math.max(0, r - (performance.now() - a))), Et(m, i.codeChallenge || ln(L).codeChallenge || null, !0), Et(A, s ? btoa(JSON.stringify(function(e, t) {
+ return {
+ algorithm: e.parameters.algorithm,
+ challenge: e.parameters.keyPrefix,
+ number: t.counter,
+ salt: "_originalSalt" in e ? e._originalSalt : e.parameters.nonce,
+ signature: e.signature,
+ took: t.time || 0
+ }
+ }(i, l))) : btoa(JSON.stringify({
+ challenge: {
+ parameters: i.parameters,
+ signature: i.signature
+ },
+ solution: l
+ })), !0), ln(m) ? (_e("requesting code verification"), Te(ha.CODE), h("codechallenge", {
+ codeChallenge: ln(m)
+ })) : ln(L).verifyUrl ? await we() : (_e("verified"), Te(ha.VERIFIED), h("verified", {
+ payload: ln(A)
+ }))
+ } catch (e) {
+ return _e("verification failed", e), Te(ha.ERROR, String(e)), null
+ } finally {
+ Et(b, null)
+ }
+ return {
+ challenge: i,
+ payload: ln(A),
+ solution: l
+ }
+ }
+ vn(() => {
+ xe({
+ auto: t.auto,
+ challenge: t.challenge,
+ display: t.display,
+ language: t.language,
+ name: t.name,
+ type: t.type,
+ workers: t.workers
+ })
+ }), vn(() => {
+ if (t.configuration) try {
+ xe(JSON.parse(t.configuration))
+ } catch {
+ _e("unable to parse the `configuration` attribute (JSON expected)")
+ }
+ }), vn(() => {
+ ln(y) !== ln(L).display && be(ln(L).display)
+ }), vn(() => {
+ ln(g) && ln(w) === ha.VERIFYING && Et(g, !1)
+ }), vn(() => {
+ ln(g) || ln(w) !== ha.VERIFIED || Et(g, !0)
+ }), vn(() => {
+ if (!ln(g)) {
+ const e = W();
+ e && e.checked && (e.checked = !1)
+ }
+ }), vn(() => {
+ ln(w) === ha.VERIFIED && W()?.setCustomValidity("")
+ }), vn(() => {
+ if ("onload" === ln(U)) {
+ const e = setTimeout(() => {
+ Pe()
+ }, 1);
+ return () => {
+ e && clearTimeout(e)
+ }
+ }
+ }), vn(() => {
+ ln(C) && _e("error:", ln(C))
+ }), vn(() => {
+ ln(A) && ln(L).setCookie && function(e, t = {}) {
+ const {
+ domain: n,
+ name: r = ln(L).name,
+ maxAge: a,
+ path: o,
+ sameSite: i,
+ secure: l
+ } = t;
+ let s = `${encodeURIComponent(r)}=${encodeURIComponent(e)}`;
+ n && (s += `; Domain=${n}`);
+ null != a && (s += `; Max-Age=${a}`);
+ o && (s += `; Path=${o}`);
+ i && (s += `; SameSite=${i}`);
+ l && (s += "; Secure");
+ document.cookie = s
+ }(ln(A), ln(L).setCookie)
+ }), hr(() => (_e("mounted", "3.0.11"), d && globalThis.$altcha.instances.add(d), Et(_, ln($)?.closest("form"), !0), ln(_)?.addEventListener("reset", ue), ln(_)?.addEventListener("submit", pe, {
+ capture: !0
+ }), ln(_)?.addEventListener("focusin", re), function() {
+ Et(I, [...globalThis.$altcha.plugins].map(e => new e(d)), !0), _e("activating plugins", ln(I).map(e => e.constructor.name));
+ for (const e of ln(I)) e.activate()
+ }(), ln(L).humanInteractionSignature && (_e("human interaction signature enabled"), p = new Aa), h("load"), o || _e("secure context (HTTPS) required"), () => {
+ ! function() {
+ for (const e of ln(I)) e.destroy()
+ }(), d && globalThis.$altcha.instances.delete(d), ln(T) && clearTimeout(ln(T)), ln(_)?.removeEventListener("reset", ue), ln(_)?.removeEventListener("submit", pe, {
+ capture: !0
+ }), ln(_)?.removeEventListener("focusin", re), p?.destroy()
+ }));
+ var Oe = {
+ configure: xe,
+ getConfiguration: function() {
+ return {
+ ...ln(L)
+ }
+ },
+ getState: function() {
+ return ln(w)
+ },
+ hide: ke,
+ log: _e,
+ reset: $e,
+ setState: Te,
+ show: Ae,
+ updateUI: Ie,
+ verify: Pe
+ },
+ Re = Na();
+ Nn("scroll", me, function() {
+ Ie()
+ }), Nn("click", me, function(e) {
+ const t = e.target;
+ "floating" !== ln(L).display || !t || d?.contains(t) || t.hasAttribute("data-backdrop") || t.closest("[data-popover]") || ln(w) === ha.VERIFIED || ln(L).floatingPersist || ke()
+ }), Nn("pageshow", ge, function(e) {
+ e.persisted && (be(ln(L).display), $e())
+ }), Nn("resize", ge, function() {
+ Ie()
+ });
+ var Le = Ce(Re),
+ Me = e => {
+ Xn(e, Ia())
+ };
+ pr(Le, e => {
+ "overlay" === ln(L).display && ln(R) && e(Me)
+ });
+ var De = Ee(Le, 2),
+ Ue = Se(De),
+ Ve = e => {
+ var t = Oa(),
+ n = Ce(t),
+ r = Ee(n, 2),
+ a = e => {
+ var t = Pa();
+ gr(t, () => document.querySelector(ln(L).overlayContent)?.innerHTML, !0), ce(t), Xn(e, t)
+ };
+ pr(r, e => {
+ ln(L).overlayContent && e(a)
+ }), Nn("click", n, ne, !0), Xn(e, t)
+ };
+ pr(Ue, e => {
+ "overlay" === ln(L).display && ln(R) && e(Ve)
+ });
+ var Ne = Ee(Ue, 2),
+ ze = Se(Ne),
+ Fe = Se(ze),
+ He = Se(Fe);
+ {
+ let e = mt(() => "standard" === ln(L).display && "onsubmit" !== ln(U) || ln(w) === ha.VERIFYING);
+ ! function(e, t, n) {
+ var r;
+ oe && (r = ae, se());
+ var a = new dr(e);
+ wn(() => {
+ var e = t() ?? null;
+ if (oe && "[" === de(r) != (null !== e)) {
+ var o = fe();
+ return le(o), a.anchor = o, ie(!1), a.ensure(e, e && (t => n(t, e))), void ie(!0)
+ }
+ a.ensure(e, e && (t => n(t, e)))
+ }, E)
+ }(He, () => ln(D), (t, n) => {
+ n(t, {
+ get id() {
+ return ln(M)
+ },
+ name: "",
+ get required() {
+ return ln(e)
+ },
+ get loading() {
+ return ln(V)
+ },
+ get checked() {
+ return ln(g)
+ },
+ onchange: ee,
+ oninvalid: te
+ })
+ })
+ }
+ var Ke = Ee(He, 2),
+ qe = Se(Ke),
+ Ye = e => {
+ var t = Jn();
+ yn(() => ir(t, ln(F).verificationRequired)), Xn(e, t)
+ },
+ Ge = e => {
+ var t = Jn();
+ yn(() => ir(t, ln(F).verifying)), Xn(e, t)
+ },
+ We = e => {
+ var t = Jn();
+ yn(() => ir(t, ln(F).verified)), Xn(e, t)
+ },
+ Je = e => {
+ var t = Jn();
+ yn(() => ir(t, ln(F).label)), Xn(e, t)
+ };
+ pr(qe, e => {
+ ln(w) === ha.CODE && ln(m) ? e(Ye) : ln(w) === ha.VERIFYING ? e(Ge, 1) : ln(w) === ha.VERIFIED ? e(We, 2) : e(Je, -1)
+ }), ce(Ke), ce(Fe);
+ var Ze = Ee(Fe, 2),
+ Xe = e => {
+ la(e, {
+ get strings() {
+ return ln(F)
+ }
+ })
+ };
+ pr(Ze, e => {
+ ln(z) && e(Xe)
+ }), ce(ze);
+ var Qe = Ee(ze, 2),
+ et = e => {
+ {
+ let t = mt(() => "bar" === ln(L).display && ln(z));
+ ca(e, {
+ get logo() {
+ return ln(t)
+ },
+ get strings() {
+ return ln(F)
+ }
+ })
+ }
+ };
+ pr(Qe, e => {
+ ln(N) && e(et)
+ });
+ var tt = Ee(Qe, 2),
+ nt = e => {
+ var t = Ra();
+ Gr(t, e => Et(x, e), () => ln(x)), Xn(e, t)
+ };
+ pr(tt, e => {
+ "floating" === ln(L).display && e(nt)
+ });
+ var rt = Ee(tt, 2),
+ at = e => {
+ var t = La();
+ Ur(t), yn(() => {
+ var e, n, r;
+ Nr(t, "name", ln(L).name), e = t, n = ln(A), (r = jr(e)).value !== (r.value = n ?? void 0) && (e.value !== n || 0 === n && e.nodeName === Dr) && (e.value = n ?? "")
+ }), Xn(e, t)
+ };
+ pr(rt, e => {
+ ln(L).setCookie || e(at)
+ }), ce(Ne);
+ var ot = Ee(Ne, 2),
+ it = e => {
+ Ea(e, {
+ get anchor() {
+ return ln($)
+ },
+ onClickOutside: () => {
+ o && $e()
+ },
+ get placement() {
+ return ln(L).popoverPlacement
+ },
+ role: "alert",
+ variant: "error",
+ get dir() {
+ return ln(B)
+ },
+ get updateUISignal() {
+ return ln(P)
+ },
+ children: (e, t) => {
+ var n = Zn(),
+ r = Ce(n),
+ a = e => {
+ Xn(e, Ma())
+ },
+ i = e => {
+ var t = Da(),
+ n = Se(t, !0);
+ ce(t), yn(() => ir(n, ln(F).expired)), Xn(e, t)
+ },
+ l = e => {
+ var t = Ua(),
+ n = Se(t, !0);
+ ce(t), yn(() => {
+ Nr(t, "title", ln(C)), ir(n, ln(F).error)
+ }), Xn(e, t)
+ };
+ pr(r, e => {
+ ln(C) || o ? ln(C) || ln(w) !== ha.EXPIRED ? e(l, -1) : e(i, 1) : e(a)
+ }), Xn(e, n)
+ },
+ $$slots: {
+ default: !0
+ }
+ })
+ },
+ lt = e => {
+ var t = Zn();
+ ! function(e, t, n) {
+ oe && se();
+ var r = new dr(e);
+ wn(() => {
+ var e = t();
+ e != e && (e = vr), r.ensure(e, n)
+ })
+ }(Ce(t), () => ln(m), e => {
+ {
+ let t = mt(() => "standard" !== ln(L).codeChallengeDisplay);
+ Ea(e, {
+ get anchor() {
+ return ln($)
+ },
+ get backdrop() {
+ return ln(t)
+ },
+ get display() {
+ return ln(L).codeChallengeDisplay
+ },
+ onClose: () => {
+ $e()
+ },
+ get placement() {
+ return ln(L).popoverPlacement
+ },
+ role: "dialog",
+ get "aria-label"() {
+ return ln(F).verificationRequired
+ },
+ get dir() {
+ return ln(B)
+ },
+ get updateUISignal() {
+ return ln(P)
+ },
+ children: (e, t) => {
+ var n = Va(),
+ r = Ce(n);
+ ka(r, {
+ get audioUrl() {
+ return ln(H)
+ },
+ get imageUrl() {
+ return ln(K)
+ },
+ onCancel: () => $e(),
+ onReload: () => Pe(),
+ onSubmit: e => we(e),
+ get codeChallenge() {
+ return ln(m)
+ },
+ get config() {
+ return ln(L)
+ },
+ get strings() {
+ return ln(F)
+ }
+ });
+ var a = Ee(r, 2),
+ o = e => {
+ ca(e, {
+ get logo() {
+ return ln(z)
+ },
+ get strings() {
+ return ln(F)
+ }
+ })
+ };
+ pr(a, e => {
+ ln(N) && "standard" !== ln(L).codeChallengeDisplay && e(o)
+ }), Xn(e, n)
+ },
+ $$slots: {
+ default: !0
+ }
+ })
+ }
+ }), Xn(e, t)
+ };
+ pr(ot, e => {
+ ln(C) || ln(w) === ha.EXPIRED || !o ? e(it) : ln(m) && ln(w) === ha.CODE && e(lt, 1)
+ }), ce(De), Gr(De, e => Et($, e), () => ln($)), yn(e => {
+ Nr(De, "data-state", ln(w)), Nr(De, "data-display", ln(L).display || void 0), Nr(De, "data-placement", e), Nr(De, "data-visible", ln(R) || void 0), Nr(De, "dir", ln(B)), Nr(Ke, "for", ln(M)), De.dir = De.dir
+ }, [() => function(e) {
+ switch (e) {
+ case "bar":
+ return ln(L).barPlacement || "bottom";
+ case "floating":
+ return ln(L).floatingPlacement || "auto";
+ default:
+ return
+ }
+ }(ln(L).display)]), Xn(e, Re);
+ var st = X(Oe);
+ return r(), st
+ }, {
+ auto: {
+ type: "String"
+ },
+ challenge: {
+ type: "String"
+ },
+ configuration: {
+ type: "String"
+ },
+ display: {
+ type: "String"
+ },
+ language: {
+ type: "String"
+ },
+ name: {
+ type: "String"
+ },
+ theme: {
+ type: "String"
+ },
+ type: {
+ type: "String"
+ },
+ workers: {
+ type: "Number"
+ }
+ }, [], ["configure", "getConfiguration", "getState", "hide", "log", "reset", "setState", "show", "updateUI", "verify"]));
+ const za = '(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n function getDigest(algorithm) {\n switch (algorithm) {\n case "PBKDF2/SHA-512":\n return "SHA-512";\n case "PBKDF2/SHA-384":\n return "SHA-384";\n case "PBKDF2/SHA-256":\n default:\n return "SHA-256";\n }\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, cost, keyLength = 32 } = parameters;\n const passwordKey = await crypto.subtle.importKey(\n "raw",\n password,\n { name: "PBKDF2" },\n false,\n ["deriveKey"]\n );\n const derivedKey = await crypto.subtle.deriveKey(\n {\n name: "PBKDF2",\n salt,\n iterations: cost,\n hash: getDigest(algorithm)\n },\n passwordKey,\n { name: "AES-GCM", length: keyLength * 8 },\n true,\n ["encrypt"]\n );\n return {\n derivedKey: new Uint8Array(await crypto.subtle.exportKey("raw", derivedKey))\n };\n }\n handler({\n deriveKey\n });\n})();\n',
+ ja = "undefined" != typeof self && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", za], {
+ type: "text/javascript;charset=utf-8"
+ });
+
+ function Ba(e) {
+ let t;
+ try {
+ if (t = ja && (self.URL || self.webkitURL).createObjectURL(ja), !t) throw "";
+ const n = new Worker(t, {
+ name: e?.name
+ });
+ return n.addEventListener("error", () => {
+ (self.URL || self.webkitURL).revokeObjectURL(t)
+ }), n
+ } catch (t) {
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(za), {
+ name: e?.name
+ })
+ }
+ }
+ const Fa = '(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, keyLength = 32 } = parameters;\n const iterations = Math.max(1, parameters.cost);\n let data = void 0;\n let derivedKey = void 0;\n for (let i = 0; i < iterations; i++) {\n if (i === 0) {\n data = concatBuffers(salt, password);\n } else {\n data = derivedKey;\n }\n derivedKey = new Uint8Array(\n (await crypto.subtle.digest(algorithm, data)).slice(0, keyLength)\n );\n }\n return {\n parameters: {},\n derivedKey\n };\n }\n handler({\n deriveKey\n });\n})();\n',
+ Ha = "undefined" != typeof self && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", Fa], {
+ type: "text/javascript;charset=utf-8"
+ });
+
+ function Ka(e) {
+ let t;
+ try {
+ if (t = Ha && (self.URL || self.webkitURL).createObjectURL(Ha), !t) throw "";
+ const n = new Worker(t, {
+ name: e?.name
+ });
+ return n.addEventListener("error", () => {
+ (self.URL || self.webkitURL).revokeObjectURL(t)
+ }), n
+ } catch (t) {
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(Fa), {
+ name: e?.name
+ })
+ }
+ }! function(e, t = "altcha-css") {
+ if ("undefined" != typeof document && document && !document.getElementById(t)) {
+ const n = document.createElement("style");
+ n.id = t, n.textContent = e;
+ const r = document.currentScript?.nonce ?? document.querySelector('meta[name="csp-nonce"]')?.content;
+ r && (n.nonce = r), document.head.appendChild(n)
+ }
+ }(':root {\n --altcha-border-color: var(--altcha-color-neutral);\n --altcha-border-width: 1px;\n --altcha-border-radius: 6px;\n --altcha-color-base: light-dark(oklch(100% 0.00011 271.152), oklch(20.904% 0.00002 271.152));\n --altcha-color-base-content: light-dark(\n \toklch(20.904% 0.00002 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-error: oklch(51.284% 0.20527 28.678);\n --altcha-color-error-content: oklch(100% 0.00011 271.152);\n --altcha-color-neutral: light-dark(oklch(83.591% 0.0001 271.152), oklch(46.04% 0.00005 271.152));\n --altcha-color-neutral-content: light-dark(\n \toklch(46.76% 0.00005 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-primary: oklch(40.279% 0.2449 268.131);\n --altcha-color-primary-content: oklch(100% 0.00011 271.152);\n --altcha-color-success: oklch(55.748% 0.18968 142.511);\n --altcha-color-success-content: oklch(100% 0.00011 271.152);\n --altcha-checkbox-border-color: light-dark(\n \toklch(66.494% 0.00233 15.434),\n \toklch(51.028% 0.00006 271.152)\n );\n --altcha-checkbox-border-radius: 5px;\n --altcha-checkbox-border-width: var(--altcha-border-width);\n --altcha-checkbox-outline: 2px solid var(--altcha-checkbox-outline-color);\n --altcha-checkbox-outline-color: -webkit-focus-ring-color;\n --altcha-checkbox-outline-offset: 2px;\n --altcha-checkbox-size: 22px;\n --altcha-checkbox-transition-duration: var(--altcha-transition-duration);\n --altcha-input-background-color: var(--altcha-color-base);\n --altcha-input-border-radius: 3px;\n --altcha-input-border-width: 1px;\n --altcha-input-color: var(--altcha-color-base-content);\n --altcha-max-width: 320px;\n --altcha-padding: 0.75rem;\n --altcha-popover-arrow-size: 6px;\n --altcha-popover-color: var(--altcha-border-color);\n --altcha-shadow: drop-shadow(3px 3px 6px oklch(0% 0 0 / 0.2));\n --altcha-spinner-color: var(--altcha-color-base-content);\n --altcha-switch-background-color: var(--altcha-color-neutral);\n --altcha-switch-border-radius: calc(infinity * 1px);\n --altcha-switch-height: var(--altcha-checkbox-size);\n --altcha-switch-padding: 0.25rem;\n --altcha-switch-width: calc(var(--altcha-checkbox-size) * 1.75);\n --altcha-switch-toggle-border-radius: 100%;\n --altcha-switch-toggle-color: var(--altcha-color-neutral-content);\n --altcha-switch-toggle-size: calc(\n \tvar(--altcha-switch-height) - calc(var(--altcha-switch-padding) * 2)\n );\n --altcha-transition-duration: 0.6s;\n --altcha-z-index: 99999999;\n --altcha-z-index-popover: 999999999;\n}\n\n@supports (-moz-appearance: none) {\n :root {\n --altcha-checkbox-outline-color: var(--altcha-color-primary);\n }\n}\n.altcha {\n all: revert-layer;\n display: none;\n font-family: inherit;\n font-size: inherit;\n position: relative;\n}\n.altcha[data-visible] {\n display: block;\n}\n.altcha-popover, .altcha-popover * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha a, .altcha-popover a {\n color: currentColor;\n text-decoration: none;\n}\n.altcha a:hover, .altcha-popover a:hover {\n color: currentColor;\n}\n.altcha-main {\n align-items: start;\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width, 1px) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius, 0);\n color: var(--altcha-color-base-content);\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n padding: var(--altcha-padding);\n max-width: var(--altcha-max-width, 100%);\n}\n.altcha-main > * {\n display: flex;\n width: 100%;\n}\n.altcha-main > *:first-child {\n flex-grow: 1;\n}\n.altcha-checkbox-wrap {\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n gap: 0.5rem;\n}\n.altcha-checkbox-wrap > * {\n display: flex;\n}\n.altcha-logo {\n opacity: 0.7;\n}\n.altcha-footer {\n align-items: center;\n display: flex;\n flex-grow: 1;\n gap: 0.5rem;\n justify-content: flex-end;\n font-size: 0.7rem;\n opacity: 0.7;\n}\n.altcha-footer p {\n margin: 0;\n padding: 0;\n}\n.altcha-error {\n font-size: 0.85rem;\n}\n.altcha-button {\n align-items: center;\n background: var(--altcha-color-primary);\n border: var(--altcha-input-border-width) solid var(--altcha-color-primary);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-color-primary-content);\n cursor: pointer;\n display: flex;\n font-size: 0.9rem;\n gap: 0.5rem;\n padding: 0.35rem;\n}\n.altcha-button:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-button > .altcha-spinner, .altcha-button > svg {\n height: 20px;\n width: 20px;\n}\n.altcha-button-secondary {\n background: transparent;\n border-color: var(--altcha-color-neutral);\n color: var(--altcha-color-neutral-content);\n}\n.altcha-input {\n background: var(--altcha-input-background-color);\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-input-color);\n flex-grow: 1;\n font-size: 1rem;\n min-width: 0;\n padding: 0.25rem;\n width: auto;\n}\n.altcha-input:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-spinner {\n animation: altcha-rotate 0.6s linear infinite;\n border-radius: 100%;\n border: var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);\n border-bottom-color: transparent;\n border-right-color: transparent;\n opacity: 0.7;\n}\n.altcha-popover {\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius);\n color: var(--altcha-color-base-content);\n filter: var(--altcha-shadow);\n position: absolute;\n left: calc(var(--altcha-padding) / 2);\n max-width: calc(var(--altcha-max-width) - var(--altcha-padding));\n top: calc(var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size));\n z-index: var(--altcha-z-index-popover);\n}\n.altcha-popover-arrow {\n border: var(--altcha-popover-arrow-size) solid transparent;\n border-bottom-color: var(--altcha-popover-color);\n content: "";\n height: 0;\n left: calc(var(--altcha-checkbox-size) / 2);\n position: absolute;\n top: calc(var(--altcha-popover-arrow-size) * -2);\n width: 0;\n}\n.altcha-popover-content {\n max-height: 100dvh;\n overflow: auto;\n padding: var(--altcha-padding);\n}\n.altcha-popover[data-top=true][data-display=standard] {\n bottom: calc(100% - (var(--altcha-padding) - var(--altcha-popover-arrow-size)));\n top: auto;\n}\n.altcha-popover[data-top=true][data-display=standard] .altcha-popover-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-popover-color);\n bottom: calc(var(--altcha-popover-arrow-size) * -2);\n top: auto;\n}\n.altcha-popover[data-variant=error] {\n --altcha-popover-color: var(--altcha-color-error);\n background-color: var(--altcha-color-error);\n border-color: var(--altcha-color-error);\n color: var(--altcha-color-error-content);\n}\n.altcha-popover[data-variant=error] .altcha-popover-content {\n padding: calc(var(--altcha-padding) / 1.5) var(--altcha-padding);\n}\n.altcha-popover[data-display=overlay] {\n animation: altcha-overlay-slidein 0.5s forwards;\n left: 50%;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] {\n animation: altcha-bottomsheet-slideup 0.5s forwards;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom: 0;\n bottom: -100%;\n left: 50%;\n position: fixed;\n top: auto;\n transform: translate(-50%, 0);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] .altcha-popover-content {\n padding-bottom: calc(var(--altcha-padding) * 2);\n}\n.altcha-popover-backdrop {\n background: var(--altcha-color-base-content);\n bottom: 0;\n left: 0;\n opacity: 0.1;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity 0.5s;\n z-index: var(--altcha-z-index);\n}\n.altcha-popover-close {\n color: var(--altcha-color-base-content);\n cursor: pointer;\n display: inline-block;\n font-size: 1rem;\n height: 1.25rem;\n line-height: 0.95;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1.25rem;\n z-index: var(--altcha-z-index);\n}\n[dir=rtl] .altcha-popover {\n left: auto;\n right: calc(var(--altcha-padding) / 2);\n}\n[dir=rtl] .altcha-popover-arrow {\n left: auto;\n right: calc(var(--altcha-checkbox-size) / 2);\n}\n[dir=rtl] .altcha-popover-close {\n left: 0;\n right: auto;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer, .altcha-popover[data-display=overlay] .altcha-footer {\n align-items: center;\n justify-content: center;\n padding-top: 1rem;\n gap: 0.5rem;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer svg, .altcha-popover[data-display=overlay] .altcha-footer svg {\n height: 18px;\n width: 18px;\n vertical-align: middle;\n}\n.altcha-code-challenge > form {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.altcha-code-challenge-title {\n font-weight: 600;\n}\n.altcha-code-challenge-text {\n font-size: 0.85rem;\n}\n.altcha-code-challenge-image {\n background: white;\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n object-fit: contain;\n height: 50px;\n}\n.altcha-code-challenge-row {\n display: flex;\n gap: 0.5rem;\n}\n.altcha-code-challenge-buttons {\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: var(--altcha-padding);\n justify-content: space-between;\n}\n.altcha-code-challenge-buttons button {\n justify-content: center;\n width: 100%;\n}\n.altcha-checkbox {\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input {\n appearance: none;\n background: var(--altcha-input-background-color);\n border: var(--altcha-checkbox-border-width, 2px) solid var(--altcha-checkbox-border-color);\n border-radius: var(--altcha-checkbox-border-radius);\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n left: 0;\n margin: 0;\n padding: 0;\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input:before {\n border-radius: var(--altcha-checkbox-border-radius);\n content: "";\n width: 100%;\n height: 100%;\n background: var(--altcha-color-neutral);\n display: block;\n transform: scale(0);\n}\n.altcha-checkbox input:checked {\n background-color: var(--altcha-color-success);\n border-color: var(--altcha-color-success);\n}\n.altcha-checkbox input:checked::before {\n background-color: var(--altcha-color-success);\n opacity: 0;\n transform: scale(2.2);\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox svg {\n --altcha-radio-svg-size: calc(var(--altcha-checkbox-size) * 0.5);\n --altcha-radio-svg-offset: calc(var(--altcha-checkbox-size) * 0.25);\n fill: none;\n left: var(--altcha-radio-svg-offset);\n height: var(--altcha-radio-svg-size);\n opacity: 0;\n position: absolute;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n top: var(--altcha-radio-svg-offset);\n transform: translate3d(0, 0, 0);\n width: var(--altcha-radio-svg-size);\n}\n.altcha-checkbox input:checked + svg {\n color: var(--altcha-color-success-content);\n opacity: 1;\n stroke-dashoffset: 0;\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox[data-loading=true] .altcha-checkbox-spinner {\n display: block;\n}\n.altcha-checkbox-native {\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native input {\n height: var(--altcha-checkbox-size);\n margin: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox-native[data-loading=true] .altcha-checkbox-native-spinner {\n display: block;\n}\n.altcha-switch {\n align-items: center;\n border-radius: var(--altcha-switch-border-radius);\n background-color: var(--altcha-switch-background-color);\n display: flex;\n height: var(--altcha-switch-height);\n padding: var(--altcha-switch-padding);\n position: relative;\n width: var(--altcha-switch-width);\n}\n.altcha-switch:focus-within {\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-switch input {\n appearance: none;\n cursor: pointer;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.altcha-switch-toggle {\n align-items: center;\n background-color: var(--altcha-switch-toggle-color);\n border-radius: var(--altcha-switch-toggle-border-radius);\n cursor: pointer;\n display: flex;\n height: var(--altcha-switch-toggle-size);\n justify-content: center;\n left: var(--altcha-switch-padding);\n position: absolute;\n transition: width 150ms ease-out, left 150ms ease-out;\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch-spinner {\n display: none;\n height: var(--altcha-switch-toggle-size);\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch[data-loading=true] {\n pointer-events: none;\n}\n.altcha-switch[data-loading=true] .altcha-switch-spinner {\n display: block;\n}\n.altcha-switch[data-loading=true] .altcha-switch-toggle {\n background-color: transparent;\n left: calc(50% - var(--altcha-switch-toggle-size) / 2);\n}\n[data-state=verified] .altcha-switch {\n --altcha-switch-background-color: var(--altcha-color-success);\n}\n[data-state=verified] .altcha-switch-toggle {\n background-color: var(--altcha-color-success-content);\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl] .altcha-switch-toggle {\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl][data-state=verified] .altcha-switch-toggle {\n left: var(--altcha-switch-padding);\n}\n.altcha-floating-arrow {\n border: 6px solid transparent;\n border-bottom-color: var(--altcha-border-color);\n content: "";\n height: 0;\n left: 12px;\n position: absolute;\n top: -12px;\n width: 0;\n}\n.altcha-overlay-backdrop {\n bottom: 0;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha-overlay-close {\n display: inline-block;\n color: currentColor;\n cursor: pointer;\n font-size: 1rem;\n height: 1rem;\n line-height: 0.85;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1rem;\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] {\n animation: altcha-overlay-slidein var(--altcha-transition-duration) forwards;\n filter: var(--altcha-shadow);\n left: 50%;\n opacity: 0;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating] {\n display: none;\n filter: var(--altcha-shadow);\n left: var(--altcha-floating-left, -100%);\n position: fixed;\n top: var(--altcha-floating-top, -100%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=floating] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating][data-floating-position=top] .altcha-floating-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-border-color);\n bottom: -12px;\n top: auto;\n}\n.altcha[data-display=floating][data-visible] {\n display: flex;\n}\n.altcha[data-display=bar] {\n bottom: -100%;\n filter: var(--altcha-shadow);\n left: 0;\n position: fixed;\n right: 0;\n transition: bottom var(--altcha-transition-duration), top var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=bar] .altcha-main {\n align-items: center;\n border-radius: 0;\n border-width: var(--altcha-border-width) 0 0 0;\n flex-direction: row;\n max-width: 100% !important;\n}\n.altcha[data-display=bar] .altcha-main > * {\n width: auto;\n}\n.altcha[data-display=bar][data-placement=top] {\n bottom: auto;\n top: -100%;\n}\n.altcha[data-display=bar][data-placement=top] .altcha-main {\n border-width: 0 0 var(--altcha-border-width) 0;\n}\n.altcha[data-display=bar][data-placement=bottom]:not([data-state=unverified]) {\n bottom: 0;\n}\n.altcha[data-display=bar][data-placement=top]:not([data-state=unverified]) {\n top: 0;\n}\n.altcha[data-display=invisible] {\n display: none;\n}\n\n@keyframes altcha-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes altcha-bottomsheet-slideup {\n 100% {\n bottom: 0;\n }\n}\n@keyframes altcha-overlay-slidein {\n 100% {\n opacity: 1;\n top: 50%;\n }\n}'), $altcha.algorithms.set("SHA-256", () => new Ka), $altcha.algorithms.set("SHA-384", () => new Ka), $altcha.algorithms.set("SHA-512", () => new Ka), $altcha.algorithms.set("PBKDF2/SHA-256", () => new Ba), $altcha.algorithms.set("PBKDF2/SHA-384", () => new Ba), $altcha.algorithms.set("PBKDF2/SHA-512", () => new Ba);
+})();
\ No newline at end of file
diff --git a/frontend/static/lib/altcha.min.js b/frontend/static/lib/altcha.min.js
new file mode 100644
index 00000000..c9cfa5bc
--- /dev/null
+++ b/frontend/static/lib/altcha.min.js
@@ -0,0 +1 @@
+const e=!1;var t=Array.isArray,n=Array.prototype.indexOf,r=Array.prototype.includes,a=Array.from,o=Object.keys,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,c=Object.prototype,u=Array.prototype,f=Object.getPrototypeOf,d=Object.isExtensible;const h=()=>{};function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const v=1<<24,g=16,m=32,b=64,y=512,w=1024,x=2048,k=4096,_=8192,$=16384,S=32768,C=1<<25,E=65536,T=1<<17,A=1<<19,I=65536,P=1<<21,O=1<<23,R=Symbol("$state"),L=Symbol("legacy props"),M=Symbol(""),D=Symbol("attributes"),U=Symbol("class"),V=Symbol("style"),N=Symbol("text"),z=Symbol("form reset"),j=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},B=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function F(e){return e===this.v}function H(e,t){return e!=e?t==t:e!==t||null!==e&&"object"==typeof e||"function"==typeof e}function K(e){return!H(e,this.v)}const q={},Y=Symbol("uninitialized"),G="http://www.w3.org/1999/xhtml";let W=null;function J(e){W=e}function Z(e,t=!1,n){W={p:W,i:!1,c:null,e:null,s:e,x:null,r:jt,l:null}}function X(e){var t=W,n=t.e;if(null!==n)for(var r of(t.e=null,n))gn(r);return void 0!==e&&(t.x=e),t.i=!0,W=t.p,e??{}}let Q=[];function ee(){var e=Q;Q=[],function(e){for(var t=0;t{t===Q&&ee()})}Q.push(e)}function ne(){for(;Q.length>0;)ee()}function re(e){console.warn("https://svelte.dev/e/hydration_mismatch")}let ae,oe=!1;function ie(e){oe=e}function le(e){if(null===e)throw re(),q;return ae=e}function se(){return le($e(ae))}function ce(e){if(oe){if(null!==$e(ae))throw re(),q;ae=e}}function ue(e=1){if(oe){for(var t=e,n=ae;t--;)n=$e(n);ae=n}}function fe(e=!0){for(var t=0,n=ae;;){if(8===n.nodeType){var r=n.data;if("]"===r){if(0===t)return n;t-=1}else("["===r||"[!"===r||"["===r[0]&&!isNaN(Number(r.slice(1))))&&(t+=1)}var a=$e(n);e&&n.remove(),n=a}}function de(e){if(!e||8!==e.nodeType)throw re(),q;return e.data}function he(e){if("object"!=typeof e||null===e||R in e)return e;const n=f(e);if(n!==c&&n!==u)return e;var r=new Map,a=t(e),o=St(0),i=Jt,s=e=>{if(Jt===i)return e();var t=Vt,n=Jt;zt(null),Zt(i);var r=e();return zt(t),Zt(n),r};return a&&r.set("length",St(e.length)),new Proxy(e,{defineProperty(e,t,n){"value"in n&&!1!==n.configurable&&!1!==n.enumerable&&!1!==n.writable||function(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}();var a=r.get(t);return void 0===a?s(()=>{var e=St(n.value);return r.set(t,e),e}):Et(a,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(void 0===n){if(t in e){const e=s(()=>St(Y));r.set(t,e),At(o)}}else Et(n,Y),At(o);return!0},get(t,n,a){if(n===R)return e;var o=r.get(n),i=n in t;if(void 0!==o||i&&!l(t,n)?.writable||(o=s(()=>St(he(i?t[n]:Y))),r.set(n,o)),void 0!==o){var c=ln(o);return c===Y?void 0:c}return Reflect.get(t,n,a)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&"value"in n){var a=r.get(t);a&&(n.value=ln(a))}else if(void 0===n){var o=r.get(t),i=o?.v;if(void 0!==o&&i!==Y)return{enumerable:!0,configurable:!0,value:i,writable:!0}}return n},has(e,t){if(t===R)return!0;var n=r.get(t),a=void 0!==n&&n.v!==Y||Reflect.has(e,t);if((void 0!==n||null!==jt&&(!a||l(e,t)?.writable))&&(void 0===n&&(n=s(()=>St(a?he(e[t]):Y)),r.set(t,n)),ln(n)===Y))return!1;return a},set(e,t,n,i){var c=r.get(t),u=t in e;if(a&&"length"===t)for(var f=n;fSt(Y)),r.set(f+"",d))}void 0===c?u&&!l(e,t)?.writable||(Et(c=s(()=>St(void 0)),he(n)),r.set(t,c)):(u=c.v!==Y,Et(c,s(()=>he(n))));var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(i,n),!u){if(a&&"string"==typeof t){var p=r.get("length"),v=Number(t);Number.isInteger(v)&&v>=p.v&&Et(p,v+1)}At(o)}return!0},ownKeys(e){ln(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return void 0===t||t.v!==Y});for(var[n,a]of r)a.v===Y||n in e||t.push(n);return t},setPrototypeOf(){!function(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}()}})}function pe(e){try{if(null!==e&&"object"==typeof e&&R in e)return e[R]}catch{}return e}function ve(e,t){return Object.is(pe(e),pe(t))}var ge,me,be,ye,we;function xe(){if(void 0===ge){ge=window,me=document,be=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;ye=l(t,"firstChild").get,we=l(t,"nextSibling").get,d(e)&&(e[U]=void 0,e[D]=null,e[V]=void 0,e.__e=void 0),d(n)&&(n[N]=void 0)}}function ke(e=""){return document.createTextNode(e)}function _e(e){return ye.call(e)}function $e(e){return we.call(e)}function Se(e,t){if(!oe)return _e(e);var n=_e(ae);if(null===n)n=ae.appendChild(ke());else if(t&&3!==n.nodeType){var r=ke();return n?.before(r),le(r),r}return t&&Ae(n),le(n),n}function Ce(e,t=!1){if(!oe){var n=_e(e);return n instanceof Comment&&""===n.data?$e(n):n}if(t){if(3!==ae?.nodeType){var r=ke();return ae?.before(r),le(r),r}Ae(ae)}return ae}function Ee(e,t=1,n=!1){let r=oe?ae:e;for(var a;t--;)a=r,r=$e(r);if(!oe)return r;if(n){if(3!==r?.nodeType){var o=ke();return null===r?a?.after(o):r.before(o),le(o),o}Ae(r)}return le(r),r}function Te(e,t,n){let r;return document.createElementNS(t??G,e,r)}function Ae(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;null!==t&&3===t.nodeType;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Ie(e){var t=jt;if(null===t)return Vt.f|=O,e;if(0===(t.f&S)&&!(4&t.f))throw e;Pe(e,t)}function Pe(e,t){for(;null!==t;){if(128&t.f){if(0===(t.f&S))throw e;try{return void t.b.error(e)}catch(t){e=t}}t=t.parent}throw e}const Oe=-7169;function Re(e,t){e.f=e.f&Oe|t}function Le(e){0!==(e.f&y)||null===e.deps?Re(e,w):Re(e,k)}function Me(e){if(null!==e)for(const t of e)2&t.f&&0!==(t.f&I)&&(t.f^=I,Me(t.deps))}function De(e,t,n){0!==(e.f&x)?t.add(e):0!==(e.f&k)&&n.add(e),Me(e.deps),Re(e,w)}function Ue(e,t,n){if(null==e)return t(void 0),h;const r=un(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const Ve=[];function Ne(e,t=h){let n=null;const r=new Set;function a(t){if(H(e,t)&&(e=t,n)){const t=!Ve.length;for(const t of r)t[1](),Ve.push(t,e);if(t){for(let e=0;e{r.delete(s),0===r.size&&n&&(n(),n=null)}}}}function ze(e){let t;return Ue(e,e=>t=e)(),t}let je=Symbol("unmounted");function Be(e,t,n){const r=n[t]??={store:null,source:Ct(void 0),unsubscribe:h};if(r.store!==e&&!(je in n))if(r.unsubscribe(),r.store=e??null,null==e)r.source.v=void 0,r.unsubscribe=h;else{var a=!0;r.unsubscribe=Ue(e,e=>{a?r.source.v=e:Et(r.source,e)}),a=!1}return e&&je in n?ze(e):ln(r.source)}let Fe=null,He=null,Ke=null,qe=null,Ye=null,Ge=null,We=!1,Je=!1,Ze=null,Xe=null;var Qe=0;let et=1;class tt{id=et++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;unblocked=new Set;#r=new Set;#a=new Set;#o=new Set;#i=0;#l=new Map;#s=null;#c=[];#u=[];#f=new Set;#d=new Set;#h=new Map;#p=new Set;is_fork=!1;#v=!1;#g(){if(this.is_fork)return!0;for(const n of this.#l.keys()){for(var e=n,t=!1;null!==e.parent;){if(this.#h.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#h.has(e)||this.#h.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#h.get(e);if(n){for(var r of(this.#h.delete(e),n.d))Re(r,x),t(r);for(r of n.m)Re(r,k),t(r)}this.#p.add(e)}#m(){if(this.#e=!0,Qe++>1e3&&(this.#b(),function(){try{!function(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}()}catch(e){Pe(e,Ge)}}()),!this.#g()){for(const e of this.#f)this.#d.delete(e),Re(e,x),this.schedule(e);for(const e of this.#d)Re(e,k),this.schedule(e)}const e=this.#c;this.#c=[],this.apply();var t=Ze=[],n=[],r=Xe=[];for(const r of e)try{this.#y(r,t,n)}catch(e){throw ct(r),e}if(Ke=null,r.length>0){var a=tt.ensure();for(const e of r)a.schedule(e)}if(Ze=null,Xe=null,this.#g()){this.#w(n),this.#w(t);for(const[e,t]of this.#h)st(e,t);return void(r.length>0&&Ke.#m())}const o=this.#x();if(o)o.#k(this);else{this.#f.clear(),this.#d.clear();for(const e of this.#r)e(this);this.#r.clear(),qe=this,at(n),at(t),qe=null,this.#s?.resolve();var i=Ke;if(this.linked&&0===this.#i&&this.#b(),this.#c.length>0){null===i&&(i=this,this.#_());const e=i;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}null!==i&&i.#m()}}#y(e,t,n){e.f^=w;for(var r=e.first;null!==r;){var a=r.f,o=!!(96&a);if(!(o&&0!==(a&w)||0!==(a&_)||this.#h.has(r))&&null!==r.fn){o?r.f^=w:4&a?t.push(r):Qt(r)&&(0!==(a&g)&&this.#d.add(r),an(r));var i=r.first;if(null!==i){r=i;continue}}for(;null!==r;){var l=r.next;if(null!==l){r=l;break}r=r.parent}}}#x(){for(var e=this.#t;null!==e;){if(!e.is_fork)for(const[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e;e=e.#t}return null}#k(e){for(const[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(const[t,n]of e.async_deriveds){const e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve)}const t=e=>{var n=e.reactions;if(null!==n)for(const e of n){var r=e.f;if(2&r)t(e);else{var a=e;4194320&r&&!this.async_deriveds.has(a)&&(this.#d.delete(a),Re(a,x),this.schedule(a))}}};for(const e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#b(),Ke=this,this.#m()}#w(e){for(var t=0;t!this.current.has(e));if(0===r.length)e&&c.discard();else if(t.length>0){if(e)for(const e of this.#p)c.unskip_effect(e,e=>{4194320&e.f?c.schedule(e):c.#w([e])});c.activate();var a=new Set,o=new Map;for(var i of t)ot(i,r,a,o);o=new Map;var l=[...c.current.keys()].filter(e=>!this.current.has(e)||this.current.get(e)[0]!==e.v);if(l.length>0)for(const e of this.#u)155648&e.f||!it(e,l,o)||(4194320&e.f?(Re(e,x),c.schedule(e)):c.#f.add(e));if(c.#c.length>0){for(var s of(c.apply(),c.#c))c.#y(s,[],[]);c.#c=[]}c.deactivate()}}}}increment(e,t){if(this.#i+=1,e){let e=this.#l.get(t)??0;this.#l.set(t,e+1)}}decrement(e,t){if(this.#i-=1,e){let e=this.#l.get(t)??0;1===e?this.#l.delete(t):this.#l.set(t,e-1)}this.#v||(this.#v=!0,te(()=>{this.#v=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(const t of e)this.#f.add(t);for(const e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#a.add(e)}on_fork_commit(e){this.#o.add(e)}run_fork_commit_callbacks(){for(const e of this.#o)e(this);this.#o.clear()}settled(){return(this.#s??=p()).promise}static ensure(){if(null===Ke){const e=Ke=new tt;e.#_(),Je||We||te(()=>{e.#e||e.flush()})}return Ke}apply(){Ye=null}schedule(e){if(Ge=e,e.b?.is_pending&&16777228&e.f&&0===(e.f&S))e.b.defer_effect(e);else{for(var t=e;null!==t.parent;){var n=(t=t.parent).f;if(!(null===Ze||t!==jt||null!==Vt&&2&Vt.f))return;if(96&n){if(0===(n&w))return;t.f^=w}}this.#c.push(t)}}#_(){null===He?Fe=He=this:(He.#n=this,this.#t=He),He=this}#b(){var e=this.#t,t=this.#n;null===e?Fe=t:e.#n=t,null===t?He=e:t.#t=e,this.linked=!1}}function nt(e){var t=We;We=!0;try{for(;;){if(ne(),null===Ke)return;Ke.flush()}}finally{We=t}}let rt=null;function at(e){var t=e.length;if(0!==t){for(var n=0;n0)){kt.clear();for(const e of rt){if(24576&e.f)continue;const t=[e];let n=e.parent;for(;null!==n;)rt.has(n)&&(rt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){const n=t[e];24576&n.f||an(n)}}rt.clear()}}rt=null}}function ot(e,t,n,r){if(!n.has(e)&&(n.add(e),null!==e.reactions))for(const a of e.reactions){const e=a.f;2&e?ot(a,t,n,r):4194320&e&&0===(e&x)&&it(a,t,r)&&(Re(a,x),lt(a))}}function it(e,t,n){const a=n.get(e);if(void 0!==a)return a;if(null!==e.deps)for(const a of e.deps){if(r.call(t,a))return!0;if(2&a.f&&it(a,t,n))return n.set(a,!0),!0}return n.set(e,!1),!1}function lt(e){Ke.schedule(e)}function st(e,t){if(0===(e.f&m)||0===(e.f&w)){0!==(e.f&x)?t.d.push(e):0!==(e.f&k)&&t.m.push(e),Re(e,w);for(var n=e.first;null!==n;)st(n,t),n=n.next}}function ct(e){Re(e,w);for(var t=e.first;null!==t;)ct(t),t=t.next}class ut{parent;is_pending=!1;transform_error;#S;#C=oe?ae:null;#E;#T;#A;#I=null;#P=null;#O=null;#R=null;#L=0;#M=0;#D=!1;#f=new Set;#d=new Set;#U=null;#V=function(e){let t,n=0,r=$t(0);return()=>{hn()&&(ln(r),bn(()=>(0===n&&(t=un(()=>e(()=>At(r)))),n+=1,()=>{te(()=>{n-=1,0===n&&(t?.(),t=void 0,At(r))})})))}}(()=>(this.#U=$t(this.#L),()=>{this.#U=null}));constructor(e,t,n,r){this.#S=e,this.#E=t,this.#T=e=>{var t=jt;t.b=this,t.f|=128,n(e)},this.parent=jt.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#A=wn(()=>{if(oe){const e=this.#C;se();const t="[!"===e.data;if(e.data.startsWith("[?")){const t=JSON.parse(e.data.slice(2));this.#N(t)}else t?this.#z():this.#j()}else this.#B()},589824),oe&&(this.#S=ae)}#j(){try{this.#I=kn(()=>this.#T(this.#S))}catch(e){this.error(e)}}#N(e){const t=this.#E.failed;t&&(this.#O=kn(()=>{t(this.#S,()=>e,()=>()=>{})}))}#z(){const e=this.#E.pending;e&&(this.is_pending=!0,this.#P=kn(()=>e(this.#S)),te(()=>{var e=this.#R=document.createDocumentFragment(),t=ke();e.append(t),this.#I=this.#F(()=>kn(()=>this.#T(t))),0===this.#M&&(this.#S.before(e),this.#R=null,Tn(this.#P,()=>{this.#P=null}),this.#H(Ke))}))}#B(){try{if(this.is_pending=this.has_pending_snippet(),this.#M=0,this.#L=0,this.#I=kn(()=>{this.#T(this.#S)}),this.#M>0){var e=this.#R=document.createDocumentFragment();On(this.#I,e);const t=this.#E.pending;this.#P=kn(()=>t(this.#S))}else this.#H(Ke)}catch(e){this.error(e)}}#H(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#d)}defer_effect(e){De(e,this.#f,this.#d)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#E.pending}#F(e){var t=jt,n=Vt,r=W;Bt(this.#A),zt(this.#A),J(this.#A.ctx);try{return tt.ensure(),e()}catch(e){return Ie(e),null}finally{Bt(t),zt(n),J(r)}}#K(e,t){this.has_pending_snippet()?(this.#M+=e,0===this.#M&&(this.#H(t),this.#P&&Tn(this.#P,()=>{this.#P=null}),this.#R&&(this.#S.before(this.#R),this.#R=null))):this.parent&&this.parent.#K(e,t)}update_pending_count(e,t){this.#K(e,t),this.#L+=e,this.#U&&!this.#D&&(this.#D=!0,te(()=>{this.#D=!1,this.#U&&Tt(this.#U,this.#L)}))}get_effect_pending(){return this.#V(),ln(this.#U)}error(e){if(!this.#E.onerror&&!this.#E.failed)throw e;Ke?.is_fork?(this.#I&&Ke.skip_effect(this.#I),this.#P&&Ke.skip_effect(this.#P),this.#O&&Ke.skip_effect(this.#O),Ke.on_fork_commit(()=>{this.#q(e)})):this.#q(e)}#q(e){this.#I&&(Sn(this.#I),this.#I=null),this.#P&&(Sn(this.#P),this.#P=null),this.#O&&(Sn(this.#O),this.#O=null),oe&&(le(this.#C),ue(),le(fe()));var t=this.#E.onerror;let n=this.#E.failed;var r=!1,a=!1;const o=()=>{r?console.warn("https://svelte.dev/e/svelte_boundary_reset_noop"):(r=!0,a&&function(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}(),null!==this.#O&&Tn(this.#O,()=>{this.#O=null}),this.#F(()=>{this.#B()}))},i=e=>{try{a=!0,t?.(e,o),a=!1}catch(e){Pe(e,this.#A&&this.#A.parent)}n&&(this.#O=this.#F(()=>{try{return kn(()=>{var t=jt;t.b=this,t.f|=128,n(this.#S,()=>e,()=>o)})}catch(e){return Pe(e,this.#A.parent),null}}))};te(()=>{var t;try{t=this.transform_error(e)}catch(e){return void Pe(e,this.#A&&this.#A.parent)}null!==t&&"object"==typeof t&&"function"==typeof t.then?t.then(i,e=>Pe(e,this.#A&&this.#A.parent)):i(t)})}}function ft(e,t,n,r){const a=pt;var o=e.filter(e=>!e.settled);if(0!==n.length||0!==o.length){var i,l,s,c,u=jt,f=(i=jt,l=Vt,s=W,c=Ke,function(e=!0){Bt(i),zt(l),J(s),e&&0===(i.f&$)&&(c?.activate(),c?.apply())}),d=1===o.length?o[0].promise:o.length>1?Promise.all(o.map(e=>e.promise)):null,h=ht();0!==n.length?d?d.then(()=>{f(),v(),dt()}):v():d.then(()=>p(t.map(a))).finally(h)}else r(t.map(a));function p(e){if(0===(u.f&$)){f();try{r(e)}catch(e){Pe(e,u)}dt()}}function v(){Promise.all(n.map(e=>gt(e))).then(e=>p([...t.map(a),...e])).catch(e=>Pe(e,u)).finally(h)}}function dt(e=!0){Bt(null),zt(null),J(null),e&&Ke?.deactivate()}function ht(){var e=jt,t=e.b,n=Ke,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),()=>{t.update_pending_count(-1,n),n.decrement(r,e)}}function pt(e){null!==jt&&(jt.f|=A);return{ctx:W,deps:null,effects:null,equals:F,f:2050,fn:e,reactions:null,rv:0,v:Y,wv:0,parent:jt,ac:null}}const vt=Symbol("obsolete");function gt(e,t,n){let r=jt;null===r&&function(){throw new Error("https://svelte.dev/e/async_derived_orphan")}();var a=void 0,o=$t(Y),i=!Vt,l=new Set;return function(e){dn(4718592,e)}(()=>{var t=jt,n=p();a=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==j&&n.reject(e)}).finally(dt)}catch(e){n.reject(e),dt()}var s=Ke;if(i){if(0!==(t.f&S))var c=ht();if(r.b.is_rendered())s.async_deriveds.get(t)?.reject(vt);else for(const e of l.values())e.reject(vt);l.add(n),s.async_deriveds.set(t,n)}const u=(e,t=void 0)=>{c?.(),l.delete(n),t!==vt&&(s.activate(),t?(o.f|=O,Tt(o,t)):(0!==(o.f&O)&&(o.f^=O),Tt(o,e)),s.deactivate())};n.promise.then(u,e=>u(null,e||"unknown"))}),pn(()=>{for(const e of l)e.reject(vt)}),new Promise(e=>{!function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}(a)})}function mt(e){const t=pt(e);return Ht(t),t}function bt(e){var t,n=jt,r=e.parent;if(!Dt&&null!==r&&e.v!==Y&&24576&r.f)return console.warn("https://svelte.dev/e/derived_inert"),e.v;Bt(r);try{e.f&=-65537,function(e){var t=e.effects;if(null!==t){e.effects=null;for(var n=0;n0&&!_t&&function(){_t=!1;for(const e of xt){let t;0!==(e.f&w)&&Re(e,k);try{t=Qt(e)}catch{t=!0}t&&an(e)}xt.clear()}()}return t}function At(e){Et(e,e.v+1)}function It(e,t,n){var r=e.reactions;if(null!==r)for(var a=r.length,o=0;o{document.activeElement===t&&e.focus()})}}let Ot=!1;function Rt(){Ot||(Ot=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t[z]?.()})},{capture:!0}))}function Lt(e){var t=Vt,n=jt;zt(null),Bt(null);try{return e()}finally{zt(t),Bt(n)}}let Mt=!1,Dt=!1;function Ut(e){Dt=e}let Vt=null,Nt=!1;function zt(e){Vt=e}let jt=null;function Bt(e){jt=e}let Ft=null;function Ht(e){null!==Vt&&(null===Ft?Ft=[e]:Ft.push(e))}let Kt=null,qt=0,Yt=null;let Gt=1,Wt=0,Jt=Wt;function Zt(e){Jt=e}function Xt(){return++Gt}function Qt(e){var t=e.f;if(0!==(t&x))return!0;if(2&t&&(e.f&=-65537),0!==(t&k)){for(var n=e.deps,r=n.length,a=0;ae.wv)return!0}0!==(t&y)&&null===Ye&&Re(e,w)}return!1}function en(e,t,n=!0){var a=e.reactions;if(null!==a&&(null===Ft||!r.call(Ft,e)))for(var o=0;o{e.ac.abort(j)}),e.ac=null);try{e.f|=P;var u=(0,e.fn)();e.f|=S;var f=e.deps,d=Ke?.is_fork;if(null!==Kt){var h;if(d||rn(e,qt),null!==f&&qt>0)for(f.length=qt+Kt.length,h=0;h{dn(8,()=>e(...t.map(ln)))})}function wn(e,t=0){return dn(g|t,e)}function xn(e,t=0){return dn(v|t,e)}function kn(e){return dn(524320,e)}function _n(e){var t=e.teardown;if(null!==t){const e=Dt,n=Vt;Ut(!0),zt(null);try{t.call(null)}finally{Ut(e),zt(n)}}}function $n(e,t=!1){var n=e.first;for(e.first=e.last=null;null!==n;){const e=n.ac;null!==e&&Lt(()=>{e.abort(j)});var r=n.next;0!==(n.f&b)?n.parent=null:Sn(n,t),n=r}}function Sn(e,t=!0){var n=!1;(t||262144&e.f)&&null!==e.nodes&&null!==e.nodes.end&&(Cn(e.nodes.start,e.nodes.end),n=!0),Re(e,C),$n(e,t&&!n),rn(e,0);var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)e.stop();_n(e),e.f^=C,e.f|=$;var a=e.parent;null!==a&&null!==a.first&&En(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Cn(e,t){for(;null!==e;){var n=e===t?null:$e(e);e.remove(),e=n}}function En(e){var t=e.parent,n=e.prev,r=e.next;null!==n&&(n.next=r),null!==r&&(r.prev=n),null!==t&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Tn(e,t,n=!0){var r=[];An(e,r,!0);var a=()=>{n&&Sn(e),t&&t()},o=r.length;if(o>0){var i=()=>--o||a();for(var l of r)l.out(i)}else a()}function An(e,t,n){if(0===(e.f&_)){e.f^=_;var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)(e.is_global||n)&&t.push(e);for(var a=e.first;null!==a;){var o=a.next;if(0===(a.f&b))An(a,t,!!(0!==(a.f&E)||0!==(a.f&m)&&0!==(e.f&g))&&n);a=o}}}function In(e){Pn(e,!0)}function Pn(e,t){if(0!==(e.f&_)){e.f^=_,0===(e.f&w)&&(Re(e,x),tt.ensure().schedule(e));for(var n=e.first;null!==n;){var r=n.next;Pn(n,!!(0!==(n.f&E)||0!==(n.f&m))&&t),n=r}var a=e.nodes&&e.nodes.t;if(null!==a)for(const e of a)(e.is_global||t)&&e.in()}}function On(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;null!==n;){var a=n===r?null:$e(n);t.append(n),n=a}}function Rn(e){const t={get:e=>ze(t.store)[e],set:(e,n)=>{"string"==typeof e?Object.assign(ze(t.store),{[e]:n}):Object.assign(ze(t.store),e),t.store.set(ze(t.store))},store:Ne(e)};return t}globalThis.$altcha=globalThis.$altcha||{algorithms:new Map,defaults:Rn({}),i18n:Rn({}),instances:new Set,plugins:new Set};const Ln={ariaLinkLabel:"Altcha (official website)",cancel:"Cancel",enterCode:"Enter code",enterCodeAria:"Enter code you hear. Press Space to play audio.",enterCodeFromImage:"To proceed, please enter the code from the image below.",error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:'Protected by ALTCHA',getAudioChallenge:"Get an audio challenge",label:"I'm not a robot",loading:"Loading...",reload:"Reload",verify:"Verify",verificationRequired:"Verification required!",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait."};"$altcha"in globalThis&&globalThis.$altcha.i18n.set("en",Ln);"undefined"!=typeof window&&((window.__svelte??={}).v??=new Set).add("5");const Mn=Symbol("events"),Dn=new Set,Un=new Set;function Vn(e,t,n,r={}){function a(e){if(r.capture||Fn.call(t,e),!e.cancelBubble)return Lt(()=>n?.call(this,e))}return e.startsWith("pointer")||e.startsWith("touch")||"wheel"===e?te(()=>{t.addEventListener(e,a,r)}):t.addEventListener(e,a,r),a}function Nn(e,t,n,r,a){var o={capture:r,passive:a},i=Vn(e,t,n,o);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&pn(()=>{t.removeEventListener(e,i,o)})}function zn(e,t,n){(t[Mn]??={})[e]=n}function jn(e){for(var t=0;to||n});var f=Vt,d=jt;zt(null),Bt(null);try{for(var h,p=[];null!==o;){var v=o.assignedSlot||o.parentNode||o.host||null;try{var g=o[Mn]?.[r];null==g||o.disabled&&e.target!==o||g.call(o,e)}catch(e){h?p.push(e):h=e}if(e.cancelBubble||v===t||null===v)break;o=v}if(h){for(let e of p)queueMicrotask(()=>{throw e});throw h}}finally{e[Mn]=t,delete e.currentTarget,zt(f),Bt(d)}}}const Hn=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Kn(e){var t=Te("template");return t.innerHTML=function(e){return Hn?.createHTML(e)??e}(e.replaceAll("","\x3c!----\x3e")),t.content}function qn(e,t){var n=jt;null===n.nodes&&(n.nodes={start:e,end:t,a:null,t:null})}function Yn(e,t){var n,r=!!(1&t),a=!!(2&t),o=!e.startsWith("");return()=>{if(oe)return qn(ae,null),ae;void 0===n&&(n=Kn(o?e:""+e),r||(n=_e(n)));var t=a||be?document.importNode(n,!0):n.cloneNode(!0);r?qn(_e(t),t.lastChild):qn(t,t);return t}}function Gn(e,t,n="svg"){var r,a=`<${n}>${!e.startsWith("")?e:""+e}${n}>`;return()=>{if(oe)return qn(ae,null),ae;if(!r){var e=Kn(a);r=_e(_e(e))}var t=r.cloneNode(!0);return qn(t,t),t}}function Wn(e,t){return Gn(e,0,"svg")}function Jn(e=""){if(!oe){var t=ke(e+"");return qn(t,t),t}var n=ae;return 3!==n.nodeType?(n.before(n=ke()),le(n)):Ae(n),qn(n,n),n}function Zn(){if(oe)return qn(ae,null),ae;var e=document.createDocumentFragment(),t=document.createComment(""),n=ke();return e.append(t,n),qn(t,n),e}function Xn(e,t){if(oe){var n=jt;return 0!==(n.f&S)&&null!==n.nodes.end||(n.nodes.end=ae),void se()}null!==e&&e.before(t)}function Qn(e){return e.endsWith("capture")&&"gotpointercapture"!==e&&"lostpointercapture"!==e}const er=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function tr(e){return er.includes(e)}const nr={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function rr(e){return e=e.toLowerCase(),nr[e]??e}const ar=["touchstart","touchmove"];function or(e){return ar.includes(e)}function ir(e,t){var n=null==t?"":"object"==typeof t?`${t}`:t;n!==(e[N]??=e.nodeValue)&&(e[N]=n,e.nodeValue=`${n}`)}function lr(e,t){return ur(e,t)}function sr(e,t){xe(),t.intro=t.intro??!1;const n=t.target,r=oe,a=ae;try{for(var o=_e(n);o&&(8!==o.nodeType||"["!==o.data);)o=$e(o);if(!o)throw q;ie(!0),le(o);const r=ur(e,{...t,anchor:o});return ie(!1),r}catch(r){if(r instanceof Error&&r.message.split("\n").some(e=>e.startsWith("https://svelte.dev/e/")))throw r;return r!==q&&console.warn("Failed to hydrate: ",r),!1===t.recover&&function(){throw new Error("https://svelte.dev/e/hydration_failed")}(),xe(),n.textContent="",ie(!1),lr(e,t)}finally{ie(r),le(a)}}const cr=new Map;function ur(e,{target:t,anchor:n,props:r={},events:o,context:i,intro:l=!0,transformError:s}){xe();var c=void 0,u=function(e){tt.ensure();const t=dn(524352,e);return(e={})=>new Promise(n=>{e.outro?Tn(t,()=>{Sn(t),n(void 0)}):(Sn(t),n(void 0))})}(()=>{var l=n??t.appendChild(ke());!function(e,t,n,r){new ut(e,t,n,r)}(l,{pending:()=>{}},t=>{if(Z({}),i&&(W.c=i),o&&(r.$$events=o),oe&&qn(t,null),c=e(t,r)||{},oe&&(jt.nodes.end=ae,null===ae||8!==ae.nodeType||"]"!==ae.data))throw re(),q;X()},s);var u=new Set,f=e=>{for(var n=0;n{for(var e of u)for(const n of[t,document]){var r=cr.get(n),a=r.get(e);0==--a?(n.removeEventListener(e,Fn),r.delete(e),0===r.size&&cr.delete(n)):r.set(e,a)}Un.delete(f),l!==n&&l.parentNode?.removeChild(l)}});return fr.set(c,u),c}let fr=new WeakMap;class dr{anchor;#Y=new Map;#G=new Map;#W=new Map;#J=new Set;#Z=!0;constructor(e,t=!0){this.anchor=e,this.#Z=t}#$=e=>{if(this.#Y.has(e)){var t=this.#Y.get(e),n=this.#G.get(t);if(n)In(n),this.#J.delete(t);else{var r=this.#W.get(t);r&&(this.#G.set(t,r.effect),this.#W.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(const[t,n]of this.#Y){if(this.#Y.delete(t),t===e)break;const r=this.#W.get(n);r&&(Sn(r.effect),this.#W.delete(n))}for(const[e,r]of this.#G){if(e===t||this.#J.has(e))continue;const a=()=>{if(Array.from(this.#Y.values()).includes(e)){var t=document.createDocumentFragment();On(r,t),t.append(ke()),this.#W.set(e,{effect:r,fragment:t})}else Sn(r);this.#J.delete(e),this.#G.delete(e)};this.#Z||!n?(this.#J.add(e),Tn(r,a,!1)):a()}}};#X=e=>{this.#Y.delete(e);const t=Array.from(this.#Y.values());for(const[e,n]of this.#W)t.includes(e)||(Sn(n.effect),this.#W.delete(e))};ensure(e,t){var n=Ke;!t||this.#G.has(e)||this.#W.has(e)||this.#G.set(e,kn(()=>t(this.anchor)));this.#Y.set(n,e),oe&&(this.anchor=ae),this.#$(n)}}function hr(e){null===W&&function(){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}(),vn(()=>{const t=un(e);if("function"==typeof t)return t})}function pr(e,t,n=!1){var r;oe&&(r=ae,se());var a=new dr(e);function o(e,t){if(oe){var n=de(r);if(e!==parseInt(n.substring(1))){var o=fe();return le(o),a.anchor=o,ie(!1),a.ensure(e,t),void ie(!0)}}a.ensure(e,t)}wn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},n?E:0)}const vr=Symbol("NaN");function gr(e,t,n=!1,r=!1,a=!1,o=!1){var i=e,l="";if(n){var s=e;oe&&(i=le(_e(s)))}yn(()=>{var e=jt;if(l!==(l=t()??"")){if(n&&!oe)return e.nodes=null,s.innerHTML=l,void(""!==l&&qn(_e(s),s.lastChild));if(null!==e.nodes&&(Cn(e.nodes.start,e.nodes.end),e.nodes=null),""!==l){if(oe){ae.data;for(var o=se(),c=o;null!==o&&(8!==o.nodeType||""!==o.data);)c=o,o=$e(o);if(null===o)throw re(),q;return qn(ae,c),void(i=le(o))}var u=Te(r?"svg":a?"math":"template",r?"http://www.w3.org/2000/svg":a?"http://www.w3.org/1998/Math/MathML":void 0);u.innerHTML=l;var f=r||a?u:u.content;if(qn(_e(f),f.lastChild),r||a)for(;_e(f);)i.before(_e(f));else i.before(f)}}else oe&&se()})}function mr(e,t){var n,r=void 0;xn(()=>{r!==(r=t())&&(n&&(Sn(n),n=null),r&&(n=kn(()=>{mn(()=>r(e))})))})}function br(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t=0;){var l=i+o;0!==i&&!wr.includes(r[i-1])||l!==r.length&&!wr.includes(r[l])?i=l:r=(0===i?"":r.substring(0,i))+r.substring(l+1)}return""===r?null:r}(n,0,o);oe&&l===e.getAttribute("class")||(null==l?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l)),e[U]=n}else if(o&&a!==o)for(var s in o){var c=!!o[s];null!=a&&c===!!a[s]||e.classList.toggle(s,c)}return o}function $r(e,t={},n,r){for(var a in n){var o=n[a];t[a]!==o&&(null==n[a]?e.style.removeProperty(a):e.style.setProperty(a,o,r))}}function Sr(e,t,n,r){var a=e[V];if(oe||a!==t){var o=function(e,t){if(t){var n,r,a="";if(Array.isArray(t)?(n=t[0],r=t[1]):n=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var o=!1,i=0,l=!1,s=[];n&&s.push(...Object.keys(n).map(kr)),r&&s.push(...Object.keys(r).map(kr));var c=0,u=-1;const t=e.length;for(var f=0;f{if(!t){if(t=!0,e.hasAttribute("value")){var n=e.value;Nr(e,"value",null),e.value=n}if(e.hasAttribute("checked")){var r=e.checked;Nr(e,"checked",null),e.checked=r}}};e[z]=n,te(n),Rt()}}function Vr(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Nr(e,t,n,r){var a=jr(e);oe&&(a[t]=e.getAttribute(t),"src"===t||"srcset"===t||"href"===t&&e.nodeName===Or)||a[t]!==(a[t]=n)&&("loading"===t&&(e[M]=n),null==n?e.removeAttribute(t):"string"!=typeof n&&Fr(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function zr(e,t,n=[],r=[],a=[],o,i=!1,l=!1){ft(a,n,r,n=>{var r=void 0,a={},o=e.nodeName===Mr,s=!1;if(xn(()=>{var c=t(...n.map(ln)),u=function(e,t,n,r,a=!1){if(oe&&a&&e.nodeName===Rr){var o=e;("checkbox"===o.type?"defaultChecked":"defaultValue")in n||Ur(o)}var i=jr(e),l=i[Ir],s=!i[Pr];let c=oe&&l;c&&ie(!1);var u=t||{},f=e.nodeName===Lr;for(var d in t)d in n||(n[d]=null);n.class?n.class=yr(n.class):n[Tr]&&(n.class=null),n[Ar]&&(n.style??=null);var h=Fr(e);for(const r in n){let a=n[r];if(f&&"value"===r&&null==a)e.value=e.__value="",u[r]=a;else if("class"!==r)if("style"!==r){var p=u[r];if(a!==p||void 0===a&&e.hasAttribute(r)){u[r]=a;var v=r[0]+r[1];if("$$"!==v)if("on"===v){const t={},n="$$"+r;let o=r.slice(2);var g=tr(o);if(Qn(o)&&(o=o.slice(0,-7),t.capture=!0),!g&&p){if(null!=a)continue;e.removeEventListener(o,u[n],t),u[n]=null}if(g)zn(o,e,a),jn([o]);else if(null!=a){let a=function(e){u[r].call(this,e)};u[n]=Vn(o,e,a,t)}}else if("style"===r)Nr(e,r,a);else if("autofocus"===r)Pt(e,Boolean(a));else if(l||"__value"!==r&&("value"!==r||null==a))if("selected"===r&&f)Vr(e,a);else{var m=r;s||(m=rr(m));var b="defaultValue"===m||"defaultChecked"===m;if(null!=a||l||b)b||h.includes(m)&&(l||"string"!=typeof a)?(e[m]=a,m in i&&(i[m]=Y)):"function"!=typeof a&&Nr(e,m,a);else if(i[r]=null,"value"===m||"checked"===m){let n=e;const r=void 0===t;if("value"===m){let e=n.defaultValue;n.removeAttribute(m),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(m),n.defaultChecked=e,n.checked=!!r&&e}}else e.removeAttribute(r)}else e.value=e.__value=a}}else Sr(e,a,t?.[Ar],n[Ar]),u[r]=a,u[Ar]=n[Ar];else _r(e,"http://www.w3.org/1999/xhtml"===e.namespaceURI,a,0,t?.[Tr],n[Tr]),u[r]=a,u[Tr]=n[Tr]}return c&&ie(!0),u}(e,r,c,0,i,l);s&&o&&"value"in c&&Cr(e,c.value);for(let e of Object.getOwnPropertySymbols(a))c[e]||Sn(a[e]);for(let t of Object.getOwnPropertySymbols(c)){var f=c[t];"@attach"!==t.description||r&&f===r[t]||(a[t]&&Sn(a[t]),a[t]=kn(()=>mr(e,()=>f))),u[t]=f}r=u}),o){var c=e;mn(()=>{Cr(c,r.value,!0),function(e){var t=new MutationObserver(()=>{Cr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),pn(()=>{t.disconnect()})}(c)})}s=!0})}function jr(e){return e[D]??={[Ir]:e.nodeName.includes("-"),[Pr]:e.namespaceURI===G}}var Br=new Map;function Fr(e){var t,n=e.getAttribute("is")||e.nodeName,r=Br.get(n);if(r)return r;Br.set(n,r=[]);for(var a=e,o=Element.prototype;o!==a;){for(var i in t=s(a))t[i].set&&"innerHTML"!==i&&"textContent"!==i&&"innerText"!==i&&r.push(i);a=f(a)}return r}function Hr(e,t,n=t){var r=new WeakSet;!function(e,t,n,r=n){e.addEventListener(t,()=>Lt(n));const a=e[z];e[z]=a?()=>{a(),r(!0)}:()=>r(!0),Rt()}(e,"input",async a=>{var o=a?e.defaultValue:e.value;if(o=Kr(e)?qr(o):o,n(o),null!==Ke&&r.add(Ke),await on(),o!==(o=t())){var i=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=o??"",null!==l){var c=e.value.length;i===l&&l===s&&c>s?(e.selectionStart=c,e.selectionEnd=c):(e.selectionStart=i,e.selectionEnd=Math.min(l,c))}}}),(oe&&e.defaultValue!==e.value||null==un(t)&&e.value)&&(n(Kr(e)?qr(e.value):e.value),null!==Ke&&r.add(Ke)),bn(()=>{var n=t();if(e===document.activeElement){var a=Ke;if(r.has(a))return}Kr(e)&&n===qr(e.value)||("date"!==e.type||n||e.value)&&n!==e.value&&(e.value=n??"")})}function Kr(e){var t=e.type;return"number"===t||"range"===t}function qr(e){return""===e?null:+e}function Yr(e,t){return e===t||e?.[R]===t}function Gr(e={},t,n,r){var a=W.r,o=jt;return mn(()=>{var r,i;return bn(()=>{r=i,i=[],un(()=>{Yr(n(...i),e)||(t(e,...i),r&&Yr(n(...r),e)&&t(null,...r))})}),()=>{let r=o;for(;r!==a&&null!==r.parent&&r.parent.f&C;)r=r.parent;const l=r.teardown;r.teardown=()=>{i&&Yr(n(...i),e)&&t(null,...i),l?.()}}}),e}const Wr={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set:(e,t)=>!1,getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t))return t in e.props?{enumerable:!0,configurable:!0,value:e.props[t]}:void 0},has:(e,t)=>!e.exclude.includes(t)&&t in e.props,ownKeys:e=>Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))};function Jr(e,t,n){return new Proxy({props:e,exclude:t},Wr)}function Zr(e,t,n,r){var a,o=r,i=!0,l=()=>(i&&(i=!1,o=r),o);void 0===e[t]&&void 0!==r&&l(),a=()=>{var n=e[t];return void 0===n?l():(i=!0,n)};var s=!1,c=pt(()=>(s=!1,a())),u=jt;return function(e,t){if(arguments.length>0){const n=t?ln(c):e;return Et(c,n),s=!0,void 0!==o&&(o=n),e}return Dt&&s||0!==(u.f&$)?c.v:ln(c)}}class Xr{#Q;#ee;constructor(e){var t=new Map,n=(e,n)=>{var r=Ct(n,!1,!1);return t.set(e,r),r};const r=new Proxy({...e.props||{},$$events:{}},{get:(e,r)=>ln(t.get(r)??n(r,Reflect.get(e,r))),has:(e,r)=>r===L||(ln(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r)),set:(e,r,a)=>(Et(t.get(r)??n(r,a),a),Reflect.set(e,r,a))});this.#ee=(e.hydrate?sr:lr)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),e?.props?.$$host&&!1!==e.sync||nt(),this.#Q=r.$$events;for(const e of Object.keys(this.#ee))"$set"!==e&&"$destroy"!==e&&"$on"!==e&&i(this,e,{get(){return this.#ee[e]},set(t){this.#ee[e]=t},enumerable:!0});this.#ee.$set=e=>{Object.assign(r,e)},this.#ee.$destroy=()=>{!function(e,t){const n=fr.get(e);n?(fr.delete(e),n(t)):Promise.resolve()}(this.#ee)}}$set(e){this.#ee.$set(e)}$on(e,t){this.#Q[e]=this.#Q[e]||[];const n=(...e)=>t.call(this,...e);return this.#Q[e].push(n),()=>{this.#Q[e]=this.#Q[e].filter(e=>e!==n)}}$destroy(){this.#ee.$destroy()}}let Qr=class{};function ea(e,t,n,r){const a=n[e]?.type;if(t="Boolean"===a&&"boolean"!=typeof t?null!=t:t,!r||!n[e])return t;if("toAttribute"===r)switch(a){case"Object":case"Array":return null==t?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return null==t?null:t;default:return t}else switch(a){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":default:return t;case"Number":return null!=t?+t:t}}function ta(e,t,n,r,a,s){let c=class extends Qr{constructor(){super(e,n,a),this.$$p_d=t}static get observedAttributes(){return o(t).map(e=>(t[e].attribute||e).toLowerCase())}};return o(t).forEach(e=>{i(c.prototype,e,{get(){return this.$$c&&e in this.$$c?this.$$c[e]:this.$$d[e]},set(n){n=ea(e,n,t),this.$$d[e]=n;var r=this.$$c;if(r){var a=l(r,e)?.get;a?r[e]=n:r.$set({[e]:n})}}})}),r.forEach(e=>{i(c.prototype,e,{get(){return this.$$c?.[e]}})}),e.element=c,c}"function"==typeof HTMLElement&&(Qr=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;$$shadowRoot=null;constructor(e,t,n){super(),this.$$ctor=e,this.$$s=t,n&&(this.$$shadowRoot=this.attachShadow(n))}addEventListener(e,t,n){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const n=this.$$c.$on(e,t);this.$$l_u.set(t,n)}super.addEventListener(e,t,n)}removeEventListener(e,t,n){if(super.removeEventListener(e,t,n),this.$$c){const e=this.$$l_u.get(t);e&&(e(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(e){return t=>{const n=Te("slot");"default"!==e&&(n.name=e),Xn(t,n)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const n={},r=function(e){const t={};return e.childNodes.forEach(e=>{t[e.slot||"default"]=!0}),t}(this);for(const e of this.$$s)e in r&&("default"!==e||this.$$d.children?n[e]=t(e):(this.$$d.children=t(e),n.default=!0));for(const e of this.attributes){const t=this.$$g_p(e.name);t in this.$$d||(this.$$d[t]=ea(t,e.value,this.$$p_d,"toProp"))}for(const e in this.$$p_d)e in this.$$d||void 0===this[e]||(this.$$d[e]=this[e],delete this[e]);this.$$c=(e={component:this.$$ctor,target:this.$$shadowRoot||this,props:{...this.$$d,$$slots:n,$$host:this}},new Xr(e)),this.$$me=function(e){tt.ensure();const t=dn(524352,e);return()=>{Sn(t)}}(()=>{bn(()=>{this.$$r=!0;for(const e of o(this.$$c)){if(!this.$$p_d[e]?.reflect)continue;this.$$d[e]=this.$$c[e];const t=ea(e,this.$$d[e],this.$$p_d,"toAttribute");null==t?this.removeAttribute(this.$$p_d[e].attribute||e):this.setAttribute(this.$$p_d[e].attribute||e,t)}this.$$r=!1})});for(const e in this.$$l)for(const t of this.$$l[e]){const n=this.$$c.$on(e,t);this.$$l_u.set(t,n)}this.$$l={}}var e}attributeChangedCallback(e,t,n){this.$$r||(e=this.$$g_p(e),this.$$d[e]=ea(e,n,this.$$p_d,"toProp"),this.$$c?.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return o(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});var na=Yn('');function ra(e,t){Z(t,!0);let n,r=Zr(t,"loading"),a=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var o={get loading(){return r()},set loading(e){r(e),nt()}},i=na(),l=Se(i);zr(l,()=>({type:"checkbox",...a}),void 0,void 0,void 0,0,!0),Gr(l,e=>n=e,()=>n);var s=Ee(l,2);return ue(2),ce(i),yn(()=>Nr(i,"data-loading",r())),zn("click",s,function(){n?.click()}),Xn(e,i),X(o)}jn(["click"]),ta(ra,{loading:{}},[],[],{mode:"open"});var aa=Yn('');function oa(e,t){Z(t,!0);let n=Zr(t,"loading"),r=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var a={get loading(){return n()},set loading(e){n(e),nt()}},o=aa();return zr(Se(o),()=>({type:"checkbox",...r}),void 0,void 0,void 0,0,!0),ue(2),ce(o),yn(()=>Nr(o,"data-loading",n())),Xn(e,o),X(a)}ta(oa,{loading:{}},[],[],{mode:"open"});var ia=Yn('');function la(e,t){Z(t,!0);let n=Zr(t,"strings");var r={get strings(){return n()},set strings(e){n(e),nt()}},a=ia(),o=Se(a);return Nr(o,"href","https://altcha.org"),ce(a),yn(()=>Nr(o,"aria-label",n().ariaLinkLabel)),Xn(e,a),X(r)}ta(la,{strings:{}},[],[],{mode:"open"});var sa=Yn('');function ca(e,t){Z(t,!0);let n=Zr(t,"logo"),r=Zr(t,"strings");var a={get logo(){return n()},set logo(e){n(e),nt()},get strings(){return r()},set strings(e){r(e),nt()}},o=sa(),i=Se(o);gr(i,()=>r().footer,!0),ce(i);var l=Ee(i,2),s=e=>{la(e,{get strings(){return r()}})};return pr(l,e=>{n()&&e(s)}),ce(o),Xn(e,o),X(a)}ta(ca,{logo:{},strings:{}},[],[],{mode:"open"});var ua=Yn('');function fa(e,t){Z(t,!0);let n,r=Zr(t,"loading"),a=Jr(t,["$$slots","$$events","$$legacy","$$host","loading"]);var o={get loading(){return r()},set loading(e){r(e),nt()}},i=ua(),l=Se(i);zr(l,()=>({type:"checkbox",...a}),void 0,void 0,void 0,0,!0),Gr(l,e=>n=e,()=>n);var s=Ee(l,2);return ce(i),yn(()=>Nr(i,"data-loading",r())),zn("click",s,function(){n?.click()}),Xn(e,i),X(o)}jn(["click"]),ta(fa,{loading:{}},[],[],{mode:"open"});var da=(e=>(e.ERROR="error",e.LOADING="loading",e.PLAYING="playing",e.PAUSED="paused",e.READY="ready",e))(da||{}),ha=(e=>(e.CODE="code",e.ERROR="error",e.VERIFIED="verified",e.VERIFYING="verifying",e.UNVERIFIED="unverified",e.EXPIRED="expired",e))(ha||{}),pa=Yn('
'),va=Yn(''),ga=Wn(''),ma=Wn(''),ba=Wn(''),ya=Yn(''),wa=Yn(''),xa=Yn('');function ka(e,t){Z(t,!0);let n=Zr(t,"audioUrl"),r=Zr(t,"codeChallenge"),a=Zr(t,"config"),o=Zr(t,"imageUrl"),i=Zr(t,"onCancel"),l=Zr(t,"onReload"),s=Zr(t,"onSubmit"),c=Zr(t,"strings"),u=St(void 0),f=St(void 0),d=St(void 0),h=St(!1),p=St(""),v=St(!1);function g(){Et(u,da.PAUSED,!0)}function m(e){Et(u,da.ERROR,!0)}function b(){Et(u,da.READY,!0)}function y(){Et(u,da.LOADING,!0)}function w(){Et(u,da.PLAYING,!0)}function x(){Et(u,da.PAUSED,!0)}function k(){ln(f)?ln(u)===da.LOADING||(ln(f).paused?(n()&&ln(f).src!==n()&&(ln(f).src=n()),ln(f).currentTime=0,ln(f).play()):ln(f).pause()):(Et(v,!0),requestAnimationFrame(()=>{ln(f)&&n()&&(ln(f).src=n(),ln(f).play())}))}hr(()=>(a().disableAutoFocus||on().then(()=>{ln(d)?.focus()}),()=>{ln(f)&&(ln(f).pause(),Et(f,void 0))}));var _={get audioUrl(){return n()},set audioUrl(e){n(e),nt()},get codeChallenge(){return r()},set codeChallenge(e){r(e),nt()},get config(){return a()},set config(e){a(e),nt()},get imageUrl(){return o()},set imageUrl(e){o(e),nt()},get onCancel(){return i()},set onCancel(e){i(e),nt()},get onReload(){return l()},set onReload(e){l(e),nt()},get onSubmit(){return s()},set onSubmit(e){s(e),nt()},get strings(){return c()},set strings(e){c(e),nt()}},$=xa(),S=Se($),C=Se(S),E=e=>{var t=pa(),n=Se(t,!0);ce(t),yn(()=>ir(n,c().verificationRequired)),Xn(e,t)};pr(C,e=>{"standard"!==a().codeChallengeDisplay&&e(E)});var T=Ee(C,2),A=Se(T,!0);ce(T);var I=Ee(T,2),P=Ee(I,2),O=Se(P);Ur(O),O.disabled=ln(h),Gr(O,e=>Et(d,e),()=>ln(d));var R=Ee(O,2),L=e=>{var t=ya(),n=Se(t),r=e=>{Xn(e,va())},a=e=>{Xn(e,ga())},o=e=>{Xn(e,ma())},i=e=>{Xn(e,ba())};pr(n,e=>{ln(u)===da.LOADING?e(r):ln(u)===da.ERROR?e(a,1):ln(u)===da.PLAYING?e(o,2):e(i,-1)}),ce(t),yn(()=>{Nr(t,"title",c().getAudioChallenge),t.disabled=ln(u)===da.LOADING||ln(u)===da.ERROR,Nr(t,"aria-label",ln(u)===da.LOADING?c().loading:c().getAudioChallenge)}),Nn("click",t,()=>k(),!0),Xn(e,t)};pr(R,e=>{r().audio&&e(L)});var M=Ee(R,2);ce(P);var D=Ee(P,2),U=Se(D),V=Se(U,!0);ce(U);var N=Ee(U,2),z=Se(N,!0);ce(N),ce(D),ce(S);var j=Ee(S,2),B=e=>{var t=wa();Gr(t,e=>Et(f,e),()=>ln(f)),Nn("error",t,m),Nn("loadstart",t,y),Nn("canplay",t,b),Nn("pause",t,x),Nn("playing",t,w),Nn("ended",t,g),Xn(e,t)};return pr(j,e=>{ln(v)&&e(B)}),ce($),yn(()=>{ir(A,c().enterCodeFromImage),Nr(I,"src",o()),Nr(O,"minlength",r().length||1),Nr(O,"maxlength",r().length),Nr(O,"placeholder",c().enterCode),Nr(O,"aria-label",ln(u)===da.LOADING?c().loading:ln(u)===da.PLAYING?"":c().enterCodeAria),Nr(O,"aria-live",ln(u)?"assertive":"polite"),Nr(O,"aria-busy",ln(u)===da.LOADING),Nr(M,"title",c().reload),Nr(M,"aria-label",c().reload),Nr(U,"aria-label",c().verify),ir(V,c().verify),Nr(N,"aria-label",c().cancel),ir(z,c().cancel)}),Nn("submit",S,function(e){e.preventDefault(),e.stopPropagation(),s()?.(ln(p))},!0),zn("keydown",O,function(e){"Space"===e.code?(e.preventDefault(),e.stopPropagation(),k()):"Escape"===e.code&&(e.preventDefault(),e.stopPropagation(),i()?.())}),Hr(O,()=>ln(p),e=>Et(p,e)),Nn("click",M,()=>l()?.(),!0),Nn("click",N,()=>i()?.(),!0),Xn(e,$),X(_)}jn(["keydown"]),ta(ka,{audioUrl:{},codeChallenge:{},config:{},imageUrl:{},onCancel:{},onReload:{},onSubmit:{},strings:{}},[],[],{mode:"open"});var _a=Yn(''),$a=Yn(''),Sa=Yn('×
'),Ca=Yn(' ',1);function Ea(e,t){Z(t,!0);let n=Zr(t,"anchor"),r=Zr(t,"children"),a=Zr(t,"display",0,"standard"),o=Zr(t,"backdrop",0,!1),i=Zr(t,"onClickOutside"),l=Zr(t,"onClickOutsideDelay",0,600),s=Zr(t,"onClose"),c=Zr(t,"placement",0,"auto"),u=Zr(t,"updateUISignal"),f=Zr(t,"variant",0,"neutral"),d=Jr(t,["$$slots","$$events","$$legacy","$$host","anchor","children","display","backdrop","onClickOutside","onClickOutsideDelay","onClose","placement","updateUISignal","variant"]),p=St(void 0),v=St(void 0),g=St(!1),m=St(0);function b(){s()?.()}function y(){if(n()&&"auto"===c()&&ln(p)){const e=n().getBoundingClientRect(),t=document.documentElement.clientHeight-(e.top+e.height){"auto"!==c()&&Et(g,"top"===c())}),vn(()=>{u()&&y()}),hr(()=>{const e="bottomsheet"===a()||"overlay"===a();return e&&(ln(v)&&document.body.append(ln(v)),ln(p)&&document.body.append(ln(p))),y(),on().then(()=>{Et(m,Date.now(),!0)}),()=>{e&&(ln(v)&&document.body.removeChild(ln(v)),ln(p)&&document.body.removeChild(ln(p)))}});var w={get anchor(){return n()},set anchor(e){n(e),nt()},get children(){return r()},set children(e){r(e),nt()},get display(){return a()},set display(e="standard"){a(e),nt()},get backdrop(){return o()},set backdrop(e=!1){o(e),nt()},get onClickOutside(){return i()},set onClickOutside(e){i(e),nt()},get onClickOutsideDelay(){return l()},set onClickOutsideDelay(e=600){l(e),nt()},get onClose(){return s()},set onClose(e){s(e),nt()},get placement(){return c()},set placement(e="auto"){c(e),nt()},get updateUISignal(){return u()},set updateUISignal(e){u(e),nt()},get variant(){return f()},set variant(e="neutral"){f(e),nt()}},x=Ca();Nn("click",ge,function(e){const t=e.target;ln(p)?.contains(t)||l()&&!(ln(m)+l(){var t=_a();Gr(t,e=>Et(v,e),()=>ln(v)),Xn(e,t)};pr(k,e=>{o()&&e(_)});var $=Ee(k,2);zr($,()=>({...d,class:`altcha-popover ${(t.class||"")??""}`,"data-popover":!0,"data-variant":f(),"data-top":ln(g),"data-display":a()}));var S=Se($),C=e=>{Xn(e,$a())};pr(S,e=>{"standard"===a()&&e(C)});var T=Ee(S,2),A=e=>{var t=Sa();Nn("click",t,b,!0),Xn(e,t)};pr(T,e=>{"standard"!==a()&&e(A)});var I=Ee(T,2);return function(e,t,...n){var r=new dr(e);wn(()=>{const e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},E)}(Se(I),()=>r()??h),ce(I),ce($),Gr($,e=>Et(p,e),()=>ln(p)),Xn(e,x),X(w)}async function Ta(e){const{challenge:t,concurrency:n=navigator.hardwareConcurrency,controller:r=new AbortController,createWorker:a,onOutOfMemory:o=e=>e>1?Math.floor(e/2):0,counterMode:i,timeout:l=9e4}=e,s=Math.min(16,Math.max(1,n)),c=[],u=()=>{for(const e of c)e.terminate()};for(let e=0;e(r.signal.addEventListener("abort",()=>{e.postMessage({type:"abort"})}),new Promise((r,a)=>{e.addEventListener("error",e=>{a(e)}),e.addEventListener("message",t=>{if(t.data){for(const t of c)t!==e&&t.postMessage({type:"abort"});if(t.data.error)return a(new Error(t.data.error))}r(t.data)}),e.postMessage({challenge:t,counterMode:i,counterStart:n,counterStep:s,timeout:l,type:"work"})}))))}catch(n){if(n instanceof Error&&!!n?.message?.includes("Out of memory")&&o){u();const n=o(s);if(n)return Ta({...e,challenge:t,controller:r,concurrency:n,createWorker:a})}throw n}finally{u()}return r.signal.aborted?null:f||null}ta(Ea,{anchor:{},children:{},display:{},backdrop:{},onClickOutside:{},onClickOutsideDelay:{},onClose:{},placement:{},updateUISignal:{},variant:{}},[],[],{mode:"open"});class Aa{TAG_CODES={INPUT:1,TEXTAREA:2,SELECT:3,BUTTON:4,A:5,DETAILS:6,SUMMARY:7,IFRAME:8,VIDEO:9,AUDIO:10};maxSamples;sampleInterval;target;focusStartTime=0;focusInteraction=0;focusInteractionTimer=null;lastPointerSample=0;lastTouchSample=0;lastScrollSample=0;pendingPointer=null;pendingTouch=null;focus=[];pointer=[];scroll=[];touch=[];constructor(e={}){const{maxSamples:t=60,sampleInterval:n=50,target:r=window}=e;this.maxSamples=t,this.sampleInterval=n,this.target=r,this.attach()}destroy(){const e={capture:!0};this.target.removeEventListener("focusin",this.onFocus,e),this.target.removeEventListener("keydown",this.onInteraction,e),this.target.removeEventListener("pointerdown",this.onInteraction,e),this.target.removeEventListener("pointermove",this.onPointer,e),this.target.removeEventListener("scroll",this.onScroll,e),this.target.removeEventListener("touchmove",this.onTouchMove,e)}export(){return{focus:this.focus,maxTouchPoints:navigator.maxTouchPoints||0,pointer:this.pointer,scroll:this.scroll,time:Date.now(),touch:this.touch}}attach(){const e={passive:!0,capture:!0};this.target.addEventListener("focusin",this.onFocus,e),this.target.addEventListener("keydown",this.onInteraction,e),this.target.addEventListener("pointerdown",this.onInteraction,e),this.target.addEventListener("pointermove",this.onPointer,e),this.target.addEventListener("scroll",this.onScroll,e),this.target.addEventListener("touchmove",this.onTouchMove,e)}evict(e){e.length>this.maxSamples&&e.splice(0,e.length-this.maxSamples)}onFocus=e=>{if(2===this.focusInteraction)return;const t=e.target;if(!(t instanceof Element))return;const n=performance.now();0===this.focusStartTime&&(this.focusStartTime=n),this.focus.push([Math.round(n-this.focusStartTime),t.tabIndex,this.TAG_CODES[t.tagName]??0,this.focusInteraction?1:0]),this.evict(this.focus)};onInteraction=e=>{this.focusInteraction="keyCode"in e?1:2,this.focusInteractionTimer&&clearTimeout(this.focusInteractionTimer),this.focusInteractionTimer=setTimeout(()=>{this.focusInteraction=0},100)};onPointer=e=>{if("touch"===e.pointerType)return;const t=e.timeStamp||performance.now();this.pendingPointer=[Math.round(e.clientX),Math.round(e.clientY),Math.round(t)],t-this.lastPointerSample>=this.sampleInterval&&(this.pointer.push(this.pendingPointer),this.lastPointerSample=t,this.pendingPointer=null,this.evict(this.pointer))};onScroll=()=>{const e=performance.now();e-this.lastScrollSample{const t=e.timeStamp||performance.now(),n=e.touches[0];n&&(this.pendingTouch=[Math.round(n.clientX),Math.round(n.clientY),Math.round(t),Math.round(1e3*n.force)/1e3,Math.round(n.radiusX||0),Math.round(n.radiusY||0)],t-this.lastTouchSample>=this.sampleInterval&&(this.touch.push(this.pendingTouch),this.lastTouchSample=t,this.pendingTouch=null,this.evict(this.touch)))}}var Ia=Yn(''),Pa=Yn(''),Oa=Yn('×
',1),Ra=Yn(''),La=Yn(''),Ma=Yn('Secure context (HTTPS) required.
'),Da=Yn('
'),Ua=Yn('
'),Va=Yn(" ",1),Na=Yn(' ',1);"undefined"!=typeof window&&window.customElements&&!customElements.get("altcha-widget")&&customElements.define("altcha-widget",ta(function(e,t){Z(t,!0);const[n,r]=function(){const e={};return[e,function(){pn(()=>{for(var t in e)e[t].unsubscribe();i(e,je,{enumerable:!1,value:!0})})}]}(),a=["ar","fa","he","ur"],{isSecureContext:o}=globalThis,{store:l}=globalThis.$altcha.defaults,s=navigator.hardwareConcurrency||2,c=navigator.deviceMemory||0,u=c&&c<=4?Math.min(4,s):s,f=globalThis.$altcha.i18n.store,d=t.$$host,h=(e,t)=>{on().then(()=>{d?.dispatchEvent(new CustomEvent(e,{detail:t}))})};let p=null,v=St(he(new URL(location.origin))),g=St(!1),m=St(null),b=St(null),y=St(null),w=St(he(ha.UNVERIFIED)),x=St(void 0),k=St(void 0),_=St(null),$=St(void 0),S=St(null),C=St(null),T=St(null),A=St(null),I=St(he([])),P=St(0),O=St(he({})),R=St(!0);const L=mt(()=>({fetch:(e,t)=>fetch(e,t),audioChallengeLanguage:"",auto:"off",barPlacement:"bottom",challenge:"",codeChallenge:null,codeChallengeDisplay:"standard",credentials:null,debug:!1,disableAutoFocus:!1,display:"standard",floatingAnchor:"",floatingOffset:8,floatingPersist:!1,floatingPlacement:"auto",hideFooter:!1,hideLogo:!1,humanInteractionSignature:!0,language:"",mockError:!1,minDuration:500,overlayContent:"",name:"altcha",popoverPlacement:"auto",retryOnOutOfMemoryError:!0,setCookie:null,serverVerificationFields:!1,serverVerificationTimeZone:!1,test:!1,timeout:9e4,type:"checkbox",validationMessage:"",verifyFunction:null,verifyUrl:"",workers:u,...Be(l,"$altchaDefaults",n),...ln(O)})),M=mt(()=>`altcha-checkbox-${t.id||Math.floor(1e12*Math.random()).toString(16)}`),D=mt(()=>function(e){switch(e){case"checkbox":return ra;case"switch":return fa;default:return oa}}(ln(L).type)),U=mt(()=>ln(L).auto),V=mt(()=>ln(w)===ha.VERIFYING),N=mt(()=>!ln(L).hideFooter),z=mt(()=>!ln(L).hideLogo&&"bar"!==ln(L).display),j=mt(()=>function(e,t){const n=Object.keys(e).map(e=>e.toLowerCase());let r=t.reduce((t,r)=>(r=r.toLowerCase(),t||(e[r]?r:null)||n.find(e=>r.split("-")[0]===e.split("-")[0])||null),null);e[r||""]||(r="en");return{language:r,strings:e[r]}}(Be(f,"$altchaI18nStore",n),[ln(L).language,document.documentElement.lang,...navigator.languages])),B=mt(()=>a.includes(ln(j).language)?"rtl":void 0),F=mt(()=>({...ln(j).strings})),H=mt(()=>ln(m)?.audio?.match(/^(https?:)?\//)?Q(ln(m).audio,ln(v),{language:ln(L).audioChallengeLanguage||ln(j).language}).toString():ln(m)?.audio),K=mt(()=>ln(m)?.image?.match(/^(https?:)?\//)?Q(ln(m).image,ln(v)):ln(m)?.image);async function q(e,...t){let n;for(const r of ln(I))n=await r[e].call(r,...t);return n}async function Y(e){await new Promise(t=>setTimeout(t,e))}async function G(e=ln(L).challenge,t){const n=await q("onFetchChallenge",e);let r=null;if(void 0!==n)return n;if("string"==typeof e)if(e.startsWith("{")){_e("parsing JSON challenge");try{r=JSON.parse(e)}catch{throw new Error("Unable to parse JSON challenge.")}}else{_e("fetching challenge from",t?.method||"GET",e),Et(v,new URL(e,location.origin),!0);const n=await ln(L).fetch(e,{credentials:ln(L).credentials||void 0,...t});await ye(n);const a=n.headers.get("x-altcha-config");a&&function(e){try{const t=JSON.parse(e);t&&"object"==typeof t&&xe({serverVerificationFields:t?.sentinel?.fields,serverVerificationTimeZone:t?.sentinel?.timeZone,verifyUrl:t.verifyurl,...t})}catch(e){_e("unable to configure from x-altcha-config header",e)}}(a);const o=await n.json();if(o&&"his"in o&&o.his){if(_e("requested HIS"),!p)throw new Error("Server requested HIS data but collector is disabled.");return G(Q(o.his.url,ln(v)),{body:JSON.stringify({his:p.export()}),headers:{"content-type":"application/json"},method:"POST"})}o&&"hisResult"in o&&o.hisResult&&_e("HIS result",o.hisResult),r=o}else if(e&&"object"==typeof e)try{r=JSON.parse(JSON.stringify(e))}catch{throw new Error("Unable to parse JSON challenge.")}if(function(e){return"object"==typeof e&&"challenge"in e}(r)&&(r=function(e){const[t,n]=e.salt.split("?"),r={};if(n)try{Object.assign(r,Object.fromEntries(new URLSearchParams(n).entries()))}catch{}const a={codeChallenge:e.codeChallenge,parameters:{algorithm:e.algorithm,cost:1,data:r,expiresAt:r?.expires?parseInt(r.expires,10):void 0,keyLength:"SHA-512"===e.algorithm?64:"SHA-384"===e.algorithm?48:32,nonce:(o=(new TextEncoder).encode(e.salt),Array.from(new Uint8Array(o)).map(e=>e.toString(16).padStart(2,"0")).join("")),keyPrefix:e.challenge,salt:""},signature:e.signature};var o;return Object.defineProperties(a,{_originalSalt:{enumerable:!1,value:e.salt,writable:!1},_version:{enumerable:!1,value:1,writable:!1}}),a}(r)),!function(e){return!!e&&"object"==typeof e&&"parameters"in e&&!!e.parameters&&"object"==typeof e.parameters&&"algorithm"in e.parameters&&"nonce"in e.parameters&&"salt"in e.parameters&&"keyPrefix"in e.parameters}(r))throw new Error("Challenge validation failed.");return r}function W(){return document.getElementById(ln(M))}function J(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function Q(e,t,n){const r=new URL(e,t);if(r.search||(r.search=t.search),n)for(const e in n)void 0!==n[e]&&null!==n[e]&&r.searchParams.set(e,n[e]);return r.toString()}function ee(e){!ln(g)&&e.currentTarget.checked?(e.preventDefault(),e.currentTarget.checked=!1,ln(w)!==ha.VERIFYING&&Pe()):e.currentTarget.checked||(e.preventDefault(),$e())}function te(e){ln(w)===ha.VERIFYING?e.currentTarget.setCustomValidity(ln(F).waitAlert):ln(L).validationMessage&&e.currentTarget.setCustomValidity(ln(L).validationMessage)}function ne(){be(ln(L).display),$e()}function re(e){"onfocus"===ln(U)&&ln(w)===ha.UNVERIFIED&&Pe()}function ue(){be(ln(L).display),$e()}function pe(e){const t=e.target;"true"!==t?.getAttribute("data-code-challenge")&&"onsubmit"===ln(U)&&ln(w)===ha.UNVERIFIED&&(e.preventDefault(),e.stopPropagation(),Et(S,e.submitter,!0),Ae(),Pe().then(e=>{e&&!ln(m)&&on().then(()=>{ve(ln(S))})}))}function ve(e){ln(_)&&"requestSubmit"in ln(_)?ln(_).requestSubmit(e):ln(_)?.reportValidity()&&(e?e.click():ln(_).submit())}function be(e){switch(e){case"bar":case"floating":case"overlay":ke(),ln(U)&&"off"!==ln(U)||(ln(O).auto="onsubmit");break;case"standard":Ae()}ln(y)!==e&&Et(y,e,!0)}async function ye(e){if(e.status>=400){if(e.headers.get("content-type")?.includes("/json")){let t;try{t=await e.json()}catch{}if(t&&"error"in t)throw new Error(`Server responded with ${e.status} - ${t.error}`)}throw new Error(`Server responded with ${e.status}.`)}const t=e.headers.get("content-type");if(!t||!t.includes("/json"))throw new Error(`Server responded with invalid content-type. Expected application/json, received ${t}.`)}async function we(e){if(!ln(A))return void Te(ha.ERROR,"Cannot verify code challenge without PoW payload.");Te(ha.VERIFYING);let t=null;if(ln(L).verifyUrl)t=await async function(e,t){const n=await q("onRequestServerVerification",e,t);if(void 0!==n)return n;if(_e("requesting server verification from",ln(L).verifyUrl),!ln(L).verifyUrl)throw new Error("Parameter verifyUrl must be set for server verification.");const r=await ln(L).fetch(Q(ln(L).verifyUrl,ln(v)),{body:JSON.stringify({code:t,fields:ln(L).serverVerificationFields?[...ln(_)?.querySelectorAll('input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')||[]].reduce((e,t)=>{const n=t.name,r=t.value;return n&&r&&(e[n]=/\n/.test(r)?r.replace(new RegExp("(?{ve(ln(S))})):Te(ha.ERROR,t?.reason||"Verification failed."),ln(L).disableAutoFocus||W()?.focus()}function xe(e){Object.assign(ln(O),{...Object.fromEntries(Object.entries(e).filter(([e,t])=>void 0!==t))})}function ke(){Et(R,!1)}function _e(...e){(ln(L).debug||e.some(e=>e instanceof Error))&&console[e[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${ln(L).name}]`,...e)}function $e(e=ha.UNVERIFIED,t=null){Et(g,!1),Et(C,t,!0),Et(A,null),ln(b)&&ln(b).abort(),ln(T)&&(clearTimeout(ln(T)),Et(T,null)),Te(e)}function Te(e,t=null){Et(w,e,!0),Et(C,t,!0),h("statechange",{payload:ln(A),state:ln(w)})}function Ae(){Et(R,!0),on().then(()=>{Ie()})}function Ie(){if("floating"===ln(L).display)return function(e=20){if(!ln($))return;const t=ln(L).floatingPlacement;if(!ln(k)&&(Et(k,(ln(L).floatingAnchor instanceof HTMLElement?ln(L).floatingAnchor:ln(L).floatingAnchor?document.querySelector(ln(L).floatingAnchor):ln(_)?.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||ln(_),!0),!ln(k)))return void _e("unable to find floating anchor element");const n=parseInt(ln(L).floatingOffset,10)||12,r=ln(k).getBoundingClientRect(),a=ln($).getBoundingClientRect(),o=document.documentElement.clientHeight,i=document.documentElement.clientWidth,l=t&&"auto"!==t?"top"===t:r.bottom+a.height+n+e>o,s=Math.max(e,Math.min(i-e-a.width,r.left+r.width/2-a.width/2));if(ln($).style.setProperty("--altcha-floating-left",`${s}px`),ln($).style.setProperty("--altcha-floating-top",l?r.top-(a.height+n)+"px":`${r.bottom+n}px`),ln($).setAttribute("data-floating-position",l?"top":"bottom"),ln(x)){const e=ln(x).getBoundingClientRect();ln(x).style.left=r.left-s+r.width/2-e.width/2+"px"}}();Et(P,ln(P)+1)}async function Pe(e={}){const{concurrency:t=Math.max(1,ln(L).workers),controller:n=new AbortController,minDuration:r=ln(L).minDuration}=e,a=performance.now();let i=null,l=null,s=!1;const c=await q("onVerify",e);if(void 0!==c)return c;$e(ha.VERIFYING),Et(b,n,!0);try{if(!o)throw new Error("Secure context (HTTPS) required.");if(ln(L).mockError)throw new Error("Mock error.");if(ln(L).test)return _e("running test mode with null challenge"),await Y(Math.max(0,r-(performance.now()-a))),ln(b)?.signal.aborted?($e(),null):(Et(A,btoa(JSON.stringify({challenge:null,solution:null,test:!0})),!0),_e("verified"),Te(ha.VERIFIED),h("verified",{payload:ln(A)}),{payload:ln(A)});if(i=await G(),!i)throw new Error("Failed to fetch challenge.");_e("challenge",i),"configuration"in i&&(_e("re-configuring from challenge",i.configuration),xe(i.configuration)),i.parameters.expiresAt&&function(e){ln(T)&&clearTimeout(ln(T));const t=()=>{ln(w)!==ha.UNVERIFIED?(Et(g,!1),Te(ha.EXPIRED)):$e(),h("expired")},n=1e3*e-Date.now();n>=1?Et(T,setTimeout(t,n),!0):t()}(i.parameters.expiresAt),s="_version"in i&&1===i._version;const e=globalThis.$altcha.algorithms.get(i.parameters.algorithm);if(!e)throw new Error(`Unsupported algorithm ${i.parameters.algorithm}.`);if(l=await Ta({challenge:i,concurrency:t,controller:n,createWorker:e,counterMode:s?"string":"uint32",onOutOfMemory:e=>{if(_e("out of memory error received"),h("outofmemory"),ln(L).retryOnOutOfMemoryError&&e>1){const t=Math.floor(e/2);return _e(`retrying with ${t} workers...`),t}},timeout:ln(L).timeout}),ln(b)?.signal.aborted)return $e(),null;if(!l)throw new Error("Failed to find solution.");_e("solution",l),await Y(Math.max(0,r-(performance.now()-a))),Et(m,i.codeChallenge||ln(L).codeChallenge||null,!0),Et(A,s?btoa(JSON.stringify(function(e,t){return{algorithm:e.parameters.algorithm,challenge:e.parameters.keyPrefix,number:t.counter,salt:"_originalSalt"in e?e._originalSalt:e.parameters.nonce,signature:e.signature,took:t.time||0}}(i,l))):btoa(JSON.stringify({challenge:{parameters:i.parameters,signature:i.signature},solution:l})),!0),ln(m)?(_e("requesting code verification"),Te(ha.CODE),h("codechallenge",{codeChallenge:ln(m)})):ln(L).verifyUrl?await we():(_e("verified"),Te(ha.VERIFIED),h("verified",{payload:ln(A)}))}catch(e){return _e("verification failed",e),Te(ha.ERROR,String(e)),null}finally{Et(b,null)}return{challenge:i,payload:ln(A),solution:l}}vn(()=>{xe({auto:t.auto,challenge:t.challenge,display:t.display,language:t.language,name:t.name,type:t.type,workers:t.workers})}),vn(()=>{if(t.configuration)try{xe(JSON.parse(t.configuration))}catch{_e("unable to parse the `configuration` attribute (JSON expected)")}}),vn(()=>{ln(y)!==ln(L).display&&be(ln(L).display)}),vn(()=>{ln(g)&&ln(w)===ha.VERIFYING&&Et(g,!1)}),vn(()=>{ln(g)||ln(w)!==ha.VERIFIED||Et(g,!0)}),vn(()=>{if(!ln(g)){const e=W();e&&e.checked&&(e.checked=!1)}}),vn(()=>{ln(w)===ha.VERIFIED&&W()?.setCustomValidity("")}),vn(()=>{if("onload"===ln(U)){const e=setTimeout(()=>{Pe()},1);return()=>{e&&clearTimeout(e)}}}),vn(()=>{ln(C)&&_e("error:",ln(C))}),vn(()=>{ln(A)&&ln(L).setCookie&&function(e,t={}){const{domain:n,name:r=ln(L).name,maxAge:a,path:o,sameSite:i,secure:l}=t;let s=`${encodeURIComponent(r)}=${encodeURIComponent(e)}`;n&&(s+=`; Domain=${n}`);null!=a&&(s+=`; Max-Age=${a}`);o&&(s+=`; Path=${o}`);i&&(s+=`; SameSite=${i}`);l&&(s+="; Secure");document.cookie=s}(ln(A),ln(L).setCookie)}),hr(()=>(_e("mounted","3.0.11"),d&&globalThis.$altcha.instances.add(d),Et(_,ln($)?.closest("form"),!0),ln(_)?.addEventListener("reset",ue),ln(_)?.addEventListener("submit",pe,{capture:!0}),ln(_)?.addEventListener("focusin",re),function(){Et(I,[...globalThis.$altcha.plugins].map(e=>new e(d)),!0),_e("activating plugins",ln(I).map(e=>e.constructor.name));for(const e of ln(I))e.activate()}(),ln(L).humanInteractionSignature&&(_e("human interaction signature enabled"),p=new Aa),h("load"),o||_e("secure context (HTTPS) required"),()=>{!function(){for(const e of ln(I))e.destroy()}(),d&&globalThis.$altcha.instances.delete(d),ln(T)&&clearTimeout(ln(T)),ln(_)?.removeEventListener("reset",ue),ln(_)?.removeEventListener("submit",pe,{capture:!0}),ln(_)?.removeEventListener("focusin",re),p?.destroy()}));var Oe={configure:xe,getConfiguration:function(){return{...ln(L)}},getState:function(){return ln(w)},hide:ke,log:_e,reset:$e,setState:Te,show:Ae,updateUI:Ie,verify:Pe},Re=Na();Nn("scroll",me,function(){Ie()}),Nn("click",me,function(e){const t=e.target;"floating"!==ln(L).display||!t||d?.contains(t)||t.hasAttribute("data-backdrop")||t.closest("[data-popover]")||ln(w)===ha.VERIFIED||ln(L).floatingPersist||ke()}),Nn("pageshow",ge,function(e){e.persisted&&(be(ln(L).display),$e())}),Nn("resize",ge,function(){Ie()});var Le=Ce(Re),Me=e=>{Xn(e,Ia())};pr(Le,e=>{"overlay"===ln(L).display&&ln(R)&&e(Me)});var De=Ee(Le,2),Ue=Se(De),Ve=e=>{var t=Oa(),n=Ce(t),r=Ee(n,2),a=e=>{var t=Pa();gr(t,()=>document.querySelector(ln(L).overlayContent)?.innerHTML,!0),ce(t),Xn(e,t)};pr(r,e=>{ln(L).overlayContent&&e(a)}),Nn("click",n,ne,!0),Xn(e,t)};pr(Ue,e=>{"overlay"===ln(L).display&&ln(R)&&e(Ve)});var Ne=Ee(Ue,2),ze=Se(Ne),Fe=Se(ze),He=Se(Fe);{let e=mt(()=>"standard"===ln(L).display&&"onsubmit"!==ln(U)||ln(w)===ha.VERIFYING);!function(e,t,n){var r;oe&&(r=ae,se());var a=new dr(e);wn(()=>{var e=t()??null;if(oe&&"["===de(r)!=(null!==e)){var o=fe();return le(o),a.anchor=o,ie(!1),a.ensure(e,e&&(t=>n(t,e))),void ie(!0)}a.ensure(e,e&&(t=>n(t,e)))},E)}(He,()=>ln(D),(t,n)=>{n(t,{get id(){return ln(M)},name:"",get required(){return ln(e)},get loading(){return ln(V)},get checked(){return ln(g)},onchange:ee,oninvalid:te})})}var Ke=Ee(He,2),qe=Se(Ke),Ye=e=>{var t=Jn();yn(()=>ir(t,ln(F).verificationRequired)),Xn(e,t)},Ge=e=>{var t=Jn();yn(()=>ir(t,ln(F).verifying)),Xn(e,t)},We=e=>{var t=Jn();yn(()=>ir(t,ln(F).verified)),Xn(e,t)},Je=e=>{var t=Jn();yn(()=>ir(t,ln(F).label)),Xn(e,t)};pr(qe,e=>{ln(w)===ha.CODE&&ln(m)?e(Ye):ln(w)===ha.VERIFYING?e(Ge,1):ln(w)===ha.VERIFIED?e(We,2):e(Je,-1)}),ce(Ke),ce(Fe);var Ze=Ee(Fe,2),Xe=e=>{la(e,{get strings(){return ln(F)}})};pr(Ze,e=>{ln(z)&&e(Xe)}),ce(ze);var Qe=Ee(ze,2),et=e=>{{let t=mt(()=>"bar"===ln(L).display&&ln(z));ca(e,{get logo(){return ln(t)},get strings(){return ln(F)}})}};pr(Qe,e=>{ln(N)&&e(et)});var tt=Ee(Qe,2),nt=e=>{var t=Ra();Gr(t,e=>Et(x,e),()=>ln(x)),Xn(e,t)};pr(tt,e=>{"floating"===ln(L).display&&e(nt)});var rt=Ee(tt,2),at=e=>{var t=La();Ur(t),yn(()=>{var e,n,r;Nr(t,"name",ln(L).name),e=t,n=ln(A),(r=jr(e)).value!==(r.value=n??void 0)&&(e.value!==n||0===n&&e.nodeName===Dr)&&(e.value=n??"")}),Xn(e,t)};pr(rt,e=>{ln(L).setCookie||e(at)}),ce(Ne);var ot=Ee(Ne,2),it=e=>{Ea(e,{get anchor(){return ln($)},onClickOutside:()=>{o&&$e()},get placement(){return ln(L).popoverPlacement},role:"alert",variant:"error",get dir(){return ln(B)},get updateUISignal(){return ln(P)},children:(e,t)=>{var n=Zn(),r=Ce(n),a=e=>{Xn(e,Ma())},i=e=>{var t=Da(),n=Se(t,!0);ce(t),yn(()=>ir(n,ln(F).expired)),Xn(e,t)},l=e=>{var t=Ua(),n=Se(t,!0);ce(t),yn(()=>{Nr(t,"title",ln(C)),ir(n,ln(F).error)}),Xn(e,t)};pr(r,e=>{ln(C)||o?ln(C)||ln(w)!==ha.EXPIRED?e(l,-1):e(i,1):e(a)}),Xn(e,n)},$$slots:{default:!0}})},lt=e=>{var t=Zn();!function(e,t,n){oe&&se();var r=new dr(e);wn(()=>{var e=t();e!=e&&(e=vr),r.ensure(e,n)})}(Ce(t),()=>ln(m),e=>{{let t=mt(()=>"standard"!==ln(L).codeChallengeDisplay);Ea(e,{get anchor(){return ln($)},get backdrop(){return ln(t)},get display(){return ln(L).codeChallengeDisplay},onClose:()=>{$e()},get placement(){return ln(L).popoverPlacement},role:"dialog",get"aria-label"(){return ln(F).verificationRequired},get dir(){return ln(B)},get updateUISignal(){return ln(P)},children:(e,t)=>{var n=Va(),r=Ce(n);ka(r,{get audioUrl(){return ln(H)},get imageUrl(){return ln(K)},onCancel:()=>$e(),onReload:()=>Pe(),onSubmit:e=>we(e),get codeChallenge(){return ln(m)},get config(){return ln(L)},get strings(){return ln(F)}});var a=Ee(r,2),o=e=>{ca(e,{get logo(){return ln(z)},get strings(){return ln(F)}})};pr(a,e=>{ln(N)&&"standard"!==ln(L).codeChallengeDisplay&&e(o)}),Xn(e,n)},$$slots:{default:!0}})}}),Xn(e,t)};pr(ot,e=>{ln(C)||ln(w)===ha.EXPIRED||!o?e(it):ln(m)&&ln(w)===ha.CODE&&e(lt,1)}),ce(De),Gr(De,e=>Et($,e),()=>ln($)),yn(e=>{Nr(De,"data-state",ln(w)),Nr(De,"data-display",ln(L).display||void 0),Nr(De,"data-placement",e),Nr(De,"data-visible",ln(R)||void 0),Nr(De,"dir",ln(B)),Nr(Ke,"for",ln(M)),De.dir=De.dir},[()=>function(e){switch(e){case"bar":return ln(L).barPlacement||"bottom";case"floating":return ln(L).floatingPlacement||"auto";default:return}}(ln(L).display)]),Xn(e,Re);var st=X(Oe);return r(),st},{auto:{type:"String"},challenge:{type:"String"},configuration:{type:"String"},display:{type:"String"},language:{type:"String"},name:{type:"String"},theme:{type:"String"},type:{type:"String"},workers:{type:"Number"}},[],["configure","getConfiguration","getState","hide","log","reset","setState","show","updateUI","verify"]));const za='(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n function getDigest(algorithm) {\n switch (algorithm) {\n case "PBKDF2/SHA-512":\n return "SHA-512";\n case "PBKDF2/SHA-384":\n return "SHA-384";\n case "PBKDF2/SHA-256":\n default:\n return "SHA-256";\n }\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, cost, keyLength = 32 } = parameters;\n const passwordKey = await crypto.subtle.importKey(\n "raw",\n password,\n { name: "PBKDF2" },\n false,\n ["deriveKey"]\n );\n const derivedKey = await crypto.subtle.deriveKey(\n {\n name: "PBKDF2",\n salt,\n iterations: cost,\n hash: getDigest(algorithm)\n },\n passwordKey,\n { name: "AES-GCM", length: keyLength * 8 },\n true,\n ["encrypt"]\n );\n return {\n derivedKey: new Uint8Array(await crypto.subtle.exportKey("raw", derivedKey))\n };\n }\n handler({\n deriveKey\n });\n})();\n',ja="undefined"!=typeof self&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",za],{type:"text/javascript;charset=utf-8"});function Ba(e){let t;try{if(t=ja&&(self.URL||self.webkitURL).createObjectURL(ja),!t)throw"";const n=new Worker(t,{name:e?.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(za),{name:e?.name})}}const Fa='(function() {\n "use strict";\n function bufferStartsWith(buffer, prefix) {\n if (prefix.length > buffer.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (buffer[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n }\n function bufferToHex(buffer) {\n return Array.from(new Uint8Array(buffer)).map((b) => b.toString(16).padStart(2, "0")).join("");\n }\n function concatBuffers(a, b) {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n }\n function hexToBuffer(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error(`Hex string must have an even length. Got: ${hex}`);\n }\n const buffer = new ArrayBuffer(hex.length / 2);\n const view = new DataView(buffer);\n for (let i = 0; i < hex.length; i += 2) {\n const byteString = hex.substring(i, i + 2);\n const byteValue = parseInt(byteString, 16);\n view.setUint8(i / 2, byteValue);\n }\n return new Uint8Array(buffer);\n }\n async function delay(ms) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n }\n function timeDuration(start) {\n return Math.floor((performance.now() - start) * 10) / 10;\n }\n class PasswordBuffer {\n constructor(nonce, mode = "uint32") {\n this.nonce = nonce;\n this.mode = mode;\n this.buffer = new Uint8Array(this.nonce.length + this.COUNTER_BYTES);\n this.buffer.set(this.nonce, 0);\n this.dataView = new DataView(this.buffer.buffer);\n }\n COUNTER_BYTES = 4;\n buffer;\n dataView;\n encoder = new TextEncoder();\n /**\n * Appends the counter to the nonce buffer.\n * In \'string\' mode, encodes the counter as a UTF-8 string.\n * In \'uint32\' mode, writes the counter as a big-endian 32-bit integer.\n */\n setCounter(n) {\n if (this.mode === "string") {\n return concatBuffers(this.nonce, this.encoder.encode(n.toString()));\n }\n this.dataView.setUint32(this.nonce.length, n, false);\n return this.buffer;\n }\n }\n async function solveChallenge(options) {\n const {\n challenge,\n controller,\n counterMode = "uint32",\n counterStart = 0,\n counterStep = 1,\n deriveKey: deriveKey2,\n timeout = 9e4\n } = options;\n const { nonce, keyPrefix, salt } = challenge.parameters;\n const nonceBuf = hexToBuffer(nonce);\n const saltBuf = hexToBuffer(salt);\n const keyPrefixBuf = keyPrefix.length % 2 === 0 ? hexToBuffer(keyPrefix) : null;\n const password = new PasswordBuffer(nonceBuf, counterMode);\n const start = performance.now();\n let counter = counterStart;\n let iterations = 0;\n let derivedKeyHex = "";\n let lastYield = start;\n while (true) {\n if (controller?.signal.aborted || timeout && iterations % 10 === 0 && performance.now() - start > timeout) {\n return null;\n }\n const { derivedKey } = await deriveKey2(\n challenge.parameters,\n saltBuf,\n password.setCounter(counter)\n );\n if (iterations % 10 === 0 && performance.now() - lastYield > 200) {\n await delay(0);\n lastYield = performance.now();\n }\n if (keyPrefixBuf ? bufferStartsWith(derivedKey, keyPrefixBuf) : bufferToHex(derivedKey).startsWith(keyPrefix)) {\n derivedKeyHex = bufferToHex(derivedKey);\n break;\n }\n counter = counter + counterStep;\n iterations = iterations + 1;\n }\n return {\n counter,\n derivedKey: derivedKeyHex,\n time: timeDuration(start)\n };\n }\n function handler(options) {\n const { deriveKey: deriveKey2 } = options;\n let controller = void 0;\n self.onmessage = async (message) => {\n const { challenge, counterMode, counterStart, counterStep, timeout, type } = message.data;\n if (type === "abort") {\n controller?.abort();\n } else if (type === "work") {\n controller = new AbortController();\n let solution;\n try {\n solution = await solveChallenge({\n challenge,\n controller,\n counterStart,\n counterStep,\n deriveKey: deriveKey2,\n counterMode,\n timeout\n });\n } catch (err) {\n return self.postMessage({ error: err });\n }\n self.postMessage(solution);\n }\n };\n }\n async function deriveKey(parameters, salt, password) {\n const { algorithm, keyLength = 32 } = parameters;\n const iterations = Math.max(1, parameters.cost);\n let data = void 0;\n let derivedKey = void 0;\n for (let i = 0; i < iterations; i++) {\n if (i === 0) {\n data = concatBuffers(salt, password);\n } else {\n data = derivedKey;\n }\n derivedKey = new Uint8Array(\n (await crypto.subtle.digest(algorithm, data)).slice(0, keyLength)\n );\n }\n return {\n parameters: {},\n derivedKey\n };\n }\n handler({\n deriveKey\n });\n})();\n',Ha="undefined"!=typeof self&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Fa],{type:"text/javascript;charset=utf-8"});function Ka(e){let t;try{if(t=Ha&&(self.URL||self.webkitURL).createObjectURL(Ha),!t)throw"";const n=new Worker(t,{name:e?.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Fa),{name:e?.name})}}!function(e,t="altcha-css"){if("undefined"!=typeof document&&document&&!document.getElementById(t)){const n=document.createElement("style");n.id=t,n.textContent=e;const r=document.currentScript?.nonce??document.querySelector('meta[name="csp-nonce"]')?.content;r&&(n.nonce=r),document.head.appendChild(n)}}(':root {\n --altcha-border-color: var(--altcha-color-neutral);\n --altcha-border-width: 1px;\n --altcha-border-radius: 6px;\n --altcha-color-base: light-dark(oklch(100% 0.00011 271.152), oklch(20.904% 0.00002 271.152));\n --altcha-color-base-content: light-dark(\n \toklch(20.904% 0.00002 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-error: oklch(51.284% 0.20527 28.678);\n --altcha-color-error-content: oklch(100% 0.00011 271.152);\n --altcha-color-neutral: light-dark(oklch(83.591% 0.0001 271.152), oklch(46.04% 0.00005 271.152));\n --altcha-color-neutral-content: light-dark(\n \toklch(46.76% 0.00005 271.152),\n \toklch(100% 0.00011 271.152)\n );\n --altcha-color-primary: oklch(40.279% 0.2449 268.131);\n --altcha-color-primary-content: oklch(100% 0.00011 271.152);\n --altcha-color-success: oklch(55.748% 0.18968 142.511);\n --altcha-color-success-content: oklch(100% 0.00011 271.152);\n --altcha-checkbox-border-color: light-dark(\n \toklch(66.494% 0.00233 15.434),\n \toklch(51.028% 0.00006 271.152)\n );\n --altcha-checkbox-border-radius: 5px;\n --altcha-checkbox-border-width: var(--altcha-border-width);\n --altcha-checkbox-outline: 2px solid var(--altcha-checkbox-outline-color);\n --altcha-checkbox-outline-color: -webkit-focus-ring-color;\n --altcha-checkbox-outline-offset: 2px;\n --altcha-checkbox-size: 22px;\n --altcha-checkbox-transition-duration: var(--altcha-transition-duration);\n --altcha-input-background-color: var(--altcha-color-base);\n --altcha-input-border-radius: 3px;\n --altcha-input-border-width: 1px;\n --altcha-input-color: var(--altcha-color-base-content);\n --altcha-max-width: 320px;\n --altcha-padding: 0.75rem;\n --altcha-popover-arrow-size: 6px;\n --altcha-popover-color: var(--altcha-border-color);\n --altcha-shadow: drop-shadow(3px 3px 6px oklch(0% 0 0 / 0.2));\n --altcha-spinner-color: var(--altcha-color-base-content);\n --altcha-switch-background-color: var(--altcha-color-neutral);\n --altcha-switch-border-radius: calc(infinity * 1px);\n --altcha-switch-height: var(--altcha-checkbox-size);\n --altcha-switch-padding: 0.25rem;\n --altcha-switch-width: calc(var(--altcha-checkbox-size) * 1.75);\n --altcha-switch-toggle-border-radius: 100%;\n --altcha-switch-toggle-color: var(--altcha-color-neutral-content);\n --altcha-switch-toggle-size: calc(\n \tvar(--altcha-switch-height) - calc(var(--altcha-switch-padding) * 2)\n );\n --altcha-transition-duration: 0.6s;\n --altcha-z-index: 99999999;\n --altcha-z-index-popover: 999999999;\n}\n\n@supports (-moz-appearance: none) {\n :root {\n --altcha-checkbox-outline-color: var(--altcha-color-primary);\n }\n}\n.altcha {\n all: revert-layer;\n display: none;\n font-family: inherit;\n font-size: inherit;\n position: relative;\n}\n.altcha[data-visible] {\n display: block;\n}\n.altcha-popover, .altcha-popover * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha * {\n all: revert-layer;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n line-height: 1.25;\n}\n.altcha a, .altcha-popover a {\n color: currentColor;\n text-decoration: none;\n}\n.altcha a:hover, .altcha-popover a:hover {\n color: currentColor;\n}\n.altcha-main {\n align-items: start;\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width, 1px) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius, 0);\n color: var(--altcha-color-base-content);\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n padding: var(--altcha-padding);\n max-width: var(--altcha-max-width, 100%);\n}\n.altcha-main > * {\n display: flex;\n width: 100%;\n}\n.altcha-main > *:first-child {\n flex-grow: 1;\n}\n.altcha-checkbox-wrap {\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n gap: 0.5rem;\n}\n.altcha-checkbox-wrap > * {\n display: flex;\n}\n.altcha-logo {\n opacity: 0.7;\n}\n.altcha-footer {\n align-items: center;\n display: flex;\n flex-grow: 1;\n gap: 0.5rem;\n justify-content: flex-end;\n font-size: 0.7rem;\n opacity: 0.7;\n}\n.altcha-footer p {\n margin: 0;\n padding: 0;\n}\n.altcha-error {\n font-size: 0.85rem;\n}\n.altcha-button {\n align-items: center;\n background: var(--altcha-color-primary);\n border: var(--altcha-input-border-width) solid var(--altcha-color-primary);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-color-primary-content);\n cursor: pointer;\n display: flex;\n font-size: 0.9rem;\n gap: 0.5rem;\n padding: 0.35rem;\n}\n.altcha-button:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-button > .altcha-spinner, .altcha-button > svg {\n height: 20px;\n width: 20px;\n}\n.altcha-button-secondary {\n background: transparent;\n border-color: var(--altcha-color-neutral);\n color: var(--altcha-color-neutral-content);\n}\n.altcha-input {\n background: var(--altcha-input-background-color);\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n color: var(--altcha-input-color);\n flex-grow: 1;\n font-size: 1rem;\n min-width: 0;\n padding: 0.25rem;\n width: auto;\n}\n.altcha-input:focus {\n border-color: var(--altcha-color-primary);\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-spinner {\n animation: altcha-rotate 0.6s linear infinite;\n border-radius: 100%;\n border: var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);\n border-bottom-color: transparent;\n border-right-color: transparent;\n opacity: 0.7;\n}\n.altcha-popover {\n background-color: var(--altcha-color-base);\n border: var(--altcha-border-width) solid var(--altcha-border-color);\n border-radius: var(--altcha-border-radius);\n color: var(--altcha-color-base-content);\n filter: var(--altcha-shadow);\n position: absolute;\n left: calc(var(--altcha-padding) / 2);\n max-width: calc(var(--altcha-max-width) - var(--altcha-padding));\n top: calc(var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size));\n z-index: var(--altcha-z-index-popover);\n}\n.altcha-popover-arrow {\n border: var(--altcha-popover-arrow-size) solid transparent;\n border-bottom-color: var(--altcha-popover-color);\n content: "";\n height: 0;\n left: calc(var(--altcha-checkbox-size) / 2);\n position: absolute;\n top: calc(var(--altcha-popover-arrow-size) * -2);\n width: 0;\n}\n.altcha-popover-content {\n max-height: 100dvh;\n overflow: auto;\n padding: var(--altcha-padding);\n}\n.altcha-popover[data-top=true][data-display=standard] {\n bottom: calc(100% - (var(--altcha-padding) - var(--altcha-popover-arrow-size)));\n top: auto;\n}\n.altcha-popover[data-top=true][data-display=standard] .altcha-popover-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-popover-color);\n bottom: calc(var(--altcha-popover-arrow-size) * -2);\n top: auto;\n}\n.altcha-popover[data-variant=error] {\n --altcha-popover-color: var(--altcha-color-error);\n background-color: var(--altcha-color-error);\n border-color: var(--altcha-color-error);\n color: var(--altcha-color-error-content);\n}\n.altcha-popover[data-variant=error] .altcha-popover-content {\n padding: calc(var(--altcha-padding) / 1.5) var(--altcha-padding);\n}\n.altcha-popover[data-display=overlay] {\n animation: altcha-overlay-slidein 0.5s forwards;\n left: 50%;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] {\n animation: altcha-bottomsheet-slideup 0.5s forwards;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-bottom: 0;\n bottom: -100%;\n left: 50%;\n position: fixed;\n top: auto;\n transform: translate(-50%, 0);\n width: var(--altcha-max-width);\n z-index: var(--altcha-z-index);\n}\n.altcha-popover[data-display=bottomsheet] .altcha-popover-content {\n padding-bottom: calc(var(--altcha-padding) * 2);\n}\n.altcha-popover-backdrop {\n background: var(--altcha-color-base-content);\n bottom: 0;\n left: 0;\n opacity: 0.1;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity 0.5s;\n z-index: var(--altcha-z-index);\n}\n.altcha-popover-close {\n color: var(--altcha-color-base-content);\n cursor: pointer;\n display: inline-block;\n font-size: 1rem;\n height: 1.25rem;\n line-height: 0.95;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1.25rem;\n z-index: var(--altcha-z-index);\n}\n[dir=rtl] .altcha-popover {\n left: auto;\n right: calc(var(--altcha-padding) / 2);\n}\n[dir=rtl] .altcha-popover-arrow {\n left: auto;\n right: calc(var(--altcha-checkbox-size) / 2);\n}\n[dir=rtl] .altcha-popover-close {\n left: 0;\n right: auto;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer, .altcha-popover[data-display=overlay] .altcha-footer {\n align-items: center;\n justify-content: center;\n padding-top: 1rem;\n gap: 0.5rem;\n}\n.altcha-popover[data-display=bottomsheet] .altcha-footer svg, .altcha-popover[data-display=overlay] .altcha-footer svg {\n height: 18px;\n width: 18px;\n vertical-align: middle;\n}\n.altcha-code-challenge > form {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.altcha-code-challenge-title {\n font-weight: 600;\n}\n.altcha-code-challenge-text {\n font-size: 0.85rem;\n}\n.altcha-code-challenge-image {\n background: white;\n border: var(--altcha-input-border-width) solid var(--altcha-color-neutral);\n border-radius: var(--altcha-input-border-radius);\n object-fit: contain;\n height: 50px;\n}\n.altcha-code-challenge-row {\n display: flex;\n gap: 0.5rem;\n}\n.altcha-code-challenge-buttons {\n align-items: center;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin-top: var(--altcha-padding);\n justify-content: space-between;\n}\n.altcha-code-challenge-buttons button {\n justify-content: center;\n width: 100%;\n}\n.altcha-checkbox {\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input {\n appearance: none;\n background: var(--altcha-input-background-color);\n border: var(--altcha-checkbox-border-width, 2px) solid var(--altcha-checkbox-border-color);\n border-radius: var(--altcha-checkbox-border-radius);\n cursor: pointer;\n height: var(--altcha-checkbox-size);\n left: 0;\n margin: 0;\n padding: 0;\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox input:before {\n border-radius: var(--altcha-checkbox-border-radius);\n content: "";\n width: 100%;\n height: 100%;\n background: var(--altcha-color-neutral);\n display: block;\n transform: scale(0);\n}\n.altcha-checkbox input:checked {\n background-color: var(--altcha-color-success);\n border-color: var(--altcha-color-success);\n}\n.altcha-checkbox input:checked::before {\n background-color: var(--altcha-color-success);\n opacity: 0;\n transform: scale(2.2);\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox svg {\n --altcha-radio-svg-size: calc(var(--altcha-checkbox-size) * 0.5);\n --altcha-radio-svg-offset: calc(var(--altcha-checkbox-size) * 0.25);\n fill: none;\n left: var(--altcha-radio-svg-offset);\n height: var(--altcha-radio-svg-size);\n opacity: 0;\n position: absolute;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-dasharray: 16px;\n stroke-dashoffset: 16px;\n top: var(--altcha-radio-svg-offset);\n transform: translate3d(0, 0, 0);\n width: var(--altcha-radio-svg-size);\n}\n.altcha-checkbox input:checked + svg {\n color: var(--altcha-color-success-content);\n opacity: 1;\n stroke-dashoffset: 0;\n transition: all var(--altcha-checkbox-transition-duration) ease;\n transition-delay: 0.1s;\n}\n.altcha-checkbox-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox[data-loading=true] .altcha-checkbox-spinner {\n display: block;\n}\n.altcha-checkbox-native {\n height: var(--altcha-checkbox-size);\n position: relative;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native input {\n height: var(--altcha-checkbox-size);\n margin: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native-spinner {\n display: none;\n left: 0;\n height: var(--altcha-checkbox-size);\n position: absolute;\n top: 0;\n width: var(--altcha-checkbox-size);\n}\n.altcha-checkbox-native[data-loading=true] input {\n appearance: none;\n opacity: 0;\n pointer-events: none;\n}\n.altcha-checkbox-native[data-loading=true] .altcha-checkbox-native-spinner {\n display: block;\n}\n.altcha-switch {\n align-items: center;\n border-radius: var(--altcha-switch-border-radius);\n background-color: var(--altcha-switch-background-color);\n display: flex;\n height: var(--altcha-switch-height);\n padding: var(--altcha-switch-padding);\n position: relative;\n width: var(--altcha-switch-width);\n}\n.altcha-switch:focus-within {\n outline: var(--altcha-checkbox-outline);\n outline-offset: var(--altcha-checkbox-outline-offset);\n}\n.altcha-switch input {\n appearance: none;\n cursor: pointer;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.altcha-switch-toggle {\n align-items: center;\n background-color: var(--altcha-switch-toggle-color);\n border-radius: var(--altcha-switch-toggle-border-radius);\n cursor: pointer;\n display: flex;\n height: var(--altcha-switch-toggle-size);\n justify-content: center;\n left: var(--altcha-switch-padding);\n position: absolute;\n transition: width 150ms ease-out, left 150ms ease-out;\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch-spinner {\n display: none;\n height: var(--altcha-switch-toggle-size);\n width: var(--altcha-switch-toggle-size);\n}\n.altcha-switch[data-loading=true] {\n pointer-events: none;\n}\n.altcha-switch[data-loading=true] .altcha-switch-spinner {\n display: block;\n}\n.altcha-switch[data-loading=true] .altcha-switch-toggle {\n background-color: transparent;\n left: calc(50% - var(--altcha-switch-toggle-size) / 2);\n}\n[data-state=verified] .altcha-switch {\n --altcha-switch-background-color: var(--altcha-color-success);\n}\n[data-state=verified] .altcha-switch-toggle {\n background-color: var(--altcha-color-success-content);\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl] .altcha-switch-toggle {\n left: calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding));\n}\n[dir=rtl][data-state=verified] .altcha-switch-toggle {\n left: var(--altcha-switch-padding);\n}\n.altcha-floating-arrow {\n border: 6px solid transparent;\n border-bottom-color: var(--altcha-border-color);\n content: "";\n height: 0;\n left: 12px;\n position: absolute;\n top: -12px;\n width: 0;\n}\n.altcha-overlay-backdrop {\n bottom: 0;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n transition: opacity var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha-overlay-close {\n display: inline-block;\n color: currentColor;\n cursor: pointer;\n font-size: 1rem;\n height: 1rem;\n line-height: 0.85;\n position: absolute;\n right: 0;\n text-align: center;\n text-shadow: 0 0 1px var(--altcha-color-base);\n top: -1.5rem;\n width: 1rem;\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] {\n animation: altcha-overlay-slidein var(--altcha-transition-duration) forwards;\n filter: var(--altcha-shadow);\n left: 50%;\n opacity: 0;\n position: fixed;\n top: 45%;\n transform: translate(-50%, -50%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=overlay] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating] {\n display: none;\n filter: var(--altcha-shadow);\n left: var(--altcha-floating-left, -100%);\n position: fixed;\n top: var(--altcha-floating-top, -100%);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=floating] .altcha-main {\n width: var(--altcha-max-width);\n}\n.altcha[data-display=floating][data-floating-position=top] .altcha-floating-arrow {\n border-bottom-color: transparent;\n border-top-color: var(--altcha-border-color);\n bottom: -12px;\n top: auto;\n}\n.altcha[data-display=floating][data-visible] {\n display: flex;\n}\n.altcha[data-display=bar] {\n bottom: -100%;\n filter: var(--altcha-shadow);\n left: 0;\n position: fixed;\n right: 0;\n transition: bottom var(--altcha-transition-duration), top var(--altcha-transition-duration);\n z-index: var(--altcha-z-index);\n}\n.altcha[data-display=bar] .altcha-main {\n align-items: center;\n border-radius: 0;\n border-width: var(--altcha-border-width) 0 0 0;\n flex-direction: row;\n max-width: 100% !important;\n}\n.altcha[data-display=bar] .altcha-main > * {\n width: auto;\n}\n.altcha[data-display=bar][data-placement=top] {\n bottom: auto;\n top: -100%;\n}\n.altcha[data-display=bar][data-placement=top] .altcha-main {\n border-width: 0 0 var(--altcha-border-width) 0;\n}\n.altcha[data-display=bar][data-placement=bottom]:not([data-state=unverified]) {\n bottom: 0;\n}\n.altcha[data-display=bar][data-placement=top]:not([data-state=unverified]) {\n top: 0;\n}\n.altcha[data-display=invisible] {\n display: none;\n}\n\n@keyframes altcha-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes altcha-bottomsheet-slideup {\n 100% {\n bottom: 0;\n }\n}\n@keyframes altcha-overlay-slidein {\n 100% {\n opacity: 1;\n top: 50%;\n }\n}'),$altcha.algorithms.set("SHA-256",()=>new Ka),$altcha.algorithms.set("SHA-384",()=>new Ka),$altcha.algorithms.set("SHA-512",()=>new Ka),$altcha.algorithms.set("PBKDF2/SHA-256",()=>new Ba),$altcha.algorithms.set("PBKDF2/SHA-384",()=>new Ba),$altcha.algorithms.set("PBKDF2/SHA-512",()=>new Ba);
diff --git a/frontend/static/yw/javascript/owot.js b/frontend/static/yw/javascript/owot.js
index 0a0c5265..e2821d05 100644
--- a/frontend/static/yw/javascript/owot.js
+++ b/frontend/static/yw/javascript/owot.js
@@ -8664,4 +8664,4 @@ function begin() {
});
}
-begin();
+window._beginAfterCaptcha = begin;
diff --git a/frontend/templates/yourworld.html b/frontend/templates/yourworld.html
index ea7605db..37787561 100644
--- a/frontend/templates/yourworld.html
+++ b/frontend/templates/yourworld.html
@@ -49,6 +49,15 @@
+
+
+
+
Verify you are human
+
+
Verification failed. Please try again.
+
+
+
Loading...
@@ -146,5 +155,56 @@ Loading...
+
+