3371 lines
783 KiB
JavaScript
3371 lines
783 KiB
JavaScript
(function () { const e = document.createElement("link").relList; if (e && e.supports && e.supports("modulepreload")) return; for (const i of document.querySelectorAll('link[rel="modulepreload"]')) r(i); new MutationObserver(i => { for (const s of i) if (s.type === "childList") for (const o of s.addedNodes) o.tagName === "LINK" && o.rel === "modulepreload" && r(o) }).observe(document, { childList: !0, subtree: !0 }); function n(i) { const s = {}; return i.integrity && (s.integrity = i.integrity), i.referrerPolicy && (s.referrerPolicy = i.referrerPolicy), i.crossOrigin === "use-credentials" ? s.credentials = "include" : i.crossOrigin === "anonymous" ? s.credentials = "omit" : s.credentials = "same-origin", s } function r(i) { if (i.ep) return; i.ep = !0; const s = n(i); fetch(i.href, s) } })(); function kE(t) { return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t } var Wy = { exports: {} }, rc = {}, Hy = { exports: {} }, ce = {};/**
|
|
* @license React
|
|
* react.production.min.js
|
|
*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/var Na = Symbol.for("react.element"), TE = Symbol.for("react.portal"), SE = Symbol.for("react.fragment"), IE = Symbol.for("react.strict_mode"), AE = Symbol.for("react.profiler"), CE = Symbol.for("react.provider"), NE = Symbol.for("react.context"), PE = Symbol.for("react.forward_ref"), bE = Symbol.for("react.suspense"), RE = Symbol.for("react.memo"), DE = Symbol.for("react.lazy"), hm = Symbol.iterator; function LE(t) { return t === null || typeof t != "object" ? null : (t = hm && t[hm] || t["@@iterator"], typeof t == "function" ? t : null) } var qy = { isMounted: function () { return !1 }, enqueueForceUpdate: function () { }, enqueueReplaceState: function () { }, enqueueSetState: function () { } }, Ky = Object.assign, Gy = {}; function qs(t, e, n) { this.props = t, this.context = e, this.refs = Gy, this.updater = n || qy } qs.prototype.isReactComponent = {}; qs.prototype.setState = function (t, e) { if (typeof t != "object" && typeof t != "function" && t != null) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); this.updater.enqueueSetState(this, t, e, "setState") }; qs.prototype.forceUpdate = function (t) { this.updater.enqueueForceUpdate(this, t, "forceUpdate") }; function Qy() { } Qy.prototype = qs.prototype; function lf(t, e, n) { this.props = t, this.context = e, this.refs = Gy, this.updater = n || qy } var uf = lf.prototype = new Qy; uf.constructor = lf; Ky(uf, qs.prototype); uf.isPureReactComponent = !0; var fm = Array.isArray, Yy = Object.prototype.hasOwnProperty, cf = { current: null }, Xy = { key: !0, ref: !0, __self: !0, __source: !0 }; function Jy(t, e, n) { var r, i = {}, s = null, o = null; if (e != null) for (r in e.ref !== void 0 && (o = e.ref), e.key !== void 0 && (s = "" + e.key), e) Yy.call(e, r) && !Xy.hasOwnProperty(r) && (i[r] = e[r]); var l = arguments.length - 2; if (l === 1) i.children = n; else if (1 < l) { for (var u = Array(l), h = 0; h < l; h++)u[h] = arguments[h + 2]; i.children = u } if (t && t.defaultProps) for (r in l = t.defaultProps, l) i[r] === void 0 && (i[r] = l[r]); return { $$typeof: Na, type: t, key: s, ref: o, props: i, _owner: cf.current } } function ME(t, e) { return { $$typeof: Na, type: t.type, key: e, ref: t.ref, props: t.props, _owner: t._owner } } function df(t) { return typeof t == "object" && t !== null && t.$$typeof === Na } function jE(t) { var e = { "=": "=0", ":": "=2" }; return "$" + t.replace(/[=:]/g, function (n) { return e[n] }) } var pm = /\/+/g; function Zc(t, e) { return typeof t == "object" && t !== null && t.key != null ? jE("" + t.key) : e.toString(36) } function Ql(t, e, n, r, i) { var s = typeof t; (s === "undefined" || s === "boolean") && (t = null); var o = !1; if (t === null) o = !0; else switch (s) { case "string": case "number": o = !0; break; case "object": switch (t.$$typeof) { case Na: case TE: o = !0 } }if (o) return o = t, i = i(o), t = r === "" ? "." + Zc(o, 0) : r, fm(i) ? (n = "", t != null && (n = t.replace(pm, "$&/") + "/"), Ql(i, e, n, "", function (h) { return h })) : i != null && (df(i) && (i = ME(i, n + (!i.key || o && o.key === i.key ? "" : ("" + i.key).replace(pm, "$&/") + "/") + t)), e.push(i)), 1; if (o = 0, r = r === "" ? "." : r + ":", fm(t)) for (var l = 0; l < t.length; l++) { s = t[l]; var u = r + Zc(s, l); o += Ql(s, e, n, u, i) } else if (u = LE(t), typeof u == "function") for (t = u.call(t), l = 0; !(s = t.next()).done;)s = s.value, u = r + Zc(s, l++), o += Ql(s, e, n, u, i); else if (s === "object") throw e = String(t), Error("Objects are not valid as a React child (found: " + (e === "[object Object]" ? "object with keys {" + Object.keys(t).join(", ") + "}" : e) + "). If you meant to render a collection of children, use an array instead."); return o } function _l(t, e, n) { if (t == null) return t; var r = [], i = 0; return Ql(t, r, "", "", function (s) { return e.call(n, s, i++) }), r } function VE(t) { if (t._status === -1) { var e = t._result; e = e(), e.then(function (n) { (t._status === 0 || t._status === -1) && (t._status = 1, t._result = n) }, function (n) { (t._status === 0 || t._status === -1) && (t._status = 2, t._result = n) }), t._status === -1 && (t._status = 0, t._result = e) } if (t._status === 1) return t._result.default; throw t._result } var At = { current: null }, Yl = { transition: null }, OE = { ReactCurrentDispatcher: At, ReactCurrentBatchConfig: Yl, ReactCurrentOwner: cf }; function Zy() { throw Error("act(...) is not supported in production builds of React.") } ce.Children = { map: _l, forEach: function (t, e, n) { _l(t, function () { e.apply(this, arguments) }, n) }, count: function (t) { var e = 0; return _l(t, function () { e++ }), e }, toArray: function (t) { return _l(t, function (e) { return e }) || [] }, only: function (t) { if (!df(t)) throw Error("React.Children.only expected to receive a single React element child."); return t } }; ce.Component = qs; ce.Fragment = SE; ce.Profiler = AE; ce.PureComponent = lf; ce.StrictMode = IE; ce.Suspense = bE; ce.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = OE; ce.act = Zy; ce.cloneElement = function (t, e, n) { if (t == null) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + t + "."); var r = Ky({}, t.props), i = t.key, s = t.ref, o = t._owner; if (e != null) { if (e.ref !== void 0 && (s = e.ref, o = cf.current), e.key !== void 0 && (i = "" + e.key), t.type && t.type.defaultProps) var l = t.type.defaultProps; for (u in e) Yy.call(e, u) && !Xy.hasOwnProperty(u) && (r[u] = e[u] === void 0 && l !== void 0 ? l[u] : e[u]) } var u = arguments.length - 2; if (u === 1) r.children = n; else if (1 < u) { l = Array(u); for (var h = 0; h < u; h++)l[h] = arguments[h + 2]; r.children = l } return { $$typeof: Na, type: t.type, key: i, ref: s, props: r, _owner: o } }; ce.createContext = function (t) { return t = { $$typeof: NE, _currentValue: t, _currentValue2: t, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null }, t.Provider = { $$typeof: CE, _context: t }, t.Consumer = t }; ce.createElement = Jy; ce.createFactory = function (t) { var e = Jy.bind(null, t); return e.type = t, e }; ce.createRef = function () { return { current: null } }; ce.forwardRef = function (t) { return { $$typeof: PE, render: t } }; ce.isValidElement = df; ce.lazy = function (t) { return { $$typeof: DE, _payload: { _status: -1, _result: t }, _init: VE } }; ce.memo = function (t, e) { return { $$typeof: RE, type: t, compare: e === void 0 ? null : e } }; ce.startTransition = function (t) { var e = Yl.transition; Yl.transition = {}; try { t() } finally { Yl.transition = e } }; ce.unstable_act = Zy; ce.useCallback = function (t, e) { return At.current.useCallback(t, e) }; ce.useContext = function (t) { return At.current.useContext(t) }; ce.useDebugValue = function () { }; ce.useDeferredValue = function (t) { return At.current.useDeferredValue(t) }; ce.useEffect = function (t, e) { return At.current.useEffect(t, e) }; ce.useId = function () { return At.current.useId() }; ce.useImperativeHandle = function (t, e, n) { return At.current.useImperativeHandle(t, e, n) }; ce.useInsertionEffect = function (t, e) { return At.current.useInsertionEffect(t, e) }; ce.useLayoutEffect = function (t, e) { return At.current.useLayoutEffect(t, e) }; ce.useMemo = function (t, e) { return At.current.useMemo(t, e) }; ce.useReducer = function (t, e, n) { return At.current.useReducer(t, e, n) }; ce.useRef = function (t) { return At.current.useRef(t) }; ce.useState = function (t) { return At.current.useState(t) }; ce.useSyncExternalStore = function (t, e, n) { return At.current.useSyncExternalStore(t, e, n) }; ce.useTransition = function () { return At.current.useTransition() }; ce.version = "18.3.1"; Hy.exports = ce; var Y = Hy.exports; const FE = kE(Y);/**
|
|
* @license React
|
|
* react-jsx-runtime.production.min.js
|
|
*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/var UE = Y, zE = Symbol.for("react.element"), BE = Symbol.for("react.fragment"), $E = Object.prototype.hasOwnProperty, WE = UE.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, HE = { key: !0, ref: !0, __self: !0, __source: !0 }; function ev(t, e, n) { var r, i = {}, s = null, o = null; n !== void 0 && (s = "" + n), e.key !== void 0 && (s = "" + e.key), e.ref !== void 0 && (o = e.ref); for (r in e) $E.call(e, r) && !HE.hasOwnProperty(r) && (i[r] = e[r]); if (t && t.defaultProps) for (r in e = t.defaultProps, e) i[r] === void 0 && (i[r] = e[r]); return { $$typeof: zE, type: t, key: s, ref: o, props: i, _owner: WE.current } } rc.Fragment = BE; rc.jsx = ev; rc.jsxs = ev; Wy.exports = rc; var d = Wy.exports, $d = {}, tv = { exports: {} }, Kt = {}, nv = { exports: {} }, rv = {};/**
|
|
* @license React
|
|
* scheduler.production.min.js
|
|
*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/(function (t) { function e(W, ne) { var ee = W.length; W.push(ne); e: for (; 0 < ee;) { var xe = ee - 1 >>> 1, O = W[xe]; if (0 < i(O, ne)) W[xe] = ne, W[ee] = O, ee = xe; else break e } } function n(W) { return W.length === 0 ? null : W[0] } function r(W) { if (W.length === 0) return null; var ne = W[0], ee = W.pop(); if (ee !== ne) { W[0] = ee; e: for (var xe = 0, O = W.length, Ce = O >>> 1; xe < Ce;) { var Qt = 2 * (xe + 1) - 1, Yt = W[Qt], Vt = Qt + 1, Ot = W[Vt]; if (0 > i(Yt, ee)) Vt < O && 0 > i(Ot, Yt) ? (W[xe] = Ot, W[Vt] = ee, xe = Vt) : (W[xe] = Yt, W[Qt] = ee, xe = Qt); else if (Vt < O && 0 > i(Ot, ee)) W[xe] = Ot, W[Vt] = ee, xe = Vt; else break e } } return ne } function i(W, ne) { var ee = W.sortIndex - ne.sortIndex; return ee !== 0 ? ee : W.id - ne.id } if (typeof performance == "object" && typeof performance.now == "function") { var s = performance; t.unstable_now = function () { return s.now() } } else { var o = Date, l = o.now(); t.unstable_now = function () { return o.now() - l } } var u = [], h = [], p = 1, v = null, m = 3, C = !1, R = !1, L = !1, V = typeof setTimeout == "function" ? setTimeout : null, S = typeof clearTimeout == "function" ? clearTimeout : null, E = typeof setImmediate < "u" ? setImmediate : null; typeof navigator < "u" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling); function I(W) { for (var ne = n(h); ne !== null;) { if (ne.callback === null) r(h); else if (ne.startTime <= W) r(h), ne.sortIndex = ne.expirationTime, e(u, ne); else break; ne = n(h) } } function j(W) { if (L = !1, I(W), !R) if (n(u) !== null) R = !0, ii(K); else { var ne = n(h); ne !== null && Nt(j, ne.startTime - W) } } function K(W, ne) { R = !1, L && (L = !1, S(_), _ = -1), C = !0; var ee = m; try { for (I(ne), v = n(u); v !== null && (!(v.expirationTime > ne) || W && !A());) { var xe = v.callback; if (typeof xe == "function") { v.callback = null, m = v.priorityLevel; var O = xe(v.expirationTime <= ne); ne = t.unstable_now(), typeof O == "function" ? v.callback = O : v === n(u) && r(u), I(ne) } else r(u); v = n(u) } if (v !== null) var Ce = !0; else { var Qt = n(h); Qt !== null && Nt(j, Qt.startTime - ne), Ce = !1 } return Ce } finally { v = null, m = ee, C = !1 } } var $ = !1, x = null, _ = -1, w = 5, k = -1; function A() { return !(t.unstable_now() - k < w) } function P() { if (x !== null) { var W = t.unstable_now(); k = W; var ne = !0; try { ne = x(!0, W) } finally { ne ? T() : ($ = !1, x = null) } } else $ = !1 } var T; if (typeof E == "function") T = function () { E(P) }; else if (typeof MessageChannel < "u") { var ze = new MessageChannel, ln = ze.port2; ze.port1.onmessage = P, T = function () { ln.postMessage(null) } } else T = function () { V(P, 0) }; function ii(W) { x = W, $ || ($ = !0, T()) } function Nt(W, ne) { _ = V(function () { W(t.unstable_now()) }, ne) } t.unstable_IdlePriority = 5, t.unstable_ImmediatePriority = 1, t.unstable_LowPriority = 4, t.unstable_NormalPriority = 3, t.unstable_Profiling = null, t.unstable_UserBlockingPriority = 2, t.unstable_cancelCallback = function (W) { W.callback = null }, t.unstable_continueExecution = function () { R || C || (R = !0, ii(K)) }, t.unstable_forceFrameRate = function (W) { 0 > W || 125 < W ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : w = 0 < W ? Math.floor(1e3 / W) : 5 }, t.unstable_getCurrentPriorityLevel = function () { return m }, t.unstable_getFirstCallbackNode = function () { return n(u) }, t.unstable_next = function (W) { switch (m) { case 1: case 2: case 3: var ne = 3; break; default: ne = m }var ee = m; m = ne; try { return W() } finally { m = ee } }, t.unstable_pauseExecution = function () { }, t.unstable_requestPaint = function () { }, t.unstable_runWithPriority = function (W, ne) { switch (W) { case 1: case 2: case 3: case 4: case 5: break; default: W = 3 }var ee = m; m = W; try { return ne() } finally { m = ee } }, t.unstable_scheduleCallback = function (W, ne, ee) { var xe = t.unstable_now(); switch (typeof ee == "object" && ee !== null ? (ee = ee.delay, ee = typeof ee == "number" && 0 < ee ? xe + ee : xe) : ee = xe, W) { case 1: var O = -1; break; case 2: O = 250; break; case 5: O = 1073741823; break; case 4: O = 1e4; break; default: O = 5e3 }return O = ee + O, W = { id: p++, callback: ne, priorityLevel: W, startTime: ee, expirationTime: O, sortIndex: -1 }, ee > xe ? (W.sortIndex = ee, e(h, W), n(u) === null && W === n(h) && (L ? (S(_), _ = -1) : L = !0, Nt(j, ee - xe))) : (W.sortIndex = O, e(u, W), R || C || (R = !0, ii(K))), W }, t.unstable_shouldYield = A, t.unstable_wrapCallback = function (W) { var ne = m; return function () { var ee = m; m = ne; try { return W.apply(this, arguments) } finally { m = ee } } } })(rv); nv.exports = rv; var qE = nv.exports;/**
|
|
* @license React
|
|
* react-dom.production.min.js
|
|
*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/var KE = Y, qt = qE; function B(t) { for (var e = "https://reactjs.org/docs/error-decoder.html?invariant=" + t, n = 1; n < arguments.length; n++)e += "&args[]=" + encodeURIComponent(arguments[n]); return "Minified React error #" + t + "; visit " + e + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings." } var iv = new Set, ra = {}; function Fi(t, e) { bs(t, e), bs(t + "Capture", e) } function bs(t, e) { for (ra[t] = e, t = 0; t < e.length; t++)iv.add(e[t]) } var Jn = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), Wd = Object.prototype.hasOwnProperty, GE = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, mm = {}, gm = {}; function QE(t) { return Wd.call(gm, t) ? !0 : Wd.call(mm, t) ? !1 : GE.test(t) ? gm[t] = !0 : (mm[t] = !0, !1) } function YE(t, e, n, r) { if (n !== null && n.type === 0) return !1; switch (typeof e) { case "function": case "symbol": return !0; case "boolean": return r ? !1 : n !== null ? !n.acceptsBooleans : (t = t.toLowerCase().slice(0, 5), t !== "data-" && t !== "aria-"); default: return !1 } } function XE(t, e, n, r) { if (e === null || typeof e > "u" || YE(t, e, n, r)) return !0; if (r) return !1; if (n !== null) switch (n.type) { case 3: return !e; case 4: return e === !1; case 5: return isNaN(e); case 6: return isNaN(e) || 1 > e }return !1 } function Ct(t, e, n, r, i, s, o) { this.acceptsBooleans = e === 2 || e === 3 || e === 4, this.attributeName = r, this.attributeNamespace = i, this.mustUseProperty = n, this.propertyName = t, this.type = e, this.sanitizeURL = s, this.removeEmptyString = o } var dt = {}; "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function (t) { dt[t] = new Ct(t, 0, !1, t, null, !1, !1) });[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function (t) { var e = t[0]; dt[e] = new Ct(e, 1, !1, t[1], null, !1, !1) });["contentEditable", "draggable", "spellCheck", "value"].forEach(function (t) { dt[t] = new Ct(t, 2, !1, t.toLowerCase(), null, !1, !1) });["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function (t) { dt[t] = new Ct(t, 2, !1, t, null, !1, !1) }); "allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function (t) { dt[t] = new Ct(t, 3, !1, t.toLowerCase(), null, !1, !1) });["checked", "multiple", "muted", "selected"].forEach(function (t) { dt[t] = new Ct(t, 3, !0, t, null, !1, !1) });["capture", "download"].forEach(function (t) { dt[t] = new Ct(t, 4, !1, t, null, !1, !1) });["cols", "rows", "size", "span"].forEach(function (t) { dt[t] = new Ct(t, 6, !1, t, null, !1, !1) });["rowSpan", "start"].forEach(function (t) { dt[t] = new Ct(t, 5, !1, t.toLowerCase(), null, !1, !1) }); var hf = /[\-:]([a-z])/g; function ff(t) { return t[1].toUpperCase() } "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function (t) { var e = t.replace(hf, ff); dt[e] = new Ct(e, 1, !1, t, null, !1, !1) }); "xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function (t) { var e = t.replace(hf, ff); dt[e] = new Ct(e, 1, !1, t, "http://www.w3.org/1999/xlink", !1, !1) });["xml:base", "xml:lang", "xml:space"].forEach(function (t) { var e = t.replace(hf, ff); dt[e] = new Ct(e, 1, !1, t, "http://www.w3.org/XML/1998/namespace", !1, !1) });["tabIndex", "crossOrigin"].forEach(function (t) { dt[t] = new Ct(t, 1, !1, t.toLowerCase(), null, !1, !1) }); dt.xlinkHref = new Ct("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1);["src", "href", "action", "formAction"].forEach(function (t) { dt[t] = new Ct(t, 1, !1, t.toLowerCase(), null, !0, !0) }); function pf(t, e, n, r) { var i = dt.hasOwnProperty(e) ? dt[e] : null; (i !== null ? i.type !== 0 : r || !(2 < e.length) || e[0] !== "o" && e[0] !== "O" || e[1] !== "n" && e[1] !== "N") && (XE(e, n, i, r) && (n = null), r || i === null ? QE(e) && (n === null ? t.removeAttribute(e) : t.setAttribute(e, "" + n)) : i.mustUseProperty ? t[i.propertyName] = n === null ? i.type === 3 ? !1 : "" : n : (e = i.attributeName, r = i.attributeNamespace, n === null ? t.removeAttribute(e) : (i = i.type, n = i === 3 || i === 4 && n === !0 ? "" : "" + n, r ? t.setAttributeNS(r, e, n) : t.setAttribute(e, n)))) } var ar = KE.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, wl = Symbol.for("react.element"), ls = Symbol.for("react.portal"), us = Symbol.for("react.fragment"), mf = Symbol.for("react.strict_mode"), Hd = Symbol.for("react.profiler"), sv = Symbol.for("react.provider"), ov = Symbol.for("react.context"), gf = Symbol.for("react.forward_ref"), qd = Symbol.for("react.suspense"), Kd = Symbol.for("react.suspense_list"), yf = Symbol.for("react.memo"), kr = Symbol.for("react.lazy"), av = Symbol.for("react.offscreen"), ym = Symbol.iterator; function Eo(t) { return t === null || typeof t != "object" ? null : (t = ym && t[ym] || t["@@iterator"], typeof t == "function" ? t : null) } var Ve = Object.assign, ed; function Do(t) {
|
|
if (ed === void 0) try { throw Error() } catch (n) { var e = n.stack.trim().match(/\n( *(at )?)/); ed = e && e[1] || "" } return `
|
|
`+ ed + t
|
|
} var td = !1; function nd(t, e) {
|
|
if (!t || td) return ""; td = !0; var n = Error.prepareStackTrace; Error.prepareStackTrace = void 0; try { if (e) if (e = function () { throw Error() }, Object.defineProperty(e.prototype, "props", { set: function () { throw Error() } }), typeof Reflect == "object" && Reflect.construct) { try { Reflect.construct(e, []) } catch (h) { var r = h } Reflect.construct(t, [], e) } else { try { e.call() } catch (h) { r = h } t.call(e.prototype) } else { try { throw Error() } catch (h) { r = h } t() } } catch (h) {
|
|
if (h && r && typeof h.stack == "string") {
|
|
for (var i = h.stack.split(`
|
|
`), s = r.stack.split(`
|
|
`), o = i.length - 1, l = s.length - 1; 1 <= o && 0 <= l && i[o] !== s[l];)l--; for (; 1 <= o && 0 <= l; o--, l--)if (i[o] !== s[l]) {
|
|
if (o !== 1 || l !== 1) do if (o--, l--, 0 > l || i[o] !== s[l]) {
|
|
var u = `
|
|
`+ i[o].replace(" at new ", " at "); return t.displayName && u.includes("<anonymous>") && (u = u.replace("<anonymous>", t.displayName)), u
|
|
} while (1 <= o && 0 <= l); break
|
|
}
|
|
}
|
|
} finally { td = !1, Error.prepareStackTrace = n } return (t = t ? t.displayName || t.name : "") ? Do(t) : ""
|
|
} function JE(t) { switch (t.tag) { case 5: return Do(t.type); case 16: return Do("Lazy"); case 13: return Do("Suspense"); case 19: return Do("SuspenseList"); case 0: case 2: case 15: return t = nd(t.type, !1), t; case 11: return t = nd(t.type.render, !1), t; case 1: return t = nd(t.type, !0), t; default: return "" } } function Gd(t) { if (t == null) return null; if (typeof t == "function") return t.displayName || t.name || null; if (typeof t == "string") return t; switch (t) { case us: return "Fragment"; case ls: return "Portal"; case Hd: return "Profiler"; case mf: return "StrictMode"; case qd: return "Suspense"; case Kd: return "SuspenseList" }if (typeof t == "object") switch (t.$$typeof) { case ov: return (t.displayName || "Context") + ".Consumer"; case sv: return (t._context.displayName || "Context") + ".Provider"; case gf: var e = t.render; return t = t.displayName, t || (t = e.displayName || e.name || "", t = t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"), t; case yf: return e = t.displayName || null, e !== null ? e : Gd(t.type) || "Memo"; case kr: e = t._payload, t = t._init; try { return Gd(t(e)) } catch { } }return null } function ZE(t) { var e = t.type; switch (t.tag) { case 24: return "Cache"; case 9: return (e.displayName || "Context") + ".Consumer"; case 10: return (e._context.displayName || "Context") + ".Provider"; case 18: return "DehydratedFragment"; case 11: return t = e.render, t = t.displayName || t.name || "", e.displayName || (t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"); case 7: return "Fragment"; case 5: return e; case 4: return "Portal"; case 3: return "Root"; case 6: return "Text"; case 16: return Gd(e); case 8: return e === mf ? "StrictMode" : "Mode"; case 22: return "Offscreen"; case 12: return "Profiler"; case 21: return "Scope"; case 13: return "Suspense"; case 19: return "SuspenseList"; case 25: return "TracingMarker"; case 1: case 0: case 17: case 2: case 14: case 15: if (typeof e == "function") return e.displayName || e.name || null; if (typeof e == "string") return e }return null } function Kr(t) { switch (typeof t) { case "boolean": case "number": case "string": case "undefined": return t; case "object": return t; default: return "" } } function lv(t) { var e = t.type; return (t = t.nodeName) && t.toLowerCase() === "input" && (e === "checkbox" || e === "radio") } function ex(t) { var e = lv(t) ? "checked" : "value", n = Object.getOwnPropertyDescriptor(t.constructor.prototype, e), r = "" + t[e]; if (!t.hasOwnProperty(e) && typeof n < "u" && typeof n.get == "function" && typeof n.set == "function") { var i = n.get, s = n.set; return Object.defineProperty(t, e, { configurable: !0, get: function () { return i.call(this) }, set: function (o) { r = "" + o, s.call(this, o) } }), Object.defineProperty(t, e, { enumerable: n.enumerable }), { getValue: function () { return r }, setValue: function (o) { r = "" + o }, stopTracking: function () { t._valueTracker = null, delete t[e] } } } } function El(t) { t._valueTracker || (t._valueTracker = ex(t)) } function uv(t) { if (!t) return !1; var e = t._valueTracker; if (!e) return !0; var n = e.getValue(), r = ""; return t && (r = lv(t) ? t.checked ? "true" : "false" : t.value), t = r, t !== n ? (e.setValue(t), !0) : !1 } function gu(t) { if (t = t || (typeof document < "u" ? document : void 0), typeof t > "u") return null; try { return t.activeElement || t.body } catch { return t.body } } function Qd(t, e) { var n = e.checked; return Ve({}, e, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: n ?? t._wrapperState.initialChecked }) } function vm(t, e) { var n = e.defaultValue == null ? "" : e.defaultValue, r = e.checked != null ? e.checked : e.defaultChecked; n = Kr(e.value != null ? e.value : n), t._wrapperState = { initialChecked: r, initialValue: n, controlled: e.type === "checkbox" || e.type === "radio" ? e.checked != null : e.value != null } } function cv(t, e) { e = e.checked, e != null && pf(t, "checked", e, !1) } function Yd(t, e) { cv(t, e); var n = Kr(e.value), r = e.type; if (n != null) r === "number" ? (n === 0 && t.value === "" || t.value != n) && (t.value = "" + n) : t.value !== "" + n && (t.value = "" + n); else if (r === "submit" || r === "reset") { t.removeAttribute("value"); return } e.hasOwnProperty("value") ? Xd(t, e.type, n) : e.hasOwnProperty("defaultValue") && Xd(t, e.type, Kr(e.defaultValue)), e.checked == null && e.defaultChecked != null && (t.defaultChecked = !!e.defaultChecked) } function _m(t, e, n) { if (e.hasOwnProperty("value") || e.hasOwnProperty("defaultValue")) { var r = e.type; if (!(r !== "submit" && r !== "reset" || e.value !== void 0 && e.value !== null)) return; e = "" + t._wrapperState.initialValue, n || e === t.value || (t.value = e), t.defaultValue = e } n = t.name, n !== "" && (t.name = ""), t.defaultChecked = !!t._wrapperState.initialChecked, n !== "" && (t.name = n) } function Xd(t, e, n) { (e !== "number" || gu(t.ownerDocument) !== t) && (n == null ? t.defaultValue = "" + t._wrapperState.initialValue : t.defaultValue !== "" + n && (t.defaultValue = "" + n)) } var Lo = Array.isArray; function Es(t, e, n, r) { if (t = t.options, e) { e = {}; for (var i = 0; i < n.length; i++)e["$" + n[i]] = !0; for (n = 0; n < t.length; n++)i = e.hasOwnProperty("$" + t[n].value), t[n].selected !== i && (t[n].selected = i), i && r && (t[n].defaultSelected = !0) } else { for (n = "" + Kr(n), e = null, i = 0; i < t.length; i++) { if (t[i].value === n) { t[i].selected = !0, r && (t[i].defaultSelected = !0); return } e !== null || t[i].disabled || (e = t[i]) } e !== null && (e.selected = !0) } } function Jd(t, e) { if (e.dangerouslySetInnerHTML != null) throw Error(B(91)); return Ve({}, e, { value: void 0, defaultValue: void 0, children: "" + t._wrapperState.initialValue }) } function wm(t, e) { var n = e.value; if (n == null) { if (n = e.children, e = e.defaultValue, n != null) { if (e != null) throw Error(B(92)); if (Lo(n)) { if (1 < n.length) throw Error(B(93)); n = n[0] } e = n } e == null && (e = ""), n = e } t._wrapperState = { initialValue: Kr(n) } } function dv(t, e) { var n = Kr(e.value), r = Kr(e.defaultValue); n != null && (n = "" + n, n !== t.value && (t.value = n), e.defaultValue == null && t.defaultValue !== n && (t.defaultValue = n)), r != null && (t.defaultValue = "" + r) } function Em(t) { var e = t.textContent; e === t._wrapperState.initialValue && e !== "" && e !== null && (t.value = e) } function hv(t) { switch (t) { case "svg": return "http://www.w3.org/2000/svg"; case "math": return "http://www.w3.org/1998/Math/MathML"; default: return "http://www.w3.org/1999/xhtml" } } function Zd(t, e) { return t == null || t === "http://www.w3.org/1999/xhtml" ? hv(e) : t === "http://www.w3.org/2000/svg" && e === "foreignObject" ? "http://www.w3.org/1999/xhtml" : t } var xl, fv = function (t) { return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction ? function (e, n, r, i) { MSApp.execUnsafeLocalFunction(function () { return t(e, n, r, i) }) } : t }(function (t, e) { if (t.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in t) t.innerHTML = e; else { for (xl = xl || document.createElement("div"), xl.innerHTML = "<svg>" + e.valueOf().toString() + "</svg>", e = xl.firstChild; t.firstChild;)t.removeChild(t.firstChild); for (; e.firstChild;)t.appendChild(e.firstChild) } }); function ia(t, e) { if (e) { var n = t.firstChild; if (n && n === t.lastChild && n.nodeType === 3) { n.nodeValue = e; return } } t.textContent = e } var $o = { animationIterationCount: !0, aspectRatio: !0, borderImageOutset: !0, borderImageSlice: !0, borderImageWidth: !0, boxFlex: !0, boxFlexGroup: !0, boxOrdinalGroup: !0, columnCount: !0, columns: !0, flex: !0, flexGrow: !0, flexPositive: !0, flexShrink: !0, flexNegative: !0, flexOrder: !0, gridArea: !0, gridRow: !0, gridRowEnd: !0, gridRowSpan: !0, gridRowStart: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnSpan: !0, gridColumnStart: !0, fontWeight: !0, lineClamp: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, tabSize: !0, widows: !0, zIndex: !0, zoom: !0, fillOpacity: !0, floodOpacity: !0, stopOpacity: !0, strokeDasharray: !0, strokeDashoffset: !0, strokeMiterlimit: !0, strokeOpacity: !0, strokeWidth: !0 }, tx = ["Webkit", "ms", "Moz", "O"]; Object.keys($o).forEach(function (t) { tx.forEach(function (e) { e = e + t.charAt(0).toUpperCase() + t.substring(1), $o[e] = $o[t] }) }); function pv(t, e, n) { return e == null || typeof e == "boolean" || e === "" ? "" : n || typeof e != "number" || e === 0 || $o.hasOwnProperty(t) && $o[t] ? ("" + e).trim() : e + "px" } function mv(t, e) { t = t.style; for (var n in e) if (e.hasOwnProperty(n)) { var r = n.indexOf("--") === 0, i = pv(n, e[n], r); n === "float" && (n = "cssFloat"), r ? t.setProperty(n, i) : t[n] = i } } var nx = Ve({ menuitem: !0 }, { area: !0, base: !0, br: !0, col: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 }); function eh(t, e) { if (e) { if (nx[t] && (e.children != null || e.dangerouslySetInnerHTML != null)) throw Error(B(137, t)); if (e.dangerouslySetInnerHTML != null) { if (e.children != null) throw Error(B(60)); if (typeof e.dangerouslySetInnerHTML != "object" || !("__html" in e.dangerouslySetInnerHTML)) throw Error(B(61)) } if (e.style != null && typeof e.style != "object") throw Error(B(62)) } } function th(t, e) { if (t.indexOf("-") === -1) return typeof e.is == "string"; switch (t) { case "annotation-xml": case "color-profile": case "font-face": case "font-face-src": case "font-face-uri": case "font-face-format": case "font-face-name": case "missing-glyph": return !1; default: return !0 } } var nh = null; function vf(t) { return t = t.target || t.srcElement || window, t.correspondingUseElement && (t = t.correspondingUseElement), t.nodeType === 3 ? t.parentNode : t } var rh = null, xs = null, ks = null; function xm(t) { if (t = Ra(t)) { if (typeof rh != "function") throw Error(B(280)); var e = t.stateNode; e && (e = lc(e), rh(t.stateNode, t.type, e)) } } function gv(t) { xs ? ks ? ks.push(t) : ks = [t] : xs = t } function yv() { if (xs) { var t = xs, e = ks; if (ks = xs = null, xm(t), e) for (t = 0; t < e.length; t++)xm(e[t]) } } function vv(t, e) { return t(e) } function _v() { } var rd = !1; function wv(t, e, n) { if (rd) return t(e, n); rd = !0; try { return vv(t, e, n) } finally { rd = !1, (xs !== null || ks !== null) && (_v(), yv()) } } function sa(t, e) { var n = t.stateNode; if (n === null) return null; var r = lc(n); if (r === null) return null; n = r[e]; e: switch (e) { case "onClick": case "onClickCapture": case "onDoubleClick": case "onDoubleClickCapture": case "onMouseDown": case "onMouseDownCapture": case "onMouseMove": case "onMouseMoveCapture": case "onMouseUp": case "onMouseUpCapture": case "onMouseEnter": (r = !r.disabled) || (t = t.type, r = !(t === "button" || t === "input" || t === "select" || t === "textarea")), t = !r; break e; default: t = !1 }if (t) return null; if (n && typeof n != "function") throw Error(B(231, e, typeof n)); return n } var ih = !1; if (Jn) try { var xo = {}; Object.defineProperty(xo, "passive", { get: function () { ih = !0 } }), window.addEventListener("test", xo, xo), window.removeEventListener("test", xo, xo) } catch { ih = !1 } function rx(t, e, n, r, i, s, o, l, u) { var h = Array.prototype.slice.call(arguments, 3); try { e.apply(n, h) } catch (p) { this.onError(p) } } var Wo = !1, yu = null, vu = !1, sh = null, ix = { onError: function (t) { Wo = !0, yu = t } }; function sx(t, e, n, r, i, s, o, l, u) { Wo = !1, yu = null, rx.apply(ix, arguments) } function ox(t, e, n, r, i, s, o, l, u) { if (sx.apply(this, arguments), Wo) { if (Wo) { var h = yu; Wo = !1, yu = null } else throw Error(B(198)); vu || (vu = !0, sh = h) } } function Ui(t) { var e = t, n = t; if (t.alternate) for (; e.return;)e = e.return; else { t = e; do e = t, e.flags & 4098 && (n = e.return), t = e.return; while (t) } return e.tag === 3 ? n : null } function Ev(t) { if (t.tag === 13) { var e = t.memoizedState; if (e === null && (t = t.alternate, t !== null && (e = t.memoizedState)), e !== null) return e.dehydrated } return null } function km(t) { if (Ui(t) !== t) throw Error(B(188)) } function ax(t) { var e = t.alternate; if (!e) { if (e = Ui(t), e === null) throw Error(B(188)); return e !== t ? null : t } for (var n = t, r = e; ;) { var i = n.return; if (i === null) break; var s = i.alternate; if (s === null) { if (r = i.return, r !== null) { n = r; continue } break } if (i.child === s.child) { for (s = i.child; s;) { if (s === n) return km(i), t; if (s === r) return km(i), e; s = s.sibling } throw Error(B(188)) } if (n.return !== r.return) n = i, r = s; else { for (var o = !1, l = i.child; l;) { if (l === n) { o = !0, n = i, r = s; break } if (l === r) { o = !0, r = i, n = s; break } l = l.sibling } if (!o) { for (l = s.child; l;) { if (l === n) { o = !0, n = s, r = i; break } if (l === r) { o = !0, r = s, n = i; break } l = l.sibling } if (!o) throw Error(B(189)) } } if (n.alternate !== r) throw Error(B(190)) } if (n.tag !== 3) throw Error(B(188)); return n.stateNode.current === n ? t : e } function xv(t) { return t = ax(t), t !== null ? kv(t) : null } function kv(t) { if (t.tag === 5 || t.tag === 6) return t; for (t = t.child; t !== null;) { var e = kv(t); if (e !== null) return e; t = t.sibling } return null } var Tv = qt.unstable_scheduleCallback, Tm = qt.unstable_cancelCallback, lx = qt.unstable_shouldYield, ux = qt.unstable_requestPaint, $e = qt.unstable_now, cx = qt.unstable_getCurrentPriorityLevel, _f = qt.unstable_ImmediatePriority, Sv = qt.unstable_UserBlockingPriority, _u = qt.unstable_NormalPriority, dx = qt.unstable_LowPriority, Iv = qt.unstable_IdlePriority, ic = null, Nn = null; function hx(t) { if (Nn && typeof Nn.onCommitFiberRoot == "function") try { Nn.onCommitFiberRoot(ic, t, void 0, (t.current.flags & 128) === 128) } catch { } } var vn = Math.clz32 ? Math.clz32 : mx, fx = Math.log, px = Math.LN2; function mx(t) { return t >>>= 0, t === 0 ? 32 : 31 - (fx(t) / px | 0) | 0 } var kl = 64, Tl = 4194304; function Mo(t) { switch (t & -t) { case 1: return 1; case 2: return 2; case 4: return 4; case 8: return 8; case 16: return 16; case 32: return 32; case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return t & 4194240; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return t & 130023424; case 134217728: return 134217728; case 268435456: return 268435456; case 536870912: return 536870912; case 1073741824: return 1073741824; default: return t } } function wu(t, e) { var n = t.pendingLanes; if (n === 0) return 0; var r = 0, i = t.suspendedLanes, s = t.pingedLanes, o = n & 268435455; if (o !== 0) { var l = o & ~i; l !== 0 ? r = Mo(l) : (s &= o, s !== 0 && (r = Mo(s))) } else o = n & ~i, o !== 0 ? r = Mo(o) : s !== 0 && (r = Mo(s)); if (r === 0) return 0; if (e !== 0 && e !== r && !(e & i) && (i = r & -r, s = e & -e, i >= s || i === 16 && (s & 4194240) !== 0)) return e; if (r & 4 && (r |= n & 16), e = t.entangledLanes, e !== 0) for (t = t.entanglements, e &= r; 0 < e;)n = 31 - vn(e), i = 1 << n, r |= t[n], e &= ~i; return r } function gx(t, e) { switch (t) { case 1: case 2: case 4: return e + 250; case 8: case 16: case 32: case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return e + 5e3; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return -1; case 134217728: case 268435456: case 536870912: case 1073741824: return -1; default: return -1 } } function yx(t, e) { for (var n = t.suspendedLanes, r = t.pingedLanes, i = t.expirationTimes, s = t.pendingLanes; 0 < s;) { var o = 31 - vn(s), l = 1 << o, u = i[o]; u === -1 ? (!(l & n) || l & r) && (i[o] = gx(l, e)) : u <= e && (t.expiredLanes |= l), s &= ~l } } function oh(t) { return t = t.pendingLanes & -1073741825, t !== 0 ? t : t & 1073741824 ? 1073741824 : 0 } function Av() { var t = kl; return kl <<= 1, !(kl & 4194240) && (kl = 64), t } function id(t) { for (var e = [], n = 0; 31 > n; n++)e.push(t); return e } function Pa(t, e, n) { t.pendingLanes |= e, e !== 536870912 && (t.suspendedLanes = 0, t.pingedLanes = 0), t = t.eventTimes, e = 31 - vn(e), t[e] = n } function vx(t, e) { var n = t.pendingLanes & ~e; t.pendingLanes = e, t.suspendedLanes = 0, t.pingedLanes = 0, t.expiredLanes &= e, t.mutableReadLanes &= e, t.entangledLanes &= e, e = t.entanglements; var r = t.eventTimes; for (t = t.expirationTimes; 0 < n;) { var i = 31 - vn(n), s = 1 << i; e[i] = 0, r[i] = -1, t[i] = -1, n &= ~s } } function wf(t, e) { var n = t.entangledLanes |= e; for (t = t.entanglements; n;) { var r = 31 - vn(n), i = 1 << r; i & e | t[r] & e && (t[r] |= e), n &= ~i } } var we = 0; function Cv(t) { return t &= -t, 1 < t ? 4 < t ? t & 268435455 ? 16 : 536870912 : 4 : 1 } var Nv, Ef, Pv, bv, Rv, ah = !1, Sl = [], Lr = null, Mr = null, jr = null, oa = new Map, aa = new Map, Sr = [], _x = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "); function Sm(t, e) { switch (t) { case "focusin": case "focusout": Lr = null; break; case "dragenter": case "dragleave": Mr = null; break; case "mouseover": case "mouseout": jr = null; break; case "pointerover": case "pointerout": oa.delete(e.pointerId); break; case "gotpointercapture": case "lostpointercapture": aa.delete(e.pointerId) } } function ko(t, e, n, r, i, s) { return t === null || t.nativeEvent !== s ? (t = { blockedOn: e, domEventName: n, eventSystemFlags: r, nativeEvent: s, targetContainers: [i] }, e !== null && (e = Ra(e), e !== null && Ef(e)), t) : (t.eventSystemFlags |= r, e = t.targetContainers, i !== null && e.indexOf(i) === -1 && e.push(i), t) } function wx(t, e, n, r, i) { switch (e) { case "focusin": return Lr = ko(Lr, t, e, n, r, i), !0; case "dragenter": return Mr = ko(Mr, t, e, n, r, i), !0; case "mouseover": return jr = ko(jr, t, e, n, r, i), !0; case "pointerover": var s = i.pointerId; return oa.set(s, ko(oa.get(s) || null, t, e, n, r, i)), !0; case "gotpointercapture": return s = i.pointerId, aa.set(s, ko(aa.get(s) || null, t, e, n, r, i)), !0 }return !1 } function Dv(t) { var e = Ei(t.target); if (e !== null) { var n = Ui(e); if (n !== null) { if (e = n.tag, e === 13) { if (e = Ev(n), e !== null) { t.blockedOn = e, Rv(t.priority, function () { Pv(n) }); return } } else if (e === 3 && n.stateNode.current.memoizedState.isDehydrated) { t.blockedOn = n.tag === 3 ? n.stateNode.containerInfo : null; return } } } t.blockedOn = null } function Xl(t) { if (t.blockedOn !== null) return !1; for (var e = t.targetContainers; 0 < e.length;) { var n = lh(t.domEventName, t.eventSystemFlags, e[0], t.nativeEvent); if (n === null) { n = t.nativeEvent; var r = new n.constructor(n.type, n); nh = r, n.target.dispatchEvent(r), nh = null } else return e = Ra(n), e !== null && Ef(e), t.blockedOn = n, !1; e.shift() } return !0 } function Im(t, e, n) { Xl(t) && n.delete(e) } function Ex() { ah = !1, Lr !== null && Xl(Lr) && (Lr = null), Mr !== null && Xl(Mr) && (Mr = null), jr !== null && Xl(jr) && (jr = null), oa.forEach(Im), aa.forEach(Im) } function To(t, e) { t.blockedOn === e && (t.blockedOn = null, ah || (ah = !0, qt.unstable_scheduleCallback(qt.unstable_NormalPriority, Ex))) } function la(t) { function e(i) { return To(i, t) } if (0 < Sl.length) { To(Sl[0], t); for (var n = 1; n < Sl.length; n++) { var r = Sl[n]; r.blockedOn === t && (r.blockedOn = null) } } for (Lr !== null && To(Lr, t), Mr !== null && To(Mr, t), jr !== null && To(jr, t), oa.forEach(e), aa.forEach(e), n = 0; n < Sr.length; n++)r = Sr[n], r.blockedOn === t && (r.blockedOn = null); for (; 0 < Sr.length && (n = Sr[0], n.blockedOn === null);)Dv(n), n.blockedOn === null && Sr.shift() } var Ts = ar.ReactCurrentBatchConfig, Eu = !0; function xx(t, e, n, r) { var i = we, s = Ts.transition; Ts.transition = null; try { we = 1, xf(t, e, n, r) } finally { we = i, Ts.transition = s } } function kx(t, e, n, r) { var i = we, s = Ts.transition; Ts.transition = null; try { we = 4, xf(t, e, n, r) } finally { we = i, Ts.transition = s } } function xf(t, e, n, r) { if (Eu) { var i = lh(t, e, n, r); if (i === null) pd(t, e, r, xu, n), Sm(t, r); else if (wx(i, t, e, n, r)) r.stopPropagation(); else if (Sm(t, r), e & 4 && -1 < _x.indexOf(t)) { for (; i !== null;) { var s = Ra(i); if (s !== null && Nv(s), s = lh(t, e, n, r), s === null && pd(t, e, r, xu, n), s === i) break; i = s } i !== null && r.stopPropagation() } else pd(t, e, r, null, n) } } var xu = null; function lh(t, e, n, r) { if (xu = null, t = vf(r), t = Ei(t), t !== null) if (e = Ui(t), e === null) t = null; else if (n = e.tag, n === 13) { if (t = Ev(e), t !== null) return t; t = null } else if (n === 3) { if (e.stateNode.current.memoizedState.isDehydrated) return e.tag === 3 ? e.stateNode.containerInfo : null; t = null } else e !== t && (t = null); return xu = t, null } function Lv(t) { switch (t) { case "cancel": case "click": case "close": case "contextmenu": case "copy": case "cut": case "auxclick": case "dblclick": case "dragend": case "dragstart": case "drop": case "focusin": case "focusout": case "input": case "invalid": case "keydown": case "keypress": case "keyup": case "mousedown": case "mouseup": case "paste": case "pause": case "play": case "pointercancel": case "pointerdown": case "pointerup": case "ratechange": case "reset": case "resize": case "seeked": case "submit": case "touchcancel": case "touchend": case "touchstart": case "volumechange": case "change": case "selectionchange": case "textInput": case "compositionstart": case "compositionend": case "compositionupdate": case "beforeblur": case "afterblur": case "beforeinput": case "blur": case "fullscreenchange": case "focus": case "hashchange": case "popstate": case "select": case "selectstart": return 1; case "drag": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "mousemove": case "mouseout": case "mouseover": case "pointermove": case "pointerout": case "pointerover": case "scroll": case "toggle": case "touchmove": case "wheel": case "mouseenter": case "mouseleave": case "pointerenter": case "pointerleave": return 4; case "message": switch (cx()) { case _f: return 1; case Sv: return 4; case _u: case dx: return 16; case Iv: return 536870912; default: return 16 }default: return 16 } } var br = null, kf = null, Jl = null; function Mv() { if (Jl) return Jl; var t, e = kf, n = e.length, r, i = "value" in br ? br.value : br.textContent, s = i.length; for (t = 0; t < n && e[t] === i[t]; t++); var o = n - t; for (r = 1; r <= o && e[n - r] === i[s - r]; r++); return Jl = i.slice(t, 1 < r ? 1 - r : void 0) } function Zl(t) { var e = t.keyCode; return "charCode" in t ? (t = t.charCode, t === 0 && e === 13 && (t = 13)) : t = e, t === 10 && (t = 13), 32 <= t || t === 13 ? t : 0 } function Il() { return !0 } function Am() { return !1 } function Gt(t) { function e(n, r, i, s, o) { this._reactName = n, this._targetInst = i, this.type = r, this.nativeEvent = s, this.target = o, this.currentTarget = null; for (var l in t) t.hasOwnProperty(l) && (n = t[l], this[l] = n ? n(s) : s[l]); return this.isDefaultPrevented = (s.defaultPrevented != null ? s.defaultPrevented : s.returnValue === !1) ? Il : Am, this.isPropagationStopped = Am, this } return Ve(e.prototype, { preventDefault: function () { this.defaultPrevented = !0; var n = this.nativeEvent; n && (n.preventDefault ? n.preventDefault() : typeof n.returnValue != "unknown" && (n.returnValue = !1), this.isDefaultPrevented = Il) }, stopPropagation: function () { var n = this.nativeEvent; n && (n.stopPropagation ? n.stopPropagation() : typeof n.cancelBubble != "unknown" && (n.cancelBubble = !0), this.isPropagationStopped = Il) }, persist: function () { }, isPersistent: Il }), e } var Ks = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function (t) { return t.timeStamp || Date.now() }, defaultPrevented: 0, isTrusted: 0 }, Tf = Gt(Ks), ba = Ve({}, Ks, { view: 0, detail: 0 }), Tx = Gt(ba), sd, od, So, sc = Ve({}, ba, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: Sf, button: 0, buttons: 0, relatedTarget: function (t) { return t.relatedTarget === void 0 ? t.fromElement === t.srcElement ? t.toElement : t.fromElement : t.relatedTarget }, movementX: function (t) { return "movementX" in t ? t.movementX : (t !== So && (So && t.type === "mousemove" ? (sd = t.screenX - So.screenX, od = t.screenY - So.screenY) : od = sd = 0, So = t), sd) }, movementY: function (t) { return "movementY" in t ? t.movementY : od } }), Cm = Gt(sc), Sx = Ve({}, sc, { dataTransfer: 0 }), Ix = Gt(Sx), Ax = Ve({}, ba, { relatedTarget: 0 }), ad = Gt(Ax), Cx = Ve({}, Ks, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), Nx = Gt(Cx), Px = Ve({}, Ks, { clipboardData: function (t) { return "clipboardData" in t ? t.clipboardData : window.clipboardData } }), bx = Gt(Px), Rx = Ve({}, Ks, { data: 0 }), Nm = Gt(Rx), Dx = { Esc: "Escape", Spacebar: " ", Left: "ArrowLeft", Up: "ArrowUp", Right: "ArrowRight", Down: "ArrowDown", Del: "Delete", Win: "OS", Menu: "ContextMenu", Apps: "ContextMenu", Scroll: "ScrollLock", MozPrintableKey: "Unidentified" }, Lx = { 8: "Backspace", 9: "Tab", 12: "Clear", 13: "Enter", 16: "Shift", 17: "Control", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Escape", 32: " ", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "ArrowLeft", 38: "ArrowUp", 39: "ArrowRight", 40: "ArrowDown", 45: "Insert", 46: "Delete", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 144: "NumLock", 145: "ScrollLock", 224: "Meta" }, Mx = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; function jx(t) { var e = this.nativeEvent; return e.getModifierState ? e.getModifierState(t) : (t = Mx[t]) ? !!e[t] : !1 } function Sf() { return jx } var Vx = Ve({}, ba, { key: function (t) { if (t.key) { var e = Dx[t.key] || t.key; if (e !== "Unidentified") return e } return t.type === "keypress" ? (t = Zl(t), t === 13 ? "Enter" : String.fromCharCode(t)) : t.type === "keydown" || t.type === "keyup" ? Lx[t.keyCode] || "Unidentified" : "" }, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: Sf, charCode: function (t) { return t.type === "keypress" ? Zl(t) : 0 }, keyCode: function (t) { return t.type === "keydown" || t.type === "keyup" ? t.keyCode : 0 }, which: function (t) { return t.type === "keypress" ? Zl(t) : t.type === "keydown" || t.type === "keyup" ? t.keyCode : 0 } }), Ox = Gt(Vx), Fx = Ve({}, sc, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Pm = Gt(Fx), Ux = Ve({}, ba, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: Sf }), zx = Gt(Ux), Bx = Ve({}, Ks, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), $x = Gt(Bx), Wx = Ve({}, sc, { deltaX: function (t) { return "deltaX" in t ? t.deltaX : "wheelDeltaX" in t ? -t.wheelDeltaX : 0 }, deltaY: function (t) { return "deltaY" in t ? t.deltaY : "wheelDeltaY" in t ? -t.wheelDeltaY : "wheelDelta" in t ? -t.wheelDelta : 0 }, deltaZ: 0, deltaMode: 0 }), Hx = Gt(Wx), qx = [9, 13, 27, 32], If = Jn && "CompositionEvent" in window, Ho = null; Jn && "documentMode" in document && (Ho = document.documentMode); var Kx = Jn && "TextEvent" in window && !Ho, jv = Jn && (!If || Ho && 8 < Ho && 11 >= Ho), bm = " ", Rm = !1; function Vv(t, e) { switch (t) { case "keyup": return qx.indexOf(e.keyCode) !== -1; case "keydown": return e.keyCode !== 229; case "keypress": case "mousedown": case "focusout": return !0; default: return !1 } } function Ov(t) { return t = t.detail, typeof t == "object" && "data" in t ? t.data : null } var cs = !1; function Gx(t, e) { switch (t) { case "compositionend": return Ov(e); case "keypress": return e.which !== 32 ? null : (Rm = !0, bm); case "textInput": return t = e.data, t === bm && Rm ? null : t; default: return null } } function Qx(t, e) { if (cs) return t === "compositionend" || !If && Vv(t, e) ? (t = Mv(), Jl = kf = br = null, cs = !1, t) : null; switch (t) { case "paste": return null; case "keypress": if (!(e.ctrlKey || e.altKey || e.metaKey) || e.ctrlKey && e.altKey) { if (e.char && 1 < e.char.length) return e.char; if (e.which) return String.fromCharCode(e.which) } return null; case "compositionend": return jv && e.locale !== "ko" ? null : e.data; default: return null } } var Yx = { color: !0, date: !0, datetime: !0, "datetime-local": !0, email: !0, month: !0, number: !0, password: !0, range: !0, search: !0, tel: !0, text: !0, time: !0, url: !0, week: !0 }; function Dm(t) { var e = t && t.nodeName && t.nodeName.toLowerCase(); return e === "input" ? !!Yx[t.type] : e === "textarea" } function Fv(t, e, n, r) { gv(r), e = ku(e, "onChange"), 0 < e.length && (n = new Tf("onChange", "change", null, n, r), t.push({ event: n, listeners: e })) } var qo = null, ua = null; function Xx(t) { Yv(t, 0) } function oc(t) { var e = fs(t); if (uv(e)) return t } function Jx(t, e) { if (t === "change") return e } var Uv = !1; if (Jn) { var ld; if (Jn) { var ud = "oninput" in document; if (!ud) { var Lm = document.createElement("div"); Lm.setAttribute("oninput", "return;"), ud = typeof Lm.oninput == "function" } ld = ud } else ld = !1; Uv = ld && (!document.documentMode || 9 < document.documentMode) } function Mm() { qo && (qo.detachEvent("onpropertychange", zv), ua = qo = null) } function zv(t) { if (t.propertyName === "value" && oc(ua)) { var e = []; Fv(e, ua, t, vf(t)), wv(Xx, e) } } function Zx(t, e, n) { t === "focusin" ? (Mm(), qo = e, ua = n, qo.attachEvent("onpropertychange", zv)) : t === "focusout" && Mm() } function ek(t) { if (t === "selectionchange" || t === "keyup" || t === "keydown") return oc(ua) } function tk(t, e) { if (t === "click") return oc(e) } function nk(t, e) { if (t === "input" || t === "change") return oc(e) } function rk(t, e) { return t === e && (t !== 0 || 1 / t === 1 / e) || t !== t && e !== e } var wn = typeof Object.is == "function" ? Object.is : rk; function ca(t, e) { if (wn(t, e)) return !0; if (typeof t != "object" || t === null || typeof e != "object" || e === null) return !1; var n = Object.keys(t), r = Object.keys(e); if (n.length !== r.length) return !1; for (r = 0; r < n.length; r++) { var i = n[r]; if (!Wd.call(e, i) || !wn(t[i], e[i])) return !1 } return !0 } function jm(t) { for (; t && t.firstChild;)t = t.firstChild; return t } function Vm(t, e) { var n = jm(t); t = 0; for (var r; n;) { if (n.nodeType === 3) { if (r = t + n.textContent.length, t <= e && r >= e) return { node: n, offset: e - t }; t = r } e: { for (; n;) { if (n.nextSibling) { n = n.nextSibling; break e } n = n.parentNode } n = void 0 } n = jm(n) } } function Bv(t, e) { return t && e ? t === e ? !0 : t && t.nodeType === 3 ? !1 : e && e.nodeType === 3 ? Bv(t, e.parentNode) : "contains" in t ? t.contains(e) : t.compareDocumentPosition ? !!(t.compareDocumentPosition(e) & 16) : !1 : !1 } function $v() { for (var t = window, e = gu(); e instanceof t.HTMLIFrameElement;) { try { var n = typeof e.contentWindow.location.href == "string" } catch { n = !1 } if (n) t = e.contentWindow; else break; e = gu(t.document) } return e } function Af(t) { var e = t && t.nodeName && t.nodeName.toLowerCase(); return e && (e === "input" && (t.type === "text" || t.type === "search" || t.type === "tel" || t.type === "url" || t.type === "password") || e === "textarea" || t.contentEditable === "true") } function ik(t) { var e = $v(), n = t.focusedElem, r = t.selectionRange; if (e !== n && n && n.ownerDocument && Bv(n.ownerDocument.documentElement, n)) { if (r !== null && Af(n)) { if (e = r.start, t = r.end, t === void 0 && (t = e), "selectionStart" in n) n.selectionStart = e, n.selectionEnd = Math.min(t, n.value.length); else if (t = (e = n.ownerDocument || document) && e.defaultView || window, t.getSelection) { t = t.getSelection(); var i = n.textContent.length, s = Math.min(r.start, i); r = r.end === void 0 ? s : Math.min(r.end, i), !t.extend && s > r && (i = r, r = s, s = i), i = Vm(n, s); var o = Vm(n, r); i && o && (t.rangeCount !== 1 || t.anchorNode !== i.node || t.anchorOffset !== i.offset || t.focusNode !== o.node || t.focusOffset !== o.offset) && (e = e.createRange(), e.setStart(i.node, i.offset), t.removeAllRanges(), s > r ? (t.addRange(e), t.extend(o.node, o.offset)) : (e.setEnd(o.node, o.offset), t.addRange(e))) } } for (e = [], t = n; t = t.parentNode;)t.nodeType === 1 && e.push({ element: t, left: t.scrollLeft, top: t.scrollTop }); for (typeof n.focus == "function" && n.focus(), n = 0; n < e.length; n++)t = e[n], t.element.scrollLeft = t.left, t.element.scrollTop = t.top } } var sk = Jn && "documentMode" in document && 11 >= document.documentMode, ds = null, uh = null, Ko = null, ch = !1; function Om(t, e, n) { var r = n.window === n ? n.document : n.nodeType === 9 ? n : n.ownerDocument; ch || ds == null || ds !== gu(r) || (r = ds, "selectionStart" in r && Af(r) ? r = { start: r.selectionStart, end: r.selectionEnd } : (r = (r.ownerDocument && r.ownerDocument.defaultView || window).getSelection(), r = { anchorNode: r.anchorNode, anchorOffset: r.anchorOffset, focusNode: r.focusNode, focusOffset: r.focusOffset }), Ko && ca(Ko, r) || (Ko = r, r = ku(uh, "onSelect"), 0 < r.length && (e = new Tf("onSelect", "select", null, e, n), t.push({ event: e, listeners: r }), e.target = ds))) } function Al(t, e) { var n = {}; return n[t.toLowerCase()] = e.toLowerCase(), n["Webkit" + t] = "webkit" + e, n["Moz" + t] = "moz" + e, n } var hs = { animationend: Al("Animation", "AnimationEnd"), animationiteration: Al("Animation", "AnimationIteration"), animationstart: Al("Animation", "AnimationStart"), transitionend: Al("Transition", "TransitionEnd") }, cd = {}, Wv = {}; Jn && (Wv = document.createElement("div").style, "AnimationEvent" in window || (delete hs.animationend.animation, delete hs.animationiteration.animation, delete hs.animationstart.animation), "TransitionEvent" in window || delete hs.transitionend.transition); function ac(t) { if (cd[t]) return cd[t]; if (!hs[t]) return t; var e = hs[t], n; for (n in e) if (e.hasOwnProperty(n) && n in Wv) return cd[t] = e[n]; return t } var Hv = ac("animationend"), qv = ac("animationiteration"), Kv = ac("animationstart"), Gv = ac("transitionend"), Qv = new Map, Fm = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" "); function Jr(t, e) { Qv.set(t, e), Fi(e, [t]) } for (var dd = 0; dd < Fm.length; dd++) { var hd = Fm[dd], ok = hd.toLowerCase(), ak = hd[0].toUpperCase() + hd.slice(1); Jr(ok, "on" + ak) } Jr(Hv, "onAnimationEnd"); Jr(qv, "onAnimationIteration"); Jr(Kv, "onAnimationStart"); Jr("dblclick", "onDoubleClick"); Jr("focusin", "onFocus"); Jr("focusout", "onBlur"); Jr(Gv, "onTransitionEnd"); bs("onMouseEnter", ["mouseout", "mouseover"]); bs("onMouseLeave", ["mouseout", "mouseover"]); bs("onPointerEnter", ["pointerout", "pointerover"]); bs("onPointerLeave", ["pointerout", "pointerover"]); Fi("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); Fi("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); Fi("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); Fi("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); Fi("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); Fi("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); var jo = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), lk = new Set("cancel close invalid load scroll toggle".split(" ").concat(jo)); function Um(t, e, n) { var r = t.type || "unknown-event"; t.currentTarget = n, ox(r, e, void 0, t), t.currentTarget = null } function Yv(t, e) { e = (e & 4) !== 0; for (var n = 0; n < t.length; n++) { var r = t[n], i = r.event; r = r.listeners; e: { var s = void 0; if (e) for (var o = r.length - 1; 0 <= o; o--) { var l = r[o], u = l.instance, h = l.currentTarget; if (l = l.listener, u !== s && i.isPropagationStopped()) break e; Um(i, l, h), s = u } else for (o = 0; o < r.length; o++) { if (l = r[o], u = l.instance, h = l.currentTarget, l = l.listener, u !== s && i.isPropagationStopped()) break e; Um(i, l, h), s = u } } } if (vu) throw t = sh, vu = !1, sh = null, t } function Pe(t, e) { var n = e[mh]; n === void 0 && (n = e[mh] = new Set); var r = t + "__bubble"; n.has(r) || (Xv(e, t, 2, !1), n.add(r)) } function fd(t, e, n) { var r = 0; e && (r |= 4), Xv(n, t, r, e) } var Cl = "_reactListening" + Math.random().toString(36).slice(2); function da(t) { if (!t[Cl]) { t[Cl] = !0, iv.forEach(function (n) { n !== "selectionchange" && (lk.has(n) || fd(n, !1, t), fd(n, !0, t)) }); var e = t.nodeType === 9 ? t : t.ownerDocument; e === null || e[Cl] || (e[Cl] = !0, fd("selectionchange", !1, e)) } } function Xv(t, e, n, r) { switch (Lv(e)) { case 1: var i = xx; break; case 4: i = kx; break; default: i = xf }n = i.bind(null, e, n, t), i = void 0, !ih || e !== "touchstart" && e !== "touchmove" && e !== "wheel" || (i = !0), r ? i !== void 0 ? t.addEventListener(e, n, { capture: !0, passive: i }) : t.addEventListener(e, n, !0) : i !== void 0 ? t.addEventListener(e, n, { passive: i }) : t.addEventListener(e, n, !1) } function pd(t, e, n, r, i) { var s = r; if (!(e & 1) && !(e & 2) && r !== null) e: for (; ;) { if (r === null) return; var o = r.tag; if (o === 3 || o === 4) { var l = r.stateNode.containerInfo; if (l === i || l.nodeType === 8 && l.parentNode === i) break; if (o === 4) for (o = r.return; o !== null;) { var u = o.tag; if ((u === 3 || u === 4) && (u = o.stateNode.containerInfo, u === i || u.nodeType === 8 && u.parentNode === i)) return; o = o.return } for (; l !== null;) { if (o = Ei(l), o === null) return; if (u = o.tag, u === 5 || u === 6) { r = s = o; continue e } l = l.parentNode } } r = r.return } wv(function () { var h = s, p = vf(n), v = []; e: { var m = Qv.get(t); if (m !== void 0) { var C = Tf, R = t; switch (t) { case "keypress": if (Zl(n) === 0) break e; case "keydown": case "keyup": C = Ox; break; case "focusin": R = "focus", C = ad; break; case "focusout": R = "blur", C = ad; break; case "beforeblur": case "afterblur": C = ad; break; case "click": if (n.button === 2) break e; case "auxclick": case "dblclick": case "mousedown": case "mousemove": case "mouseup": case "mouseout": case "mouseover": case "contextmenu": C = Cm; break; case "drag": case "dragend": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "dragstart": case "drop": C = Ix; break; case "touchcancel": case "touchend": case "touchmove": case "touchstart": C = zx; break; case Hv: case qv: case Kv: C = Nx; break; case Gv: C = $x; break; case "scroll": C = Tx; break; case "wheel": C = Hx; break; case "copy": case "cut": case "paste": C = bx; break; case "gotpointercapture": case "lostpointercapture": case "pointercancel": case "pointerdown": case "pointermove": case "pointerout": case "pointerover": case "pointerup": C = Pm }var L = (e & 4) !== 0, V = !L && t === "scroll", S = L ? m !== null ? m + "Capture" : null : m; L = []; for (var E = h, I; E !== null;) { I = E; var j = I.stateNode; if (I.tag === 5 && j !== null && (I = j, S !== null && (j = sa(E, S), j != null && L.push(ha(E, j, I)))), V) break; E = E.return } 0 < L.length && (m = new C(m, R, null, n, p), v.push({ event: m, listeners: L })) } } if (!(e & 7)) { e: { if (m = t === "mouseover" || t === "pointerover", C = t === "mouseout" || t === "pointerout", m && n !== nh && (R = n.relatedTarget || n.fromElement) && (Ei(R) || R[Zn])) break e; if ((C || m) && (m = p.window === p ? p : (m = p.ownerDocument) ? m.defaultView || m.parentWindow : window, C ? (R = n.relatedTarget || n.toElement, C = h, R = R ? Ei(R) : null, R !== null && (V = Ui(R), R !== V || R.tag !== 5 && R.tag !== 6) && (R = null)) : (C = null, R = h), C !== R)) { if (L = Cm, j = "onMouseLeave", S = "onMouseEnter", E = "mouse", (t === "pointerout" || t === "pointerover") && (L = Pm, j = "onPointerLeave", S = "onPointerEnter", E = "pointer"), V = C == null ? m : fs(C), I = R == null ? m : fs(R), m = new L(j, E + "leave", C, n, p), m.target = V, m.relatedTarget = I, j = null, Ei(p) === h && (L = new L(S, E + "enter", R, n, p), L.target = I, L.relatedTarget = V, j = L), V = j, C && R) t: { for (L = C, S = R, E = 0, I = L; I; I = rs(I))E++; for (I = 0, j = S; j; j = rs(j))I++; for (; 0 < E - I;)L = rs(L), E--; for (; 0 < I - E;)S = rs(S), I--; for (; E--;) { if (L === S || S !== null && L === S.alternate) break t; L = rs(L), S = rs(S) } L = null } else L = null; C !== null && zm(v, m, C, L, !1), R !== null && V !== null && zm(v, V, R, L, !0) } } e: { if (m = h ? fs(h) : window, C = m.nodeName && m.nodeName.toLowerCase(), C === "select" || C === "input" && m.type === "file") var K = Jx; else if (Dm(m)) if (Uv) K = nk; else { K = ek; var $ = Zx } else (C = m.nodeName) && C.toLowerCase() === "input" && (m.type === "checkbox" || m.type === "radio") && (K = tk); if (K && (K = K(t, h))) { Fv(v, K, n, p); break e } $ && $(t, m, h), t === "focusout" && ($ = m._wrapperState) && $.controlled && m.type === "number" && Xd(m, "number", m.value) } switch ($ = h ? fs(h) : window, t) { case "focusin": (Dm($) || $.contentEditable === "true") && (ds = $, uh = h, Ko = null); break; case "focusout": Ko = uh = ds = null; break; case "mousedown": ch = !0; break; case "contextmenu": case "mouseup": case "dragend": ch = !1, Om(v, n, p); break; case "selectionchange": if (sk) break; case "keydown": case "keyup": Om(v, n, p) }var x; if (If) e: { switch (t) { case "compositionstart": var _ = "onCompositionStart"; break e; case "compositionend": _ = "onCompositionEnd"; break e; case "compositionupdate": _ = "onCompositionUpdate"; break e }_ = void 0 } else cs ? Vv(t, n) && (_ = "onCompositionEnd") : t === "keydown" && n.keyCode === 229 && (_ = "onCompositionStart"); _ && (jv && n.locale !== "ko" && (cs || _ !== "onCompositionStart" ? _ === "onCompositionEnd" && cs && (x = Mv()) : (br = p, kf = "value" in br ? br.value : br.textContent, cs = !0)), $ = ku(h, _), 0 < $.length && (_ = new Nm(_, t, null, n, p), v.push({ event: _, listeners: $ }), x ? _.data = x : (x = Ov(n), x !== null && (_.data = x)))), (x = Kx ? Gx(t, n) : Qx(t, n)) && (h = ku(h, "onBeforeInput"), 0 < h.length && (p = new Nm("onBeforeInput", "beforeinput", null, n, p), v.push({ event: p, listeners: h }), p.data = x)) } Yv(v, e) }) } function ha(t, e, n) { return { instance: t, listener: e, currentTarget: n } } function ku(t, e) { for (var n = e + "Capture", r = []; t !== null;) { var i = t, s = i.stateNode; i.tag === 5 && s !== null && (i = s, s = sa(t, n), s != null && r.unshift(ha(t, s, i)), s = sa(t, e), s != null && r.push(ha(t, s, i))), t = t.return } return r } function rs(t) { if (t === null) return null; do t = t.return; while (t && t.tag !== 5); return t || null } function zm(t, e, n, r, i) { for (var s = e._reactName, o = []; n !== null && n !== r;) { var l = n, u = l.alternate, h = l.stateNode; if (u !== null && u === r) break; l.tag === 5 && h !== null && (l = h, i ? (u = sa(n, s), u != null && o.unshift(ha(n, u, l))) : i || (u = sa(n, s), u != null && o.push(ha(n, u, l)))), n = n.return } o.length !== 0 && t.push({ event: e, listeners: o }) } var uk = /\r\n?/g, ck = /\u0000|\uFFFD/g; function Bm(t) {
|
|
return (typeof t == "string" ? t : "" + t).replace(uk, `
|
|
`).replace(ck, "")
|
|
} function Nl(t, e, n) { if (e = Bm(e), Bm(t) !== e && n) throw Error(B(425)) } function Tu() { } var dh = null, hh = null; function fh(t, e) { return t === "textarea" || t === "noscript" || typeof e.children == "string" || typeof e.children == "number" || typeof e.dangerouslySetInnerHTML == "object" && e.dangerouslySetInnerHTML !== null && e.dangerouslySetInnerHTML.__html != null } var ph = typeof setTimeout == "function" ? setTimeout : void 0, dk = typeof clearTimeout == "function" ? clearTimeout : void 0, $m = typeof Promise == "function" ? Promise : void 0, hk = typeof queueMicrotask == "function" ? queueMicrotask : typeof $m < "u" ? function (t) { return $m.resolve(null).then(t).catch(fk) } : ph; function fk(t) { setTimeout(function () { throw t }) } function md(t, e) { var n = e, r = 0; do { var i = n.nextSibling; if (t.removeChild(n), i && i.nodeType === 8) if (n = i.data, n === "/$") { if (r === 0) { t.removeChild(i), la(e); return } r-- } else n !== "$" && n !== "$?" && n !== "$!" || r++; n = i } while (n); la(e) } function Vr(t) { for (; t != null; t = t.nextSibling) { var e = t.nodeType; if (e === 1 || e === 3) break; if (e === 8) { if (e = t.data, e === "$" || e === "$!" || e === "$?") break; if (e === "/$") return null } } return t } function Wm(t) { t = t.previousSibling; for (var e = 0; t;) { if (t.nodeType === 8) { var n = t.data; if (n === "$" || n === "$!" || n === "$?") { if (e === 0) return t; e-- } else n === "/$" && e++ } t = t.previousSibling } return null } var Gs = Math.random().toString(36).slice(2), An = "__reactFiber$" + Gs, fa = "__reactProps$" + Gs, Zn = "__reactContainer$" + Gs, mh = "__reactEvents$" + Gs, pk = "__reactListeners$" + Gs, mk = "__reactHandles$" + Gs; function Ei(t) { var e = t[An]; if (e) return e; for (var n = t.parentNode; n;) { if (e = n[Zn] || n[An]) { if (n = e.alternate, e.child !== null || n !== null && n.child !== null) for (t = Wm(t); t !== null;) { if (n = t[An]) return n; t = Wm(t) } return e } t = n, n = t.parentNode } return null } function Ra(t) { return t = t[An] || t[Zn], !t || t.tag !== 5 && t.tag !== 6 && t.tag !== 13 && t.tag !== 3 ? null : t } function fs(t) { if (t.tag === 5 || t.tag === 6) return t.stateNode; throw Error(B(33)) } function lc(t) { return t[fa] || null } var gh = [], ps = -1; function Zr(t) { return { current: t } } function be(t) { 0 > ps || (t.current = gh[ps], gh[ps] = null, ps--) } function Ae(t, e) { ps++, gh[ps] = t.current, t.current = e } var Gr = {}, Et = Zr(Gr), Lt = Zr(!1), Ci = Gr; function Rs(t, e) { var n = t.type.contextTypes; if (!n) return Gr; var r = t.stateNode; if (r && r.__reactInternalMemoizedUnmaskedChildContext === e) return r.__reactInternalMemoizedMaskedChildContext; var i = {}, s; for (s in n) i[s] = e[s]; return r && (t = t.stateNode, t.__reactInternalMemoizedUnmaskedChildContext = e, t.__reactInternalMemoizedMaskedChildContext = i), i } function Mt(t) { return t = t.childContextTypes, t != null } function Su() { be(Lt), be(Et) } function Hm(t, e, n) { if (Et.current !== Gr) throw Error(B(168)); Ae(Et, e), Ae(Lt, n) } function Jv(t, e, n) { var r = t.stateNode; if (e = e.childContextTypes, typeof r.getChildContext != "function") return n; r = r.getChildContext(); for (var i in r) if (!(i in e)) throw Error(B(108, ZE(t) || "Unknown", i)); return Ve({}, n, r) } function Iu(t) { return t = (t = t.stateNode) && t.__reactInternalMemoizedMergedChildContext || Gr, Ci = Et.current, Ae(Et, t), Ae(Lt, Lt.current), !0 } function qm(t, e, n) { var r = t.stateNode; if (!r) throw Error(B(169)); n ? (t = Jv(t, e, Ci), r.__reactInternalMemoizedMergedChildContext = t, be(Lt), be(Et), Ae(Et, t)) : be(Lt), Ae(Lt, n) } var Wn = null, uc = !1, gd = !1; function Zv(t) { Wn === null ? Wn = [t] : Wn.push(t) } function gk(t) { uc = !0, Zv(t) } function ei() { if (!gd && Wn !== null) { gd = !0; var t = 0, e = we; try { var n = Wn; for (we = 1; t < n.length; t++) { var r = n[t]; do r = r(!0); while (r !== null) } Wn = null, uc = !1 } catch (i) { throw Wn !== null && (Wn = Wn.slice(t + 1)), Tv(_f, ei), i } finally { we = e, gd = !1 } } return null } var ms = [], gs = 0, Au = null, Cu = 0, tn = [], nn = 0, Ni = null, Hn = 1, qn = ""; function vi(t, e) { ms[gs++] = Cu, ms[gs++] = Au, Au = t, Cu = e } function e0(t, e, n) { tn[nn++] = Hn, tn[nn++] = qn, tn[nn++] = Ni, Ni = t; var r = Hn; t = qn; var i = 32 - vn(r) - 1; r &= ~(1 << i), n += 1; var s = 32 - vn(e) + i; if (30 < s) { var o = i - i % 5; s = (r & (1 << o) - 1).toString(32), r >>= o, i -= o, Hn = 1 << 32 - vn(e) + i | n << i | r, qn = s + t } else Hn = 1 << s | n << i | r, qn = t } function Cf(t) { t.return !== null && (vi(t, 1), e0(t, 1, 0)) } function Nf(t) { for (; t === Au;)Au = ms[--gs], ms[gs] = null, Cu = ms[--gs], ms[gs] = null; for (; t === Ni;)Ni = tn[--nn], tn[nn] = null, qn = tn[--nn], tn[nn] = null, Hn = tn[--nn], tn[nn] = null } var Wt = null, Bt = null, De = !1, yn = null; function t0(t, e) { var n = rn(5, null, null, 0); n.elementType = "DELETED", n.stateNode = e, n.return = t, e = t.deletions, e === null ? (t.deletions = [n], t.flags |= 16) : e.push(n) } function Km(t, e) { switch (t.tag) { case 5: var n = t.type; return e = e.nodeType !== 1 || n.toLowerCase() !== e.nodeName.toLowerCase() ? null : e, e !== null ? (t.stateNode = e, Wt = t, Bt = Vr(e.firstChild), !0) : !1; case 6: return e = t.pendingProps === "" || e.nodeType !== 3 ? null : e, e !== null ? (t.stateNode = e, Wt = t, Bt = null, !0) : !1; case 13: return e = e.nodeType !== 8 ? null : e, e !== null ? (n = Ni !== null ? { id: Hn, overflow: qn } : null, t.memoizedState = { dehydrated: e, treeContext: n, retryLane: 1073741824 }, n = rn(18, null, null, 0), n.stateNode = e, n.return = t, t.child = n, Wt = t, Bt = null, !0) : !1; default: return !1 } } function yh(t) { return (t.mode & 1) !== 0 && (t.flags & 128) === 0 } function vh(t) { if (De) { var e = Bt; if (e) { var n = e; if (!Km(t, e)) { if (yh(t)) throw Error(B(418)); e = Vr(n.nextSibling); var r = Wt; e && Km(t, e) ? t0(r, n) : (t.flags = t.flags & -4097 | 2, De = !1, Wt = t) } } else { if (yh(t)) throw Error(B(418)); t.flags = t.flags & -4097 | 2, De = !1, Wt = t } } } function Gm(t) { for (t = t.return; t !== null && t.tag !== 5 && t.tag !== 3 && t.tag !== 13;)t = t.return; Wt = t } function Pl(t) { if (t !== Wt) return !1; if (!De) return Gm(t), De = !0, !1; var e; if ((e = t.tag !== 3) && !(e = t.tag !== 5) && (e = t.type, e = e !== "head" && e !== "body" && !fh(t.type, t.memoizedProps)), e && (e = Bt)) { if (yh(t)) throw n0(), Error(B(418)); for (; e;)t0(t, e), e = Vr(e.nextSibling) } if (Gm(t), t.tag === 13) { if (t = t.memoizedState, t = t !== null ? t.dehydrated : null, !t) throw Error(B(317)); e: { for (t = t.nextSibling, e = 0; t;) { if (t.nodeType === 8) { var n = t.data; if (n === "/$") { if (e === 0) { Bt = Vr(t.nextSibling); break e } e-- } else n !== "$" && n !== "$!" && n !== "$?" || e++ } t = t.nextSibling } Bt = null } } else Bt = Wt ? Vr(t.stateNode.nextSibling) : null; return !0 } function n0() { for (var t = Bt; t;)t = Vr(t.nextSibling) } function Ds() { Bt = Wt = null, De = !1 } function Pf(t) { yn === null ? yn = [t] : yn.push(t) } var yk = ar.ReactCurrentBatchConfig; function Io(t, e, n) { if (t = n.ref, t !== null && typeof t != "function" && typeof t != "object") { if (n._owner) { if (n = n._owner, n) { if (n.tag !== 1) throw Error(B(309)); var r = n.stateNode } if (!r) throw Error(B(147, t)); var i = r, s = "" + t; return e !== null && e.ref !== null && typeof e.ref == "function" && e.ref._stringRef === s ? e.ref : (e = function (o) { var l = i.refs; o === null ? delete l[s] : l[s] = o }, e._stringRef = s, e) } if (typeof t != "string") throw Error(B(284)); if (!n._owner) throw Error(B(290, t)) } return t } function bl(t, e) { throw t = Object.prototype.toString.call(e), Error(B(31, t === "[object Object]" ? "object with keys {" + Object.keys(e).join(", ") + "}" : t)) } function Qm(t) { var e = t._init; return e(t._payload) } function r0(t) { function e(S, E) { if (t) { var I = S.deletions; I === null ? (S.deletions = [E], S.flags |= 16) : I.push(E) } } function n(S, E) { if (!t) return null; for (; E !== null;)e(S, E), E = E.sibling; return null } function r(S, E) { for (S = new Map; E !== null;)E.key !== null ? S.set(E.key, E) : S.set(E.index, E), E = E.sibling; return S } function i(S, E) { return S = zr(S, E), S.index = 0, S.sibling = null, S } function s(S, E, I) { return S.index = I, t ? (I = S.alternate, I !== null ? (I = I.index, I < E ? (S.flags |= 2, E) : I) : (S.flags |= 2, E)) : (S.flags |= 1048576, E) } function o(S) { return t && S.alternate === null && (S.flags |= 2), S } function l(S, E, I, j) { return E === null || E.tag !== 6 ? (E = kd(I, S.mode, j), E.return = S, E) : (E = i(E, I), E.return = S, E) } function u(S, E, I, j) { var K = I.type; return K === us ? p(S, E, I.props.children, j, I.key) : E !== null && (E.elementType === K || typeof K == "object" && K !== null && K.$$typeof === kr && Qm(K) === E.type) ? (j = i(E, I.props), j.ref = Io(S, E, I), j.return = S, j) : (j = ou(I.type, I.key, I.props, null, S.mode, j), j.ref = Io(S, E, I), j.return = S, j) } function h(S, E, I, j) { return E === null || E.tag !== 4 || E.stateNode.containerInfo !== I.containerInfo || E.stateNode.implementation !== I.implementation ? (E = Td(I, S.mode, j), E.return = S, E) : (E = i(E, I.children || []), E.return = S, E) } function p(S, E, I, j, K) { return E === null || E.tag !== 7 ? (E = Ii(I, S.mode, j, K), E.return = S, E) : (E = i(E, I), E.return = S, E) } function v(S, E, I) { if (typeof E == "string" && E !== "" || typeof E == "number") return E = kd("" + E, S.mode, I), E.return = S, E; if (typeof E == "object" && E !== null) { switch (E.$$typeof) { case wl: return I = ou(E.type, E.key, E.props, null, S.mode, I), I.ref = Io(S, null, E), I.return = S, I; case ls: return E = Td(E, S.mode, I), E.return = S, E; case kr: var j = E._init; return v(S, j(E._payload), I) }if (Lo(E) || Eo(E)) return E = Ii(E, S.mode, I, null), E.return = S, E; bl(S, E) } return null } function m(S, E, I, j) { var K = E !== null ? E.key : null; if (typeof I == "string" && I !== "" || typeof I == "number") return K !== null ? null : l(S, E, "" + I, j); if (typeof I == "object" && I !== null) { switch (I.$$typeof) { case wl: return I.key === K ? u(S, E, I, j) : null; case ls: return I.key === K ? h(S, E, I, j) : null; case kr: return K = I._init, m(S, E, K(I._payload), j) }if (Lo(I) || Eo(I)) return K !== null ? null : p(S, E, I, j, null); bl(S, I) } return null } function C(S, E, I, j, K) { if (typeof j == "string" && j !== "" || typeof j == "number") return S = S.get(I) || null, l(E, S, "" + j, K); if (typeof j == "object" && j !== null) { switch (j.$$typeof) { case wl: return S = S.get(j.key === null ? I : j.key) || null, u(E, S, j, K); case ls: return S = S.get(j.key === null ? I : j.key) || null, h(E, S, j, K); case kr: var $ = j._init; return C(S, E, I, $(j._payload), K) }if (Lo(j) || Eo(j)) return S = S.get(I) || null, p(E, S, j, K, null); bl(E, j) } return null } function R(S, E, I, j) { for (var K = null, $ = null, x = E, _ = E = 0, w = null; x !== null && _ < I.length; _++) { x.index > _ ? (w = x, x = null) : w = x.sibling; var k = m(S, x, I[_], j); if (k === null) { x === null && (x = w); break } t && x && k.alternate === null && e(S, x), E = s(k, E, _), $ === null ? K = k : $.sibling = k, $ = k, x = w } if (_ === I.length) return n(S, x), De && vi(S, _), K; if (x === null) { for (; _ < I.length; _++)x = v(S, I[_], j), x !== null && (E = s(x, E, _), $ === null ? K = x : $.sibling = x, $ = x); return De && vi(S, _), K } for (x = r(S, x); _ < I.length; _++)w = C(x, S, _, I[_], j), w !== null && (t && w.alternate !== null && x.delete(w.key === null ? _ : w.key), E = s(w, E, _), $ === null ? K = w : $.sibling = w, $ = w); return t && x.forEach(function (A) { return e(S, A) }), De && vi(S, _), K } function L(S, E, I, j) { var K = Eo(I); if (typeof K != "function") throw Error(B(150)); if (I = K.call(I), I == null) throw Error(B(151)); for (var $ = K = null, x = E, _ = E = 0, w = null, k = I.next(); x !== null && !k.done; _++, k = I.next()) { x.index > _ ? (w = x, x = null) : w = x.sibling; var A = m(S, x, k.value, j); if (A === null) { x === null && (x = w); break } t && x && A.alternate === null && e(S, x), E = s(A, E, _), $ === null ? K = A : $.sibling = A, $ = A, x = w } if (k.done) return n(S, x), De && vi(S, _), K; if (x === null) { for (; !k.done; _++, k = I.next())k = v(S, k.value, j), k !== null && (E = s(k, E, _), $ === null ? K = k : $.sibling = k, $ = k); return De && vi(S, _), K } for (x = r(S, x); !k.done; _++, k = I.next())k = C(x, S, _, k.value, j), k !== null && (t && k.alternate !== null && x.delete(k.key === null ? _ : k.key), E = s(k, E, _), $ === null ? K = k : $.sibling = k, $ = k); return t && x.forEach(function (P) { return e(S, P) }), De && vi(S, _), K } function V(S, E, I, j) { if (typeof I == "object" && I !== null && I.type === us && I.key === null && (I = I.props.children), typeof I == "object" && I !== null) { switch (I.$$typeof) { case wl: e: { for (var K = I.key, $ = E; $ !== null;) { if ($.key === K) { if (K = I.type, K === us) { if ($.tag === 7) { n(S, $.sibling), E = i($, I.props.children), E.return = S, S = E; break e } } else if ($.elementType === K || typeof K == "object" && K !== null && K.$$typeof === kr && Qm(K) === $.type) { n(S, $.sibling), E = i($, I.props), E.ref = Io(S, $, I), E.return = S, S = E; break e } n(S, $); break } else e(S, $); $ = $.sibling } I.type === us ? (E = Ii(I.props.children, S.mode, j, I.key), E.return = S, S = E) : (j = ou(I.type, I.key, I.props, null, S.mode, j), j.ref = Io(S, E, I), j.return = S, S = j) } return o(S); case ls: e: { for ($ = I.key; E !== null;) { if (E.key === $) if (E.tag === 4 && E.stateNode.containerInfo === I.containerInfo && E.stateNode.implementation === I.implementation) { n(S, E.sibling), E = i(E, I.children || []), E.return = S, S = E; break e } else { n(S, E); break } else e(S, E); E = E.sibling } E = Td(I, S.mode, j), E.return = S, S = E } return o(S); case kr: return $ = I._init, V(S, E, $(I._payload), j) }if (Lo(I)) return R(S, E, I, j); if (Eo(I)) return L(S, E, I, j); bl(S, I) } return typeof I == "string" && I !== "" || typeof I == "number" ? (I = "" + I, E !== null && E.tag === 6 ? (n(S, E.sibling), E = i(E, I), E.return = S, S = E) : (n(S, E), E = kd(I, S.mode, j), E.return = S, S = E), o(S)) : n(S, E) } return V } var Ls = r0(!0), i0 = r0(!1), Nu = Zr(null), Pu = null, ys = null, bf = null; function Rf() { bf = ys = Pu = null } function Df(t) { var e = Nu.current; be(Nu), t._currentValue = e } function _h(t, e, n) { for (; t !== null;) { var r = t.alternate; if ((t.childLanes & e) !== e ? (t.childLanes |= e, r !== null && (r.childLanes |= e)) : r !== null && (r.childLanes & e) !== e && (r.childLanes |= e), t === n) break; t = t.return } } function Ss(t, e) { Pu = t, bf = ys = null, t = t.dependencies, t !== null && t.firstContext !== null && (t.lanes & e && (Dt = !0), t.firstContext = null) } function on(t) { var e = t._currentValue; if (bf !== t) if (t = { context: t, memoizedValue: e, next: null }, ys === null) { if (Pu === null) throw Error(B(308)); ys = t, Pu.dependencies = { lanes: 0, firstContext: t } } else ys = ys.next = t; return e } var xi = null; function Lf(t) { xi === null ? xi = [t] : xi.push(t) } function s0(t, e, n, r) { var i = e.interleaved; return i === null ? (n.next = n, Lf(e)) : (n.next = i.next, i.next = n), e.interleaved = n, er(t, r) } function er(t, e) { t.lanes |= e; var n = t.alternate; for (n !== null && (n.lanes |= e), n = t, t = t.return; t !== null;)t.childLanes |= e, n = t.alternate, n !== null && (n.childLanes |= e), n = t, t = t.return; return n.tag === 3 ? n.stateNode : null } var Tr = !1; function Mf(t) { t.updateQueue = { baseState: t.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null } } function o0(t, e) { t = t.updateQueue, e.updateQueue === t && (e.updateQueue = { baseState: t.baseState, firstBaseUpdate: t.firstBaseUpdate, lastBaseUpdate: t.lastBaseUpdate, shared: t.shared, effects: t.effects }) } function Yn(t, e) { return { eventTime: t, lane: e, tag: 0, payload: null, callback: null, next: null } } function Or(t, e, n) { var r = t.updateQueue; if (r === null) return null; if (r = r.shared, ge & 2) { var i = r.pending; return i === null ? e.next = e : (e.next = i.next, i.next = e), r.pending = e, er(t, n) } return i = r.interleaved, i === null ? (e.next = e, Lf(r)) : (e.next = i.next, i.next = e), r.interleaved = e, er(t, n) } function eu(t, e, n) { if (e = e.updateQueue, e !== null && (e = e.shared, (n & 4194240) !== 0)) { var r = e.lanes; r &= t.pendingLanes, n |= r, e.lanes = n, wf(t, n) } } function Ym(t, e) { var n = t.updateQueue, r = t.alternate; if (r !== null && (r = r.updateQueue, n === r)) { var i = null, s = null; if (n = n.firstBaseUpdate, n !== null) { do { var o = { eventTime: n.eventTime, lane: n.lane, tag: n.tag, payload: n.payload, callback: n.callback, next: null }; s === null ? i = s = o : s = s.next = o, n = n.next } while (n !== null); s === null ? i = s = e : s = s.next = e } else i = s = e; n = { baseState: r.baseState, firstBaseUpdate: i, lastBaseUpdate: s, shared: r.shared, effects: r.effects }, t.updateQueue = n; return } t = n.lastBaseUpdate, t === null ? n.firstBaseUpdate = e : t.next = e, n.lastBaseUpdate = e } function bu(t, e, n, r) { var i = t.updateQueue; Tr = !1; var s = i.firstBaseUpdate, o = i.lastBaseUpdate, l = i.shared.pending; if (l !== null) { i.shared.pending = null; var u = l, h = u.next; u.next = null, o === null ? s = h : o.next = h, o = u; var p = t.alternate; p !== null && (p = p.updateQueue, l = p.lastBaseUpdate, l !== o && (l === null ? p.firstBaseUpdate = h : l.next = h, p.lastBaseUpdate = u)) } if (s !== null) { var v = i.baseState; o = 0, p = h = u = null, l = s; do { var m = l.lane, C = l.eventTime; if ((r & m) === m) { p !== null && (p = p.next = { eventTime: C, lane: 0, tag: l.tag, payload: l.payload, callback: l.callback, next: null }); e: { var R = t, L = l; switch (m = e, C = n, L.tag) { case 1: if (R = L.payload, typeof R == "function") { v = R.call(C, v, m); break e } v = R; break e; case 3: R.flags = R.flags & -65537 | 128; case 0: if (R = L.payload, m = typeof R == "function" ? R.call(C, v, m) : R, m == null) break e; v = Ve({}, v, m); break e; case 2: Tr = !0 } } l.callback !== null && l.lane !== 0 && (t.flags |= 64, m = i.effects, m === null ? i.effects = [l] : m.push(l)) } else C = { eventTime: C, lane: m, tag: l.tag, payload: l.payload, callback: l.callback, next: null }, p === null ? (h = p = C, u = v) : p = p.next = C, o |= m; if (l = l.next, l === null) { if (l = i.shared.pending, l === null) break; m = l, l = m.next, m.next = null, i.lastBaseUpdate = m, i.shared.pending = null } } while (!0); if (p === null && (u = v), i.baseState = u, i.firstBaseUpdate = h, i.lastBaseUpdate = p, e = i.shared.interleaved, e !== null) { i = e; do o |= i.lane, i = i.next; while (i !== e) } else s === null && (i.shared.lanes = 0); bi |= o, t.lanes = o, t.memoizedState = v } } function Xm(t, e, n) { if (t = e.effects, e.effects = null, t !== null) for (e = 0; e < t.length; e++) { var r = t[e], i = r.callback; if (i !== null) { if (r.callback = null, r = n, typeof i != "function") throw Error(B(191, i)); i.call(r) } } } var Da = {}, Pn = Zr(Da), pa = Zr(Da), ma = Zr(Da); function ki(t) { if (t === Da) throw Error(B(174)); return t } function jf(t, e) { switch (Ae(ma, e), Ae(pa, t), Ae(Pn, Da), t = e.nodeType, t) { case 9: case 11: e = (e = e.documentElement) ? e.namespaceURI : Zd(null, ""); break; default: t = t === 8 ? e.parentNode : e, e = t.namespaceURI || null, t = t.tagName, e = Zd(e, t) }be(Pn), Ae(Pn, e) } function Ms() { be(Pn), be(pa), be(ma) } function a0(t) { ki(ma.current); var e = ki(Pn.current), n = Zd(e, t.type); e !== n && (Ae(pa, t), Ae(Pn, n)) } function Vf(t) { pa.current === t && (be(Pn), be(pa)) } var Me = Zr(0); function Ru(t) { for (var e = t; e !== null;) { if (e.tag === 13) { var n = e.memoizedState; if (n !== null && (n = n.dehydrated, n === null || n.data === "$?" || n.data === "$!")) return e } else if (e.tag === 19 && e.memoizedProps.revealOrder !== void 0) { if (e.flags & 128) return e } else if (e.child !== null) { e.child.return = e, e = e.child; continue } if (e === t) break; for (; e.sibling === null;) { if (e.return === null || e.return === t) return null; e = e.return } e.sibling.return = e.return, e = e.sibling } return null } var yd = []; function Of() { for (var t = 0; t < yd.length; t++)yd[t]._workInProgressVersionPrimary = null; yd.length = 0 } var tu = ar.ReactCurrentDispatcher, vd = ar.ReactCurrentBatchConfig, Pi = 0, je = null, Xe = null, nt = null, Du = !1, Go = !1, ga = 0, vk = 0; function mt() { throw Error(B(321)) } function Ff(t, e) { if (e === null) return !1; for (var n = 0; n < e.length && n < t.length; n++)if (!wn(t[n], e[n])) return !1; return !0 } function Uf(t, e, n, r, i, s) { if (Pi = s, je = e, e.memoizedState = null, e.updateQueue = null, e.lanes = 0, tu.current = t === null || t.memoizedState === null ? xk : kk, t = n(r, i), Go) { s = 0; do { if (Go = !1, ga = 0, 25 <= s) throw Error(B(301)); s += 1, nt = Xe = null, e.updateQueue = null, tu.current = Tk, t = n(r, i) } while (Go) } if (tu.current = Lu, e = Xe !== null && Xe.next !== null, Pi = 0, nt = Xe = je = null, Du = !1, e) throw Error(B(300)); return t } function zf() { var t = ga !== 0; return ga = 0, t } function In() { var t = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null }; return nt === null ? je.memoizedState = nt = t : nt = nt.next = t, nt } function an() { if (Xe === null) { var t = je.alternate; t = t !== null ? t.memoizedState : null } else t = Xe.next; var e = nt === null ? je.memoizedState : nt.next; if (e !== null) nt = e, Xe = t; else { if (t === null) throw Error(B(310)); Xe = t, t = { memoizedState: Xe.memoizedState, baseState: Xe.baseState, baseQueue: Xe.baseQueue, queue: Xe.queue, next: null }, nt === null ? je.memoizedState = nt = t : nt = nt.next = t } return nt } function ya(t, e) { return typeof e == "function" ? e(t) : e } function _d(t) { var e = an(), n = e.queue; if (n === null) throw Error(B(311)); n.lastRenderedReducer = t; var r = Xe, i = r.baseQueue, s = n.pending; if (s !== null) { if (i !== null) { var o = i.next; i.next = s.next, s.next = o } r.baseQueue = i = s, n.pending = null } if (i !== null) { s = i.next, r = r.baseState; var l = o = null, u = null, h = s; do { var p = h.lane; if ((Pi & p) === p) u !== null && (u = u.next = { lane: 0, action: h.action, hasEagerState: h.hasEagerState, eagerState: h.eagerState, next: null }), r = h.hasEagerState ? h.eagerState : t(r, h.action); else { var v = { lane: p, action: h.action, hasEagerState: h.hasEagerState, eagerState: h.eagerState, next: null }; u === null ? (l = u = v, o = r) : u = u.next = v, je.lanes |= p, bi |= p } h = h.next } while (h !== null && h !== s); u === null ? o = r : u.next = l, wn(r, e.memoizedState) || (Dt = !0), e.memoizedState = r, e.baseState = o, e.baseQueue = u, n.lastRenderedState = r } if (t = n.interleaved, t !== null) { i = t; do s = i.lane, je.lanes |= s, bi |= s, i = i.next; while (i !== t) } else i === null && (n.lanes = 0); return [e.memoizedState, n.dispatch] } function wd(t) { var e = an(), n = e.queue; if (n === null) throw Error(B(311)); n.lastRenderedReducer = t; var r = n.dispatch, i = n.pending, s = e.memoizedState; if (i !== null) { n.pending = null; var o = i = i.next; do s = t(s, o.action), o = o.next; while (o !== i); wn(s, e.memoizedState) || (Dt = !0), e.memoizedState = s, e.baseQueue === null && (e.baseState = s), n.lastRenderedState = s } return [s, r] } function l0() { } function u0(t, e) { var n = je, r = an(), i = e(), s = !wn(r.memoizedState, i); if (s && (r.memoizedState = i, Dt = !0), r = r.queue, Bf(h0.bind(null, n, r, t), [t]), r.getSnapshot !== e || s || nt !== null && nt.memoizedState.tag & 1) { if (n.flags |= 2048, va(9, d0.bind(null, n, r, i, e), void 0, null), rt === null) throw Error(B(349)); Pi & 30 || c0(n, e, i) } return i } function c0(t, e, n) { t.flags |= 16384, t = { getSnapshot: e, value: n }, e = je.updateQueue, e === null ? (e = { lastEffect: null, stores: null }, je.updateQueue = e, e.stores = [t]) : (n = e.stores, n === null ? e.stores = [t] : n.push(t)) } function d0(t, e, n, r) { e.value = n, e.getSnapshot = r, f0(e) && p0(t) } function h0(t, e, n) { return n(function () { f0(e) && p0(t) }) } function f0(t) { var e = t.getSnapshot; t = t.value; try { var n = e(); return !wn(t, n) } catch { return !0 } } function p0(t) { var e = er(t, 1); e !== null && _n(e, t, 1, -1) } function Jm(t) { var e = In(); return typeof t == "function" && (t = t()), e.memoizedState = e.baseState = t, t = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: ya, lastRenderedState: t }, e.queue = t, t = t.dispatch = Ek.bind(null, je, t), [e.memoizedState, t] } function va(t, e, n, r) { return t = { tag: t, create: e, destroy: n, deps: r, next: null }, e = je.updateQueue, e === null ? (e = { lastEffect: null, stores: null }, je.updateQueue = e, e.lastEffect = t.next = t) : (n = e.lastEffect, n === null ? e.lastEffect = t.next = t : (r = n.next, n.next = t, t.next = r, e.lastEffect = t)), t } function m0() { return an().memoizedState } function nu(t, e, n, r) { var i = In(); je.flags |= t, i.memoizedState = va(1 | e, n, void 0, r === void 0 ? null : r) } function cc(t, e, n, r) { var i = an(); r = r === void 0 ? null : r; var s = void 0; if (Xe !== null) { var o = Xe.memoizedState; if (s = o.destroy, r !== null && Ff(r, o.deps)) { i.memoizedState = va(e, n, s, r); return } } je.flags |= t, i.memoizedState = va(1 | e, n, s, r) } function Zm(t, e) { return nu(8390656, 8, t, e) } function Bf(t, e) { return cc(2048, 8, t, e) } function g0(t, e) { return cc(4, 2, t, e) } function y0(t, e) { return cc(4, 4, t, e) } function v0(t, e) { if (typeof e == "function") return t = t(), e(t), function () { e(null) }; if (e != null) return t = t(), e.current = t, function () { e.current = null } } function _0(t, e, n) { return n = n != null ? n.concat([t]) : null, cc(4, 4, v0.bind(null, e, t), n) } function $f() { } function w0(t, e) { var n = an(); e = e === void 0 ? null : e; var r = n.memoizedState; return r !== null && e !== null && Ff(e, r[1]) ? r[0] : (n.memoizedState = [t, e], t) } function E0(t, e) { var n = an(); e = e === void 0 ? null : e; var r = n.memoizedState; return r !== null && e !== null && Ff(e, r[1]) ? r[0] : (t = t(), n.memoizedState = [t, e], t) } function x0(t, e, n) { return Pi & 21 ? (wn(n, e) || (n = Av(), je.lanes |= n, bi |= n, t.baseState = !0), e) : (t.baseState && (t.baseState = !1, Dt = !0), t.memoizedState = n) } function _k(t, e) { var n = we; we = n !== 0 && 4 > n ? n : 4, t(!0); var r = vd.transition; vd.transition = {}; try { t(!1), e() } finally { we = n, vd.transition = r } } function k0() { return an().memoizedState } function wk(t, e, n) { var r = Ur(t); if (n = { lane: r, action: n, hasEagerState: !1, eagerState: null, next: null }, T0(t)) S0(e, n); else if (n = s0(t, e, n, r), n !== null) { var i = Tt(); _n(n, t, r, i), I0(n, e, r) } } function Ek(t, e, n) { var r = Ur(t), i = { lane: r, action: n, hasEagerState: !1, eagerState: null, next: null }; if (T0(t)) S0(e, i); else { var s = t.alternate; if (t.lanes === 0 && (s === null || s.lanes === 0) && (s = e.lastRenderedReducer, s !== null)) try { var o = e.lastRenderedState, l = s(o, n); if (i.hasEagerState = !0, i.eagerState = l, wn(l, o)) { var u = e.interleaved; u === null ? (i.next = i, Lf(e)) : (i.next = u.next, u.next = i), e.interleaved = i; return } } catch { } finally { } n = s0(t, e, i, r), n !== null && (i = Tt(), _n(n, t, r, i), I0(n, e, r)) } } function T0(t) { var e = t.alternate; return t === je || e !== null && e === je } function S0(t, e) { Go = Du = !0; var n = t.pending; n === null ? e.next = e : (e.next = n.next, n.next = e), t.pending = e } function I0(t, e, n) { if (n & 4194240) { var r = e.lanes; r &= t.pendingLanes, n |= r, e.lanes = n, wf(t, n) } } var Lu = { readContext: on, useCallback: mt, useContext: mt, useEffect: mt, useImperativeHandle: mt, useInsertionEffect: mt, useLayoutEffect: mt, useMemo: mt, useReducer: mt, useRef: mt, useState: mt, useDebugValue: mt, useDeferredValue: mt, useTransition: mt, useMutableSource: mt, useSyncExternalStore: mt, useId: mt, unstable_isNewReconciler: !1 }, xk = { readContext: on, useCallback: function (t, e) { return In().memoizedState = [t, e === void 0 ? null : e], t }, useContext: on, useEffect: Zm, useImperativeHandle: function (t, e, n) { return n = n != null ? n.concat([t]) : null, nu(4194308, 4, v0.bind(null, e, t), n) }, useLayoutEffect: function (t, e) { return nu(4194308, 4, t, e) }, useInsertionEffect: function (t, e) { return nu(4, 2, t, e) }, useMemo: function (t, e) { var n = In(); return e = e === void 0 ? null : e, t = t(), n.memoizedState = [t, e], t }, useReducer: function (t, e, n) { var r = In(); return e = n !== void 0 ? n(e) : e, r.memoizedState = r.baseState = e, t = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: t, lastRenderedState: e }, r.queue = t, t = t.dispatch = wk.bind(null, je, t), [r.memoizedState, t] }, useRef: function (t) { var e = In(); return t = { current: t }, e.memoizedState = t }, useState: Jm, useDebugValue: $f, useDeferredValue: function (t) { return In().memoizedState = t }, useTransition: function () { var t = Jm(!1), e = t[0]; return t = _k.bind(null, t[1]), In().memoizedState = t, [e, t] }, useMutableSource: function () { }, useSyncExternalStore: function (t, e, n) { var r = je, i = In(); if (De) { if (n === void 0) throw Error(B(407)); n = n() } else { if (n = e(), rt === null) throw Error(B(349)); Pi & 30 || c0(r, e, n) } i.memoizedState = n; var s = { value: n, getSnapshot: e }; return i.queue = s, Zm(h0.bind(null, r, s, t), [t]), r.flags |= 2048, va(9, d0.bind(null, r, s, n, e), void 0, null), n }, useId: function () { var t = In(), e = rt.identifierPrefix; if (De) { var n = qn, r = Hn; n = (r & ~(1 << 32 - vn(r) - 1)).toString(32) + n, e = ":" + e + "R" + n, n = ga++, 0 < n && (e += "H" + n.toString(32)), e += ":" } else n = vk++, e = ":" + e + "r" + n.toString(32) + ":"; return t.memoizedState = e }, unstable_isNewReconciler: !1 }, kk = { readContext: on, useCallback: w0, useContext: on, useEffect: Bf, useImperativeHandle: _0, useInsertionEffect: g0, useLayoutEffect: y0, useMemo: E0, useReducer: _d, useRef: m0, useState: function () { return _d(ya) }, useDebugValue: $f, useDeferredValue: function (t) { var e = an(); return x0(e, Xe.memoizedState, t) }, useTransition: function () { var t = _d(ya)[0], e = an().memoizedState; return [t, e] }, useMutableSource: l0, useSyncExternalStore: u0, useId: k0, unstable_isNewReconciler: !1 }, Tk = { readContext: on, useCallback: w0, useContext: on, useEffect: Bf, useImperativeHandle: _0, useInsertionEffect: g0, useLayoutEffect: y0, useMemo: E0, useReducer: wd, useRef: m0, useState: function () { return wd(ya) }, useDebugValue: $f, useDeferredValue: function (t) { var e = an(); return Xe === null ? e.memoizedState = t : x0(e, Xe.memoizedState, t) }, useTransition: function () { var t = wd(ya)[0], e = an().memoizedState; return [t, e] }, useMutableSource: l0, useSyncExternalStore: u0, useId: k0, unstable_isNewReconciler: !1 }; function mn(t, e) { if (t && t.defaultProps) { e = Ve({}, e), t = t.defaultProps; for (var n in t) e[n] === void 0 && (e[n] = t[n]); return e } return e } function wh(t, e, n, r) { e = t.memoizedState, n = n(r, e), n = n == null ? e : Ve({}, e, n), t.memoizedState = n, t.lanes === 0 && (t.updateQueue.baseState = n) } var dc = { isMounted: function (t) { return (t = t._reactInternals) ? Ui(t) === t : !1 }, enqueueSetState: function (t, e, n) { t = t._reactInternals; var r = Tt(), i = Ur(t), s = Yn(r, i); s.payload = e, n != null && (s.callback = n), e = Or(t, s, i), e !== null && (_n(e, t, i, r), eu(e, t, i)) }, enqueueReplaceState: function (t, e, n) { t = t._reactInternals; var r = Tt(), i = Ur(t), s = Yn(r, i); s.tag = 1, s.payload = e, n != null && (s.callback = n), e = Or(t, s, i), e !== null && (_n(e, t, i, r), eu(e, t, i)) }, enqueueForceUpdate: function (t, e) { t = t._reactInternals; var n = Tt(), r = Ur(t), i = Yn(n, r); i.tag = 2, e != null && (i.callback = e), e = Or(t, i, r), e !== null && (_n(e, t, r, n), eu(e, t, r)) } }; function eg(t, e, n, r, i, s, o) { return t = t.stateNode, typeof t.shouldComponentUpdate == "function" ? t.shouldComponentUpdate(r, s, o) : e.prototype && e.prototype.isPureReactComponent ? !ca(n, r) || !ca(i, s) : !0 } function A0(t, e, n) { var r = !1, i = Gr, s = e.contextType; return typeof s == "object" && s !== null ? s = on(s) : (i = Mt(e) ? Ci : Et.current, r = e.contextTypes, s = (r = r != null) ? Rs(t, i) : Gr), e = new e(n, s), t.memoizedState = e.state !== null && e.state !== void 0 ? e.state : null, e.updater = dc, t.stateNode = e, e._reactInternals = t, r && (t = t.stateNode, t.__reactInternalMemoizedUnmaskedChildContext = i, t.__reactInternalMemoizedMaskedChildContext = s), e } function tg(t, e, n, r) { t = e.state, typeof e.componentWillReceiveProps == "function" && e.componentWillReceiveProps(n, r), typeof e.UNSAFE_componentWillReceiveProps == "function" && e.UNSAFE_componentWillReceiveProps(n, r), e.state !== t && dc.enqueueReplaceState(e, e.state, null) } function Eh(t, e, n, r) { var i = t.stateNode; i.props = n, i.state = t.memoizedState, i.refs = {}, Mf(t); var s = e.contextType; typeof s == "object" && s !== null ? i.context = on(s) : (s = Mt(e) ? Ci : Et.current, i.context = Rs(t, s)), i.state = t.memoizedState, s = e.getDerivedStateFromProps, typeof s == "function" && (wh(t, e, s, n), i.state = t.memoizedState), typeof e.getDerivedStateFromProps == "function" || typeof i.getSnapshotBeforeUpdate == "function" || typeof i.UNSAFE_componentWillMount != "function" && typeof i.componentWillMount != "function" || (e = i.state, typeof i.componentWillMount == "function" && i.componentWillMount(), typeof i.UNSAFE_componentWillMount == "function" && i.UNSAFE_componentWillMount(), e !== i.state && dc.enqueueReplaceState(i, i.state, null), bu(t, n, i, r), i.state = t.memoizedState), typeof i.componentDidMount == "function" && (t.flags |= 4194308) } function js(t, e) {
|
|
try { var n = "", r = e; do n += JE(r), r = r.return; while (r); var i = n } catch (s) {
|
|
i = `
|
|
Error generating stack: `+ s.message + `
|
|
`+ s.stack
|
|
} return { value: t, source: e, stack: i, digest: null }
|
|
} function Ed(t, e, n) { return { value: t, source: null, stack: n ?? null, digest: e ?? null } } function xh(t, e) { try { console.error(e.value) } catch (n) { setTimeout(function () { throw n }) } } var Sk = typeof WeakMap == "function" ? WeakMap : Map; function C0(t, e, n) { n = Yn(-1, n), n.tag = 3, n.payload = { element: null }; var r = e.value; return n.callback = function () { ju || (ju = !0, Rh = r), xh(t, e) }, n } function N0(t, e, n) { n = Yn(-1, n), n.tag = 3; var r = t.type.getDerivedStateFromError; if (typeof r == "function") { var i = e.value; n.payload = function () { return r(i) }, n.callback = function () { xh(t, e) } } var s = t.stateNode; return s !== null && typeof s.componentDidCatch == "function" && (n.callback = function () { xh(t, e), typeof r != "function" && (Fr === null ? Fr = new Set([this]) : Fr.add(this)); var o = e.stack; this.componentDidCatch(e.value, { componentStack: o !== null ? o : "" }) }), n } function ng(t, e, n) { var r = t.pingCache; if (r === null) { r = t.pingCache = new Sk; var i = new Set; r.set(e, i) } else i = r.get(e), i === void 0 && (i = new Set, r.set(e, i)); i.has(n) || (i.add(n), t = Fk.bind(null, t, e, n), e.then(t, t)) } function rg(t) { do { var e; if ((e = t.tag === 13) && (e = t.memoizedState, e = e !== null ? e.dehydrated !== null : !0), e) return t; t = t.return } while (t !== null); return null } function ig(t, e, n, r, i) { return t.mode & 1 ? (t.flags |= 65536, t.lanes = i, t) : (t === e ? t.flags |= 65536 : (t.flags |= 128, n.flags |= 131072, n.flags &= -52805, n.tag === 1 && (n.alternate === null ? n.tag = 17 : (e = Yn(-1, 1), e.tag = 2, Or(n, e, 1))), n.lanes |= 1), t) } var Ik = ar.ReactCurrentOwner, Dt = !1; function kt(t, e, n, r) { e.child = t === null ? i0(e, null, n, r) : Ls(e, t.child, n, r) } function sg(t, e, n, r, i) { n = n.render; var s = e.ref; return Ss(e, i), r = Uf(t, e, n, r, s, i), n = zf(), t !== null && !Dt ? (e.updateQueue = t.updateQueue, e.flags &= -2053, t.lanes &= ~i, tr(t, e, i)) : (De && n && Cf(e), e.flags |= 1, kt(t, e, r, i), e.child) } function og(t, e, n, r, i) { if (t === null) { var s = n.type; return typeof s == "function" && !Xf(s) && s.defaultProps === void 0 && n.compare === null && n.defaultProps === void 0 ? (e.tag = 15, e.type = s, P0(t, e, s, r, i)) : (t = ou(n.type, null, r, e, e.mode, i), t.ref = e.ref, t.return = e, e.child = t) } if (s = t.child, !(t.lanes & i)) { var o = s.memoizedProps; if (n = n.compare, n = n !== null ? n : ca, n(o, r) && t.ref === e.ref) return tr(t, e, i) } return e.flags |= 1, t = zr(s, r), t.ref = e.ref, t.return = e, e.child = t } function P0(t, e, n, r, i) { if (t !== null) { var s = t.memoizedProps; if (ca(s, r) && t.ref === e.ref) if (Dt = !1, e.pendingProps = r = s, (t.lanes & i) !== 0) t.flags & 131072 && (Dt = !0); else return e.lanes = t.lanes, tr(t, e, i) } return kh(t, e, n, r, i) } function b0(t, e, n) { var r = e.pendingProps, i = r.children, s = t !== null ? t.memoizedState : null; if (r.mode === "hidden") if (!(e.mode & 1)) e.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, Ae(_s, zt), zt |= n; else { if (!(n & 1073741824)) return t = s !== null ? s.baseLanes | n : n, e.lanes = e.childLanes = 1073741824, e.memoizedState = { baseLanes: t, cachePool: null, transitions: null }, e.updateQueue = null, Ae(_s, zt), zt |= t, null; e.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, r = s !== null ? s.baseLanes : n, Ae(_s, zt), zt |= r } else s !== null ? (r = s.baseLanes | n, e.memoizedState = null) : r = n, Ae(_s, zt), zt |= r; return kt(t, e, i, n), e.child } function R0(t, e) { var n = e.ref; (t === null && n !== null || t !== null && t.ref !== n) && (e.flags |= 512, e.flags |= 2097152) } function kh(t, e, n, r, i) { var s = Mt(n) ? Ci : Et.current; return s = Rs(e, s), Ss(e, i), n = Uf(t, e, n, r, s, i), r = zf(), t !== null && !Dt ? (e.updateQueue = t.updateQueue, e.flags &= -2053, t.lanes &= ~i, tr(t, e, i)) : (De && r && Cf(e), e.flags |= 1, kt(t, e, n, i), e.child) } function ag(t, e, n, r, i) { if (Mt(n)) { var s = !0; Iu(e) } else s = !1; if (Ss(e, i), e.stateNode === null) ru(t, e), A0(e, n, r), Eh(e, n, r, i), r = !0; else if (t === null) { var o = e.stateNode, l = e.memoizedProps; o.props = l; var u = o.context, h = n.contextType; typeof h == "object" && h !== null ? h = on(h) : (h = Mt(n) ? Ci : Et.current, h = Rs(e, h)); var p = n.getDerivedStateFromProps, v = typeof p == "function" || typeof o.getSnapshotBeforeUpdate == "function"; v || typeof o.UNSAFE_componentWillReceiveProps != "function" && typeof o.componentWillReceiveProps != "function" || (l !== r || u !== h) && tg(e, o, r, h), Tr = !1; var m = e.memoizedState; o.state = m, bu(e, r, o, i), u = e.memoizedState, l !== r || m !== u || Lt.current || Tr ? (typeof p == "function" && (wh(e, n, p, r), u = e.memoizedState), (l = Tr || eg(e, n, l, r, m, u, h)) ? (v || typeof o.UNSAFE_componentWillMount != "function" && typeof o.componentWillMount != "function" || (typeof o.componentWillMount == "function" && o.componentWillMount(), typeof o.UNSAFE_componentWillMount == "function" && o.UNSAFE_componentWillMount()), typeof o.componentDidMount == "function" && (e.flags |= 4194308)) : (typeof o.componentDidMount == "function" && (e.flags |= 4194308), e.memoizedProps = r, e.memoizedState = u), o.props = r, o.state = u, o.context = h, r = l) : (typeof o.componentDidMount == "function" && (e.flags |= 4194308), r = !1) } else { o = e.stateNode, o0(t, e), l = e.memoizedProps, h = e.type === e.elementType ? l : mn(e.type, l), o.props = h, v = e.pendingProps, m = o.context, u = n.contextType, typeof u == "object" && u !== null ? u = on(u) : (u = Mt(n) ? Ci : Et.current, u = Rs(e, u)); var C = n.getDerivedStateFromProps; (p = typeof C == "function" || typeof o.getSnapshotBeforeUpdate == "function") || typeof o.UNSAFE_componentWillReceiveProps != "function" && typeof o.componentWillReceiveProps != "function" || (l !== v || m !== u) && tg(e, o, r, u), Tr = !1, m = e.memoizedState, o.state = m, bu(e, r, o, i); var R = e.memoizedState; l !== v || m !== R || Lt.current || Tr ? (typeof C == "function" && (wh(e, n, C, r), R = e.memoizedState), (h = Tr || eg(e, n, h, r, m, R, u) || !1) ? (p || typeof o.UNSAFE_componentWillUpdate != "function" && typeof o.componentWillUpdate != "function" || (typeof o.componentWillUpdate == "function" && o.componentWillUpdate(r, R, u), typeof o.UNSAFE_componentWillUpdate == "function" && o.UNSAFE_componentWillUpdate(r, R, u)), typeof o.componentDidUpdate == "function" && (e.flags |= 4), typeof o.getSnapshotBeforeUpdate == "function" && (e.flags |= 1024)) : (typeof o.componentDidUpdate != "function" || l === t.memoizedProps && m === t.memoizedState || (e.flags |= 4), typeof o.getSnapshotBeforeUpdate != "function" || l === t.memoizedProps && m === t.memoizedState || (e.flags |= 1024), e.memoizedProps = r, e.memoizedState = R), o.props = r, o.state = R, o.context = u, r = h) : (typeof o.componentDidUpdate != "function" || l === t.memoizedProps && m === t.memoizedState || (e.flags |= 4), typeof o.getSnapshotBeforeUpdate != "function" || l === t.memoizedProps && m === t.memoizedState || (e.flags |= 1024), r = !1) } return Th(t, e, n, r, s, i) } function Th(t, e, n, r, i, s) { R0(t, e); var o = (e.flags & 128) !== 0; if (!r && !o) return i && qm(e, n, !1), tr(t, e, s); r = e.stateNode, Ik.current = e; var l = o && typeof n.getDerivedStateFromError != "function" ? null : r.render(); return e.flags |= 1, t !== null && o ? (e.child = Ls(e, t.child, null, s), e.child = Ls(e, null, l, s)) : kt(t, e, l, s), e.memoizedState = r.state, i && qm(e, n, !0), e.child } function D0(t) { var e = t.stateNode; e.pendingContext ? Hm(t, e.pendingContext, e.pendingContext !== e.context) : e.context && Hm(t, e.context, !1), jf(t, e.containerInfo) } function lg(t, e, n, r, i) { return Ds(), Pf(i), e.flags |= 256, kt(t, e, n, r), e.child } var Sh = { dehydrated: null, treeContext: null, retryLane: 0 }; function Ih(t) { return { baseLanes: t, cachePool: null, transitions: null } } function L0(t, e, n) { var r = e.pendingProps, i = Me.current, s = !1, o = (e.flags & 128) !== 0, l; if ((l = o) || (l = t !== null && t.memoizedState === null ? !1 : (i & 2) !== 0), l ? (s = !0, e.flags &= -129) : (t === null || t.memoizedState !== null) && (i |= 1), Ae(Me, i & 1), t === null) return vh(e), t = e.memoizedState, t !== null && (t = t.dehydrated, t !== null) ? (e.mode & 1 ? t.data === "$!" ? e.lanes = 8 : e.lanes = 1073741824 : e.lanes = 1, null) : (o = r.children, t = r.fallback, s ? (r = e.mode, s = e.child, o = { mode: "hidden", children: o }, !(r & 1) && s !== null ? (s.childLanes = 0, s.pendingProps = o) : s = pc(o, r, 0, null), t = Ii(t, r, n, null), s.return = e, t.return = e, s.sibling = t, e.child = s, e.child.memoizedState = Ih(n), e.memoizedState = Sh, t) : Wf(e, o)); if (i = t.memoizedState, i !== null && (l = i.dehydrated, l !== null)) return Ak(t, e, o, r, l, i, n); if (s) { s = r.fallback, o = e.mode, i = t.child, l = i.sibling; var u = { mode: "hidden", children: r.children }; return !(o & 1) && e.child !== i ? (r = e.child, r.childLanes = 0, r.pendingProps = u, e.deletions = null) : (r = zr(i, u), r.subtreeFlags = i.subtreeFlags & 14680064), l !== null ? s = zr(l, s) : (s = Ii(s, o, n, null), s.flags |= 2), s.return = e, r.return = e, r.sibling = s, e.child = r, r = s, s = e.child, o = t.child.memoizedState, o = o === null ? Ih(n) : { baseLanes: o.baseLanes | n, cachePool: null, transitions: o.transitions }, s.memoizedState = o, s.childLanes = t.childLanes & ~n, e.memoizedState = Sh, r } return s = t.child, t = s.sibling, r = zr(s, { mode: "visible", children: r.children }), !(e.mode & 1) && (r.lanes = n), r.return = e, r.sibling = null, t !== null && (n = e.deletions, n === null ? (e.deletions = [t], e.flags |= 16) : n.push(t)), e.child = r, e.memoizedState = null, r } function Wf(t, e) { return e = pc({ mode: "visible", children: e }, t.mode, 0, null), e.return = t, t.child = e } function Rl(t, e, n, r) { return r !== null && Pf(r), Ls(e, t.child, null, n), t = Wf(e, e.pendingProps.children), t.flags |= 2, e.memoizedState = null, t } function Ak(t, e, n, r, i, s, o) { if (n) return e.flags & 256 ? (e.flags &= -257, r = Ed(Error(B(422))), Rl(t, e, o, r)) : e.memoizedState !== null ? (e.child = t.child, e.flags |= 128, null) : (s = r.fallback, i = e.mode, r = pc({ mode: "visible", children: r.children }, i, 0, null), s = Ii(s, i, o, null), s.flags |= 2, r.return = e, s.return = e, r.sibling = s, e.child = r, e.mode & 1 && Ls(e, t.child, null, o), e.child.memoizedState = Ih(o), e.memoizedState = Sh, s); if (!(e.mode & 1)) return Rl(t, e, o, null); if (i.data === "$!") { if (r = i.nextSibling && i.nextSibling.dataset, r) var l = r.dgst; return r = l, s = Error(B(419)), r = Ed(s, r, void 0), Rl(t, e, o, r) } if (l = (o & t.childLanes) !== 0, Dt || l) { if (r = rt, r !== null) { switch (o & -o) { case 4: i = 2; break; case 16: i = 8; break; case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: i = 32; break; case 536870912: i = 268435456; break; default: i = 0 }i = i & (r.suspendedLanes | o) ? 0 : i, i !== 0 && i !== s.retryLane && (s.retryLane = i, er(t, i), _n(r, t, i, -1)) } return Yf(), r = Ed(Error(B(421))), Rl(t, e, o, r) } return i.data === "$?" ? (e.flags |= 128, e.child = t.child, e = Uk.bind(null, t), i._reactRetry = e, null) : (t = s.treeContext, Bt = Vr(i.nextSibling), Wt = e, De = !0, yn = null, t !== null && (tn[nn++] = Hn, tn[nn++] = qn, tn[nn++] = Ni, Hn = t.id, qn = t.overflow, Ni = e), e = Wf(e, r.children), e.flags |= 4096, e) } function ug(t, e, n) { t.lanes |= e; var r = t.alternate; r !== null && (r.lanes |= e), _h(t.return, e, n) } function xd(t, e, n, r, i) { var s = t.memoizedState; s === null ? t.memoizedState = { isBackwards: e, rendering: null, renderingStartTime: 0, last: r, tail: n, tailMode: i } : (s.isBackwards = e, s.rendering = null, s.renderingStartTime = 0, s.last = r, s.tail = n, s.tailMode = i) } function M0(t, e, n) { var r = e.pendingProps, i = r.revealOrder, s = r.tail; if (kt(t, e, r.children, n), r = Me.current, r & 2) r = r & 1 | 2, e.flags |= 128; else { if (t !== null && t.flags & 128) e: for (t = e.child; t !== null;) { if (t.tag === 13) t.memoizedState !== null && ug(t, n, e); else if (t.tag === 19) ug(t, n, e); else if (t.child !== null) { t.child.return = t, t = t.child; continue } if (t === e) break e; for (; t.sibling === null;) { if (t.return === null || t.return === e) break e; t = t.return } t.sibling.return = t.return, t = t.sibling } r &= 1 } if (Ae(Me, r), !(e.mode & 1)) e.memoizedState = null; else switch (i) { case "forwards": for (n = e.child, i = null; n !== null;)t = n.alternate, t !== null && Ru(t) === null && (i = n), n = n.sibling; n = i, n === null ? (i = e.child, e.child = null) : (i = n.sibling, n.sibling = null), xd(e, !1, i, n, s); break; case "backwards": for (n = null, i = e.child, e.child = null; i !== null;) { if (t = i.alternate, t !== null && Ru(t) === null) { e.child = i; break } t = i.sibling, i.sibling = n, n = i, i = t } xd(e, !0, n, null, s); break; case "together": xd(e, !1, null, null, void 0); break; default: e.memoizedState = null }return e.child } function ru(t, e) { !(e.mode & 1) && t !== null && (t.alternate = null, e.alternate = null, e.flags |= 2) } function tr(t, e, n) { if (t !== null && (e.dependencies = t.dependencies), bi |= e.lanes, !(n & e.childLanes)) return null; if (t !== null && e.child !== t.child) throw Error(B(153)); if (e.child !== null) { for (t = e.child, n = zr(t, t.pendingProps), e.child = n, n.return = e; t.sibling !== null;)t = t.sibling, n = n.sibling = zr(t, t.pendingProps), n.return = e; n.sibling = null } return e.child } function Ck(t, e, n) { switch (e.tag) { case 3: D0(e), Ds(); break; case 5: a0(e); break; case 1: Mt(e.type) && Iu(e); break; case 4: jf(e, e.stateNode.containerInfo); break; case 10: var r = e.type._context, i = e.memoizedProps.value; Ae(Nu, r._currentValue), r._currentValue = i; break; case 13: if (r = e.memoizedState, r !== null) return r.dehydrated !== null ? (Ae(Me, Me.current & 1), e.flags |= 128, null) : n & e.child.childLanes ? L0(t, e, n) : (Ae(Me, Me.current & 1), t = tr(t, e, n), t !== null ? t.sibling : null); Ae(Me, Me.current & 1); break; case 19: if (r = (n & e.childLanes) !== 0, t.flags & 128) { if (r) return M0(t, e, n); e.flags |= 128 } if (i = e.memoizedState, i !== null && (i.rendering = null, i.tail = null, i.lastEffect = null), Ae(Me, Me.current), r) break; return null; case 22: case 23: return e.lanes = 0, b0(t, e, n) }return tr(t, e, n) } var j0, Ah, V0, O0; j0 = function (t, e) { for (var n = e.child; n !== null;) { if (n.tag === 5 || n.tag === 6) t.appendChild(n.stateNode); else if (n.tag !== 4 && n.child !== null) { n.child.return = n, n = n.child; continue } if (n === e) break; for (; n.sibling === null;) { if (n.return === null || n.return === e) return; n = n.return } n.sibling.return = n.return, n = n.sibling } }; Ah = function () { }; V0 = function (t, e, n, r) { var i = t.memoizedProps; if (i !== r) { t = e.stateNode, ki(Pn.current); var s = null; switch (n) { case "input": i = Qd(t, i), r = Qd(t, r), s = []; break; case "select": i = Ve({}, i, { value: void 0 }), r = Ve({}, r, { value: void 0 }), s = []; break; case "textarea": i = Jd(t, i), r = Jd(t, r), s = []; break; default: typeof i.onClick != "function" && typeof r.onClick == "function" && (t.onclick = Tu) }eh(n, r); var o; n = null; for (h in i) if (!r.hasOwnProperty(h) && i.hasOwnProperty(h) && i[h] != null) if (h === "style") { var l = i[h]; for (o in l) l.hasOwnProperty(o) && (n || (n = {}), n[o] = "") } else h !== "dangerouslySetInnerHTML" && h !== "children" && h !== "suppressContentEditableWarning" && h !== "suppressHydrationWarning" && h !== "autoFocus" && (ra.hasOwnProperty(h) ? s || (s = []) : (s = s || []).push(h, null)); for (h in r) { var u = r[h]; if (l = i != null ? i[h] : void 0, r.hasOwnProperty(h) && u !== l && (u != null || l != null)) if (h === "style") if (l) { for (o in l) !l.hasOwnProperty(o) || u && u.hasOwnProperty(o) || (n || (n = {}), n[o] = ""); for (o in u) u.hasOwnProperty(o) && l[o] !== u[o] && (n || (n = {}), n[o] = u[o]) } else n || (s || (s = []), s.push(h, n)), n = u; else h === "dangerouslySetInnerHTML" ? (u = u ? u.__html : void 0, l = l ? l.__html : void 0, u != null && l !== u && (s = s || []).push(h, u)) : h === "children" ? typeof u != "string" && typeof u != "number" || (s = s || []).push(h, "" + u) : h !== "suppressContentEditableWarning" && h !== "suppressHydrationWarning" && (ra.hasOwnProperty(h) ? (u != null && h === "onScroll" && Pe("scroll", t), s || l === u || (s = [])) : (s = s || []).push(h, u)) } n && (s = s || []).push("style", n); var h = s; (e.updateQueue = h) && (e.flags |= 4) } }; O0 = function (t, e, n, r) { n !== r && (e.flags |= 4) }; function Ao(t, e) { if (!De) switch (t.tailMode) { case "hidden": e = t.tail; for (var n = null; e !== null;)e.alternate !== null && (n = e), e = e.sibling; n === null ? t.tail = null : n.sibling = null; break; case "collapsed": n = t.tail; for (var r = null; n !== null;)n.alternate !== null && (r = n), n = n.sibling; r === null ? e || t.tail === null ? t.tail = null : t.tail.sibling = null : r.sibling = null } } function gt(t) { var e = t.alternate !== null && t.alternate.child === t.child, n = 0, r = 0; if (e) for (var i = t.child; i !== null;)n |= i.lanes | i.childLanes, r |= i.subtreeFlags & 14680064, r |= i.flags & 14680064, i.return = t, i = i.sibling; else for (i = t.child; i !== null;)n |= i.lanes | i.childLanes, r |= i.subtreeFlags, r |= i.flags, i.return = t, i = i.sibling; return t.subtreeFlags |= r, t.childLanes = n, e } function Nk(t, e, n) { var r = e.pendingProps; switch (Nf(e), e.tag) { case 2: case 16: case 15: case 0: case 11: case 7: case 8: case 12: case 9: case 14: return gt(e), null; case 1: return Mt(e.type) && Su(), gt(e), null; case 3: return r = e.stateNode, Ms(), be(Lt), be(Et), Of(), r.pendingContext && (r.context = r.pendingContext, r.pendingContext = null), (t === null || t.child === null) && (Pl(e) ? e.flags |= 4 : t === null || t.memoizedState.isDehydrated && !(e.flags & 256) || (e.flags |= 1024, yn !== null && (Mh(yn), yn = null))), Ah(t, e), gt(e), null; case 5: Vf(e); var i = ki(ma.current); if (n = e.type, t !== null && e.stateNode != null) V0(t, e, n, r, i), t.ref !== e.ref && (e.flags |= 512, e.flags |= 2097152); else { if (!r) { if (e.stateNode === null) throw Error(B(166)); return gt(e), null } if (t = ki(Pn.current), Pl(e)) { r = e.stateNode, n = e.type; var s = e.memoizedProps; switch (r[An] = e, r[fa] = s, t = (e.mode & 1) !== 0, n) { case "dialog": Pe("cancel", r), Pe("close", r); break; case "iframe": case "object": case "embed": Pe("load", r); break; case "video": case "audio": for (i = 0; i < jo.length; i++)Pe(jo[i], r); break; case "source": Pe("error", r); break; case "img": case "image": case "link": Pe("error", r), Pe("load", r); break; case "details": Pe("toggle", r); break; case "input": vm(r, s), Pe("invalid", r); break; case "select": r._wrapperState = { wasMultiple: !!s.multiple }, Pe("invalid", r); break; case "textarea": wm(r, s), Pe("invalid", r) }eh(n, s), i = null; for (var o in s) if (s.hasOwnProperty(o)) { var l = s[o]; o === "children" ? typeof l == "string" ? r.textContent !== l && (s.suppressHydrationWarning !== !0 && Nl(r.textContent, l, t), i = ["children", l]) : typeof l == "number" && r.textContent !== "" + l && (s.suppressHydrationWarning !== !0 && Nl(r.textContent, l, t), i = ["children", "" + l]) : ra.hasOwnProperty(o) && l != null && o === "onScroll" && Pe("scroll", r) } switch (n) { case "input": El(r), _m(r, s, !0); break; case "textarea": El(r), Em(r); break; case "select": case "option": break; default: typeof s.onClick == "function" && (r.onclick = Tu) }r = i, e.updateQueue = r, r !== null && (e.flags |= 4) } else { o = i.nodeType === 9 ? i : i.ownerDocument, t === "http://www.w3.org/1999/xhtml" && (t = hv(n)), t === "http://www.w3.org/1999/xhtml" ? n === "script" ? (t = o.createElement("div"), t.innerHTML = "<script><\/script>", t = t.removeChild(t.firstChild)) : typeof r.is == "string" ? t = o.createElement(n, { is: r.is }) : (t = o.createElement(n), n === "select" && (o = t, r.multiple ? o.multiple = !0 : r.size && (o.size = r.size))) : t = o.createElementNS(t, n), t[An] = e, t[fa] = r, j0(t, e, !1, !1), e.stateNode = t; e: { switch (o = th(n, r), n) { case "dialog": Pe("cancel", t), Pe("close", t), i = r; break; case "iframe": case "object": case "embed": Pe("load", t), i = r; break; case "video": case "audio": for (i = 0; i < jo.length; i++)Pe(jo[i], t); i = r; break; case "source": Pe("error", t), i = r; break; case "img": case "image": case "link": Pe("error", t), Pe("load", t), i = r; break; case "details": Pe("toggle", t), i = r; break; case "input": vm(t, r), i = Qd(t, r), Pe("invalid", t); break; case "option": i = r; break; case "select": t._wrapperState = { wasMultiple: !!r.multiple }, i = Ve({}, r, { value: void 0 }), Pe("invalid", t); break; case "textarea": wm(t, r), i = Jd(t, r), Pe("invalid", t); break; default: i = r }eh(n, i), l = i; for (s in l) if (l.hasOwnProperty(s)) { var u = l[s]; s === "style" ? mv(t, u) : s === "dangerouslySetInnerHTML" ? (u = u ? u.__html : void 0, u != null && fv(t, u)) : s === "children" ? typeof u == "string" ? (n !== "textarea" || u !== "") && ia(t, u) : typeof u == "number" && ia(t, "" + u) : s !== "suppressContentEditableWarning" && s !== "suppressHydrationWarning" && s !== "autoFocus" && (ra.hasOwnProperty(s) ? u != null && s === "onScroll" && Pe("scroll", t) : u != null && pf(t, s, u, o)) } switch (n) { case "input": El(t), _m(t, r, !1); break; case "textarea": El(t), Em(t); break; case "option": r.value != null && t.setAttribute("value", "" + Kr(r.value)); break; case "select": t.multiple = !!r.multiple, s = r.value, s != null ? Es(t, !!r.multiple, s, !1) : r.defaultValue != null && Es(t, !!r.multiple, r.defaultValue, !0); break; default: typeof i.onClick == "function" && (t.onclick = Tu) }switch (n) { case "button": case "input": case "select": case "textarea": r = !!r.autoFocus; break e; case "img": r = !0; break e; default: r = !1 } } r && (e.flags |= 4) } e.ref !== null && (e.flags |= 512, e.flags |= 2097152) } return gt(e), null; case 6: if (t && e.stateNode != null) O0(t, e, t.memoizedProps, r); else { if (typeof r != "string" && e.stateNode === null) throw Error(B(166)); if (n = ki(ma.current), ki(Pn.current), Pl(e)) { if (r = e.stateNode, n = e.memoizedProps, r[An] = e, (s = r.nodeValue !== n) && (t = Wt, t !== null)) switch (t.tag) { case 3: Nl(r.nodeValue, n, (t.mode & 1) !== 0); break; case 5: t.memoizedProps.suppressHydrationWarning !== !0 && Nl(r.nodeValue, n, (t.mode & 1) !== 0) }s && (e.flags |= 4) } else r = (n.nodeType === 9 ? n : n.ownerDocument).createTextNode(r), r[An] = e, e.stateNode = r } return gt(e), null; case 13: if (be(Me), r = e.memoizedState, t === null || t.memoizedState !== null && t.memoizedState.dehydrated !== null) { if (De && Bt !== null && e.mode & 1 && !(e.flags & 128)) n0(), Ds(), e.flags |= 98560, s = !1; else if (s = Pl(e), r !== null && r.dehydrated !== null) { if (t === null) { if (!s) throw Error(B(318)); if (s = e.memoizedState, s = s !== null ? s.dehydrated : null, !s) throw Error(B(317)); s[An] = e } else Ds(), !(e.flags & 128) && (e.memoizedState = null), e.flags |= 4; gt(e), s = !1 } else yn !== null && (Mh(yn), yn = null), s = !0; if (!s) return e.flags & 65536 ? e : null } return e.flags & 128 ? (e.lanes = n, e) : (r = r !== null, r !== (t !== null && t.memoizedState !== null) && r && (e.child.flags |= 8192, e.mode & 1 && (t === null || Me.current & 1 ? Ze === 0 && (Ze = 3) : Yf())), e.updateQueue !== null && (e.flags |= 4), gt(e), null); case 4: return Ms(), Ah(t, e), t === null && da(e.stateNode.containerInfo), gt(e), null; case 10: return Df(e.type._context), gt(e), null; case 17: return Mt(e.type) && Su(), gt(e), null; case 19: if (be(Me), s = e.memoizedState, s === null) return gt(e), null; if (r = (e.flags & 128) !== 0, o = s.rendering, o === null) if (r) Ao(s, !1); else { if (Ze !== 0 || t !== null && t.flags & 128) for (t = e.child; t !== null;) { if (o = Ru(t), o !== null) { for (e.flags |= 128, Ao(s, !1), r = o.updateQueue, r !== null && (e.updateQueue = r, e.flags |= 4), e.subtreeFlags = 0, r = n, n = e.child; n !== null;)s = n, t = r, s.flags &= 14680066, o = s.alternate, o === null ? (s.childLanes = 0, s.lanes = t, s.child = null, s.subtreeFlags = 0, s.memoizedProps = null, s.memoizedState = null, s.updateQueue = null, s.dependencies = null, s.stateNode = null) : (s.childLanes = o.childLanes, s.lanes = o.lanes, s.child = o.child, s.subtreeFlags = 0, s.deletions = null, s.memoizedProps = o.memoizedProps, s.memoizedState = o.memoizedState, s.updateQueue = o.updateQueue, s.type = o.type, t = o.dependencies, s.dependencies = t === null ? null : { lanes: t.lanes, firstContext: t.firstContext }), n = n.sibling; return Ae(Me, Me.current & 1 | 2), e.child } t = t.sibling } s.tail !== null && $e() > Vs && (e.flags |= 128, r = !0, Ao(s, !1), e.lanes = 4194304) } else { if (!r) if (t = Ru(o), t !== null) { if (e.flags |= 128, r = !0, n = t.updateQueue, n !== null && (e.updateQueue = n, e.flags |= 4), Ao(s, !0), s.tail === null && s.tailMode === "hidden" && !o.alternate && !De) return gt(e), null } else 2 * $e() - s.renderingStartTime > Vs && n !== 1073741824 && (e.flags |= 128, r = !0, Ao(s, !1), e.lanes = 4194304); s.isBackwards ? (o.sibling = e.child, e.child = o) : (n = s.last, n !== null ? n.sibling = o : e.child = o, s.last = o) } return s.tail !== null ? (e = s.tail, s.rendering = e, s.tail = e.sibling, s.renderingStartTime = $e(), e.sibling = null, n = Me.current, Ae(Me, r ? n & 1 | 2 : n & 1), e) : (gt(e), null); case 22: case 23: return Qf(), r = e.memoizedState !== null, t !== null && t.memoizedState !== null !== r && (e.flags |= 8192), r && e.mode & 1 ? zt & 1073741824 && (gt(e), e.subtreeFlags & 6 && (e.flags |= 8192)) : gt(e), null; case 24: return null; case 25: return null }throw Error(B(156, e.tag)) } function Pk(t, e) { switch (Nf(e), e.tag) { case 1: return Mt(e.type) && Su(), t = e.flags, t & 65536 ? (e.flags = t & -65537 | 128, e) : null; case 3: return Ms(), be(Lt), be(Et), Of(), t = e.flags, t & 65536 && !(t & 128) ? (e.flags = t & -65537 | 128, e) : null; case 5: return Vf(e), null; case 13: if (be(Me), t = e.memoizedState, t !== null && t.dehydrated !== null) { if (e.alternate === null) throw Error(B(340)); Ds() } return t = e.flags, t & 65536 ? (e.flags = t & -65537 | 128, e) : null; case 19: return be(Me), null; case 4: return Ms(), null; case 10: return Df(e.type._context), null; case 22: case 23: return Qf(), null; case 24: return null; default: return null } } var Dl = !1, _t = !1, bk = typeof WeakSet == "function" ? WeakSet : Set, G = null; function vs(t, e) { var n = t.ref; if (n !== null) if (typeof n == "function") try { n(null) } catch (r) { Ue(t, e, r) } else n.current = null } function Ch(t, e, n) { try { n() } catch (r) { Ue(t, e, r) } } var cg = !1; function Rk(t, e) { if (dh = Eu, t = $v(), Af(t)) { if ("selectionStart" in t) var n = { start: t.selectionStart, end: t.selectionEnd }; else e: { n = (n = t.ownerDocument) && n.defaultView || window; var r = n.getSelection && n.getSelection(); if (r && r.rangeCount !== 0) { n = r.anchorNode; var i = r.anchorOffset, s = r.focusNode; r = r.focusOffset; try { n.nodeType, s.nodeType } catch { n = null; break e } var o = 0, l = -1, u = -1, h = 0, p = 0, v = t, m = null; t: for (; ;) { for (var C; v !== n || i !== 0 && v.nodeType !== 3 || (l = o + i), v !== s || r !== 0 && v.nodeType !== 3 || (u = o + r), v.nodeType === 3 && (o += v.nodeValue.length), (C = v.firstChild) !== null;)m = v, v = C; for (; ;) { if (v === t) break t; if (m === n && ++h === i && (l = o), m === s && ++p === r && (u = o), (C = v.nextSibling) !== null) break; v = m, m = v.parentNode } v = C } n = l === -1 || u === -1 ? null : { start: l, end: u } } else n = null } n = n || { start: 0, end: 0 } } else n = null; for (hh = { focusedElem: t, selectionRange: n }, Eu = !1, G = e; G !== null;)if (e = G, t = e.child, (e.subtreeFlags & 1028) !== 0 && t !== null) t.return = e, G = t; else for (; G !== null;) { e = G; try { var R = e.alternate; if (e.flags & 1024) switch (e.tag) { case 0: case 11: case 15: break; case 1: if (R !== null) { var L = R.memoizedProps, V = R.memoizedState, S = e.stateNode, E = S.getSnapshotBeforeUpdate(e.elementType === e.type ? L : mn(e.type, L), V); S.__reactInternalSnapshotBeforeUpdate = E } break; case 3: var I = e.stateNode.containerInfo; I.nodeType === 1 ? I.textContent = "" : I.nodeType === 9 && I.documentElement && I.removeChild(I.documentElement); break; case 5: case 6: case 4: case 17: break; default: throw Error(B(163)) } } catch (j) { Ue(e, e.return, j) } if (t = e.sibling, t !== null) { t.return = e.return, G = t; break } G = e.return } return R = cg, cg = !1, R } function Qo(t, e, n) { var r = e.updateQueue; if (r = r !== null ? r.lastEffect : null, r !== null) { var i = r = r.next; do { if ((i.tag & t) === t) { var s = i.destroy; i.destroy = void 0, s !== void 0 && Ch(e, n, s) } i = i.next } while (i !== r) } } function hc(t, e) { if (e = e.updateQueue, e = e !== null ? e.lastEffect : null, e !== null) { var n = e = e.next; do { if ((n.tag & t) === t) { var r = n.create; n.destroy = r() } n = n.next } while (n !== e) } } function Nh(t) { var e = t.ref; if (e !== null) { var n = t.stateNode; switch (t.tag) { case 5: t = n; break; default: t = n }typeof e == "function" ? e(t) : e.current = t } } function F0(t) { var e = t.alternate; e !== null && (t.alternate = null, F0(e)), t.child = null, t.deletions = null, t.sibling = null, t.tag === 5 && (e = t.stateNode, e !== null && (delete e[An], delete e[fa], delete e[mh], delete e[pk], delete e[mk])), t.stateNode = null, t.return = null, t.dependencies = null, t.memoizedProps = null, t.memoizedState = null, t.pendingProps = null, t.stateNode = null, t.updateQueue = null } function U0(t) { return t.tag === 5 || t.tag === 3 || t.tag === 4 } function dg(t) { e: for (; ;) { for (; t.sibling === null;) { if (t.return === null || U0(t.return)) return null; t = t.return } for (t.sibling.return = t.return, t = t.sibling; t.tag !== 5 && t.tag !== 6 && t.tag !== 18;) { if (t.flags & 2 || t.child === null || t.tag === 4) continue e; t.child.return = t, t = t.child } if (!(t.flags & 2)) return t.stateNode } } function Ph(t, e, n) { var r = t.tag; if (r === 5 || r === 6) t = t.stateNode, e ? n.nodeType === 8 ? n.parentNode.insertBefore(t, e) : n.insertBefore(t, e) : (n.nodeType === 8 ? (e = n.parentNode, e.insertBefore(t, n)) : (e = n, e.appendChild(t)), n = n._reactRootContainer, n != null || e.onclick !== null || (e.onclick = Tu)); else if (r !== 4 && (t = t.child, t !== null)) for (Ph(t, e, n), t = t.sibling; t !== null;)Ph(t, e, n), t = t.sibling } function bh(t, e, n) { var r = t.tag; if (r === 5 || r === 6) t = t.stateNode, e ? n.insertBefore(t, e) : n.appendChild(t); else if (r !== 4 && (t = t.child, t !== null)) for (bh(t, e, n), t = t.sibling; t !== null;)bh(t, e, n), t = t.sibling } var ot = null, gn = !1; function wr(t, e, n) { for (n = n.child; n !== null;)z0(t, e, n), n = n.sibling } function z0(t, e, n) { if (Nn && typeof Nn.onCommitFiberUnmount == "function") try { Nn.onCommitFiberUnmount(ic, n) } catch { } switch (n.tag) { case 5: _t || vs(n, e); case 6: var r = ot, i = gn; ot = null, wr(t, e, n), ot = r, gn = i, ot !== null && (gn ? (t = ot, n = n.stateNode, t.nodeType === 8 ? t.parentNode.removeChild(n) : t.removeChild(n)) : ot.removeChild(n.stateNode)); break; case 18: ot !== null && (gn ? (t = ot, n = n.stateNode, t.nodeType === 8 ? md(t.parentNode, n) : t.nodeType === 1 && md(t, n), la(t)) : md(ot, n.stateNode)); break; case 4: r = ot, i = gn, ot = n.stateNode.containerInfo, gn = !0, wr(t, e, n), ot = r, gn = i; break; case 0: case 11: case 14: case 15: if (!_t && (r = n.updateQueue, r !== null && (r = r.lastEffect, r !== null))) { i = r = r.next; do { var s = i, o = s.destroy; s = s.tag, o !== void 0 && (s & 2 || s & 4) && Ch(n, e, o), i = i.next } while (i !== r) } wr(t, e, n); break; case 1: if (!_t && (vs(n, e), r = n.stateNode, typeof r.componentWillUnmount == "function")) try { r.props = n.memoizedProps, r.state = n.memoizedState, r.componentWillUnmount() } catch (l) { Ue(n, e, l) } wr(t, e, n); break; case 21: wr(t, e, n); break; case 22: n.mode & 1 ? (_t = (r = _t) || n.memoizedState !== null, wr(t, e, n), _t = r) : wr(t, e, n); break; default: wr(t, e, n) } } function hg(t) { var e = t.updateQueue; if (e !== null) { t.updateQueue = null; var n = t.stateNode; n === null && (n = t.stateNode = new bk), e.forEach(function (r) { var i = zk.bind(null, t, r); n.has(r) || (n.add(r), r.then(i, i)) }) } } function fn(t, e) { var n = e.deletions; if (n !== null) for (var r = 0; r < n.length; r++) { var i = n[r]; try { var s = t, o = e, l = o; e: for (; l !== null;) { switch (l.tag) { case 5: ot = l.stateNode, gn = !1; break e; case 3: ot = l.stateNode.containerInfo, gn = !0; break e; case 4: ot = l.stateNode.containerInfo, gn = !0; break e }l = l.return } if (ot === null) throw Error(B(160)); z0(s, o, i), ot = null, gn = !1; var u = i.alternate; u !== null && (u.return = null), i.return = null } catch (h) { Ue(i, e, h) } } if (e.subtreeFlags & 12854) for (e = e.child; e !== null;)B0(e, t), e = e.sibling } function B0(t, e) { var n = t.alternate, r = t.flags; switch (t.tag) { case 0: case 11: case 14: case 15: if (fn(e, t), Sn(t), r & 4) { try { Qo(3, t, t.return), hc(3, t) } catch (L) { Ue(t, t.return, L) } try { Qo(5, t, t.return) } catch (L) { Ue(t, t.return, L) } } break; case 1: fn(e, t), Sn(t), r & 512 && n !== null && vs(n, n.return); break; case 5: if (fn(e, t), Sn(t), r & 512 && n !== null && vs(n, n.return), t.flags & 32) { var i = t.stateNode; try { ia(i, "") } catch (L) { Ue(t, t.return, L) } } if (r & 4 && (i = t.stateNode, i != null)) { var s = t.memoizedProps, o = n !== null ? n.memoizedProps : s, l = t.type, u = t.updateQueue; if (t.updateQueue = null, u !== null) try { l === "input" && s.type === "radio" && s.name != null && cv(i, s), th(l, o); var h = th(l, s); for (o = 0; o < u.length; o += 2) { var p = u[o], v = u[o + 1]; p === "style" ? mv(i, v) : p === "dangerouslySetInnerHTML" ? fv(i, v) : p === "children" ? ia(i, v) : pf(i, p, v, h) } switch (l) { case "input": Yd(i, s); break; case "textarea": dv(i, s); break; case "select": var m = i._wrapperState.wasMultiple; i._wrapperState.wasMultiple = !!s.multiple; var C = s.value; C != null ? Es(i, !!s.multiple, C, !1) : m !== !!s.multiple && (s.defaultValue != null ? Es(i, !!s.multiple, s.defaultValue, !0) : Es(i, !!s.multiple, s.multiple ? [] : "", !1)) }i[fa] = s } catch (L) { Ue(t, t.return, L) } } break; case 6: if (fn(e, t), Sn(t), r & 4) { if (t.stateNode === null) throw Error(B(162)); i = t.stateNode, s = t.memoizedProps; try { i.nodeValue = s } catch (L) { Ue(t, t.return, L) } } break; case 3: if (fn(e, t), Sn(t), r & 4 && n !== null && n.memoizedState.isDehydrated) try { la(e.containerInfo) } catch (L) { Ue(t, t.return, L) } break; case 4: fn(e, t), Sn(t); break; case 13: fn(e, t), Sn(t), i = t.child, i.flags & 8192 && (s = i.memoizedState !== null, i.stateNode.isHidden = s, !s || i.alternate !== null && i.alternate.memoizedState !== null || (Kf = $e())), r & 4 && hg(t); break; case 22: if (p = n !== null && n.memoizedState !== null, t.mode & 1 ? (_t = (h = _t) || p, fn(e, t), _t = h) : fn(e, t), Sn(t), r & 8192) { if (h = t.memoizedState !== null, (t.stateNode.isHidden = h) && !p && t.mode & 1) for (G = t, p = t.child; p !== null;) { for (v = G = p; G !== null;) { switch (m = G, C = m.child, m.tag) { case 0: case 11: case 14: case 15: Qo(4, m, m.return); break; case 1: vs(m, m.return); var R = m.stateNode; if (typeof R.componentWillUnmount == "function") { r = m, n = m.return; try { e = r, R.props = e.memoizedProps, R.state = e.memoizedState, R.componentWillUnmount() } catch (L) { Ue(r, n, L) } } break; case 5: vs(m, m.return); break; case 22: if (m.memoizedState !== null) { pg(v); continue } }C !== null ? (C.return = m, G = C) : pg(v) } p = p.sibling } e: for (p = null, v = t; ;) { if (v.tag === 5) { if (p === null) { p = v; try { i = v.stateNode, h ? (s = i.style, typeof s.setProperty == "function" ? s.setProperty("display", "none", "important") : s.display = "none") : (l = v.stateNode, u = v.memoizedProps.style, o = u != null && u.hasOwnProperty("display") ? u.display : null, l.style.display = pv("display", o)) } catch (L) { Ue(t, t.return, L) } } } else if (v.tag === 6) { if (p === null) try { v.stateNode.nodeValue = h ? "" : v.memoizedProps } catch (L) { Ue(t, t.return, L) } } else if ((v.tag !== 22 && v.tag !== 23 || v.memoizedState === null || v === t) && v.child !== null) { v.child.return = v, v = v.child; continue } if (v === t) break e; for (; v.sibling === null;) { if (v.return === null || v.return === t) break e; p === v && (p = null), v = v.return } p === v && (p = null), v.sibling.return = v.return, v = v.sibling } } break; case 19: fn(e, t), Sn(t), r & 4 && hg(t); break; case 21: break; default: fn(e, t), Sn(t) } } function Sn(t) { var e = t.flags; if (e & 2) { try { e: { for (var n = t.return; n !== null;) { if (U0(n)) { var r = n; break e } n = n.return } throw Error(B(160)) } switch (r.tag) { case 5: var i = r.stateNode; r.flags & 32 && (ia(i, ""), r.flags &= -33); var s = dg(t); bh(t, s, i); break; case 3: case 4: var o = r.stateNode.containerInfo, l = dg(t); Ph(t, l, o); break; default: throw Error(B(161)) } } catch (u) { Ue(t, t.return, u) } t.flags &= -3 } e & 4096 && (t.flags &= -4097) } function Dk(t, e, n) { G = t, $0(t) } function $0(t, e, n) { for (var r = (t.mode & 1) !== 0; G !== null;) { var i = G, s = i.child; if (i.tag === 22 && r) { var o = i.memoizedState !== null || Dl; if (!o) { var l = i.alternate, u = l !== null && l.memoizedState !== null || _t; l = Dl; var h = _t; if (Dl = o, (_t = u) && !h) for (G = i; G !== null;)o = G, u = o.child, o.tag === 22 && o.memoizedState !== null ? mg(i) : u !== null ? (u.return = o, G = u) : mg(i); for (; s !== null;)G = s, $0(s), s = s.sibling; G = i, Dl = l, _t = h } fg(t) } else i.subtreeFlags & 8772 && s !== null ? (s.return = i, G = s) : fg(t) } } function fg(t) { for (; G !== null;) { var e = G; if (e.flags & 8772) { var n = e.alternate; try { if (e.flags & 8772) switch (e.tag) { case 0: case 11: case 15: _t || hc(5, e); break; case 1: var r = e.stateNode; if (e.flags & 4 && !_t) if (n === null) r.componentDidMount(); else { var i = e.elementType === e.type ? n.memoizedProps : mn(e.type, n.memoizedProps); r.componentDidUpdate(i, n.memoizedState, r.__reactInternalSnapshotBeforeUpdate) } var s = e.updateQueue; s !== null && Xm(e, s, r); break; case 3: var o = e.updateQueue; if (o !== null) { if (n = null, e.child !== null) switch (e.child.tag) { case 5: n = e.child.stateNode; break; case 1: n = e.child.stateNode }Xm(e, o, n) } break; case 5: var l = e.stateNode; if (n === null && e.flags & 4) { n = l; var u = e.memoizedProps; switch (e.type) { case "button": case "input": case "select": case "textarea": u.autoFocus && n.focus(); break; case "img": u.src && (n.src = u.src) } } break; case 6: break; case 4: break; case 12: break; case 13: if (e.memoizedState === null) { var h = e.alternate; if (h !== null) { var p = h.memoizedState; if (p !== null) { var v = p.dehydrated; v !== null && la(v) } } } break; case 19: case 17: case 21: case 22: case 23: case 25: break; default: throw Error(B(163)) }_t || e.flags & 512 && Nh(e) } catch (m) { Ue(e, e.return, m) } } if (e === t) { G = null; break } if (n = e.sibling, n !== null) { n.return = e.return, G = n; break } G = e.return } } function pg(t) { for (; G !== null;) { var e = G; if (e === t) { G = null; break } var n = e.sibling; if (n !== null) { n.return = e.return, G = n; break } G = e.return } } function mg(t) { for (; G !== null;) { var e = G; try { switch (e.tag) { case 0: case 11: case 15: var n = e.return; try { hc(4, e) } catch (u) { Ue(e, n, u) } break; case 1: var r = e.stateNode; if (typeof r.componentDidMount == "function") { var i = e.return; try { r.componentDidMount() } catch (u) { Ue(e, i, u) } } var s = e.return; try { Nh(e) } catch (u) { Ue(e, s, u) } break; case 5: var o = e.return; try { Nh(e) } catch (u) { Ue(e, o, u) } } } catch (u) { Ue(e, e.return, u) } if (e === t) { G = null; break } var l = e.sibling; if (l !== null) { l.return = e.return, G = l; break } G = e.return } } var Lk = Math.ceil, Mu = ar.ReactCurrentDispatcher, Hf = ar.ReactCurrentOwner, sn = ar.ReactCurrentBatchConfig, ge = 0, rt = null, He = null, ut = 0, zt = 0, _s = Zr(0), Ze = 0, _a = null, bi = 0, fc = 0, qf = 0, Yo = null, bt = null, Kf = 0, Vs = 1 / 0, $n = null, ju = !1, Rh = null, Fr = null, Ll = !1, Rr = null, Vu = 0, Xo = 0, Dh = null, iu = -1, su = 0; function Tt() { return ge & 6 ? $e() : iu !== -1 ? iu : iu = $e() } function Ur(t) { return t.mode & 1 ? ge & 2 && ut !== 0 ? ut & -ut : yk.transition !== null ? (su === 0 && (su = Av()), su) : (t = we, t !== 0 || (t = window.event, t = t === void 0 ? 16 : Lv(t.type)), t) : 1 } function _n(t, e, n, r) { if (50 < Xo) throw Xo = 0, Dh = null, Error(B(185)); Pa(t, n, r), (!(ge & 2) || t !== rt) && (t === rt && (!(ge & 2) && (fc |= n), Ze === 4 && Ir(t, ut)), jt(t, r), n === 1 && ge === 0 && !(e.mode & 1) && (Vs = $e() + 500, uc && ei())) } function jt(t, e) { var n = t.callbackNode; yx(t, e); var r = wu(t, t === rt ? ut : 0); if (r === 0) n !== null && Tm(n), t.callbackNode = null, t.callbackPriority = 0; else if (e = r & -r, t.callbackPriority !== e) { if (n != null && Tm(n), e === 1) t.tag === 0 ? gk(gg.bind(null, t)) : Zv(gg.bind(null, t)), hk(function () { !(ge & 6) && ei() }), n = null; else { switch (Cv(r)) { case 1: n = _f; break; case 4: n = Sv; break; case 16: n = _u; break; case 536870912: n = Iv; break; default: n = _u }n = X0(n, W0.bind(null, t)) } t.callbackPriority = e, t.callbackNode = n } } function W0(t, e) { if (iu = -1, su = 0, ge & 6) throw Error(B(327)); var n = t.callbackNode; if (Is() && t.callbackNode !== n) return null; var r = wu(t, t === rt ? ut : 0); if (r === 0) return null; if (r & 30 || r & t.expiredLanes || e) e = Ou(t, r); else { e = r; var i = ge; ge |= 2; var s = q0(); (rt !== t || ut !== e) && ($n = null, Vs = $e() + 500, Si(t, e)); do try { Vk(); break } catch (l) { H0(t, l) } while (!0); Rf(), Mu.current = s, ge = i, He !== null ? e = 0 : (rt = null, ut = 0, e = Ze) } if (e !== 0) { if (e === 2 && (i = oh(t), i !== 0 && (r = i, e = Lh(t, i))), e === 1) throw n = _a, Si(t, 0), Ir(t, r), jt(t, $e()), n; if (e === 6) Ir(t, r); else { if (i = t.current.alternate, !(r & 30) && !Mk(i) && (e = Ou(t, r), e === 2 && (s = oh(t), s !== 0 && (r = s, e = Lh(t, s))), e === 1)) throw n = _a, Si(t, 0), Ir(t, r), jt(t, $e()), n; switch (t.finishedWork = i, t.finishedLanes = r, e) { case 0: case 1: throw Error(B(345)); case 2: _i(t, bt, $n); break; case 3: if (Ir(t, r), (r & 130023424) === r && (e = Kf + 500 - $e(), 10 < e)) { if (wu(t, 0) !== 0) break; if (i = t.suspendedLanes, (i & r) !== r) { Tt(), t.pingedLanes |= t.suspendedLanes & i; break } t.timeoutHandle = ph(_i.bind(null, t, bt, $n), e); break } _i(t, bt, $n); break; case 4: if (Ir(t, r), (r & 4194240) === r) break; for (e = t.eventTimes, i = -1; 0 < r;) { var o = 31 - vn(r); s = 1 << o, o = e[o], o > i && (i = o), r &= ~s } if (r = i, r = $e() - r, r = (120 > r ? 120 : 480 > r ? 480 : 1080 > r ? 1080 : 1920 > r ? 1920 : 3e3 > r ? 3e3 : 4320 > r ? 4320 : 1960 * Lk(r / 1960)) - r, 10 < r) { t.timeoutHandle = ph(_i.bind(null, t, bt, $n), r); break } _i(t, bt, $n); break; case 5: _i(t, bt, $n); break; default: throw Error(B(329)) } } } return jt(t, $e()), t.callbackNode === n ? W0.bind(null, t) : null } function Lh(t, e) { var n = Yo; return t.current.memoizedState.isDehydrated && (Si(t, e).flags |= 256), t = Ou(t, e), t !== 2 && (e = bt, bt = n, e !== null && Mh(e)), t } function Mh(t) { bt === null ? bt = t : bt.push.apply(bt, t) } function Mk(t) { for (var e = t; ;) { if (e.flags & 16384) { var n = e.updateQueue; if (n !== null && (n = n.stores, n !== null)) for (var r = 0; r < n.length; r++) { var i = n[r], s = i.getSnapshot; i = i.value; try { if (!wn(s(), i)) return !1 } catch { return !1 } } } if (n = e.child, e.subtreeFlags & 16384 && n !== null) n.return = e, e = n; else { if (e === t) break; for (; e.sibling === null;) { if (e.return === null || e.return === t) return !0; e = e.return } e.sibling.return = e.return, e = e.sibling } } return !0 } function Ir(t, e) { for (e &= ~qf, e &= ~fc, t.suspendedLanes |= e, t.pingedLanes &= ~e, t = t.expirationTimes; 0 < e;) { var n = 31 - vn(e), r = 1 << n; t[n] = -1, e &= ~r } } function gg(t) { if (ge & 6) throw Error(B(327)); Is(); var e = wu(t, 0); if (!(e & 1)) return jt(t, $e()), null; var n = Ou(t, e); if (t.tag !== 0 && n === 2) { var r = oh(t); r !== 0 && (e = r, n = Lh(t, r)) } if (n === 1) throw n = _a, Si(t, 0), Ir(t, e), jt(t, $e()), n; if (n === 6) throw Error(B(345)); return t.finishedWork = t.current.alternate, t.finishedLanes = e, _i(t, bt, $n), jt(t, $e()), null } function Gf(t, e) { var n = ge; ge |= 1; try { return t(e) } finally { ge = n, ge === 0 && (Vs = $e() + 500, uc && ei()) } } function Ri(t) { Rr !== null && Rr.tag === 0 && !(ge & 6) && Is(); var e = ge; ge |= 1; var n = sn.transition, r = we; try { if (sn.transition = null, we = 1, t) return t() } finally { we = r, sn.transition = n, ge = e, !(ge & 6) && ei() } } function Qf() { zt = _s.current, be(_s) } function Si(t, e) { t.finishedWork = null, t.finishedLanes = 0; var n = t.timeoutHandle; if (n !== -1 && (t.timeoutHandle = -1, dk(n)), He !== null) for (n = He.return; n !== null;) { var r = n; switch (Nf(r), r.tag) { case 1: r = r.type.childContextTypes, r != null && Su(); break; case 3: Ms(), be(Lt), be(Et), Of(); break; case 5: Vf(r); break; case 4: Ms(); break; case 13: be(Me); break; case 19: be(Me); break; case 10: Df(r.type._context); break; case 22: case 23: Qf() }n = n.return } if (rt = t, He = t = zr(t.current, null), ut = zt = e, Ze = 0, _a = null, qf = fc = bi = 0, bt = Yo = null, xi !== null) { for (e = 0; e < xi.length; e++)if (n = xi[e], r = n.interleaved, r !== null) { n.interleaved = null; var i = r.next, s = n.pending; if (s !== null) { var o = s.next; s.next = i, r.next = o } n.pending = r } xi = null } return t } function H0(t, e) { do { var n = He; try { if (Rf(), tu.current = Lu, Du) { for (var r = je.memoizedState; r !== null;) { var i = r.queue; i !== null && (i.pending = null), r = r.next } Du = !1 } if (Pi = 0, nt = Xe = je = null, Go = !1, ga = 0, Hf.current = null, n === null || n.return === null) { Ze = 1, _a = e, He = null; break } e: { var s = t, o = n.return, l = n, u = e; if (e = ut, l.flags |= 32768, u !== null && typeof u == "object" && typeof u.then == "function") { var h = u, p = l, v = p.tag; if (!(p.mode & 1) && (v === 0 || v === 11 || v === 15)) { var m = p.alternate; m ? (p.updateQueue = m.updateQueue, p.memoizedState = m.memoizedState, p.lanes = m.lanes) : (p.updateQueue = null, p.memoizedState = null) } var C = rg(o); if (C !== null) { C.flags &= -257, ig(C, o, l, s, e), C.mode & 1 && ng(s, h, e), e = C, u = h; var R = e.updateQueue; if (R === null) { var L = new Set; L.add(u), e.updateQueue = L } else R.add(u); break e } else { if (!(e & 1)) { ng(s, h, e), Yf(); break e } u = Error(B(426)) } } else if (De && l.mode & 1) { var V = rg(o); if (V !== null) { !(V.flags & 65536) && (V.flags |= 256), ig(V, o, l, s, e), Pf(js(u, l)); break e } } s = u = js(u, l), Ze !== 4 && (Ze = 2), Yo === null ? Yo = [s] : Yo.push(s), s = o; do { switch (s.tag) { case 3: s.flags |= 65536, e &= -e, s.lanes |= e; var S = C0(s, u, e); Ym(s, S); break e; case 1: l = u; var E = s.type, I = s.stateNode; if (!(s.flags & 128) && (typeof E.getDerivedStateFromError == "function" || I !== null && typeof I.componentDidCatch == "function" && (Fr === null || !Fr.has(I)))) { s.flags |= 65536, e &= -e, s.lanes |= e; var j = N0(s, l, e); Ym(s, j); break e } }s = s.return } while (s !== null) } G0(n) } catch (K) { e = K, He === n && n !== null && (He = n = n.return); continue } break } while (!0) } function q0() { var t = Mu.current; return Mu.current = Lu, t === null ? Lu : t } function Yf() { (Ze === 0 || Ze === 3 || Ze === 2) && (Ze = 4), rt === null || !(bi & 268435455) && !(fc & 268435455) || Ir(rt, ut) } function Ou(t, e) { var n = ge; ge |= 2; var r = q0(); (rt !== t || ut !== e) && ($n = null, Si(t, e)); do try { jk(); break } catch (i) { H0(t, i) } while (!0); if (Rf(), ge = n, Mu.current = r, He !== null) throw Error(B(261)); return rt = null, ut = 0, Ze } function jk() { for (; He !== null;)K0(He) } function Vk() { for (; He !== null && !lx();)K0(He) } function K0(t) { var e = Y0(t.alternate, t, zt); t.memoizedProps = t.pendingProps, e === null ? G0(t) : He = e, Hf.current = null } function G0(t) { var e = t; do { var n = e.alternate; if (t = e.return, e.flags & 32768) { if (n = Pk(n, e), n !== null) { n.flags &= 32767, He = n; return } if (t !== null) t.flags |= 32768, t.subtreeFlags = 0, t.deletions = null; else { Ze = 6, He = null; return } } else if (n = Nk(n, e, zt), n !== null) { He = n; return } if (e = e.sibling, e !== null) { He = e; return } He = e = t } while (e !== null); Ze === 0 && (Ze = 5) } function _i(t, e, n) { var r = we, i = sn.transition; try { sn.transition = null, we = 1, Ok(t, e, n, r) } finally { sn.transition = i, we = r } return null } function Ok(t, e, n, r) { do Is(); while (Rr !== null); if (ge & 6) throw Error(B(327)); n = t.finishedWork; var i = t.finishedLanes; if (n === null) return null; if (t.finishedWork = null, t.finishedLanes = 0, n === t.current) throw Error(B(177)); t.callbackNode = null, t.callbackPriority = 0; var s = n.lanes | n.childLanes; if (vx(t, s), t === rt && (He = rt = null, ut = 0), !(n.subtreeFlags & 2064) && !(n.flags & 2064) || Ll || (Ll = !0, X0(_u, function () { return Is(), null })), s = (n.flags & 15990) !== 0, n.subtreeFlags & 15990 || s) { s = sn.transition, sn.transition = null; var o = we; we = 1; var l = ge; ge |= 4, Hf.current = null, Rk(t, n), B0(n, t), ik(hh), Eu = !!dh, hh = dh = null, t.current = n, Dk(n), ux(), ge = l, we = o, sn.transition = s } else t.current = n; if (Ll && (Ll = !1, Rr = t, Vu = i), s = t.pendingLanes, s === 0 && (Fr = null), hx(n.stateNode), jt(t, $e()), e !== null) for (r = t.onRecoverableError, n = 0; n < e.length; n++)i = e[n], r(i.value, { componentStack: i.stack, digest: i.digest }); if (ju) throw ju = !1, t = Rh, Rh = null, t; return Vu & 1 && t.tag !== 0 && Is(), s = t.pendingLanes, s & 1 ? t === Dh ? Xo++ : (Xo = 0, Dh = t) : Xo = 0, ei(), null } function Is() { if (Rr !== null) { var t = Cv(Vu), e = sn.transition, n = we; try { if (sn.transition = null, we = 16 > t ? 16 : t, Rr === null) var r = !1; else { if (t = Rr, Rr = null, Vu = 0, ge & 6) throw Error(B(331)); var i = ge; for (ge |= 4, G = t.current; G !== null;) { var s = G, o = s.child; if (G.flags & 16) { var l = s.deletions; if (l !== null) { for (var u = 0; u < l.length; u++) { var h = l[u]; for (G = h; G !== null;) { var p = G; switch (p.tag) { case 0: case 11: case 15: Qo(8, p, s) }var v = p.child; if (v !== null) v.return = p, G = v; else for (; G !== null;) { p = G; var m = p.sibling, C = p.return; if (F0(p), p === h) { G = null; break } if (m !== null) { m.return = C, G = m; break } G = C } } } var R = s.alternate; if (R !== null) { var L = R.child; if (L !== null) { R.child = null; do { var V = L.sibling; L.sibling = null, L = V } while (L !== null) } } G = s } } if (s.subtreeFlags & 2064 && o !== null) o.return = s, G = o; else e: for (; G !== null;) { if (s = G, s.flags & 2048) switch (s.tag) { case 0: case 11: case 15: Qo(9, s, s.return) }var S = s.sibling; if (S !== null) { S.return = s.return, G = S; break e } G = s.return } } var E = t.current; for (G = E; G !== null;) { o = G; var I = o.child; if (o.subtreeFlags & 2064 && I !== null) I.return = o, G = I; else e: for (o = E; G !== null;) { if (l = G, l.flags & 2048) try { switch (l.tag) { case 0: case 11: case 15: hc(9, l) } } catch (K) { Ue(l, l.return, K) } if (l === o) { G = null; break e } var j = l.sibling; if (j !== null) { j.return = l.return, G = j; break e } G = l.return } } if (ge = i, ei(), Nn && typeof Nn.onPostCommitFiberRoot == "function") try { Nn.onPostCommitFiberRoot(ic, t) } catch { } r = !0 } return r } finally { we = n, sn.transition = e } } return !1 } function yg(t, e, n) { e = js(n, e), e = C0(t, e, 1), t = Or(t, e, 1), e = Tt(), t !== null && (Pa(t, 1, e), jt(t, e)) } function Ue(t, e, n) { if (t.tag === 3) yg(t, t, n); else for (; e !== null;) { if (e.tag === 3) { yg(e, t, n); break } else if (e.tag === 1) { var r = e.stateNode; if (typeof e.type.getDerivedStateFromError == "function" || typeof r.componentDidCatch == "function" && (Fr === null || !Fr.has(r))) { t = js(n, t), t = N0(e, t, 1), e = Or(e, t, 1), t = Tt(), e !== null && (Pa(e, 1, t), jt(e, t)); break } } e = e.return } } function Fk(t, e, n) { var r = t.pingCache; r !== null && r.delete(e), e = Tt(), t.pingedLanes |= t.suspendedLanes & n, rt === t && (ut & n) === n && (Ze === 4 || Ze === 3 && (ut & 130023424) === ut && 500 > $e() - Kf ? Si(t, 0) : qf |= n), jt(t, e) } function Q0(t, e) { e === 0 && (t.mode & 1 ? (e = Tl, Tl <<= 1, !(Tl & 130023424) && (Tl = 4194304)) : e = 1); var n = Tt(); t = er(t, e), t !== null && (Pa(t, e, n), jt(t, n)) } function Uk(t) { var e = t.memoizedState, n = 0; e !== null && (n = e.retryLane), Q0(t, n) } function zk(t, e) { var n = 0; switch (t.tag) { case 13: var r = t.stateNode, i = t.memoizedState; i !== null && (n = i.retryLane); break; case 19: r = t.stateNode; break; default: throw Error(B(314)) }r !== null && r.delete(e), Q0(t, n) } var Y0; Y0 = function (t, e, n) { if (t !== null) if (t.memoizedProps !== e.pendingProps || Lt.current) Dt = !0; else { if (!(t.lanes & n) && !(e.flags & 128)) return Dt = !1, Ck(t, e, n); Dt = !!(t.flags & 131072) } else Dt = !1, De && e.flags & 1048576 && e0(e, Cu, e.index); switch (e.lanes = 0, e.tag) { case 2: var r = e.type; ru(t, e), t = e.pendingProps; var i = Rs(e, Et.current); Ss(e, n), i = Uf(null, e, r, t, i, n); var s = zf(); return e.flags |= 1, typeof i == "object" && i !== null && typeof i.render == "function" && i.$$typeof === void 0 ? (e.tag = 1, e.memoizedState = null, e.updateQueue = null, Mt(r) ? (s = !0, Iu(e)) : s = !1, e.memoizedState = i.state !== null && i.state !== void 0 ? i.state : null, Mf(e), i.updater = dc, e.stateNode = i, i._reactInternals = e, Eh(e, r, t, n), e = Th(null, e, r, !0, s, n)) : (e.tag = 0, De && s && Cf(e), kt(null, e, i, n), e = e.child), e; case 16: r = e.elementType; e: { switch (ru(t, e), t = e.pendingProps, i = r._init, r = i(r._payload), e.type = r, i = e.tag = $k(r), t = mn(r, t), i) { case 0: e = kh(null, e, r, t, n); break e; case 1: e = ag(null, e, r, t, n); break e; case 11: e = sg(null, e, r, t, n); break e; case 14: e = og(null, e, r, mn(r.type, t), n); break e }throw Error(B(306, r, "")) } return e; case 0: return r = e.type, i = e.pendingProps, i = e.elementType === r ? i : mn(r, i), kh(t, e, r, i, n); case 1: return r = e.type, i = e.pendingProps, i = e.elementType === r ? i : mn(r, i), ag(t, e, r, i, n); case 3: e: { if (D0(e), t === null) throw Error(B(387)); r = e.pendingProps, s = e.memoizedState, i = s.element, o0(t, e), bu(e, r, null, n); var o = e.memoizedState; if (r = o.element, s.isDehydrated) if (s = { element: r, isDehydrated: !1, cache: o.cache, pendingSuspenseBoundaries: o.pendingSuspenseBoundaries, transitions: o.transitions }, e.updateQueue.baseState = s, e.memoizedState = s, e.flags & 256) { i = js(Error(B(423)), e), e = lg(t, e, r, n, i); break e } else if (r !== i) { i = js(Error(B(424)), e), e = lg(t, e, r, n, i); break e } else for (Bt = Vr(e.stateNode.containerInfo.firstChild), Wt = e, De = !0, yn = null, n = i0(e, null, r, n), e.child = n; n;)n.flags = n.flags & -3 | 4096, n = n.sibling; else { if (Ds(), r === i) { e = tr(t, e, n); break e } kt(t, e, r, n) } e = e.child } return e; case 5: return a0(e), t === null && vh(e), r = e.type, i = e.pendingProps, s = t !== null ? t.memoizedProps : null, o = i.children, fh(r, i) ? o = null : s !== null && fh(r, s) && (e.flags |= 32), R0(t, e), kt(t, e, o, n), e.child; case 6: return t === null && vh(e), null; case 13: return L0(t, e, n); case 4: return jf(e, e.stateNode.containerInfo), r = e.pendingProps, t === null ? e.child = Ls(e, null, r, n) : kt(t, e, r, n), e.child; case 11: return r = e.type, i = e.pendingProps, i = e.elementType === r ? i : mn(r, i), sg(t, e, r, i, n); case 7: return kt(t, e, e.pendingProps, n), e.child; case 8: return kt(t, e, e.pendingProps.children, n), e.child; case 12: return kt(t, e, e.pendingProps.children, n), e.child; case 10: e: { if (r = e.type._context, i = e.pendingProps, s = e.memoizedProps, o = i.value, Ae(Nu, r._currentValue), r._currentValue = o, s !== null) if (wn(s.value, o)) { if (s.children === i.children && !Lt.current) { e = tr(t, e, n); break e } } else for (s = e.child, s !== null && (s.return = e); s !== null;) { var l = s.dependencies; if (l !== null) { o = s.child; for (var u = l.firstContext; u !== null;) { if (u.context === r) { if (s.tag === 1) { u = Yn(-1, n & -n), u.tag = 2; var h = s.updateQueue; if (h !== null) { h = h.shared; var p = h.pending; p === null ? u.next = u : (u.next = p.next, p.next = u), h.pending = u } } s.lanes |= n, u = s.alternate, u !== null && (u.lanes |= n), _h(s.return, n, e), l.lanes |= n; break } u = u.next } } else if (s.tag === 10) o = s.type === e.type ? null : s.child; else if (s.tag === 18) { if (o = s.return, o === null) throw Error(B(341)); o.lanes |= n, l = o.alternate, l !== null && (l.lanes |= n), _h(o, n, e), o = s.sibling } else o = s.child; if (o !== null) o.return = s; else for (o = s; o !== null;) { if (o === e) { o = null; break } if (s = o.sibling, s !== null) { s.return = o.return, o = s; break } o = o.return } s = o } kt(t, e, i.children, n), e = e.child } return e; case 9: return i = e.type, r = e.pendingProps.children, Ss(e, n), i = on(i), r = r(i), e.flags |= 1, kt(t, e, r, n), e.child; case 14: return r = e.type, i = mn(r, e.pendingProps), i = mn(r.type, i), og(t, e, r, i, n); case 15: return P0(t, e, e.type, e.pendingProps, n); case 17: return r = e.type, i = e.pendingProps, i = e.elementType === r ? i : mn(r, i), ru(t, e), e.tag = 1, Mt(r) ? (t = !0, Iu(e)) : t = !1, Ss(e, n), A0(e, r, i), Eh(e, r, i, n), Th(null, e, r, !0, t, n); case 19: return M0(t, e, n); case 22: return b0(t, e, n) }throw Error(B(156, e.tag)) }; function X0(t, e) { return Tv(t, e) } function Bk(t, e, n, r) { this.tag = t, this.key = n, this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null, this.index = 0, this.ref = null, this.pendingProps = e, this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null, this.mode = r, this.subtreeFlags = this.flags = 0, this.deletions = null, this.childLanes = this.lanes = 0, this.alternate = null } function rn(t, e, n, r) { return new Bk(t, e, n, r) } function Xf(t) { return t = t.prototype, !(!t || !t.isReactComponent) } function $k(t) { if (typeof t == "function") return Xf(t) ? 1 : 0; if (t != null) { if (t = t.$$typeof, t === gf) return 11; if (t === yf) return 14 } return 2 } function zr(t, e) { var n = t.alternate; return n === null ? (n = rn(t.tag, e, t.key, t.mode), n.elementType = t.elementType, n.type = t.type, n.stateNode = t.stateNode, n.alternate = t, t.alternate = n) : (n.pendingProps = e, n.type = t.type, n.flags = 0, n.subtreeFlags = 0, n.deletions = null), n.flags = t.flags & 14680064, n.childLanes = t.childLanes, n.lanes = t.lanes, n.child = t.child, n.memoizedProps = t.memoizedProps, n.memoizedState = t.memoizedState, n.updateQueue = t.updateQueue, e = t.dependencies, n.dependencies = e === null ? null : { lanes: e.lanes, firstContext: e.firstContext }, n.sibling = t.sibling, n.index = t.index, n.ref = t.ref, n } function ou(t, e, n, r, i, s) { var o = 2; if (r = t, typeof t == "function") Xf(t) && (o = 1); else if (typeof t == "string") o = 5; else e: switch (t) { case us: return Ii(n.children, i, s, e); case mf: o = 8, i |= 8; break; case Hd: return t = rn(12, n, e, i | 2), t.elementType = Hd, t.lanes = s, t; case qd: return t = rn(13, n, e, i), t.elementType = qd, t.lanes = s, t; case Kd: return t = rn(19, n, e, i), t.elementType = Kd, t.lanes = s, t; case av: return pc(n, i, s, e); default: if (typeof t == "object" && t !== null) switch (t.$$typeof) { case sv: o = 10; break e; case ov: o = 9; break e; case gf: o = 11; break e; case yf: o = 14; break e; case kr: o = 16, r = null; break e }throw Error(B(130, t == null ? t : typeof t, "")) }return e = rn(o, n, e, i), e.elementType = t, e.type = r, e.lanes = s, e } function Ii(t, e, n, r) { return t = rn(7, t, r, e), t.lanes = n, t } function pc(t, e, n, r) { return t = rn(22, t, r, e), t.elementType = av, t.lanes = n, t.stateNode = { isHidden: !1 }, t } function kd(t, e, n) { return t = rn(6, t, null, e), t.lanes = n, t } function Td(t, e, n) { return e = rn(4, t.children !== null ? t.children : [], t.key, e), e.lanes = n, e.stateNode = { containerInfo: t.containerInfo, pendingChildren: null, implementation: t.implementation }, e } function Wk(t, e, n, r, i) { this.tag = e, this.containerInfo = t, this.finishedWork = this.pingCache = this.current = this.pendingChildren = null, this.timeoutHandle = -1, this.callbackNode = this.pendingContext = this.context = null, this.callbackPriority = 0, this.eventTimes = id(0), this.expirationTimes = id(-1), this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0, this.entanglements = id(0), this.identifierPrefix = r, this.onRecoverableError = i, this.mutableSourceEagerHydrationData = null } function Jf(t, e, n, r, i, s, o, l, u) { return t = new Wk(t, e, n, l, u), e === 1 ? (e = 1, s === !0 && (e |= 8)) : e = 0, s = rn(3, null, null, e), t.current = s, s.stateNode = t, s.memoizedState = { element: r, isDehydrated: n, cache: null, transitions: null, pendingSuspenseBoundaries: null }, Mf(s), t } function Hk(t, e, n) { var r = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : null; return { $$typeof: ls, key: r == null ? null : "" + r, children: t, containerInfo: e, implementation: n } } function J0(t) { if (!t) return Gr; t = t._reactInternals; e: { if (Ui(t) !== t || t.tag !== 1) throw Error(B(170)); var e = t; do { switch (e.tag) { case 3: e = e.stateNode.context; break e; case 1: if (Mt(e.type)) { e = e.stateNode.__reactInternalMemoizedMergedChildContext; break e } }e = e.return } while (e !== null); throw Error(B(171)) } if (t.tag === 1) { var n = t.type; if (Mt(n)) return Jv(t, n, e) } return e } function Z0(t, e, n, r, i, s, o, l, u) { return t = Jf(n, r, !0, t, i, s, o, l, u), t.context = J0(null), n = t.current, r = Tt(), i = Ur(n), s = Yn(r, i), s.callback = e ?? null, Or(n, s, i), t.current.lanes = i, Pa(t, i, r), jt(t, r), t } function mc(t, e, n, r) { var i = e.current, s = Tt(), o = Ur(i); return n = J0(n), e.context === null ? e.context = n : e.pendingContext = n, e = Yn(s, o), e.payload = { element: t }, r = r === void 0 ? null : r, r !== null && (e.callback = r), t = Or(i, e, o), t !== null && (_n(t, i, o, s), eu(t, i, o)), o } function Fu(t) { if (t = t.current, !t.child) return null; switch (t.child.tag) { case 5: return t.child.stateNode; default: return t.child.stateNode } } function vg(t, e) { if (t = t.memoizedState, t !== null && t.dehydrated !== null) { var n = t.retryLane; t.retryLane = n !== 0 && n < e ? n : e } } function Zf(t, e) { vg(t, e), (t = t.alternate) && vg(t, e) } function qk() { return null } var e_ = typeof reportError == "function" ? reportError : function (t) { console.error(t) }; function ep(t) { this._internalRoot = t } gc.prototype.render = ep.prototype.render = function (t) { var e = this._internalRoot; if (e === null) throw Error(B(409)); mc(t, e, null, null) }; gc.prototype.unmount = ep.prototype.unmount = function () { var t = this._internalRoot; if (t !== null) { this._internalRoot = null; var e = t.containerInfo; Ri(function () { mc(null, t, null, null) }), e[Zn] = null } }; function gc(t) { this._internalRoot = t } gc.prototype.unstable_scheduleHydration = function (t) { if (t) { var e = bv(); t = { blockedOn: null, target: t, priority: e }; for (var n = 0; n < Sr.length && e !== 0 && e < Sr[n].priority; n++); Sr.splice(n, 0, t), n === 0 && Dv(t) } }; function tp(t) { return !(!t || t.nodeType !== 1 && t.nodeType !== 9 && t.nodeType !== 11) } function yc(t) { return !(!t || t.nodeType !== 1 && t.nodeType !== 9 && t.nodeType !== 11 && (t.nodeType !== 8 || t.nodeValue !== " react-mount-point-unstable ")) } function _g() { } function Kk(t, e, n, r, i) { if (i) { if (typeof r == "function") { var s = r; r = function () { var h = Fu(o); s.call(h) } } var o = Z0(e, r, t, 0, null, !1, !1, "", _g); return t._reactRootContainer = o, t[Zn] = o.current, da(t.nodeType === 8 ? t.parentNode : t), Ri(), o } for (; i = t.lastChild;)t.removeChild(i); if (typeof r == "function") { var l = r; r = function () { var h = Fu(u); l.call(h) } } var u = Jf(t, 0, !1, null, null, !1, !1, "", _g); return t._reactRootContainer = u, t[Zn] = u.current, da(t.nodeType === 8 ? t.parentNode : t), Ri(function () { mc(e, u, n, r) }), u } function vc(t, e, n, r, i) { var s = n._reactRootContainer; if (s) { var o = s; if (typeof i == "function") { var l = i; i = function () { var u = Fu(o); l.call(u) } } mc(e, o, t, i) } else o = Kk(n, e, t, i, r); return Fu(o) } Nv = function (t) { switch (t.tag) { case 3: var e = t.stateNode; if (e.current.memoizedState.isDehydrated) { var n = Mo(e.pendingLanes); n !== 0 && (wf(e, n | 1), jt(e, $e()), !(ge & 6) && (Vs = $e() + 500, ei())) } break; case 13: Ri(function () { var r = er(t, 1); if (r !== null) { var i = Tt(); _n(r, t, 1, i) } }), Zf(t, 1) } }; Ef = function (t) { if (t.tag === 13) { var e = er(t, 134217728); if (e !== null) { var n = Tt(); _n(e, t, 134217728, n) } Zf(t, 134217728) } }; Pv = function (t) { if (t.tag === 13) { var e = Ur(t), n = er(t, e); if (n !== null) { var r = Tt(); _n(n, t, e, r) } Zf(t, e) } }; bv = function () { return we }; Rv = function (t, e) { var n = we; try { return we = t, e() } finally { we = n } }; rh = function (t, e, n) { switch (e) { case "input": if (Yd(t, n), e = n.name, n.type === "radio" && e != null) { for (n = t; n.parentNode;)n = n.parentNode; for (n = n.querySelectorAll("input[name=" + JSON.stringify("" + e) + '][type="radio"]'), e = 0; e < n.length; e++) { var r = n[e]; if (r !== t && r.form === t.form) { var i = lc(r); if (!i) throw Error(B(90)); uv(r), Yd(r, i) } } } break; case "textarea": dv(t, n); break; case "select": e = n.value, e != null && Es(t, !!n.multiple, e, !1) } }; vv = Gf; _v = Ri; var Gk = { usingClientEntryPoint: !1, Events: [Ra, fs, lc, gv, yv, Gf] }, Co = { findFiberByHostInstance: Ei, bundleType: 0, version: "18.3.1", rendererPackageName: "react-dom" }, Qk = { bundleType: Co.bundleType, version: Co.version, rendererPackageName: Co.rendererPackageName, rendererConfig: Co.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, overrideProps: null, overridePropsDeletePath: null, overridePropsRenamePath: null, setErrorHandler: null, setSuspenseHandler: null, scheduleUpdate: null, currentDispatcherRef: ar.ReactCurrentDispatcher, findHostInstanceByFiber: function (t) { return t = xv(t), t === null ? null : t.stateNode }, findFiberByHostInstance: Co.findFiberByHostInstance || qk, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, reconcilerVersion: "18.3.1-next-f1338f8080-20240426" }; if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u") { var Ml = __REACT_DEVTOOLS_GLOBAL_HOOK__; if (!Ml.isDisabled && Ml.supportsFiber) try { ic = Ml.inject(Qk), Nn = Ml } catch { } } Kt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Gk; Kt.createPortal = function (t, e) { var n = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null; if (!tp(e)) throw Error(B(200)); return Hk(t, e, null, n) }; Kt.createRoot = function (t, e) { if (!tp(t)) throw Error(B(299)); var n = !1, r = "", i = e_; return e != null && (e.unstable_strictMode === !0 && (n = !0), e.identifierPrefix !== void 0 && (r = e.identifierPrefix), e.onRecoverableError !== void 0 && (i = e.onRecoverableError)), e = Jf(t, 1, !1, null, null, n, !1, r, i), t[Zn] = e.current, da(t.nodeType === 8 ? t.parentNode : t), new ep(e) }; Kt.findDOMNode = function (t) { if (t == null) return null; if (t.nodeType === 1) return t; var e = t._reactInternals; if (e === void 0) throw typeof t.render == "function" ? Error(B(188)) : (t = Object.keys(t).join(","), Error(B(268, t))); return t = xv(e), t = t === null ? null : t.stateNode, t }; Kt.flushSync = function (t) { return Ri(t) }; Kt.hydrate = function (t, e, n) { if (!yc(e)) throw Error(B(200)); return vc(null, t, e, !0, n) }; Kt.hydrateRoot = function (t, e, n) { if (!tp(t)) throw Error(B(405)); var r = n != null && n.hydratedSources || null, i = !1, s = "", o = e_; if (n != null && (n.unstable_strictMode === !0 && (i = !0), n.identifierPrefix !== void 0 && (s = n.identifierPrefix), n.onRecoverableError !== void 0 && (o = n.onRecoverableError)), e = Z0(e, null, t, 1, n ?? null, i, !1, s, o), t[Zn] = e.current, da(t), r) for (t = 0; t < r.length; t++)n = r[t], i = n._getVersion, i = i(n._source), e.mutableSourceEagerHydrationData == null ? e.mutableSourceEagerHydrationData = [n, i] : e.mutableSourceEagerHydrationData.push(n, i); return new gc(e) }; Kt.render = function (t, e, n) { if (!yc(e)) throw Error(B(200)); return vc(null, t, e, !1, n) }; Kt.unmountComponentAtNode = function (t) { if (!yc(t)) throw Error(B(40)); return t._reactRootContainer ? (Ri(function () { vc(null, null, t, !1, function () { t._reactRootContainer = null, t[Zn] = null }) }), !0) : !1 }; Kt.unstable_batchedUpdates = Gf; Kt.unstable_renderSubtreeIntoContainer = function (t, e, n, r) { if (!yc(n)) throw Error(B(200)); if (t == null || t._reactInternals === void 0) throw Error(B(38)); return vc(t, e, n, !1, r) }; Kt.version = "18.3.1-next-f1338f8080-20240426"; function t_() { if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function")) try { __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t_) } catch (t) { console.error(t) } } t_(), tv.exports = Kt; var Yk = tv.exports, wg = Yk; $d.createRoot = wg.createRoot, $d.hydrateRoot = wg.hydrateRoot;/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/var Xk = { xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" };/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Jk = t => t.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase().trim(), fe = (t, e) => { const n = Y.forwardRef(({ color: r = "currentColor", size: i = 24, strokeWidth: s = 2, absoluteStrokeWidth: o, className: l = "", children: u, ...h }, p) => Y.createElement("svg", { ref: p, ...Xk, width: i, height: i, stroke: r, strokeWidth: o ? Number(s) * 24 / Number(i) : s, className: ["lucide", `lucide-${Jk(t)}`, l].join(" "), ...h }, [...e.map(([v, m]) => Y.createElement(v, m)), ...Array.isArray(u) ? u : [u]])); return n.displayName = `${t}`, n };/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Zk = fe("AlertCircle", [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }], ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const eT = fe("ArrowRight", [["path", { d: "M5 12h14", key: "1ays0h" }], ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const jl = fe("Bell", [["path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9", key: "1qo2s2" }], ["path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0", key: "qgo35s" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Eg = fe("CheckCircle2", [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Er = fe("Check", [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const xg = fe("CircleUser", [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }], ["path", { d: "M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662", key: "154egf" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const kg = fe("CloudSun", [["path", { d: "M12 2v2", key: "tus03m" }], ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], ["path", { d: "M20 12h2", key: "1q8mjw" }], ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }], ["path", { d: "M15.947 12.65a4 4 0 0 0-5.925-4.128", key: "dpwdj0" }], ["path", { d: "M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z", key: "s09mg5" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const yi = fe("Droplets", [["path", { d: "M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z", key: "1ptgy4" }], ["path", { d: "M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97", key: "1sl1rz" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Sd = fe("Filter", [["polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3", key: "1yg77f" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Tg = fe("FolderOpen", [["path", { d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2", key: "usdka0" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Sg = fe("Heart", [["path", { d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z", key: "c3ymky" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Id = fe("Image", [["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }], ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const tT = fe("LayoutDashboard", [["rect", { width: "7", height: "9", x: "3", y: "3", rx: "1", key: "10lvy0" }], ["rect", { width: "7", height: "5", x: "14", y: "3", rx: "1", key: "16une8" }], ["rect", { width: "7", height: "9", x: "14", y: "12", rx: "1", key: "1hutg5" }], ["rect", { width: "7", height: "5", x: "3", y: "16", rx: "1", key: "ldoo1y" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const nT = fe("Link", [["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }], ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Ig = fe("Loader2", [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const rT = fe("LogOut", [["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }], ["polyline", { points: "16 17 21 12 16 7", key: "1gabdz" }], ["line", { x1: "21", x2: "9", y1: "12", y2: "12", key: "1uyos4" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const iT = fe("Moon", [["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z", key: "a7tn18" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const sT = fe("PanelLeftClose", [["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], ["path", { d: "M9 3v18", key: "fh3hqa" }], ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const oT = fe("PanelLeftOpen", [["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], ["path", { d: "M9 3v18", key: "fh3hqa" }], ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Vl = fe("Pen", [["path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z", key: "5qss01" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const aT = fe("PieChart", [["path", { d: "M21.21 15.89A10 10 0 1 1 8 2.83", key: "k2fpak" }], ["path", { d: "M22 12A10 10 0 0 0 12 2v10z", key: "1rfc4y" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Ol = fe("Plus", [["path", { d: "M5 12h14", key: "1ays0h" }], ["path", { d: "M12 5v14", key: "s699le" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const lT = fe("RotateCcw", [["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }], ["path", { d: "M3 3v5h5", key: "1xhq8a" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const uT = fe("Search", [["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Ad = fe("Settings", [["path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z", key: "1qme2f" }], ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Ag = fe("Share2", [["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }], ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }], ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }], ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }], ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const cT = fe("ShieldAlert", [["path", { d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z", key: "oel41y" }], ["path", { d: "M12 8v4", key: "1got3b" }], ["path", { d: "M12 16h.01", key: "1drbdi" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Fl = fe("Shirt", [["path", { d: "M20.38 3.46 16 2a4 4 0 0 1-8 0L3.62 3.46a2 2 0 0 0-1.34 2.23l.58 3.47a1 1 0 0 0 .99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V10h2.15a1 1 0 0 0 .99-.84l.58-3.47a2 2 0 0 0-1.34-2.23z", key: "1wgbhj" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Cg = fe("ShoppingBag", [["path", { d: "M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z", key: "hou9p0" }], ["path", { d: "M3 6h18", key: "d0wm0j" }], ["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Cd = fe("Sparkles", [["path", { d: "m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z", key: "17u4zn" }], ["path", { d: "M5 3v4", key: "bklmnn" }], ["path", { d: "M19 17v4", key: "iiml17" }], ["path", { d: "M3 5h4", key: "nem4j1" }], ["path", { d: "M17 19h4", key: "lbex7p" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const dT = fe("Sun", [["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], ["path", { d: "M12 2v2", key: "tus03m" }], ["path", { d: "M12 20v2", key: "1lh1kg" }], ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], ["path", { d: "m17.66 17.66 1.41 1.41", key: "ptbguv" }], ["path", { d: "M2 12h2", key: "1t8f8n" }], ["path", { d: "M20 12h2", key: "1q8mjw" }], ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }], ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Ng = fe("Tag", [["path", { d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z", key: "vktsd0" }], ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const hT = fe("Trash2", [["path", { d: "M3 6h18", key: "d0wm0j" }], ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }], ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }], ["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }], ["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const Nd = fe("Trash", [["path", { d: "M3 6h18", key: "d0wm0j" }], ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }], ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }]]);/**
|
|
* @license lucide-react v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const No = fe("X", [["path", { d: "M18 6 6 18", key: "1bl5f8" }], ["path", { d: "m6 6 12 12", key: "d8bk6v" }]]); var Pg = {};/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const n_ = function (t) { const e = []; let n = 0; for (let r = 0; r < t.length; r++) { let i = t.charCodeAt(r); i < 128 ? e[n++] = i : i < 2048 ? (e[n++] = i >> 6 | 192, e[n++] = i & 63 | 128) : (i & 64512) === 55296 && r + 1 < t.length && (t.charCodeAt(r + 1) & 64512) === 56320 ? (i = 65536 + ((i & 1023) << 10) + (t.charCodeAt(++r) & 1023), e[n++] = i >> 18 | 240, e[n++] = i >> 12 & 63 | 128, e[n++] = i >> 6 & 63 | 128, e[n++] = i & 63 | 128) : (e[n++] = i >> 12 | 224, e[n++] = i >> 6 & 63 | 128, e[n++] = i & 63 | 128) } return e }, fT = function (t) { const e = []; let n = 0, r = 0; for (; n < t.length;) { const i = t[n++]; if (i < 128) e[r++] = String.fromCharCode(i); else if (i > 191 && i < 224) { const s = t[n++]; e[r++] = String.fromCharCode((i & 31) << 6 | s & 63) } else if (i > 239 && i < 365) { const s = t[n++], o = t[n++], l = t[n++], u = ((i & 7) << 18 | (s & 63) << 12 | (o & 63) << 6 | l & 63) - 65536; e[r++] = String.fromCharCode(55296 + (u >> 10)), e[r++] = String.fromCharCode(56320 + (u & 1023)) } else { const s = t[n++], o = t[n++]; e[r++] = String.fromCharCode((i & 15) << 12 | (s & 63) << 6 | o & 63) } } return e.join("") }, r_ = { byteToCharMap_: null, charToByteMap_: null, byteToCharMapWebSafe_: null, charToByteMapWebSafe_: null, ENCODED_VALS_BASE: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", get ENCODED_VALS() { return this.ENCODED_VALS_BASE + "+/=" }, get ENCODED_VALS_WEBSAFE() { return this.ENCODED_VALS_BASE + "-_." }, HAS_NATIVE_SUPPORT: typeof atob == "function", encodeByteArray(t, e) { if (!Array.isArray(t)) throw Error("encodeByteArray takes an array as a parameter"); this.init_(); const n = e ? this.byteToCharMapWebSafe_ : this.byteToCharMap_, r = []; for (let i = 0; i < t.length; i += 3) { const s = t[i], o = i + 1 < t.length, l = o ? t[i + 1] : 0, u = i + 2 < t.length, h = u ? t[i + 2] : 0, p = s >> 2, v = (s & 3) << 4 | l >> 4; let m = (l & 15) << 2 | h >> 6, C = h & 63; u || (C = 64, o || (m = 64)), r.push(n[p], n[v], n[m], n[C]) } return r.join("") }, encodeString(t, e) { return this.HAS_NATIVE_SUPPORT && !e ? btoa(t) : this.encodeByteArray(n_(t), e) }, decodeString(t, e) { return this.HAS_NATIVE_SUPPORT && !e ? atob(t) : fT(this.decodeStringToByteArray(t, e)) }, decodeStringToByteArray(t, e) { this.init_(); const n = e ? this.charToByteMapWebSafe_ : this.charToByteMap_, r = []; for (let i = 0; i < t.length;) { const s = n[t.charAt(i++)], l = i < t.length ? n[t.charAt(i)] : 0; ++i; const h = i < t.length ? n[t.charAt(i)] : 64; ++i; const v = i < t.length ? n[t.charAt(i)] : 64; if (++i, s == null || l == null || h == null || v == null) throw new pT; const m = s << 2 | l >> 4; if (r.push(m), h !== 64) { const C = l << 4 & 240 | h >> 2; if (r.push(C), v !== 64) { const R = h << 6 & 192 | v; r.push(R) } } } return r }, init_() { if (!this.byteToCharMap_) { this.byteToCharMap_ = {}, this.charToByteMap_ = {}, this.byteToCharMapWebSafe_ = {}, this.charToByteMapWebSafe_ = {}; for (let t = 0; t < this.ENCODED_VALS.length; t++)this.byteToCharMap_[t] = this.ENCODED_VALS.charAt(t), this.charToByteMap_[this.byteToCharMap_[t]] = t, this.byteToCharMapWebSafe_[t] = this.ENCODED_VALS_WEBSAFE.charAt(t), this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[t]] = t, t >= this.ENCODED_VALS_BASE.length && (this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(t)] = t, this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(t)] = t) } } }; class pT extends Error { constructor() { super(...arguments), this.name = "DecodeBase64StringError" } } const mT = function (t) { const e = n_(t); return r_.encodeByteArray(e, !0) }, Uu = function (t) { return mT(t).replace(/\./g, "") }, i_ = function (t) { try { return r_.decodeString(t, !0) } catch (e) { console.error("base64Decode failed: ", e) } return null };/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function gT() { if (typeof self < "u") return self; if (typeof window < "u") return window; if (typeof global < "u") return global; throw new Error("Unable to locate global object.") }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const yT = () => gT().__FIREBASE_DEFAULTS__, vT = () => { if (typeof process > "u" || typeof Pg > "u") return; const t = Pg.__FIREBASE_DEFAULTS__; if (t) return JSON.parse(t) }, _T = () => { if (typeof document > "u") return; let t; try { t = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/) } catch { return } const e = t && i_(t[1]); return e && JSON.parse(e) }, _c = () => { try { return yT() || vT() || _T() } catch (t) { console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${t}`); return } }, s_ = t => { var e, n; return (n = (e = _c()) === null || e === void 0 ? void 0 : e.emulatorHosts) === null || n === void 0 ? void 0 : n[t] }, wT = t => { const e = s_(t); if (!e) return; const n = e.lastIndexOf(":"); if (n <= 0 || n + 1 === e.length) throw new Error(`Invalid host ${e} with no separate hostname and port!`); const r = parseInt(e.substring(n + 1), 10); return e[0] === "[" ? [e.substring(1, n - 1), r] : [e.substring(0, n), r] }, o_ = () => { var t; return (t = _c()) === null || t === void 0 ? void 0 : t.config }, a_ = t => { var e; return (e = _c()) === null || e === void 0 ? void 0 : e[`_${t}`] };/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ET { constructor() { this.reject = () => { }, this.resolve = () => { }, this.promise = new Promise((e, n) => { this.resolve = e, this.reject = n }) } wrapCallback(e) { return (n, r) => { n ? this.reject(n) : this.resolve(r), typeof e == "function" && (this.promise.catch(() => { }), e.length === 1 ? e(n) : e(n, r)) } } }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function xT(t, e) { if (t.uid) throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.'); const n = { alg: "none", type: "JWT" }, r = e || "demo-project", i = t.iat || 0, s = t.sub || t.user_id; if (!s) throw new Error("mockUserToken must contain 'sub' or 'user_id' field!"); const o = Object.assign({ iss: `https://securetoken.google.com/${r}`, aud: r, iat: i, exp: i + 3600, auth_time: i, sub: s, user_id: s, firebase: { sign_in_provider: "custom", identities: {} } }, t); return [Uu(JSON.stringify(n)), Uu(JSON.stringify(o)), ""].join(".") }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function xt() { return typeof navigator < "u" && typeof navigator.userAgent == "string" ? navigator.userAgent : "" } function kT() { return typeof window < "u" && !!(window.cordova || window.phonegap || window.PhoneGap) && /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(xt()) } function TT() { var t; const e = (t = _c()) === null || t === void 0 ? void 0 : t.forceEnvironment; if (e === "node") return !0; if (e === "browser") return !1; try { return Object.prototype.toString.call(global.process) === "[object process]" } catch { return !1 } } function ST() { return typeof navigator < "u" && navigator.userAgent === "Cloudflare-Workers" } function IT() { const t = typeof chrome == "object" ? chrome.runtime : typeof browser == "object" ? browser.runtime : void 0; return typeof t == "object" && t.id !== void 0 } function AT() { return typeof navigator == "object" && navigator.product === "ReactNative" } function CT() { const t = xt(); return t.indexOf("MSIE ") >= 0 || t.indexOf("Trident/") >= 0 } function NT() { return !TT() && !!navigator.userAgent && navigator.userAgent.includes("Safari") && !navigator.userAgent.includes("Chrome") } function PT() { try { return typeof indexedDB == "object" } catch { return !1 } } function bT() { return new Promise((t, e) => { try { let n = !0; const r = "validate-browser-context-for-indexeddb-analytics-module", i = self.indexedDB.open(r); i.onsuccess = () => { i.result.close(), n || self.indexedDB.deleteDatabase(r), t(!0) }, i.onupgradeneeded = () => { n = !1 }, i.onerror = () => { var s; e(((s = i.error) === null || s === void 0 ? void 0 : s.message) || "") } } catch (n) { e(n) } }) }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const RT = "FirebaseError"; class lr extends Error { constructor(e, n, r) { super(n), this.code = e, this.customData = r, this.name = RT, Object.setPrototypeOf(this, lr.prototype), Error.captureStackTrace && Error.captureStackTrace(this, La.prototype.create) } } class La { constructor(e, n, r) { this.service = e, this.serviceName = n, this.errors = r } create(e, ...n) { const r = n[0] || {}, i = `${this.service}/${e}`, s = this.errors[e], o = s ? DT(s, r) : "Error", l = `${this.serviceName}: ${o} (${i}).`; return new lr(i, l, r) } } function DT(t, e) { return t.replace(LT, (n, r) => { const i = e[r]; return i != null ? String(i) : `<${r}?>` }) } const LT = /\{\$([^}]+)}/g; function MT(t) { for (const e in t) if (Object.prototype.hasOwnProperty.call(t, e)) return !1; return !0 } function zu(t, e) { if (t === e) return !0; const n = Object.keys(t), r = Object.keys(e); for (const i of n) { if (!r.includes(i)) return !1; const s = t[i], o = e[i]; if (bg(s) && bg(o)) { if (!zu(s, o)) return !1 } else if (s !== o) return !1 } for (const i of r) if (!n.includes(i)) return !1; return !0 } function bg(t) { return t !== null && typeof t == "object" }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Ma(t) { const e = []; for (const [n, r] of Object.entries(t)) Array.isArray(r) ? r.forEach(i => { e.push(encodeURIComponent(n) + "=" + encodeURIComponent(i)) }) : e.push(encodeURIComponent(n) + "=" + encodeURIComponent(r)); return e.length ? "&" + e.join("&") : "" } function Vo(t) { const e = {}; return t.replace(/^\?/, "").split("&").forEach(r => { if (r) { const [i, s] = r.split("="); e[decodeURIComponent(i)] = decodeURIComponent(s) } }), e } function Oo(t) { const e = t.indexOf("?"); if (!e) return ""; const n = t.indexOf("#", e); return t.substring(e, n > 0 ? n : void 0) } function jT(t, e) { const n = new VT(t, e); return n.subscribe.bind(n) } class VT { constructor(e, n) { this.observers = [], this.unsubscribes = [], this.observerCount = 0, this.task = Promise.resolve(), this.finalized = !1, this.onNoObservers = n, this.task.then(() => { e(this) }).catch(r => { this.error(r) }) } next(e) { this.forEachObserver(n => { n.next(e) }) } error(e) { this.forEachObserver(n => { n.error(e) }), this.close(e) } complete() { this.forEachObserver(e => { e.complete() }), this.close() } subscribe(e, n, r) { let i; if (e === void 0 && n === void 0 && r === void 0) throw new Error("Missing Observer."); OT(e, ["next", "error", "complete"]) ? i = e : i = { next: e, error: n, complete: r }, i.next === void 0 && (i.next = Pd), i.error === void 0 && (i.error = Pd), i.complete === void 0 && (i.complete = Pd); const s = this.unsubscribeOne.bind(this, this.observers.length); return this.finalized && this.task.then(() => { try { this.finalError ? i.error(this.finalError) : i.complete() } catch { } }), this.observers.push(i), s } unsubscribeOne(e) { this.observers === void 0 || this.observers[e] === void 0 || (delete this.observers[e], this.observerCount -= 1, this.observerCount === 0 && this.onNoObservers !== void 0 && this.onNoObservers(this)) } forEachObserver(e) { if (!this.finalized) for (let n = 0; n < this.observers.length; n++)this.sendOne(n, e) } sendOne(e, n) { this.task.then(() => { if (this.observers !== void 0 && this.observers[e] !== void 0) try { n(this.observers[e]) } catch (r) { typeof console < "u" && console.error && console.error(r) } }) } close(e) { this.finalized || (this.finalized = !0, e !== void 0 && (this.finalError = e), this.task.then(() => { this.observers = void 0, this.onNoObservers = void 0 })) } } function OT(t, e) { if (typeof t != "object" || t === null) return !1; for (const n of e) if (n in t && typeof t[n] == "function") return !0; return !1 } function Pd() { }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function qe(t) { return t && t._delegate ? t._delegate : t } class Di { constructor(e, n, r) { this.name = e, this.instanceFactory = n, this.type = r, this.multipleInstances = !1, this.serviceProps = {}, this.instantiationMode = "LAZY", this.onInstanceCreated = null } setInstantiationMode(e) { return this.instantiationMode = e, this } setMultipleInstances(e) { return this.multipleInstances = e, this } setServiceProps(e) { return this.serviceProps = e, this } setInstanceCreatedCallback(e) { return this.onInstanceCreated = e, this } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const wi = "[DEFAULT]";/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class FT { constructor(e, n) { this.name = e, this.container = n, this.component = null, this.instances = new Map, this.instancesDeferred = new Map, this.instancesOptions = new Map, this.onInitCallbacks = new Map } get(e) { const n = this.normalizeInstanceIdentifier(e); if (!this.instancesDeferred.has(n)) { const r = new ET; if (this.instancesDeferred.set(n, r), this.isInitialized(n) || this.shouldAutoInitialize()) try { const i = this.getOrInitializeService({ instanceIdentifier: n }); i && r.resolve(i) } catch { } } return this.instancesDeferred.get(n).promise } getImmediate(e) { var n; const r = this.normalizeInstanceIdentifier(e == null ? void 0 : e.identifier), i = (n = e == null ? void 0 : e.optional) !== null && n !== void 0 ? n : !1; if (this.isInitialized(r) || this.shouldAutoInitialize()) try { return this.getOrInitializeService({ instanceIdentifier: r }) } catch (s) { if (i) return null; throw s } else { if (i) return null; throw Error(`Service ${this.name} is not available`) } } getComponent() { return this.component } setComponent(e) { if (e.name !== this.name) throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`); if (this.component) throw Error(`Component for ${this.name} has already been provided`); if (this.component = e, !!this.shouldAutoInitialize()) { if (zT(e)) try { this.getOrInitializeService({ instanceIdentifier: wi }) } catch { } for (const [n, r] of this.instancesDeferred.entries()) { const i = this.normalizeInstanceIdentifier(n); try { const s = this.getOrInitializeService({ instanceIdentifier: i }); r.resolve(s) } catch { } } } } clearInstance(e = wi) { this.instancesDeferred.delete(e), this.instancesOptions.delete(e), this.instances.delete(e) } async delete() { const e = Array.from(this.instances.values()); await Promise.all([...e.filter(n => "INTERNAL" in n).map(n => n.INTERNAL.delete()), ...e.filter(n => "_delete" in n).map(n => n._delete())]) } isComponentSet() { return this.component != null } isInitialized(e = wi) { return this.instances.has(e) } getOptions(e = wi) { return this.instancesOptions.get(e) || {} } initialize(e = {}) { const { options: n = {} } = e, r = this.normalizeInstanceIdentifier(e.instanceIdentifier); if (this.isInitialized(r)) throw Error(`${this.name}(${r}) has already been initialized`); if (!this.isComponentSet()) throw Error(`Component ${this.name} has not been registered yet`); const i = this.getOrInitializeService({ instanceIdentifier: r, options: n }); for (const [s, o] of this.instancesDeferred.entries()) { const l = this.normalizeInstanceIdentifier(s); r === l && o.resolve(i) } return i } onInit(e, n) { var r; const i = this.normalizeInstanceIdentifier(n), s = (r = this.onInitCallbacks.get(i)) !== null && r !== void 0 ? r : new Set; s.add(e), this.onInitCallbacks.set(i, s); const o = this.instances.get(i); return o && e(o, i), () => { s.delete(e) } } invokeOnInitCallbacks(e, n) { const r = this.onInitCallbacks.get(n); if (r) for (const i of r) try { i(e, n) } catch { } } getOrInitializeService({ instanceIdentifier: e, options: n = {} }) { let r = this.instances.get(e); if (!r && this.component && (r = this.component.instanceFactory(this.container, { instanceIdentifier: UT(e), options: n }), this.instances.set(e, r), this.instancesOptions.set(e, n), this.invokeOnInitCallbacks(r, e), this.component.onInstanceCreated)) try { this.component.onInstanceCreated(this.container, e, r) } catch { } return r || null } normalizeInstanceIdentifier(e = wi) { return this.component ? this.component.multipleInstances ? e : wi : e } shouldAutoInitialize() { return !!this.component && this.component.instantiationMode !== "EXPLICIT" } } function UT(t) { return t === wi ? void 0 : t } function zT(t) { return t.instantiationMode === "EAGER" }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class BT { constructor(e) { this.name = e, this.providers = new Map } addComponent(e) { const n = this.getProvider(e.name); if (n.isComponentSet()) throw new Error(`Component ${e.name} has already been registered with ${this.name}`); n.setComponent(e) } addOrOverwriteComponent(e) { this.getProvider(e.name).isComponentSet() && this.providers.delete(e.name), this.addComponent(e) } getProvider(e) { if (this.providers.has(e)) return this.providers.get(e); const n = new FT(e, this); return this.providers.set(e, n), n } getProviders() { return Array.from(this.providers.values()) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/var he; (function (t) { t[t.DEBUG = 0] = "DEBUG", t[t.VERBOSE = 1] = "VERBOSE", t[t.INFO = 2] = "INFO", t[t.WARN = 3] = "WARN", t[t.ERROR = 4] = "ERROR", t[t.SILENT = 5] = "SILENT" })(he || (he = {})); const $T = { debug: he.DEBUG, verbose: he.VERBOSE, info: he.INFO, warn: he.WARN, error: he.ERROR, silent: he.SILENT }, WT = he.INFO, HT = { [he.DEBUG]: "log", [he.VERBOSE]: "log", [he.INFO]: "info", [he.WARN]: "warn", [he.ERROR]: "error" }, qT = (t, e, ...n) => { if (e < t.logLevel) return; const r = new Date().toISOString(), i = HT[e]; if (i) console[i](`[${r}] ${t.name}:`, ...n); else throw new Error(`Attempted to log a message with an invalid logType (value: ${e})`) }; class np { constructor(e) { this.name = e, this._logLevel = WT, this._logHandler = qT, this._userLogHandler = null } get logLevel() { return this._logLevel } set logLevel(e) { if (!(e in he)) throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``); this._logLevel = e } setLogLevel(e) { this._logLevel = typeof e == "string" ? $T[e] : e } get logHandler() { return this._logHandler } set logHandler(e) { if (typeof e != "function") throw new TypeError("Value assigned to `logHandler` must be a function"); this._logHandler = e } get userLogHandler() { return this._userLogHandler } set userLogHandler(e) { this._userLogHandler = e } debug(...e) { this._userLogHandler && this._userLogHandler(this, he.DEBUG, ...e), this._logHandler(this, he.DEBUG, ...e) } log(...e) { this._userLogHandler && this._userLogHandler(this, he.VERBOSE, ...e), this._logHandler(this, he.VERBOSE, ...e) } info(...e) { this._userLogHandler && this._userLogHandler(this, he.INFO, ...e), this._logHandler(this, he.INFO, ...e) } warn(...e) { this._userLogHandler && this._userLogHandler(this, he.WARN, ...e), this._logHandler(this, he.WARN, ...e) } error(...e) { this._userLogHandler && this._userLogHandler(this, he.ERROR, ...e), this._logHandler(this, he.ERROR, ...e) } } const KT = (t, e) => e.some(n => t instanceof n); let Rg, Dg; function GT() { return Rg || (Rg = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction]) } function QT() { return Dg || (Dg = [IDBCursor.prototype.advance, IDBCursor.prototype.continue, IDBCursor.prototype.continuePrimaryKey]) } const l_ = new WeakMap, jh = new WeakMap, u_ = new WeakMap, bd = new WeakMap, rp = new WeakMap; function YT(t) { const e = new Promise((n, r) => { const i = () => { t.removeEventListener("success", s), t.removeEventListener("error", o) }, s = () => { n(Br(t.result)), i() }, o = () => { r(t.error), i() }; t.addEventListener("success", s), t.addEventListener("error", o) }); return e.then(n => { n instanceof IDBCursor && l_.set(n, t) }).catch(() => { }), rp.set(e, t), e } function XT(t) { if (jh.has(t)) return; const e = new Promise((n, r) => { const i = () => { t.removeEventListener("complete", s), t.removeEventListener("error", o), t.removeEventListener("abort", o) }, s = () => { n(), i() }, o = () => { r(t.error || new DOMException("AbortError", "AbortError")), i() }; t.addEventListener("complete", s), t.addEventListener("error", o), t.addEventListener("abort", o) }); jh.set(t, e) } let Vh = { get(t, e, n) { if (t instanceof IDBTransaction) { if (e === "done") return jh.get(t); if (e === "objectStoreNames") return t.objectStoreNames || u_.get(t); if (e === "store") return n.objectStoreNames[1] ? void 0 : n.objectStore(n.objectStoreNames[0]) } return Br(t[e]) }, set(t, e, n) { return t[e] = n, !0 }, has(t, e) { return t instanceof IDBTransaction && (e === "done" || e === "store") ? !0 : e in t } }; function JT(t) { Vh = t(Vh) } function ZT(t) { return t === IDBDatabase.prototype.transaction && !("objectStoreNames" in IDBTransaction.prototype) ? function (e, ...n) { const r = t.call(Rd(this), e, ...n); return u_.set(r, e.sort ? e.sort() : [e]), Br(r) } : QT().includes(t) ? function (...e) { return t.apply(Rd(this), e), Br(l_.get(this)) } : function (...e) { return Br(t.apply(Rd(this), e)) } } function e1(t) { return typeof t == "function" ? ZT(t) : (t instanceof IDBTransaction && XT(t), KT(t, GT()) ? new Proxy(t, Vh) : t) } function Br(t) { if (t instanceof IDBRequest) return YT(t); if (bd.has(t)) return bd.get(t); const e = e1(t); return e !== t && (bd.set(t, e), rp.set(e, t)), e } const Rd = t => rp.get(t); function t1(t, e, { blocked: n, upgrade: r, blocking: i, terminated: s } = {}) { const o = indexedDB.open(t, e), l = Br(o); return r && o.addEventListener("upgradeneeded", u => { r(Br(o.result), u.oldVersion, u.newVersion, Br(o.transaction), u) }), n && o.addEventListener("blocked", u => n(u.oldVersion, u.newVersion, u)), l.then(u => { s && u.addEventListener("close", () => s()), i && u.addEventListener("versionchange", h => i(h.oldVersion, h.newVersion, h)) }).catch(() => { }), l } const n1 = ["get", "getKey", "getAll", "getAllKeys", "count"], r1 = ["put", "add", "delete", "clear"], Dd = new Map; function Lg(t, e) { if (!(t instanceof IDBDatabase && !(e in t) && typeof e == "string")) return; if (Dd.get(e)) return Dd.get(e); const n = e.replace(/FromIndex$/, ""), r = e !== n, i = r1.includes(n); if (!(n in (r ? IDBIndex : IDBObjectStore).prototype) || !(i || n1.includes(n))) return; const s = async function (o, ...l) { const u = this.transaction(o, i ? "readwrite" : "readonly"); let h = u.store; return r && (h = h.index(l.shift())), (await Promise.all([h[n](...l), i && u.done]))[0] }; return Dd.set(e, s), s } JT(t => ({ ...t, get: (e, n, r) => Lg(e, n) || t.get(e, n, r), has: (e, n) => !!Lg(e, n) || t.has(e, n) }));/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class i1 { constructor(e) { this.container = e } getPlatformInfoString() { return this.container.getProviders().map(n => { if (s1(n)) { const r = n.getImmediate(); return `${r.library}/${r.version}` } else return null }).filter(n => n).join(" ") } } function s1(t) { const e = t.getComponent(); return (e == null ? void 0 : e.type) === "VERSION" } const Oh = "@firebase/app", Mg = "0.10.13";/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const nr = new np("@firebase/app"), o1 = "@firebase/app-compat", a1 = "@firebase/analytics-compat", l1 = "@firebase/analytics", u1 = "@firebase/app-check-compat", c1 = "@firebase/app-check", d1 = "@firebase/auth", h1 = "@firebase/auth-compat", f1 = "@firebase/database", p1 = "@firebase/data-connect", m1 = "@firebase/database-compat", g1 = "@firebase/functions", y1 = "@firebase/functions-compat", v1 = "@firebase/installations", _1 = "@firebase/installations-compat", w1 = "@firebase/messaging", E1 = "@firebase/messaging-compat", x1 = "@firebase/performance", k1 = "@firebase/performance-compat", T1 = "@firebase/remote-config", S1 = "@firebase/remote-config-compat", I1 = "@firebase/storage", A1 = "@firebase/storage-compat", C1 = "@firebase/firestore", N1 = "@firebase/vertexai-preview", P1 = "@firebase/firestore-compat", b1 = "firebase", R1 = "10.14.1";/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const Fh = "[DEFAULT]", D1 = { [Oh]: "fire-core", [o1]: "fire-core-compat", [l1]: "fire-analytics", [a1]: "fire-analytics-compat", [c1]: "fire-app-check", [u1]: "fire-app-check-compat", [d1]: "fire-auth", [h1]: "fire-auth-compat", [f1]: "fire-rtdb", [p1]: "fire-data-connect", [m1]: "fire-rtdb-compat", [g1]: "fire-fn", [y1]: "fire-fn-compat", [v1]: "fire-iid", [_1]: "fire-iid-compat", [w1]: "fire-fcm", [E1]: "fire-fcm-compat", [x1]: "fire-perf", [k1]: "fire-perf-compat", [T1]: "fire-rc", [S1]: "fire-rc-compat", [I1]: "fire-gcs", [A1]: "fire-gcs-compat", [C1]: "fire-fst", [P1]: "fire-fst-compat", [N1]: "fire-vertex", "fire-js": "fire-js", [b1]: "fire-js-all" };/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const Bu = new Map, L1 = new Map, Uh = new Map; function jg(t, e) { try { t.container.addComponent(e) } catch (n) { nr.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`, n) } } function Os(t) { const e = t.name; if (Uh.has(e)) return nr.debug(`There were multiple attempts to register component ${e}.`), !1; Uh.set(e, t); for (const n of Bu.values()) jg(n, t); for (const n of L1.values()) jg(n, t); return !0 } function ip(t, e) { const n = t.container.getProvider("heartbeat").getImmediate({ optional: !0 }); return n && n.triggerHeartbeat(), t.container.getProvider(e) } function Cn(t) { return t.settings !== void 0 }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const M1 = { "no-app": "No Firebase App '{$appName}' has been created - call initializeApp() first", "bad-app-name": "Illegal App name: '{$appName}'", "duplicate-app": "Firebase App named '{$appName}' already exists with different options or config", "app-deleted": "Firebase App named '{$appName}' already deleted", "server-app-deleted": "Firebase Server App has been deleted", "no-options": "Need to provide options, when not being deployed to hosting via source.", "invalid-app-argument": "firebase.{$appName}() takes either no argument or a Firebase App instance.", "invalid-log-argument": "First argument to `onLog` must be null or a function.", "idb-open": "Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.", "idb-get": "Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.", "idb-set": "Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.", "idb-delete": "Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.", "finalization-registry-not-supported": "FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.", "invalid-server-app-environment": "FirebaseServerApp is not for use in browser environments." }, $r = new La("app", "Firebase", M1);/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class j1 { constructor(e, n, r) { this._isDeleted = !1, this._options = Object.assign({}, e), this._config = Object.assign({}, n), this._name = n.name, this._automaticDataCollectionEnabled = n.automaticDataCollectionEnabled, this._container = r, this.container.addComponent(new Di("app", () => this, "PUBLIC")) } get automaticDataCollectionEnabled() { return this.checkDestroyed(), this._automaticDataCollectionEnabled } set automaticDataCollectionEnabled(e) { this.checkDestroyed(), this._automaticDataCollectionEnabled = e } get name() { return this.checkDestroyed(), this._name } get options() { return this.checkDestroyed(), this._options } get config() { return this.checkDestroyed(), this._config } get container() { return this._container } get isDeleted() { return this._isDeleted } set isDeleted(e) { this._isDeleted = e } checkDestroyed() { if (this.isDeleted) throw $r.create("app-deleted", { appName: this._name }) } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const Qs = R1; function c_(t, e = {}) { let n = t; typeof e != "object" && (e = { name: e }); const r = Object.assign({ name: Fh, automaticDataCollectionEnabled: !1 }, e), i = r.name; if (typeof i != "string" || !i) throw $r.create("bad-app-name", { appName: String(i) }); if (n || (n = o_()), !n) throw $r.create("no-options"); const s = Bu.get(i); if (s) { if (zu(n, s.options) && zu(r, s.config)) return s; throw $r.create("duplicate-app", { appName: i }) } const o = new BT(i); for (const u of Uh.values()) o.addComponent(u); const l = new j1(n, r, o); return Bu.set(i, l), l } function d_(t = Fh) { const e = Bu.get(t); if (!e && t === Fh && o_()) return c_(); if (!e) throw $r.create("no-app", { appName: t }); return e } function Wr(t, e, n) { var r; let i = (r = D1[t]) !== null && r !== void 0 ? r : t; n && (i += `-${n}`); const s = i.match(/\s|\//), o = e.match(/\s|\//); if (s || o) { const l = [`Unable to register library "${i}" with version "${e}":`]; s && l.push(`library name "${i}" contains illegal characters (whitespace or "/")`), s && o && l.push("and"), o && l.push(`version name "${e}" contains illegal characters (whitespace or "/")`), nr.warn(l.join(" ")); return } Os(new Di(`${i}-version`, () => ({ library: i, version: e }), "VERSION")) }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const V1 = "firebase-heartbeat-database", O1 = 1, wa = "firebase-heartbeat-store"; let Ld = null; function h_() { return Ld || (Ld = t1(V1, O1, { upgrade: (t, e) => { switch (e) { case 0: try { t.createObjectStore(wa) } catch (n) { console.warn(n) } } } }).catch(t => { throw $r.create("idb-open", { originalErrorMessage: t.message }) })), Ld } async function F1(t) { try { const n = (await h_()).transaction(wa), r = await n.objectStore(wa).get(f_(t)); return await n.done, r } catch (e) { if (e instanceof lr) nr.warn(e.message); else { const n = $r.create("idb-get", { originalErrorMessage: e == null ? void 0 : e.message }); nr.warn(n.message) } } } async function Vg(t, e) { try { const r = (await h_()).transaction(wa, "readwrite"); await r.objectStore(wa).put(e, f_(t)), await r.done } catch (n) { if (n instanceof lr) nr.warn(n.message); else { const r = $r.create("idb-set", { originalErrorMessage: n == null ? void 0 : n.message }); nr.warn(r.message) } } } function f_(t) { return `${t.name}!${t.options.appId}` }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const U1 = 1024, z1 = 30 * 24 * 60 * 60 * 1e3; class B1 { constructor(e) { this.container = e, this._heartbeatsCache = null; const n = this.container.getProvider("app").getImmediate(); this._storage = new W1(n), this._heartbeatsCachePromise = this._storage.read().then(r => (this._heartbeatsCache = r, r)) } async triggerHeartbeat() { var e, n; try { const i = this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(), s = Og(); return ((e = this._heartbeatsCache) === null || e === void 0 ? void 0 : e.heartbeats) == null && (this._heartbeatsCache = await this._heartbeatsCachePromise, ((n = this._heartbeatsCache) === null || n === void 0 ? void 0 : n.heartbeats) == null) || this._heartbeatsCache.lastSentHeartbeatDate === s || this._heartbeatsCache.heartbeats.some(o => o.date === s) ? void 0 : (this._heartbeatsCache.heartbeats.push({ date: s, agent: i }), this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(o => { const l = new Date(o.date).valueOf(); return Date.now() - l <= z1 }), this._storage.overwrite(this._heartbeatsCache)) } catch (r) { nr.warn(r) } } async getHeartbeatsHeader() { var e; try { if (this._heartbeatsCache === null && await this._heartbeatsCachePromise, ((e = this._heartbeatsCache) === null || e === void 0 ? void 0 : e.heartbeats) == null || this._heartbeatsCache.heartbeats.length === 0) return ""; const n = Og(), { heartbeatsToSend: r, unsentEntries: i } = $1(this._heartbeatsCache.heartbeats), s = Uu(JSON.stringify({ version: 2, heartbeats: r })); return this._heartbeatsCache.lastSentHeartbeatDate = n, i.length > 0 ? (this._heartbeatsCache.heartbeats = i, await this._storage.overwrite(this._heartbeatsCache)) : (this._heartbeatsCache.heartbeats = [], this._storage.overwrite(this._heartbeatsCache)), s } catch (n) { return nr.warn(n), "" } } } function Og() { return new Date().toISOString().substring(0, 10) } function $1(t, e = U1) { const n = []; let r = t.slice(); for (const i of t) { const s = n.find(o => o.agent === i.agent); if (s) { if (s.dates.push(i.date), Fg(n) > e) { s.dates.pop(); break } } else if (n.push({ agent: i.agent, dates: [i.date] }), Fg(n) > e) { n.pop(); break } r = r.slice(1) } return { heartbeatsToSend: n, unsentEntries: r } } class W1 { constructor(e) { this.app = e, this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck() } async runIndexedDBEnvironmentCheck() { return PT() ? bT().then(() => !0).catch(() => !1) : !1 } async read() { if (await this._canUseIndexedDBPromise) { const n = await F1(this.app); return n != null && n.heartbeats ? n : { heartbeats: [] } } else return { heartbeats: [] } } async overwrite(e) { var n; if (await this._canUseIndexedDBPromise) { const i = await this.read(); return Vg(this.app, { lastSentHeartbeatDate: (n = e.lastSentHeartbeatDate) !== null && n !== void 0 ? n : i.lastSentHeartbeatDate, heartbeats: e.heartbeats }) } else return } async add(e) { var n; if (await this._canUseIndexedDBPromise) { const i = await this.read(); return Vg(this.app, { lastSentHeartbeatDate: (n = e.lastSentHeartbeatDate) !== null && n !== void 0 ? n : i.lastSentHeartbeatDate, heartbeats: [...i.heartbeats, ...e.heartbeats] }) } else return } } function Fg(t) { return Uu(JSON.stringify({ version: 2, heartbeats: t })).length }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function H1(t) { Os(new Di("platform-logger", e => new i1(e), "PRIVATE")), Os(new Di("heartbeat", e => new B1(e), "PRIVATE")), Wr(Oh, Mg, t), Wr(Oh, Mg, "esm2017"), Wr("fire-js", "") } H1(""); function sp(t, e) { var n = {}; for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && e.indexOf(r) < 0 && (n[r] = t[r]); if (t != null && typeof Object.getOwnPropertySymbols == "function") for (var i = 0, r = Object.getOwnPropertySymbols(t); i < r.length; i++)e.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(t, r[i]) && (n[r[i]] = t[r[i]]); return n } function p_() { return { "dependent-sdk-initialized-before-auth": "Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK." } } const q1 = p_, m_ = new La("auth", "Firebase", p_());/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const $u = new np("@firebase/auth"); function K1(t, ...e) { $u.logLevel <= he.WARN && $u.warn(`Auth (${Qs}): ${t}`, ...e) } function au(t, ...e) { $u.logLevel <= he.ERROR && $u.error(`Auth (${Qs}): ${t}`, ...e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function En(t, ...e) { throw op(t, ...e) } function bn(t, ...e) { return op(t, ...e) } function g_(t, e, n) { const r = Object.assign(Object.assign({}, q1()), { [e]: n }); return new La("auth", "Firebase", r).create(e, { appName: t.name }) } function Xn(t) { return g_(t, "operation-not-supported-in-this-environment", "Operations that alter the current user are not supported in conjunction with FirebaseServerApp") } function op(t, ...e) { if (typeof t != "string") { const n = e[0], r = [...e.slice(1)]; return r[0] && (r[0].appName = t.name), t._errorFactory.create(n, ...r) } return m_.create(t, ...e) } function se(t, e, ...n) { if (!t) throw op(e, ...n) } function Kn(t) { const e = "INTERNAL ASSERTION FAILED: " + t; throw au(e), new Error(e) } function rr(t, e) { t || Kn(e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function zh() { var t; return typeof self < "u" && ((t = self.location) === null || t === void 0 ? void 0 : t.href) || "" } function G1() { return Ug() === "http:" || Ug() === "https:" } function Ug() { var t; return typeof self < "u" && ((t = self.location) === null || t === void 0 ? void 0 : t.protocol) || null }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Q1() { return typeof navigator < "u" && navigator && "onLine" in navigator && typeof navigator.onLine == "boolean" && (G1() || IT() || "connection" in navigator) ? navigator.onLine : !0 } function Y1() { if (typeof navigator > "u") return null; const t = navigator; return t.languages && t.languages[0] || t.language || null }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ja { constructor(e, n) { this.shortDelay = e, this.longDelay = n, rr(n > e, "Short delay should be less than long delay!"), this.isMobile = kT() || AT() } get() { return Q1() ? this.isMobile ? this.longDelay : this.shortDelay : Math.min(5e3, this.shortDelay) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function ap(t, e) { rr(t.emulator, "Emulator should always be set here"); const { url: n } = t.emulator; return e ? `${n}${e.startsWith("/") ? e.slice(1) : e}` : n }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class y_ { static initialize(e, n, r) { this.fetchImpl = e, n && (this.headersImpl = n), r && (this.responseImpl = r) } static fetch() { if (this.fetchImpl) return this.fetchImpl; if (typeof self < "u" && "fetch" in self) return self.fetch; if (typeof globalThis < "u" && globalThis.fetch) return globalThis.fetch; if (typeof fetch < "u") return fetch; Kn("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill") } static headers() { if (this.headersImpl) return this.headersImpl; if (typeof self < "u" && "Headers" in self) return self.Headers; if (typeof globalThis < "u" && globalThis.Headers) return globalThis.Headers; if (typeof Headers < "u") return Headers; Kn("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill") } static response() { if (this.responseImpl) return this.responseImpl; if (typeof self < "u" && "Response" in self) return self.Response; if (typeof globalThis < "u" && globalThis.Response) return globalThis.Response; if (typeof Response < "u") return Response; Kn("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill") } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const X1 = { CREDENTIAL_MISMATCH: "custom-token-mismatch", MISSING_CUSTOM_TOKEN: "internal-error", INVALID_IDENTIFIER: "invalid-email", MISSING_CONTINUE_URI: "internal-error", INVALID_PASSWORD: "wrong-password", MISSING_PASSWORD: "missing-password", INVALID_LOGIN_CREDENTIALS: "invalid-credential", EMAIL_EXISTS: "email-already-in-use", PASSWORD_LOGIN_DISABLED: "operation-not-allowed", INVALID_IDP_RESPONSE: "invalid-credential", INVALID_PENDING_TOKEN: "invalid-credential", FEDERATED_USER_ID_ALREADY_LINKED: "credential-already-in-use", MISSING_REQ_TYPE: "internal-error", EMAIL_NOT_FOUND: "user-not-found", RESET_PASSWORD_EXCEED_LIMIT: "too-many-requests", EXPIRED_OOB_CODE: "expired-action-code", INVALID_OOB_CODE: "invalid-action-code", MISSING_OOB_CODE: "internal-error", CREDENTIAL_TOO_OLD_LOGIN_AGAIN: "requires-recent-login", INVALID_ID_TOKEN: "invalid-user-token", TOKEN_EXPIRED: "user-token-expired", USER_NOT_FOUND: "user-token-expired", TOO_MANY_ATTEMPTS_TRY_LATER: "too-many-requests", PASSWORD_DOES_NOT_MEET_REQUIREMENTS: "password-does-not-meet-requirements", INVALID_CODE: "invalid-verification-code", INVALID_SESSION_INFO: "invalid-verification-id", INVALID_TEMPORARY_PROOF: "invalid-credential", MISSING_SESSION_INFO: "missing-verification-id", SESSION_EXPIRED: "code-expired", MISSING_ANDROID_PACKAGE_NAME: "missing-android-pkg-name", UNAUTHORIZED_DOMAIN: "unauthorized-continue-uri", INVALID_OAUTH_CLIENT_ID: "invalid-oauth-client-id", ADMIN_ONLY_OPERATION: "admin-restricted-operation", INVALID_MFA_PENDING_CREDENTIAL: "invalid-multi-factor-session", MFA_ENROLLMENT_NOT_FOUND: "multi-factor-info-not-found", MISSING_MFA_ENROLLMENT_ID: "missing-multi-factor-info", MISSING_MFA_PENDING_CREDENTIAL: "missing-multi-factor-session", SECOND_FACTOR_EXISTS: "second-factor-already-in-use", SECOND_FACTOR_LIMIT_EXCEEDED: "maximum-second-factor-count-exceeded", BLOCKING_FUNCTION_ERROR_RESPONSE: "internal-error", RECAPTCHA_NOT_ENABLED: "recaptcha-not-enabled", MISSING_RECAPTCHA_TOKEN: "missing-recaptcha-token", INVALID_RECAPTCHA_TOKEN: "invalid-recaptcha-token", INVALID_RECAPTCHA_ACTION: "invalid-recaptcha-action", MISSING_CLIENT_TYPE: "missing-client-type", MISSING_RECAPTCHA_VERSION: "missing-recaptcha-version", INVALID_RECAPTCHA_VERSION: "invalid-recaptcha-version", INVALID_REQ_TYPE: "invalid-req-type" };/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const J1 = new ja(3e4, 6e4); function ti(t, e) { return t.tenantId && !e.tenantId ? Object.assign(Object.assign({}, e), { tenantId: t.tenantId }) : e } async function ni(t, e, n, r, i = {}) { return v_(t, i, async () => { let s = {}, o = {}; r && (e === "GET" ? o = r : s = { body: JSON.stringify(r) }); const l = Ma(Object.assign({ key: t.config.apiKey }, o)).slice(1), u = await t._getAdditionalHeaders(); u["Content-Type"] = "application/json", t.languageCode && (u["X-Firebase-Locale"] = t.languageCode); const h = Object.assign({ method: e, headers: u }, s); return ST() || (h.referrerPolicy = "no-referrer"), y_.fetch()(__(t, t.config.apiHost, n, l), h) }) } async function v_(t, e, n) { t._canInitEmulator = !1; const r = Object.assign(Object.assign({}, X1), e); try { const i = new eS(t), s = await Promise.race([n(), i.promise]); i.clearNetworkTimeout(); const o = await s.json(); if ("needConfirmation" in o) throw Ul(t, "account-exists-with-different-credential", o); if (s.ok && !("errorMessage" in o)) return o; { const l = s.ok ? o.errorMessage : o.error.message, [u, h] = l.split(" : "); if (u === "FEDERATED_USER_ID_ALREADY_LINKED") throw Ul(t, "credential-already-in-use", o); if (u === "EMAIL_EXISTS") throw Ul(t, "email-already-in-use", o); if (u === "USER_DISABLED") throw Ul(t, "user-disabled", o); const p = r[u] || u.toLowerCase().replace(/[_\s]+/g, "-"); if (h) throw g_(t, p, h); En(t, p) } } catch (i) { if (i instanceof lr) throw i; En(t, "network-request-failed", { message: String(i) }) } } async function Va(t, e, n, r, i = {}) { const s = await ni(t, e, n, r, i); return "mfaPendingCredential" in s && En(t, "multi-factor-auth-required", { _serverResponse: s }), s } function __(t, e, n, r) { const i = `${e}${n}?${r}`; return t.config.emulator ? ap(t.config, i) : `${t.config.apiScheme}://${i}` } function Z1(t) { switch (t) { case "ENFORCE": return "ENFORCE"; case "AUDIT": return "AUDIT"; case "OFF": return "OFF"; default: return "ENFORCEMENT_STATE_UNSPECIFIED" } } class eS { constructor(e) { this.auth = e, this.timer = null, this.promise = new Promise((n, r) => { this.timer = setTimeout(() => r(bn(this.auth, "network-request-failed")), J1.get()) }) } clearNetworkTimeout() { clearTimeout(this.timer) } } function Ul(t, e, n) { const r = { appName: t.name }; n.email && (r.email = n.email), n.phoneNumber && (r.phoneNumber = n.phoneNumber); const i = bn(t, e, r); return i.customData._tokenResponse = n, i } function zg(t) { return t !== void 0 && t.enterprise !== void 0 } class tS { constructor(e) { if (this.siteKey = "", this.recaptchaEnforcementState = [], e.recaptchaKey === void 0) throw new Error("recaptchaKey undefined"); this.siteKey = e.recaptchaKey.split("/")[3], this.recaptchaEnforcementState = e.recaptchaEnforcementState } getProviderEnforcementState(e) { if (!this.recaptchaEnforcementState || this.recaptchaEnforcementState.length === 0) return null; for (const n of this.recaptchaEnforcementState) if (n.provider && n.provider === e) return Z1(n.enforcementState); return null } isProviderEnabled(e) { return this.getProviderEnforcementState(e) === "ENFORCE" || this.getProviderEnforcementState(e) === "AUDIT" } } async function nS(t, e) { return ni(t, "GET", "/v2/recaptchaConfig", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function rS(t, e) { return ni(t, "POST", "/v1/accounts:delete", e) } async function w_(t, e) { return ni(t, "POST", "/v1/accounts:lookup", e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Jo(t) { if (t) try { const e = new Date(Number(t)); if (!isNaN(e.getTime())) return e.toUTCString() } catch { } } async function iS(t, e = !1) { const n = qe(t), r = await n.getIdToken(e), i = lp(r); se(i && i.exp && i.auth_time && i.iat, n.auth, "internal-error"); const s = typeof i.firebase == "object" ? i.firebase : void 0, o = s == null ? void 0 : s.sign_in_provider; return { claims: i, token: r, authTime: Jo(Md(i.auth_time)), issuedAtTime: Jo(Md(i.iat)), expirationTime: Jo(Md(i.exp)), signInProvider: o || null, signInSecondFactor: (s == null ? void 0 : s.sign_in_second_factor) || null } } function Md(t) { return Number(t) * 1e3 } function lp(t) { const [e, n, r] = t.split("."); if (e === void 0 || n === void 0 || r === void 0) return au("JWT malformed, contained fewer than 3 sections"), null; try { const i = i_(n); return i ? JSON.parse(i) : (au("Failed to decode base64 JWT payload"), null) } catch (i) { return au("Caught error parsing JWT payload as JSON", i == null ? void 0 : i.toString()), null } } function Bg(t) { const e = lp(t); return se(e, "internal-error"), se(typeof e.exp < "u", "internal-error"), se(typeof e.iat < "u", "internal-error"), Number(e.exp) - Number(e.iat) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function Ea(t, e, n = !1) { if (n) return e; try { return await e } catch (r) { throw r instanceof lr && sS(r) && t.auth.currentUser === t && await t.auth.signOut(), r } } function sS({ code: t }) { return t === "auth/user-disabled" || t === "auth/user-token-expired" }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class oS { constructor(e) { this.user = e, this.isRunning = !1, this.timerId = null, this.errorBackoff = 3e4 } _start() { this.isRunning || (this.isRunning = !0, this.schedule()) } _stop() { this.isRunning && (this.isRunning = !1, this.timerId !== null && clearTimeout(this.timerId)) } getInterval(e) { var n; if (e) { const r = this.errorBackoff; return this.errorBackoff = Math.min(this.errorBackoff * 2, 96e4), r } else { this.errorBackoff = 3e4; const i = ((n = this.user.stsTokenManager.expirationTime) !== null && n !== void 0 ? n : 0) - Date.now() - 3e5; return Math.max(0, i) } } schedule(e = !1) { if (!this.isRunning) return; const n = this.getInterval(e); this.timerId = setTimeout(async () => { await this.iteration() }, n) } async iteration() { try { await this.user.getIdToken(!0) } catch (e) { (e == null ? void 0 : e.code) === "auth/network-request-failed" && this.schedule(!0); return } this.schedule() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Bh { constructor(e, n) { this.createdAt = e, this.lastLoginAt = n, this._initializeTime() } _initializeTime() { this.lastSignInTime = Jo(this.lastLoginAt), this.creationTime = Jo(this.createdAt) } _copy(e) { this.createdAt = e.createdAt, this.lastLoginAt = e.lastLoginAt, this._initializeTime() } toJSON() { return { createdAt: this.createdAt, lastLoginAt: this.lastLoginAt } } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function Wu(t) { var e; const n = t.auth, r = await t.getIdToken(), i = await Ea(t, w_(n, { idToken: r })); se(i == null ? void 0 : i.users.length, n, "internal-error"); const s = i.users[0]; t._notifyReloadListener(s); const o = !((e = s.providerUserInfo) === null || e === void 0) && e.length ? E_(s.providerUserInfo) : [], l = lS(t.providerData, o), u = t.isAnonymous, h = !(t.email && s.passwordHash) && !(l != null && l.length), p = u ? h : !1, v = { uid: s.localId, displayName: s.displayName || null, photoURL: s.photoUrl || null, email: s.email || null, emailVerified: s.emailVerified || !1, phoneNumber: s.phoneNumber || null, tenantId: s.tenantId || null, providerData: l, metadata: new Bh(s.createdAt, s.lastLoginAt), isAnonymous: p }; Object.assign(t, v) } async function aS(t) { const e = qe(t); await Wu(e), await e.auth._persistUserIfCurrent(e), e.auth._notifyListenersIfCurrent(e) } function lS(t, e) { return [...t.filter(r => !e.some(i => i.providerId === r.providerId)), ...e] } function E_(t) { return t.map(e => { var { providerId: n } = e, r = sp(e, ["providerId"]); return { providerId: n, uid: r.rawId || "", displayName: r.displayName || null, email: r.email || null, phoneNumber: r.phoneNumber || null, photoURL: r.photoUrl || null } }) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function uS(t, e) { const n = await v_(t, {}, async () => { const r = Ma({ grant_type: "refresh_token", refresh_token: e }).slice(1), { tokenApiHost: i, apiKey: s } = t.config, o = __(t, i, "/v1/token", `key=${s}`), l = await t._getAdditionalHeaders(); return l["Content-Type"] = "application/x-www-form-urlencoded", y_.fetch()(o, { method: "POST", headers: l, body: r }) }); return { accessToken: n.access_token, expiresIn: n.expires_in, refreshToken: n.refresh_token } } async function cS(t, e) { return ni(t, "POST", "/v2/accounts:revokeToken", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class As { constructor() { this.refreshToken = null, this.accessToken = null, this.expirationTime = null } get isExpired() { return !this.expirationTime || Date.now() > this.expirationTime - 3e4 } updateFromServerResponse(e) { se(e.idToken, "internal-error"), se(typeof e.idToken < "u", "internal-error"), se(typeof e.refreshToken < "u", "internal-error"); const n = "expiresIn" in e && typeof e.expiresIn < "u" ? Number(e.expiresIn) : Bg(e.idToken); this.updateTokensAndExpiration(e.idToken, e.refreshToken, n) } updateFromIdToken(e) { se(e.length !== 0, "internal-error"); const n = Bg(e); this.updateTokensAndExpiration(e, null, n) } async getToken(e, n = !1) { return !n && this.accessToken && !this.isExpired ? this.accessToken : (se(this.refreshToken, e, "user-token-expired"), this.refreshToken ? (await this.refresh(e, this.refreshToken), this.accessToken) : null) } clearRefreshToken() { this.refreshToken = null } async refresh(e, n) { const { accessToken: r, refreshToken: i, expiresIn: s } = await uS(e, n); this.updateTokensAndExpiration(r, i, Number(s)) } updateTokensAndExpiration(e, n, r) { this.refreshToken = n || null, this.accessToken = e || null, this.expirationTime = Date.now() + r * 1e3 } static fromJSON(e, n) { const { refreshToken: r, accessToken: i, expirationTime: s } = n, o = new As; return r && (se(typeof r == "string", "internal-error", { appName: e }), o.refreshToken = r), i && (se(typeof i == "string", "internal-error", { appName: e }), o.accessToken = i), s && (se(typeof s == "number", "internal-error", { appName: e }), o.expirationTime = s), o } toJSON() { return { refreshToken: this.refreshToken, accessToken: this.accessToken, expirationTime: this.expirationTime } } _assign(e) { this.accessToken = e.accessToken, this.refreshToken = e.refreshToken, this.expirationTime = e.expirationTime } _clone() { return Object.assign(new As, this.toJSON()) } _performRefresh() { return Kn("not implemented") } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function xr(t, e) { se(typeof t == "string" || typeof t > "u", "internal-error", { appName: e }) } class Gn { constructor(e) { var { uid: n, auth: r, stsTokenManager: i } = e, s = sp(e, ["uid", "auth", "stsTokenManager"]); this.providerId = "firebase", this.proactiveRefresh = new oS(this), this.reloadUserInfo = null, this.reloadListener = null, this.uid = n, this.auth = r, this.stsTokenManager = i, this.accessToken = i.accessToken, this.displayName = s.displayName || null, this.email = s.email || null, this.emailVerified = s.emailVerified || !1, this.phoneNumber = s.phoneNumber || null, this.photoURL = s.photoURL || null, this.isAnonymous = s.isAnonymous || !1, this.tenantId = s.tenantId || null, this.providerData = s.providerData ? [...s.providerData] : [], this.metadata = new Bh(s.createdAt || void 0, s.lastLoginAt || void 0) } async getIdToken(e) { const n = await Ea(this, this.stsTokenManager.getToken(this.auth, e)); return se(n, this.auth, "internal-error"), this.accessToken !== n && (this.accessToken = n, await this.auth._persistUserIfCurrent(this), this.auth._notifyListenersIfCurrent(this)), n } getIdTokenResult(e) { return iS(this, e) } reload() { return aS(this) } _assign(e) { this !== e && (se(this.uid === e.uid, this.auth, "internal-error"), this.displayName = e.displayName, this.photoURL = e.photoURL, this.email = e.email, this.emailVerified = e.emailVerified, this.phoneNumber = e.phoneNumber, this.isAnonymous = e.isAnonymous, this.tenantId = e.tenantId, this.providerData = e.providerData.map(n => Object.assign({}, n)), this.metadata._copy(e.metadata), this.stsTokenManager._assign(e.stsTokenManager)) } _clone(e) { const n = new Gn(Object.assign(Object.assign({}, this), { auth: e, stsTokenManager: this.stsTokenManager._clone() })); return n.metadata._copy(this.metadata), n } _onReload(e) { se(!this.reloadListener, this.auth, "internal-error"), this.reloadListener = e, this.reloadUserInfo && (this._notifyReloadListener(this.reloadUserInfo), this.reloadUserInfo = null) } _notifyReloadListener(e) { this.reloadListener ? this.reloadListener(e) : this.reloadUserInfo = e } _startProactiveRefresh() { this.proactiveRefresh._start() } _stopProactiveRefresh() { this.proactiveRefresh._stop() } async _updateTokensIfNecessary(e, n = !1) { let r = !1; e.idToken && e.idToken !== this.stsTokenManager.accessToken && (this.stsTokenManager.updateFromServerResponse(e), r = !0), n && await Wu(this), await this.auth._persistUserIfCurrent(this), r && this.auth._notifyListenersIfCurrent(this) } async delete() { if (Cn(this.auth.app)) return Promise.reject(Xn(this.auth)); const e = await this.getIdToken(); return await Ea(this, rS(this.auth, { idToken: e })), this.stsTokenManager.clearRefreshToken(), this.auth.signOut() } toJSON() { return Object.assign(Object.assign({ uid: this.uid, email: this.email || void 0, emailVerified: this.emailVerified, displayName: this.displayName || void 0, isAnonymous: this.isAnonymous, photoURL: this.photoURL || void 0, phoneNumber: this.phoneNumber || void 0, tenantId: this.tenantId || void 0, providerData: this.providerData.map(e => Object.assign({}, e)), stsTokenManager: this.stsTokenManager.toJSON(), _redirectEventId: this._redirectEventId }, this.metadata.toJSON()), { apiKey: this.auth.config.apiKey, appName: this.auth.name }) } get refreshToken() { return this.stsTokenManager.refreshToken || "" } static _fromJSON(e, n) { var r, i, s, o, l, u, h, p; const v = (r = n.displayName) !== null && r !== void 0 ? r : void 0, m = (i = n.email) !== null && i !== void 0 ? i : void 0, C = (s = n.phoneNumber) !== null && s !== void 0 ? s : void 0, R = (o = n.photoURL) !== null && o !== void 0 ? o : void 0, L = (l = n.tenantId) !== null && l !== void 0 ? l : void 0, V = (u = n._redirectEventId) !== null && u !== void 0 ? u : void 0, S = (h = n.createdAt) !== null && h !== void 0 ? h : void 0, E = (p = n.lastLoginAt) !== null && p !== void 0 ? p : void 0, { uid: I, emailVerified: j, isAnonymous: K, providerData: $, stsTokenManager: x } = n; se(I && x, e, "internal-error"); const _ = As.fromJSON(this.name, x); se(typeof I == "string", e, "internal-error"), xr(v, e.name), xr(m, e.name), se(typeof j == "boolean", e, "internal-error"), se(typeof K == "boolean", e, "internal-error"), xr(C, e.name), xr(R, e.name), xr(L, e.name), xr(V, e.name), xr(S, e.name), xr(E, e.name); const w = new Gn({ uid: I, auth: e, email: m, emailVerified: j, displayName: v, isAnonymous: K, photoURL: R, phoneNumber: C, tenantId: L, stsTokenManager: _, createdAt: S, lastLoginAt: E }); return $ && Array.isArray($) && (w.providerData = $.map(k => Object.assign({}, k))), V && (w._redirectEventId = V), w } static async _fromIdTokenResponse(e, n, r = !1) { const i = new As; i.updateFromServerResponse(n); const s = new Gn({ uid: n.localId, auth: e, stsTokenManager: i, isAnonymous: r }); return await Wu(s), s } static async _fromGetAccountInfoResponse(e, n, r) { const i = n.users[0]; se(i.localId !== void 0, "internal-error"); const s = i.providerUserInfo !== void 0 ? E_(i.providerUserInfo) : [], o = !(i.email && i.passwordHash) && !(s != null && s.length), l = new As; l.updateFromIdToken(r); const u = new Gn({ uid: i.localId, auth: e, stsTokenManager: l, isAnonymous: o }), h = { uid: i.localId, displayName: i.displayName || null, photoURL: i.photoUrl || null, email: i.email || null, emailVerified: i.emailVerified || !1, phoneNumber: i.phoneNumber || null, tenantId: i.tenantId || null, providerData: s, metadata: new Bh(i.createdAt, i.lastLoginAt), isAnonymous: !(i.email && i.passwordHash) && !(s != null && s.length) }; return Object.assign(u, h), u } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const $g = new Map; function Qn(t) { rr(t instanceof Function, "Expected a class definition"); let e = $g.get(t); return e ? (rr(e instanceof t, "Instance stored in cache mismatched with class"), e) : (e = new t, $g.set(t, e), e) }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class x_ { constructor() { this.type = "NONE", this.storage = {} } async _isAvailable() { return !0 } async _set(e, n) { this.storage[e] = n } async _get(e) { const n = this.storage[e]; return n === void 0 ? null : n } async _remove(e) { delete this.storage[e] } _addListener(e, n) { } _removeListener(e, n) { } } x_.type = "NONE"; const Wg = x_;/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function lu(t, e, n) { return `firebase:${t}:${e}:${n}` } class Cs { constructor(e, n, r) { this.persistence = e, this.auth = n, this.userKey = r; const { config: i, name: s } = this.auth; this.fullUserKey = lu(this.userKey, i.apiKey, s), this.fullPersistenceKey = lu("persistence", i.apiKey, s), this.boundEventHandler = n._onStorageEvent.bind(n), this.persistence._addListener(this.fullUserKey, this.boundEventHandler) } setCurrentUser(e) { return this.persistence._set(this.fullUserKey, e.toJSON()) } async getCurrentUser() { const e = await this.persistence._get(this.fullUserKey); return e ? Gn._fromJSON(this.auth, e) : null } removeCurrentUser() { return this.persistence._remove(this.fullUserKey) } savePersistenceForRedirect() { return this.persistence._set(this.fullPersistenceKey, this.persistence.type) } async setPersistence(e) { if (this.persistence === e) return; const n = await this.getCurrentUser(); if (await this.removeCurrentUser(), this.persistence = e, n) return this.setCurrentUser(n) } delete() { this.persistence._removeListener(this.fullUserKey, this.boundEventHandler) } static async create(e, n, r = "authUser") { if (!n.length) return new Cs(Qn(Wg), e, r); const i = (await Promise.all(n.map(async h => { if (await h._isAvailable()) return h }))).filter(h => h); let s = i[0] || Qn(Wg); const o = lu(r, e.config.apiKey, e.name); let l = null; for (const h of n) try { const p = await h._get(o); if (p) { const v = Gn._fromJSON(e, p); h !== s && (l = v), s = h; break } } catch { } const u = i.filter(h => h._shouldAllowMigration); return !s._shouldAllowMigration || !u.length ? new Cs(s, e, r) : (s = u[0], l && await s._set(o, l.toJSON()), await Promise.all(n.map(async h => { if (h !== s) try { await h._remove(o) } catch { } })), new Cs(s, e, r)) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Hg(t) { const e = t.toLowerCase(); if (e.includes("opera/") || e.includes("opr/") || e.includes("opios/")) return "Opera"; if (I_(e)) return "IEMobile"; if (e.includes("msie") || e.includes("trident/")) return "IE"; if (e.includes("edge/")) return "Edge"; if (k_(e)) return "Firefox"; if (e.includes("silk/")) return "Silk"; if (C_(e)) return "Blackberry"; if (N_(e)) return "Webos"; if (T_(e)) return "Safari"; if ((e.includes("chrome/") || S_(e)) && !e.includes("edge/")) return "Chrome"; if (A_(e)) return "Android"; { const n = /([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/, r = t.match(n); if ((r == null ? void 0 : r.length) === 2) return r[1] } return "Other" } function k_(t = xt()) { return /firefox\//i.test(t) } function T_(t = xt()) { const e = t.toLowerCase(); return e.includes("safari/") && !e.includes("chrome/") && !e.includes("crios/") && !e.includes("android") } function S_(t = xt()) { return /crios\//i.test(t) } function I_(t = xt()) { return /iemobile/i.test(t) } function A_(t = xt()) { return /android/i.test(t) } function C_(t = xt()) { return /blackberry/i.test(t) } function N_(t = xt()) { return /webos/i.test(t) } function up(t = xt()) { return /iphone|ipad|ipod/i.test(t) || /macintosh/i.test(t) && /mobile/i.test(t) } function dS(t = xt()) { var e; return up(t) && !!(!((e = window.navigator) === null || e === void 0) && e.standalone) } function hS() { return CT() && document.documentMode === 10 } function P_(t = xt()) { return up(t) || A_(t) || N_(t) || C_(t) || /windows phone/i.test(t) || I_(t) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function b_(t, e = []) { let n; switch (t) { case "Browser": n = Hg(xt()); break; case "Worker": n = `${Hg(xt())}-${t}`; break; default: n = t }const r = e.length ? e.join(",") : "FirebaseCore-web"; return `${n}/JsCore/${Qs}/${r}` }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class fS { constructor(e) { this.auth = e, this.queue = [] } pushCallback(e, n) { const r = s => new Promise((o, l) => { try { const u = e(s); o(u) } catch (u) { l(u) } }); r.onAbort = n, this.queue.push(r); const i = this.queue.length - 1; return () => { this.queue[i] = () => Promise.resolve() } } async runMiddleware(e) { if (this.auth.currentUser === e) return; const n = []; try { for (const r of this.queue) await r(e), r.onAbort && n.push(r.onAbort) } catch (r) { n.reverse(); for (const i of n) try { i() } catch { } throw this.auth._errorFactory.create("login-blocked", { originalMessage: r == null ? void 0 : r.message }) } } }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function pS(t, e = {}) { return ni(t, "GET", "/v2/passwordPolicy", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const mS = 6; class gS { constructor(e) { var n, r, i, s; const o = e.customStrengthOptions; this.customStrengthOptions = {}, this.customStrengthOptions.minPasswordLength = (n = o.minPasswordLength) !== null && n !== void 0 ? n : mS, o.maxPasswordLength && (this.customStrengthOptions.maxPasswordLength = o.maxPasswordLength), o.containsLowercaseCharacter !== void 0 && (this.customStrengthOptions.containsLowercaseLetter = o.containsLowercaseCharacter), o.containsUppercaseCharacter !== void 0 && (this.customStrengthOptions.containsUppercaseLetter = o.containsUppercaseCharacter), o.containsNumericCharacter !== void 0 && (this.customStrengthOptions.containsNumericCharacter = o.containsNumericCharacter), o.containsNonAlphanumericCharacter !== void 0 && (this.customStrengthOptions.containsNonAlphanumericCharacter = o.containsNonAlphanumericCharacter), this.enforcementState = e.enforcementState, this.enforcementState === "ENFORCEMENT_STATE_UNSPECIFIED" && (this.enforcementState = "OFF"), this.allowedNonAlphanumericCharacters = (i = (r = e.allowedNonAlphanumericCharacters) === null || r === void 0 ? void 0 : r.join("")) !== null && i !== void 0 ? i : "", this.forceUpgradeOnSignin = (s = e.forceUpgradeOnSignin) !== null && s !== void 0 ? s : !1, this.schemaVersion = e.schemaVersion } validatePassword(e) { var n, r, i, s, o, l; const u = { isValid: !0, passwordPolicy: this }; return this.validatePasswordLengthOptions(e, u), this.validatePasswordCharacterOptions(e, u), u.isValid && (u.isValid = (n = u.meetsMinPasswordLength) !== null && n !== void 0 ? n : !0), u.isValid && (u.isValid = (r = u.meetsMaxPasswordLength) !== null && r !== void 0 ? r : !0), u.isValid && (u.isValid = (i = u.containsLowercaseLetter) !== null && i !== void 0 ? i : !0), u.isValid && (u.isValid = (s = u.containsUppercaseLetter) !== null && s !== void 0 ? s : !0), u.isValid && (u.isValid = (o = u.containsNumericCharacter) !== null && o !== void 0 ? o : !0), u.isValid && (u.isValid = (l = u.containsNonAlphanumericCharacter) !== null && l !== void 0 ? l : !0), u } validatePasswordLengthOptions(e, n) { const r = this.customStrengthOptions.minPasswordLength, i = this.customStrengthOptions.maxPasswordLength; r && (n.meetsMinPasswordLength = e.length >= r), i && (n.meetsMaxPasswordLength = e.length <= i) } validatePasswordCharacterOptions(e, n) { this.updatePasswordCharacterOptionsStatuses(n, !1, !1, !1, !1); let r; for (let i = 0; i < e.length; i++)r = e.charAt(i), this.updatePasswordCharacterOptionsStatuses(n, r >= "a" && r <= "z", r >= "A" && r <= "Z", r >= "0" && r <= "9", this.allowedNonAlphanumericCharacters.includes(r)) } updatePasswordCharacterOptionsStatuses(e, n, r, i, s) { this.customStrengthOptions.containsLowercaseLetter && (e.containsLowercaseLetter || (e.containsLowercaseLetter = n)), this.customStrengthOptions.containsUppercaseLetter && (e.containsUppercaseLetter || (e.containsUppercaseLetter = r)), this.customStrengthOptions.containsNumericCharacter && (e.containsNumericCharacter || (e.containsNumericCharacter = i)), this.customStrengthOptions.containsNonAlphanumericCharacter && (e.containsNonAlphanumericCharacter || (e.containsNonAlphanumericCharacter = s)) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class yS { constructor(e, n, r, i) { this.app = e, this.heartbeatServiceProvider = n, this.appCheckServiceProvider = r, this.config = i, this.currentUser = null, this.emulatorConfig = null, this.operations = Promise.resolve(), this.authStateSubscription = new qg(this), this.idTokenSubscription = new qg(this), this.beforeStateQueue = new fS(this), this.redirectUser = null, this.isProactiveRefreshEnabled = !1, this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION = 1, this._canInitEmulator = !0, this._isInitialized = !1, this._deleted = !1, this._initializationPromise = null, this._popupRedirectResolver = null, this._errorFactory = m_, this._agentRecaptchaConfig = null, this._tenantRecaptchaConfigs = {}, this._projectPasswordPolicy = null, this._tenantPasswordPolicies = {}, this.lastNotifiedUid = void 0, this.languageCode = null, this.tenantId = null, this.settings = { appVerificationDisabledForTesting: !1 }, this.frameworks = [], this.name = e.name, this.clientVersion = i.sdkClientVersion } _initializeWithPersistence(e, n) { return n && (this._popupRedirectResolver = Qn(n)), this._initializationPromise = this.queue(async () => { var r, i; if (!this._deleted && (this.persistenceManager = await Cs.create(this, e), !this._deleted)) { if (!((r = this._popupRedirectResolver) === null || r === void 0) && r._shouldInitProactively) try { await this._popupRedirectResolver._initialize(this) } catch { } await this.initializeCurrentUser(n), this.lastNotifiedUid = ((i = this.currentUser) === null || i === void 0 ? void 0 : i.uid) || null, !this._deleted && (this._isInitialized = !0) } }), this._initializationPromise } async _onStorageEvent() { if (this._deleted) return; const e = await this.assertedPersistence.getCurrentUser(); if (!(!this.currentUser && !e)) { if (this.currentUser && e && this.currentUser.uid === e.uid) { this._currentUser._assign(e), await this.currentUser.getIdToken(); return } await this._updateCurrentUser(e, !0) } } async initializeCurrentUserFromIdToken(e) { try { const n = await w_(this, { idToken: e }), r = await Gn._fromGetAccountInfoResponse(this, n, e); await this.directlySetCurrentUser(r) } catch (n) { console.warn("FirebaseServerApp could not login user with provided authIdToken: ", n), await this.directlySetCurrentUser(null) } } async initializeCurrentUser(e) { var n; if (Cn(this.app)) { const o = this.app.settings.authIdToken; return o ? new Promise(l => { setTimeout(() => this.initializeCurrentUserFromIdToken(o).then(l, l)) }) : this.directlySetCurrentUser(null) } const r = await this.assertedPersistence.getCurrentUser(); let i = r, s = !1; if (e && this.config.authDomain) { await this.getOrInitRedirectPersistenceManager(); const o = (n = this.redirectUser) === null || n === void 0 ? void 0 : n._redirectEventId, l = i == null ? void 0 : i._redirectEventId, u = await this.tryRedirectSignIn(e); (!o || o === l) && (u != null && u.user) && (i = u.user, s = !0) } if (!i) return this.directlySetCurrentUser(null); if (!i._redirectEventId) { if (s) try { await this.beforeStateQueue.runMiddleware(i) } catch (o) { i = r, this._popupRedirectResolver._overrideRedirectResult(this, () => Promise.reject(o)) } return i ? this.reloadAndSetCurrentUserOrClear(i) : this.directlySetCurrentUser(null) } return se(this._popupRedirectResolver, this, "argument-error"), await this.getOrInitRedirectPersistenceManager(), this.redirectUser && this.redirectUser._redirectEventId === i._redirectEventId ? this.directlySetCurrentUser(i) : this.reloadAndSetCurrentUserOrClear(i) } async tryRedirectSignIn(e) { let n = null; try { n = await this._popupRedirectResolver._completeRedirectFn(this, e, !0) } catch { await this._setRedirectUser(null) } return n } async reloadAndSetCurrentUserOrClear(e) { try { await Wu(e) } catch (n) { if ((n == null ? void 0 : n.code) !== "auth/network-request-failed") return this.directlySetCurrentUser(null) } return this.directlySetCurrentUser(e) } useDeviceLanguage() { this.languageCode = Y1() } async _delete() { this._deleted = !0 } async updateCurrentUser(e) { if (Cn(this.app)) return Promise.reject(Xn(this)); const n = e ? qe(e) : null; return n && se(n.auth.config.apiKey === this.config.apiKey, this, "invalid-user-token"), this._updateCurrentUser(n && n._clone(this)) } async _updateCurrentUser(e, n = !1) { if (!this._deleted) return e && se(this.tenantId === e.tenantId, this, "tenant-id-mismatch"), n || await this.beforeStateQueue.runMiddleware(e), this.queue(async () => { await this.directlySetCurrentUser(e), this.notifyAuthListeners() }) } async signOut() { return Cn(this.app) ? Promise.reject(Xn(this)) : (await this.beforeStateQueue.runMiddleware(null), (this.redirectPersistenceManager || this._popupRedirectResolver) && await this._setRedirectUser(null), this._updateCurrentUser(null, !0)) } setPersistence(e) { return Cn(this.app) ? Promise.reject(Xn(this)) : this.queue(async () => { await this.assertedPersistence.setPersistence(Qn(e)) }) } _getRecaptchaConfig() { return this.tenantId == null ? this._agentRecaptchaConfig : this._tenantRecaptchaConfigs[this.tenantId] } async validatePassword(e) { this._getPasswordPolicyInternal() || await this._updatePasswordPolicy(); const n = this._getPasswordPolicyInternal(); return n.schemaVersion !== this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION ? Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version", {})) : n.validatePassword(e) } _getPasswordPolicyInternal() { return this.tenantId === null ? this._projectPasswordPolicy : this._tenantPasswordPolicies[this.tenantId] } async _updatePasswordPolicy() { const e = await pS(this), n = new gS(e); this.tenantId === null ? this._projectPasswordPolicy = n : this._tenantPasswordPolicies[this.tenantId] = n } _getPersistence() { return this.assertedPersistence.persistence.type } _updateErrorMap(e) { this._errorFactory = new La("auth", "Firebase", e()) } onAuthStateChanged(e, n, r) { return this.registerStateListener(this.authStateSubscription, e, n, r) } beforeAuthStateChanged(e, n) { return this.beforeStateQueue.pushCallback(e, n) } onIdTokenChanged(e, n, r) { return this.registerStateListener(this.idTokenSubscription, e, n, r) } authStateReady() { return new Promise((e, n) => { if (this.currentUser) e(); else { const r = this.onAuthStateChanged(() => { r(), e() }, n) } }) } async revokeAccessToken(e) { if (this.currentUser) { const n = await this.currentUser.getIdToken(), r = { providerId: "apple.com", tokenType: "ACCESS_TOKEN", token: e, idToken: n }; this.tenantId != null && (r.tenantId = this.tenantId), await cS(this, r) } } toJSON() { var e; return { apiKey: this.config.apiKey, authDomain: this.config.authDomain, appName: this.name, currentUser: (e = this._currentUser) === null || e === void 0 ? void 0 : e.toJSON() } } async _setRedirectUser(e, n) { const r = await this.getOrInitRedirectPersistenceManager(n); return e === null ? r.removeCurrentUser() : r.setCurrentUser(e) } async getOrInitRedirectPersistenceManager(e) { if (!this.redirectPersistenceManager) { const n = e && Qn(e) || this._popupRedirectResolver; se(n, this, "argument-error"), this.redirectPersistenceManager = await Cs.create(this, [Qn(n._redirectPersistence)], "redirectUser"), this.redirectUser = await this.redirectPersistenceManager.getCurrentUser() } return this.redirectPersistenceManager } async _redirectUserForId(e) { var n, r; return this._isInitialized && await this.queue(async () => { }), ((n = this._currentUser) === null || n === void 0 ? void 0 : n._redirectEventId) === e ? this._currentUser : ((r = this.redirectUser) === null || r === void 0 ? void 0 : r._redirectEventId) === e ? this.redirectUser : null } async _persistUserIfCurrent(e) { if (e === this.currentUser) return this.queue(async () => this.directlySetCurrentUser(e)) } _notifyListenersIfCurrent(e) { e === this.currentUser && this.notifyAuthListeners() } _key() { return `${this.config.authDomain}:${this.config.apiKey}:${this.name}` } _startProactiveRefresh() { this.isProactiveRefreshEnabled = !0, this.currentUser && this._currentUser._startProactiveRefresh() } _stopProactiveRefresh() { this.isProactiveRefreshEnabled = !1, this.currentUser && this._currentUser._stopProactiveRefresh() } get _currentUser() { return this.currentUser } notifyAuthListeners() { var e, n; if (!this._isInitialized) return; this.idTokenSubscription.next(this.currentUser); const r = (n = (e = this.currentUser) === null || e === void 0 ? void 0 : e.uid) !== null && n !== void 0 ? n : null; this.lastNotifiedUid !== r && (this.lastNotifiedUid = r, this.authStateSubscription.next(this.currentUser)) } registerStateListener(e, n, r, i) { if (this._deleted) return () => { }; const s = typeof n == "function" ? n : n.next.bind(n); let o = !1; const l = this._isInitialized ? Promise.resolve() : this._initializationPromise; if (se(l, this, "internal-error"), l.then(() => { o || s(this.currentUser) }), typeof n == "function") { const u = e.addObserver(n, r, i); return () => { o = !0, u() } } else { const u = e.addObserver(n); return () => { o = !0, u() } } } async directlySetCurrentUser(e) { this.currentUser && this.currentUser !== e && this._currentUser._stopProactiveRefresh(), e && this.isProactiveRefreshEnabled && e._startProactiveRefresh(), this.currentUser = e, e ? await this.assertedPersistence.setCurrentUser(e) : await this.assertedPersistence.removeCurrentUser() } queue(e) { return this.operations = this.operations.then(e, e), this.operations } get assertedPersistence() { return se(this.persistenceManager, this, "internal-error"), this.persistenceManager } _logFramework(e) { !e || this.frameworks.includes(e) || (this.frameworks.push(e), this.frameworks.sort(), this.clientVersion = b_(this.config.clientPlatform, this._getFrameworks())) } _getFrameworks() { return this.frameworks } async _getAdditionalHeaders() { var e; const n = { "X-Client-Version": this.clientVersion }; this.app.options.appId && (n["X-Firebase-gmpid"] = this.app.options.appId); const r = await ((e = this.heartbeatServiceProvider.getImmediate({ optional: !0 })) === null || e === void 0 ? void 0 : e.getHeartbeatsHeader()); r && (n["X-Firebase-Client"] = r); const i = await this._getAppCheckToken(); return i && (n["X-Firebase-AppCheck"] = i), n } async _getAppCheckToken() { var e; const n = await ((e = this.appCheckServiceProvider.getImmediate({ optional: !0 })) === null || e === void 0 ? void 0 : e.getToken()); return n != null && n.error && K1(`Error while retrieving App Check token: ${n.error}`), n == null ? void 0 : n.token } } function zi(t) { return qe(t) } class qg { constructor(e) { this.auth = e, this.observer = null, this.addObserver = jT(n => this.observer = n) } get next() { return se(this.observer, this.auth, "internal-error"), this.observer.next.bind(this.observer) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/let wc = { async loadJS() { throw new Error("Unable to load external scripts") }, recaptchaV2Script: "", recaptchaEnterpriseScript: "", gapiScript: "" }; function vS(t) { wc = t } function R_(t) { return wc.loadJS(t) } function _S() { return wc.recaptchaEnterpriseScript } function wS() { return wc.gapiScript } function ES(t) { return `__${t}${Math.floor(Math.random() * 1e6)}` } const xS = "recaptcha-enterprise", kS = "NO_RECAPTCHA"; class TS { constructor(e) { this.type = xS, this.auth = zi(e) } async verify(e = "verify", n = !1) { async function r(s) { if (!n) { if (s.tenantId == null && s._agentRecaptchaConfig != null) return s._agentRecaptchaConfig.siteKey; if (s.tenantId != null && s._tenantRecaptchaConfigs[s.tenantId] !== void 0) return s._tenantRecaptchaConfigs[s.tenantId].siteKey } return new Promise(async (o, l) => { nS(s, { clientType: "CLIENT_TYPE_WEB", version: "RECAPTCHA_ENTERPRISE" }).then(u => { if (u.recaptchaKey === void 0) l(new Error("recaptcha Enterprise site key undefined")); else { const h = new tS(u); return s.tenantId == null ? s._agentRecaptchaConfig = h : s._tenantRecaptchaConfigs[s.tenantId] = h, o(h.siteKey) } }).catch(u => { l(u) }) }) } function i(s, o, l) { const u = window.grecaptcha; zg(u) ? u.enterprise.ready(() => { u.enterprise.execute(s, { action: e }).then(h => { o(h) }).catch(() => { o(kS) }) }) : l(Error("No reCAPTCHA enterprise script loaded.")) } return new Promise((s, o) => { r(this.auth).then(l => { if (!n && zg(window.grecaptcha)) i(l, s, o); else { if (typeof window > "u") { o(new Error("RecaptchaVerifier is only supported in browser")); return } let u = _S(); u.length !== 0 && (u += l), R_(u).then(() => { i(l, s, o) }).catch(h => { o(h) }) } }).catch(l => { o(l) }) }) } } async function Kg(t, e, n, r = !1) { const i = new TS(t); let s; try { s = await i.verify(n) } catch { s = await i.verify(n, !0) } const o = Object.assign({}, e); return r ? Object.assign(o, { captchaResp: s }) : Object.assign(o, { captchaResponse: s }), Object.assign(o, { clientType: "CLIENT_TYPE_WEB" }), Object.assign(o, { recaptchaVersion: "RECAPTCHA_ENTERPRISE" }), o } async function $h(t, e, n, r) { var i; if (!((i = t._getRecaptchaConfig()) === null || i === void 0) && i.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")) { const s = await Kg(t, e, n, n === "getOobCode"); return r(t, s) } else return r(t, e).catch(async s => { if (s.code === "auth/missing-recaptcha-token") { console.log(`${n} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`); const o = await Kg(t, e, n, n === "getOobCode"); return r(t, o) } else return Promise.reject(s) }) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function SS(t, e) { const n = ip(t, "auth"); if (n.isInitialized()) { const i = n.getImmediate(), s = n.getOptions(); if (zu(s, e ?? {})) return i; En(i, "already-initialized") } return n.initialize({ options: e }) } function IS(t, e) { const n = (e == null ? void 0 : e.persistence) || [], r = (Array.isArray(n) ? n : [n]).map(Qn); e != null && e.errorMap && t._updateErrorMap(e.errorMap), t._initializeWithPersistence(r, e == null ? void 0 : e.popupRedirectResolver) } function AS(t, e, n) { const r = zi(t); se(r._canInitEmulator, r, "emulator-config-failed"), se(/^https?:\/\//.test(e), r, "invalid-emulator-scheme"); const i = !1, s = D_(e), { host: o, port: l } = CS(e), u = l === null ? "" : `:${l}`; r.config.emulator = { url: `${s}//${o}${u}/` }, r.settings.appVerificationDisabledForTesting = !0, r.emulatorConfig = Object.freeze({ host: o, port: l, protocol: s.replace(":", ""), options: Object.freeze({ disableWarnings: i }) }), NS() } function D_(t) { const e = t.indexOf(":"); return e < 0 ? "" : t.substr(0, e + 1) } function CS(t) { const e = D_(t), n = /(\/\/)?([^?#/]+)/.exec(t.substr(e.length)); if (!n) return { host: "", port: null }; const r = n[2].split("@").pop() || "", i = /^(\[[^\]]+\])(:|$)/.exec(r); if (i) { const s = i[1]; return { host: s, port: Gg(r.substr(s.length + 1)) } } else { const [s, o] = r.split(":"); return { host: s, port: Gg(o) } } } function Gg(t) { if (!t) return null; const e = Number(t); return isNaN(e) ? null : e } function NS() { function t() { const e = document.createElement("p"), n = e.style; e.innerText = "Running in emulator mode. Do not use with production credentials.", n.position = "fixed", n.width = "100%", n.backgroundColor = "#ffffff", n.border = ".1em solid #000000", n.color = "#b50000", n.bottom = "0px", n.left = "0px", n.margin = "0px", n.zIndex = "10000", n.textAlign = "center", e.classList.add("firebase-emulator-warning"), document.body.appendChild(e) } typeof console < "u" && typeof console.info == "function" && console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."), typeof window < "u" && typeof document < "u" && (document.readyState === "loading" ? window.addEventListener("DOMContentLoaded", t) : t()) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class cp { constructor(e, n) { this.providerId = e, this.signInMethod = n } toJSON() { return Kn("not implemented") } _getIdTokenResponse(e) { return Kn("not implemented") } _linkToIdToken(e, n) { return Kn("not implemented") } _getReauthenticationResolver(e) { return Kn("not implemented") } } async function PS(t, e) { return ni(t, "POST", "/v1/accounts:signUp", e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function bS(t, e) { return Va(t, "POST", "/v1/accounts:signInWithPassword", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function RS(t, e) { return Va(t, "POST", "/v1/accounts:signInWithEmailLink", ti(t, e)) } async function DS(t, e) { return Va(t, "POST", "/v1/accounts:signInWithEmailLink", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class xa extends cp { constructor(e, n, r, i = null) { super("password", r), this._email = e, this._password = n, this._tenantId = i } static _fromEmailAndPassword(e, n) { return new xa(e, n, "password") } static _fromEmailAndCode(e, n, r = null) { return new xa(e, n, "emailLink", r) } toJSON() { return { email: this._email, password: this._password, signInMethod: this.signInMethod, tenantId: this._tenantId } } static fromJSON(e) { const n = typeof e == "string" ? JSON.parse(e) : e; if (n != null && n.email && (n != null && n.password)) { if (n.signInMethod === "password") return this._fromEmailAndPassword(n.email, n.password); if (n.signInMethod === "emailLink") return this._fromEmailAndCode(n.email, n.password, n.tenantId) } return null } async _getIdTokenResponse(e) { switch (this.signInMethod) { case "password": const n = { returnSecureToken: !0, email: this._email, password: this._password, clientType: "CLIENT_TYPE_WEB" }; return $h(e, n, "signInWithPassword", bS); case "emailLink": return RS(e, { email: this._email, oobCode: this._password }); default: En(e, "internal-error") } } async _linkToIdToken(e, n) { switch (this.signInMethod) { case "password": const r = { idToken: n, returnSecureToken: !0, email: this._email, password: this._password, clientType: "CLIENT_TYPE_WEB" }; return $h(e, r, "signUpPassword", PS); case "emailLink": return DS(e, { idToken: n, email: this._email, oobCode: this._password }); default: En(e, "internal-error") } } _getReauthenticationResolver(e) { return this._getIdTokenResponse(e) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function Ns(t, e) { return Va(t, "POST", "/v1/accounts:signInWithIdp", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const LS = "http://localhost"; class Li extends cp { constructor() { super(...arguments), this.pendingToken = null } static _fromParams(e) { const n = new Li(e.providerId, e.signInMethod); return e.idToken || e.accessToken ? (e.idToken && (n.idToken = e.idToken), e.accessToken && (n.accessToken = e.accessToken), e.nonce && !e.pendingToken && (n.nonce = e.nonce), e.pendingToken && (n.pendingToken = e.pendingToken)) : e.oauthToken && e.oauthTokenSecret ? (n.accessToken = e.oauthToken, n.secret = e.oauthTokenSecret) : En("argument-error"), n } toJSON() { return { idToken: this.idToken, accessToken: this.accessToken, secret: this.secret, nonce: this.nonce, pendingToken: this.pendingToken, providerId: this.providerId, signInMethod: this.signInMethod } } static fromJSON(e) { const n = typeof e == "string" ? JSON.parse(e) : e, { providerId: r, signInMethod: i } = n, s = sp(n, ["providerId", "signInMethod"]); if (!r || !i) return null; const o = new Li(r, i); return o.idToken = s.idToken || void 0, o.accessToken = s.accessToken || void 0, o.secret = s.secret, o.nonce = s.nonce, o.pendingToken = s.pendingToken || null, o } _getIdTokenResponse(e) { const n = this.buildRequest(); return Ns(e, n) } _linkToIdToken(e, n) { const r = this.buildRequest(); return r.idToken = n, Ns(e, r) } _getReauthenticationResolver(e) { const n = this.buildRequest(); return n.autoCreate = !1, Ns(e, n) } buildRequest() { const e = { requestUri: LS, returnSecureToken: !0 }; if (this.pendingToken) e.pendingToken = this.pendingToken; else { const n = {}; this.idToken && (n.id_token = this.idToken), this.accessToken && (n.access_token = this.accessToken), this.secret && (n.oauth_token_secret = this.secret), n.providerId = this.providerId, this.nonce && !this.pendingToken && (n.nonce = this.nonce), e.postBody = Ma(n) } return e } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function MS(t) { switch (t) { case "recoverEmail": return "RECOVER_EMAIL"; case "resetPassword": return "PASSWORD_RESET"; case "signIn": return "EMAIL_SIGNIN"; case "verifyEmail": return "VERIFY_EMAIL"; case "verifyAndChangeEmail": return "VERIFY_AND_CHANGE_EMAIL"; case "revertSecondFactorAddition": return "REVERT_SECOND_FACTOR_ADDITION"; default: return null } } function jS(t) { const e = Vo(Oo(t)).link, n = e ? Vo(Oo(e)).deep_link_id : null, r = Vo(Oo(t)).deep_link_id; return (r ? Vo(Oo(r)).link : null) || r || n || e || t } class dp { constructor(e) { var n, r, i, s, o, l; const u = Vo(Oo(e)), h = (n = u.apiKey) !== null && n !== void 0 ? n : null, p = (r = u.oobCode) !== null && r !== void 0 ? r : null, v = MS((i = u.mode) !== null && i !== void 0 ? i : null); se(h && p && v, "argument-error"), this.apiKey = h, this.operation = v, this.code = p, this.continueUrl = (s = u.continueUrl) !== null && s !== void 0 ? s : null, this.languageCode = (o = u.languageCode) !== null && o !== void 0 ? o : null, this.tenantId = (l = u.tenantId) !== null && l !== void 0 ? l : null } static parseLink(e) { const n = jS(e); try { return new dp(n) } catch { return null } } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ys { constructor() { this.providerId = Ys.PROVIDER_ID } static credential(e, n) { return xa._fromEmailAndPassword(e, n) } static credentialWithLink(e, n) { const r = dp.parseLink(n); return se(r, "argument-error"), xa._fromEmailAndCode(e, r.code, r.tenantId) } } Ys.PROVIDER_ID = "password"; Ys.EMAIL_PASSWORD_SIGN_IN_METHOD = "password"; Ys.EMAIL_LINK_SIGN_IN_METHOD = "emailLink";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class L_ { constructor(e) { this.providerId = e, this.defaultLanguageCode = null, this.customParameters = {} } setDefaultLanguage(e) { this.defaultLanguageCode = e } setCustomParameters(e) { return this.customParameters = e, this } getCustomParameters() { return this.customParameters } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Oa extends L_ { constructor() { super(...arguments), this.scopes = [] } addScope(e) { return this.scopes.includes(e) || this.scopes.push(e), this } getScopes() { return [...this.scopes] } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ar extends Oa { constructor() { super("facebook.com") } static credential(e) { return Li._fromParams({ providerId: Ar.PROVIDER_ID, signInMethod: Ar.FACEBOOK_SIGN_IN_METHOD, accessToken: e }) } static credentialFromResult(e) { return Ar.credentialFromTaggedObject(e) } static credentialFromError(e) { return Ar.credentialFromTaggedObject(e.customData || {}) } static credentialFromTaggedObject({ _tokenResponse: e }) { if (!e || !("oauthAccessToken" in e) || !e.oauthAccessToken) return null; try { return Ar.credential(e.oauthAccessToken) } catch { return null } } } Ar.FACEBOOK_SIGN_IN_METHOD = "facebook.com"; Ar.PROVIDER_ID = "facebook.com";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Cr extends Oa { constructor() { super("google.com"), this.addScope("profile") } static credential(e, n) { return Li._fromParams({ providerId: Cr.PROVIDER_ID, signInMethod: Cr.GOOGLE_SIGN_IN_METHOD, idToken: e, accessToken: n }) } static credentialFromResult(e) { return Cr.credentialFromTaggedObject(e) } static credentialFromError(e) { return Cr.credentialFromTaggedObject(e.customData || {}) } static credentialFromTaggedObject({ _tokenResponse: e }) { if (!e) return null; const { oauthIdToken: n, oauthAccessToken: r } = e; if (!n && !r) return null; try { return Cr.credential(n, r) } catch { return null } } } Cr.GOOGLE_SIGN_IN_METHOD = "google.com"; Cr.PROVIDER_ID = "google.com";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Nr extends Oa { constructor() { super("github.com") } static credential(e) { return Li._fromParams({ providerId: Nr.PROVIDER_ID, signInMethod: Nr.GITHUB_SIGN_IN_METHOD, accessToken: e }) } static credentialFromResult(e) { return Nr.credentialFromTaggedObject(e) } static credentialFromError(e) { return Nr.credentialFromTaggedObject(e.customData || {}) } static credentialFromTaggedObject({ _tokenResponse: e }) { if (!e || !("oauthAccessToken" in e) || !e.oauthAccessToken) return null; try { return Nr.credential(e.oauthAccessToken) } catch { return null } } } Nr.GITHUB_SIGN_IN_METHOD = "github.com"; Nr.PROVIDER_ID = "github.com";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Pr extends Oa { constructor() { super("twitter.com") } static credential(e, n) { return Li._fromParams({ providerId: Pr.PROVIDER_ID, signInMethod: Pr.TWITTER_SIGN_IN_METHOD, oauthToken: e, oauthTokenSecret: n }) } static credentialFromResult(e) { return Pr.credentialFromTaggedObject(e) } static credentialFromError(e) { return Pr.credentialFromTaggedObject(e.customData || {}) } static credentialFromTaggedObject({ _tokenResponse: e }) { if (!e) return null; const { oauthAccessToken: n, oauthTokenSecret: r } = e; if (!n || !r) return null; try { return Pr.credential(n, r) } catch { return null } } } Pr.TWITTER_SIGN_IN_METHOD = "twitter.com"; Pr.PROVIDER_ID = "twitter.com";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function VS(t, e) { return Va(t, "POST", "/v1/accounts:signUp", ti(t, e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Mi { constructor(e) { this.user = e.user, this.providerId = e.providerId, this._tokenResponse = e._tokenResponse, this.operationType = e.operationType } static async _fromIdTokenResponse(e, n, r, i = !1) { const s = await Gn._fromIdTokenResponse(e, r, i), o = Qg(r); return new Mi({ user: s, providerId: o, _tokenResponse: r, operationType: n }) } static async _forOperation(e, n, r) { await e._updateTokensIfNecessary(r, !0); const i = Qg(r); return new Mi({ user: e, providerId: i, _tokenResponse: r, operationType: n }) } } function Qg(t) { return t.providerId ? t.providerId : "phoneNumber" in t ? "phone" : null }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Hu extends lr { constructor(e, n, r, i) { var s; super(n.code, n.message), this.operationType = r, this.user = i, Object.setPrototypeOf(this, Hu.prototype), this.customData = { appName: e.name, tenantId: (s = e.tenantId) !== null && s !== void 0 ? s : void 0, _serverResponse: n.customData._serverResponse, operationType: r } } static _fromErrorAndOperation(e, n, r, i) { return new Hu(e, n, r, i) } } function M_(t, e, n, r) { return (e === "reauthenticate" ? n._getReauthenticationResolver(t) : n._getIdTokenResponse(t)).catch(s => { throw s.code === "auth/multi-factor-auth-required" ? Hu._fromErrorAndOperation(t, s, e, r) : s }) } async function OS(t, e, n = !1) { const r = await Ea(t, e._linkToIdToken(t.auth, await t.getIdToken()), n); return Mi._forOperation(t, "link", r) }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function FS(t, e, n = !1) { const { auth: r } = t; if (Cn(r.app)) return Promise.reject(Xn(r)); const i = "reauthenticate"; try { const s = await Ea(t, M_(r, i, e, t), n); se(s.idToken, r, "internal-error"); const o = lp(s.idToken); se(o, r, "internal-error"); const { sub: l } = o; return se(t.uid === l, r, "user-mismatch"), Mi._forOperation(t, i, s) } catch (s) { throw (s == null ? void 0 : s.code) === "auth/user-not-found" && En(r, "user-mismatch"), s } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function j_(t, e, n = !1) { if (Cn(t.app)) return Promise.reject(Xn(t)); const r = "signIn", i = await M_(t, r, e), s = await Mi._fromIdTokenResponse(t, r, i); return n || await t._updateCurrentUser(s.user), s } async function US(t, e) { return j_(zi(t), e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function V_(t) { const e = zi(t); e._getPasswordPolicyInternal() && await e._updatePasswordPolicy() } async function zS(t, e, n) { if (Cn(t.app)) return Promise.reject(Xn(t)); const r = zi(t), o = await $h(r, { returnSecureToken: !0, email: e, password: n, clientType: "CLIENT_TYPE_WEB" }, "signUpPassword", VS).catch(u => { throw u.code === "auth/password-does-not-meet-requirements" && V_(t), u }), l = await Mi._fromIdTokenResponse(r, "signIn", o); return await r._updateCurrentUser(l.user), l } function BS(t, e, n) { return Cn(t.app) ? Promise.reject(Xn(t)) : US(qe(t), Ys.credential(e, n)).catch(async r => { throw r.code === "auth/password-does-not-meet-requirements" && V_(t), r }) } function $S(t, e, n, r) { return qe(t).onIdTokenChanged(e, n, r) } function WS(t, e, n) { return qe(t).beforeAuthStateChanged(e, n) } function HS(t, e, n, r) { return qe(t).onAuthStateChanged(e, n, r) } function qS(t) { return qe(t).signOut() } const qu = "__sak";/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class O_ { constructor(e, n) { this.storageRetriever = e, this.type = n } _isAvailable() { try { return this.storage ? (this.storage.setItem(qu, "1"), this.storage.removeItem(qu), Promise.resolve(!0)) : Promise.resolve(!1) } catch { return Promise.resolve(!1) } } _set(e, n) { return this.storage.setItem(e, JSON.stringify(n)), Promise.resolve() } _get(e) { const n = this.storage.getItem(e); return Promise.resolve(n ? JSON.parse(n) : null) } _remove(e) { return this.storage.removeItem(e), Promise.resolve() } get storage() { return this.storageRetriever() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const KS = 1e3, GS = 10; class F_ extends O_ { constructor() { super(() => window.localStorage, "LOCAL"), this.boundEventHandler = (e, n) => this.onStorageEvent(e, n), this.listeners = {}, this.localCache = {}, this.pollTimer = null, this.fallbackToPolling = P_(), this._shouldAllowMigration = !0 } forAllChangedKeys(e) { for (const n of Object.keys(this.listeners)) { const r = this.storage.getItem(n), i = this.localCache[n]; r !== i && e(n, i, r) } } onStorageEvent(e, n = !1) { if (!e.key) { this.forAllChangedKeys((o, l, u) => { this.notifyListeners(o, u) }); return } const r = e.key; n ? this.detachListener() : this.stopPolling(); const i = () => { const o = this.storage.getItem(r); !n && this.localCache[r] === o || this.notifyListeners(r, o) }, s = this.storage.getItem(r); hS() && s !== e.newValue && e.newValue !== e.oldValue ? setTimeout(i, GS) : i() } notifyListeners(e, n) { this.localCache[e] = n; const r = this.listeners[e]; if (r) for (const i of Array.from(r)) i(n && JSON.parse(n)) } startPolling() { this.stopPolling(), this.pollTimer = setInterval(() => { this.forAllChangedKeys((e, n, r) => { this.onStorageEvent(new StorageEvent("storage", { key: e, oldValue: n, newValue: r }), !0) }) }, KS) } stopPolling() { this.pollTimer && (clearInterval(this.pollTimer), this.pollTimer = null) } attachListener() { window.addEventListener("storage", this.boundEventHandler) } detachListener() { window.removeEventListener("storage", this.boundEventHandler) } _addListener(e, n) { Object.keys(this.listeners).length === 0 && (this.fallbackToPolling ? this.startPolling() : this.attachListener()), this.listeners[e] || (this.listeners[e] = new Set, this.localCache[e] = this.storage.getItem(e)), this.listeners[e].add(n) } _removeListener(e, n) { this.listeners[e] && (this.listeners[e].delete(n), this.listeners[e].size === 0 && delete this.listeners[e]), Object.keys(this.listeners).length === 0 && (this.detachListener(), this.stopPolling()) } async _set(e, n) { await super._set(e, n), this.localCache[e] = JSON.stringify(n) } async _get(e) { const n = await super._get(e); return this.localCache[e] = JSON.stringify(n), n } async _remove(e) { await super._remove(e), delete this.localCache[e] } } F_.type = "LOCAL"; const QS = F_;/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class U_ extends O_ { constructor() { super(() => window.sessionStorage, "SESSION") } _addListener(e, n) { } _removeListener(e, n) { } } U_.type = "SESSION"; const z_ = U_;/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function YS(t) { return Promise.all(t.map(async e => { try { return { fulfilled: !0, value: await e } } catch (n) { return { fulfilled: !1, reason: n } } })) }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ec { constructor(e) { this.eventTarget = e, this.handlersMap = {}, this.boundEventHandler = this.handleEvent.bind(this) } static _getInstance(e) { const n = this.receivers.find(i => i.isListeningto(e)); if (n) return n; const r = new Ec(e); return this.receivers.push(r), r } isListeningto(e) { return this.eventTarget === e } async handleEvent(e) { const n = e, { eventId: r, eventType: i, data: s } = n.data, o = this.handlersMap[i]; if (!(o != null && o.size)) return; n.ports[0].postMessage({ status: "ack", eventId: r, eventType: i }); const l = Array.from(o).map(async h => h(n.origin, s)), u = await YS(l); n.ports[0].postMessage({ status: "done", eventId: r, eventType: i, response: u }) } _subscribe(e, n) { Object.keys(this.handlersMap).length === 0 && this.eventTarget.addEventListener("message", this.boundEventHandler), this.handlersMap[e] || (this.handlersMap[e] = new Set), this.handlersMap[e].add(n) } _unsubscribe(e, n) { this.handlersMap[e] && n && this.handlersMap[e].delete(n), (!n || this.handlersMap[e].size === 0) && delete this.handlersMap[e], Object.keys(this.handlersMap).length === 0 && this.eventTarget.removeEventListener("message", this.boundEventHandler) } } Ec.receivers = [];/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function hp(t = "", e = 10) { let n = ""; for (let r = 0; r < e; r++)n += Math.floor(Math.random() * 10); return t + n }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class XS { constructor(e) { this.target = e, this.handlers = new Set } removeMessageHandler(e) { e.messageChannel && (e.messageChannel.port1.removeEventListener("message", e.onMessage), e.messageChannel.port1.close()), this.handlers.delete(e) } async _send(e, n, r = 50) { const i = typeof MessageChannel < "u" ? new MessageChannel : null; if (!i) throw new Error("connection_unavailable"); let s, o; return new Promise((l, u) => { const h = hp("", 20); i.port1.start(); const p = setTimeout(() => { u(new Error("unsupported_event")) }, r); o = { messageChannel: i, onMessage(v) { const m = v; if (m.data.eventId === h) switch (m.data.status) { case "ack": clearTimeout(p), s = setTimeout(() => { u(new Error("timeout")) }, 3e3); break; case "done": clearTimeout(s), l(m.data.response); break; default: clearTimeout(p), clearTimeout(s), u(new Error("invalid_response")); break } } }, this.handlers.add(o), i.port1.addEventListener("message", o.onMessage), this.target.postMessage({ eventType: e, eventId: h, data: n }, [i.port2]) }).finally(() => { o && this.removeMessageHandler(o) }) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Rn() { return window } function JS(t) { Rn().location.href = t }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function B_() { return typeof Rn().WorkerGlobalScope < "u" && typeof Rn().importScripts == "function" } async function ZS() { if (!(navigator != null && navigator.serviceWorker)) return null; try { return (await navigator.serviceWorker.ready).active } catch { return null } } function eI() { var t; return ((t = navigator == null ? void 0 : navigator.serviceWorker) === null || t === void 0 ? void 0 : t.controller) || null } function tI() { return B_() ? self : null }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const $_ = "firebaseLocalStorageDb", nI = 1, Ku = "firebaseLocalStorage", W_ = "fbase_key"; class Fa { constructor(e) { this.request = e } toPromise() { return new Promise((e, n) => { this.request.addEventListener("success", () => { e(this.request.result) }), this.request.addEventListener("error", () => { n(this.request.error) }) }) } } function xc(t, e) { return t.transaction([Ku], e ? "readwrite" : "readonly").objectStore(Ku) } function rI() { const t = indexedDB.deleteDatabase($_); return new Fa(t).toPromise() } function Wh() { const t = indexedDB.open($_, nI); return new Promise((e, n) => { t.addEventListener("error", () => { n(t.error) }), t.addEventListener("upgradeneeded", () => { const r = t.result; try { r.createObjectStore(Ku, { keyPath: W_ }) } catch (i) { n(i) } }), t.addEventListener("success", async () => { const r = t.result; r.objectStoreNames.contains(Ku) ? e(r) : (r.close(), await rI(), e(await Wh())) }) }) } async function Yg(t, e, n) { const r = xc(t, !0).put({ [W_]: e, value: n }); return new Fa(r).toPromise() } async function iI(t, e) { const n = xc(t, !1).get(e), r = await new Fa(n).toPromise(); return r === void 0 ? null : r.value } function Xg(t, e) { const n = xc(t, !0).delete(e); return new Fa(n).toPromise() } const sI = 800, oI = 3; class H_ { constructor() { this.type = "LOCAL", this._shouldAllowMigration = !0, this.listeners = {}, this.localCache = {}, this.pollTimer = null, this.pendingWrites = 0, this.receiver = null, this.sender = null, this.serviceWorkerReceiverAvailable = !1, this.activeServiceWorker = null, this._workerInitializationPromise = this.initializeServiceWorkerMessaging().then(() => { }, () => { }) } async _openDb() { return this.db ? this.db : (this.db = await Wh(), this.db) } async _withRetries(e) { let n = 0; for (; ;)try { const r = await this._openDb(); return await e(r) } catch (r) { if (n++ > oI) throw r; this.db && (this.db.close(), this.db = void 0) } } async initializeServiceWorkerMessaging() { return B_() ? this.initializeReceiver() : this.initializeSender() } async initializeReceiver() { this.receiver = Ec._getInstance(tI()), this.receiver._subscribe("keyChanged", async (e, n) => ({ keyProcessed: (await this._poll()).includes(n.key) })), this.receiver._subscribe("ping", async (e, n) => ["keyChanged"]) } async initializeSender() { var e, n; if (this.activeServiceWorker = await ZS(), !this.activeServiceWorker) return; this.sender = new XS(this.activeServiceWorker); const r = await this.sender._send("ping", {}, 800); r && !((e = r[0]) === null || e === void 0) && e.fulfilled && !((n = r[0]) === null || n === void 0) && n.value.includes("keyChanged") && (this.serviceWorkerReceiverAvailable = !0) } async notifyServiceWorker(e) { if (!(!this.sender || !this.activeServiceWorker || eI() !== this.activeServiceWorker)) try { await this.sender._send("keyChanged", { key: e }, this.serviceWorkerReceiverAvailable ? 800 : 50) } catch { } } async _isAvailable() { try { if (!indexedDB) return !1; const e = await Wh(); return await Yg(e, qu, "1"), await Xg(e, qu), !0 } catch { } return !1 } async _withPendingWrite(e) { this.pendingWrites++; try { await e() } finally { this.pendingWrites-- } } async _set(e, n) { return this._withPendingWrite(async () => (await this._withRetries(r => Yg(r, e, n)), this.localCache[e] = n, this.notifyServiceWorker(e))) } async _get(e) { const n = await this._withRetries(r => iI(r, e)); return this.localCache[e] = n, n } async _remove(e) { return this._withPendingWrite(async () => (await this._withRetries(n => Xg(n, e)), delete this.localCache[e], this.notifyServiceWorker(e))) } async _poll() { const e = await this._withRetries(i => { const s = xc(i, !1).getAll(); return new Fa(s).toPromise() }); if (!e) return []; if (this.pendingWrites !== 0) return []; const n = [], r = new Set; if (e.length !== 0) for (const { fbase_key: i, value: s } of e) r.add(i), JSON.stringify(this.localCache[i]) !== JSON.stringify(s) && (this.notifyListeners(i, s), n.push(i)); for (const i of Object.keys(this.localCache)) this.localCache[i] && !r.has(i) && (this.notifyListeners(i, null), n.push(i)); return n } notifyListeners(e, n) { this.localCache[e] = n; const r = this.listeners[e]; if (r) for (const i of Array.from(r)) i(n) } startPolling() { this.stopPolling(), this.pollTimer = setInterval(async () => this._poll(), sI) } stopPolling() { this.pollTimer && (clearInterval(this.pollTimer), this.pollTimer = null) } _addListener(e, n) { Object.keys(this.listeners).length === 0 && this.startPolling(), this.listeners[e] || (this.listeners[e] = new Set, this._get(e)), this.listeners[e].add(n) } _removeListener(e, n) { this.listeners[e] && (this.listeners[e].delete(n), this.listeners[e].size === 0 && delete this.listeners[e]), Object.keys(this.listeners).length === 0 && this.stopPolling() } } H_.type = "LOCAL"; const aI = H_; new ja(3e4, 6e4);/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function lI(t, e) { return e ? Qn(e) : (se(t._popupRedirectResolver, t, "argument-error"), t._popupRedirectResolver) }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class fp extends cp { constructor(e) { super("custom", "custom"), this.params = e } _getIdTokenResponse(e) { return Ns(e, this._buildIdpRequest()) } _linkToIdToken(e, n) { return Ns(e, this._buildIdpRequest(n)) } _getReauthenticationResolver(e) { return Ns(e, this._buildIdpRequest()) } _buildIdpRequest(e) { const n = { requestUri: this.params.requestUri, sessionId: this.params.sessionId, postBody: this.params.postBody, tenantId: this.params.tenantId, pendingToken: this.params.pendingToken, returnSecureToken: !0, returnIdpCredential: !0 }; return e && (n.idToken = e), n } } function uI(t) { return j_(t.auth, new fp(t), t.bypassAuthState) } function cI(t) { const { auth: e, user: n } = t; return se(n, e, "internal-error"), FS(n, new fp(t), t.bypassAuthState) } async function dI(t) { const { auth: e, user: n } = t; return se(n, e, "internal-error"), OS(n, new fp(t), t.bypassAuthState) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class q_ { constructor(e, n, r, i, s = !1) { this.auth = e, this.resolver = r, this.user = i, this.bypassAuthState = s, this.pendingPromise = null, this.eventManager = null, this.filter = Array.isArray(n) ? n : [n] } execute() { return new Promise(async (e, n) => { this.pendingPromise = { resolve: e, reject: n }; try { this.eventManager = await this.resolver._initialize(this.auth), await this.onExecution(), this.eventManager.registerConsumer(this) } catch (r) { this.reject(r) } }) } async onAuthEvent(e) { const { urlResponse: n, sessionId: r, postBody: i, tenantId: s, error: o, type: l } = e; if (o) { this.reject(o); return } const u = { auth: this.auth, requestUri: n, sessionId: r, tenantId: s || void 0, postBody: i || void 0, user: this.user, bypassAuthState: this.bypassAuthState }; try { this.resolve(await this.getIdpTask(l)(u)) } catch (h) { this.reject(h) } } onError(e) { this.reject(e) } getIdpTask(e) { switch (e) { case "signInViaPopup": case "signInViaRedirect": return uI; case "linkViaPopup": case "linkViaRedirect": return dI; case "reauthViaPopup": case "reauthViaRedirect": return cI; default: En(this.auth, "internal-error") } } resolve(e) { rr(this.pendingPromise, "Pending promise was never set"), this.pendingPromise.resolve(e), this.unregisterAndCleanUp() } reject(e) { rr(this.pendingPromise, "Pending promise was never set"), this.pendingPromise.reject(e), this.unregisterAndCleanUp() } unregisterAndCleanUp() { this.eventManager && this.eventManager.unregisterConsumer(this), this.pendingPromise = null, this.cleanUp() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const hI = new ja(2e3, 1e4); class ws extends q_ { constructor(e, n, r, i, s) { super(e, n, i, s), this.provider = r, this.authWindow = null, this.pollId = null, ws.currentPopupAction && ws.currentPopupAction.cancel(), ws.currentPopupAction = this } async executeNotNull() { const e = await this.execute(); return se(e, this.auth, "internal-error"), e } async onExecution() { rr(this.filter.length === 1, "Popup operations only handle one event"); const e = hp(); this.authWindow = await this.resolver._openPopup(this.auth, this.provider, this.filter[0], e), this.authWindow.associatedEvent = e, this.resolver._originValidation(this.auth).catch(n => { this.reject(n) }), this.resolver._isIframeWebStorageSupported(this.auth, n => { n || this.reject(bn(this.auth, "web-storage-unsupported")) }), this.pollUserCancellation() } get eventId() { var e; return ((e = this.authWindow) === null || e === void 0 ? void 0 : e.associatedEvent) || null } cancel() { this.reject(bn(this.auth, "cancelled-popup-request")) } cleanUp() { this.authWindow && this.authWindow.close(), this.pollId && window.clearTimeout(this.pollId), this.authWindow = null, this.pollId = null, ws.currentPopupAction = null } pollUserCancellation() { const e = () => { var n, r; if (!((r = (n = this.authWindow) === null || n === void 0 ? void 0 : n.window) === null || r === void 0) && r.closed) { this.pollId = window.setTimeout(() => { this.pollId = null, this.reject(bn(this.auth, "popup-closed-by-user")) }, 8e3); return } this.pollId = window.setTimeout(e, hI.get()) }; e() } } ws.currentPopupAction = null;/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const fI = "pendingRedirect", uu = new Map; class pI extends q_ { constructor(e, n, r = !1) { super(e, ["signInViaRedirect", "linkViaRedirect", "reauthViaRedirect", "unknown"], n, void 0, r), this.eventId = null } async execute() { let e = uu.get(this.auth._key()); if (!e) { try { const r = await mI(this.resolver, this.auth) ? await super.execute() : null; e = () => Promise.resolve(r) } catch (n) { e = () => Promise.reject(n) } uu.set(this.auth._key(), e) } return this.bypassAuthState || uu.set(this.auth._key(), () => Promise.resolve(null)), e() } async onAuthEvent(e) { if (e.type === "signInViaRedirect") return super.onAuthEvent(e); if (e.type === "unknown") { this.resolve(null); return } if (e.eventId) { const n = await this.auth._redirectUserForId(e.eventId); if (n) return this.user = n, super.onAuthEvent(e); this.resolve(null) } } async onExecution() { } cleanUp() { } } async function mI(t, e) { const n = vI(e), r = yI(t); if (!await r._isAvailable()) return !1; const i = await r._get(n) === "true"; return await r._remove(n), i } function gI(t, e) { uu.set(t._key(), e) } function yI(t) { return Qn(t._redirectPersistence) } function vI(t) { return lu(fI, t.config.apiKey, t.name) } async function _I(t, e, n = !1) { if (Cn(t.app)) return Promise.reject(Xn(t)); const r = zi(t), i = lI(r, e), o = await new pI(r, i, n).execute(); return o && !n && (delete o.user._redirectEventId, await r._persistUserIfCurrent(o.user), await r._setRedirectUser(null, e)), o }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const wI = 10 * 60 * 1e3; class EI { constructor(e) { this.auth = e, this.cachedEventUids = new Set, this.consumers = new Set, this.queuedRedirectEvent = null, this.hasHandledPotentialRedirect = !1, this.lastProcessedEventTime = Date.now() } registerConsumer(e) { this.consumers.add(e), this.queuedRedirectEvent && this.isEventForConsumer(this.queuedRedirectEvent, e) && (this.sendToConsumer(this.queuedRedirectEvent, e), this.saveEventToCache(this.queuedRedirectEvent), this.queuedRedirectEvent = null) } unregisterConsumer(e) { this.consumers.delete(e) } onEvent(e) { if (this.hasEventBeenHandled(e)) return !1; let n = !1; return this.consumers.forEach(r => { this.isEventForConsumer(e, r) && (n = !0, this.sendToConsumer(e, r), this.saveEventToCache(e)) }), this.hasHandledPotentialRedirect || !xI(e) || (this.hasHandledPotentialRedirect = !0, n || (this.queuedRedirectEvent = e, n = !0)), n } sendToConsumer(e, n) { var r; if (e.error && !K_(e)) { const i = ((r = e.error.code) === null || r === void 0 ? void 0 : r.split("auth/")[1]) || "internal-error"; n.onError(bn(this.auth, i)) } else n.onAuthEvent(e) } isEventForConsumer(e, n) { const r = n.eventId === null || !!e.eventId && e.eventId === n.eventId; return n.filter.includes(e.type) && r } hasEventBeenHandled(e) { return Date.now() - this.lastProcessedEventTime >= wI && this.cachedEventUids.clear(), this.cachedEventUids.has(Jg(e)) } saveEventToCache(e) { this.cachedEventUids.add(Jg(e)), this.lastProcessedEventTime = Date.now() } } function Jg(t) { return [t.type, t.eventId, t.sessionId, t.tenantId].filter(e => e).join("-") } function K_({ type: t, error: e }) { return t === "unknown" && (e == null ? void 0 : e.code) === "auth/no-auth-event" } function xI(t) { switch (t.type) { case "signInViaRedirect": case "linkViaRedirect": case "reauthViaRedirect": return !0; case "unknown": return K_(t); default: return !1 } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function kI(t, e = {}) { return ni(t, "GET", "/v1/projects", e) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const TI = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, SI = /^https?/; async function II(t) { if (t.config.emulator) return; const { authorizedDomains: e } = await kI(t); for (const n of e) try { if (AI(n)) return } catch { } En(t, "unauthorized-domain") } function AI(t) { const e = zh(), { protocol: n, hostname: r } = new URL(e); if (t.startsWith("chrome-extension://")) { const o = new URL(t); return o.hostname === "" && r === "" ? n === "chrome-extension:" && t.replace("chrome-extension://", "") === e.replace("chrome-extension://", "") : n === "chrome-extension:" && o.hostname === r } if (!SI.test(n)) return !1; if (TI.test(t)) return r === t; const i = t.replace(/\./g, "\\."); return new RegExp("^(.+\\." + i + "|" + i + ")$", "i").test(r) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const CI = new ja(3e4, 6e4); function Zg() { const t = Rn().___jsl; if (t != null && t.H) { for (const e of Object.keys(t.H)) if (t.H[e].r = t.H[e].r || [], t.H[e].L = t.H[e].L || [], t.H[e].r = [...t.H[e].L], t.CP) for (let n = 0; n < t.CP.length; n++)t.CP[n] = null } } function NI(t) { return new Promise((e, n) => { var r, i, s; function o() { Zg(), gapi.load("gapi.iframes", { callback: () => { e(gapi.iframes.getContext()) }, ontimeout: () => { Zg(), n(bn(t, "network-request-failed")) }, timeout: CI.get() }) } if (!((i = (r = Rn().gapi) === null || r === void 0 ? void 0 : r.iframes) === null || i === void 0) && i.Iframe) e(gapi.iframes.getContext()); else if (!((s = Rn().gapi) === null || s === void 0) && s.load) o(); else { const l = ES("iframefcb"); return Rn()[l] = () => { gapi.load ? o() : n(bn(t, "network-request-failed")) }, R_(`${wS()}?onload=${l}`).catch(u => n(u)) } }).catch(e => { throw cu = null, e }) } let cu = null; function PI(t) { return cu = cu || NI(t), cu }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const bI = new ja(5e3, 15e3), RI = "__/auth/iframe", DI = "emulator/auth/iframe", LI = { style: { position: "absolute", top: "-100px", width: "1px", height: "1px" }, "aria-hidden": "true", tabindex: "-1" }, MI = new Map([["identitytoolkit.googleapis.com", "p"], ["staging-identitytoolkit.sandbox.googleapis.com", "s"], ["test-identitytoolkit.sandbox.googleapis.com", "t"]]); function jI(t) { const e = t.config; se(e.authDomain, t, "auth-domain-config-required"); const n = e.emulator ? ap(e, DI) : `https://${t.config.authDomain}/${RI}`, r = { apiKey: e.apiKey, appName: t.name, v: Qs }, i = MI.get(t.config.apiHost); i && (r.eid = i); const s = t._getFrameworks(); return s.length && (r.fw = s.join(",")), `${n}?${Ma(r).slice(1)}` } async function VI(t) { const e = await PI(t), n = Rn().gapi; return se(n, t, "internal-error"), e.open({ where: document.body, url: jI(t), messageHandlersFilter: n.iframes.CROSS_ORIGIN_IFRAMES_FILTER, attributes: LI, dontclear: !0 }, r => new Promise(async (i, s) => { await r.restyle({ setHideOnLeave: !1 }); const o = bn(t, "network-request-failed"), l = Rn().setTimeout(() => { s(o) }, bI.get()); function u() { Rn().clearTimeout(l), i(r) } r.ping(u).then(u, () => { s(o) }) })) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const OI = { location: "yes", resizable: "yes", statusbar: "yes", toolbar: "no" }, FI = 500, UI = 600, zI = "_blank", BI = "http://localhost"; class ey { constructor(e) { this.window = e, this.associatedEvent = null } close() { if (this.window) try { this.window.close() } catch { } } } function $I(t, e, n, r = FI, i = UI) { const s = Math.max((window.screen.availHeight - i) / 2, 0).toString(), o = Math.max((window.screen.availWidth - r) / 2, 0).toString(); let l = ""; const u = Object.assign(Object.assign({}, OI), { width: r.toString(), height: i.toString(), top: s, left: o }), h = xt().toLowerCase(); n && (l = S_(h) ? zI : n), k_(h) && (e = e || BI, u.scrollbars = "yes"); const p = Object.entries(u).reduce((m, [C, R]) => `${m}${C}=${R},`, ""); if (dS(h) && l !== "_self") return WI(e || "", l), new ey(null); const v = window.open(e || "", l, p); se(v, t, "popup-blocked"); try { v.focus() } catch { } return new ey(v) } function WI(t, e) { const n = document.createElement("a"); n.href = t, n.target = e; const r = document.createEvent("MouseEvent"); r.initMouseEvent("click", !0, !0, window, 1, 0, 0, 0, 0, !1, !1, !1, !1, 1, null), n.dispatchEvent(r) }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const HI = "__/auth/handler", qI = "emulator/auth/handler", KI = encodeURIComponent("fac"); async function ty(t, e, n, r, i, s) { se(t.config.authDomain, t, "auth-domain-config-required"), se(t.config.apiKey, t, "invalid-api-key"); const o = { apiKey: t.config.apiKey, appName: t.name, authType: n, redirectUrl: r, v: Qs, eventId: i }; if (e instanceof L_) { e.setDefaultLanguage(t.languageCode), o.providerId = e.providerId || "", MT(e.getCustomParameters()) || (o.customParameters = JSON.stringify(e.getCustomParameters())); for (const [p, v] of Object.entries({})) o[p] = v } if (e instanceof Oa) { const p = e.getScopes().filter(v => v !== ""); p.length > 0 && (o.scopes = p.join(",")) } t.tenantId && (o.tid = t.tenantId); const l = o; for (const p of Object.keys(l)) l[p] === void 0 && delete l[p]; const u = await t._getAppCheckToken(), h = u ? `#${KI}=${encodeURIComponent(u)}` : ""; return `${GI(t)}?${Ma(l).slice(1)}${h}` } function GI({ config: t }) { return t.emulator ? ap(t, qI) : `https://${t.authDomain}/${HI}` }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const jd = "webStorageSupport"; class QI { constructor() { this.eventManagers = {}, this.iframes = {}, this.originValidationPromises = {}, this._redirectPersistence = z_, this._completeRedirectFn = _I, this._overrideRedirectResult = gI } async _openPopup(e, n, r, i) { var s; rr((s = this.eventManagers[e._key()]) === null || s === void 0 ? void 0 : s.manager, "_initialize() not called before _openPopup()"); const o = await ty(e, n, r, zh(), i); return $I(e, o, hp()) } async _openRedirect(e, n, r, i) { await this._originValidation(e); const s = await ty(e, n, r, zh(), i); return JS(s), new Promise(() => { }) } _initialize(e) { const n = e._key(); if (this.eventManagers[n]) { const { manager: i, promise: s } = this.eventManagers[n]; return i ? Promise.resolve(i) : (rr(s, "If manager is not set, promise should be"), s) } const r = this.initAndGetManager(e); return this.eventManagers[n] = { promise: r }, r.catch(() => { delete this.eventManagers[n] }), r } async initAndGetManager(e) { const n = await VI(e), r = new EI(e); return n.register("authEvent", i => (se(i == null ? void 0 : i.authEvent, e, "invalid-auth-event"), { status: r.onEvent(i.authEvent) ? "ACK" : "ERROR" }), gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER), this.eventManagers[e._key()] = { manager: r }, this.iframes[e._key()] = n, r } _isIframeWebStorageSupported(e, n) { this.iframes[e._key()].send(jd, { type: jd }, i => { var s; const o = (s = i == null ? void 0 : i[0]) === null || s === void 0 ? void 0 : s[jd]; o !== void 0 && n(!!o), En(e, "internal-error") }, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER) } _originValidation(e) { const n = e._key(); return this.originValidationPromises[n] || (this.originValidationPromises[n] = II(e)), this.originValidationPromises[n] } get _shouldInitProactively() { return P_() || T_() || up() } } const YI = QI; var ny = "@firebase/auth", ry = "1.7.9";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class XI { constructor(e) { this.auth = e, this.internalListeners = new Map } getUid() { var e; return this.assertAuthConfigured(), ((e = this.auth.currentUser) === null || e === void 0 ? void 0 : e.uid) || null } async getToken(e) { return this.assertAuthConfigured(), await this.auth._initializationPromise, this.auth.currentUser ? { accessToken: await this.auth.currentUser.getIdToken(e) } : null } addAuthTokenListener(e) { if (this.assertAuthConfigured(), this.internalListeners.has(e)) return; const n = this.auth.onIdTokenChanged(r => { e((r == null ? void 0 : r.stsTokenManager.accessToken) || null) }); this.internalListeners.set(e, n), this.updateProactiveRefresh() } removeAuthTokenListener(e) { this.assertAuthConfigured(); const n = this.internalListeners.get(e); n && (this.internalListeners.delete(e), n(), this.updateProactiveRefresh()) } assertAuthConfigured() { se(this.auth._initializationPromise, "dependent-sdk-initialized-before-auth") } updateProactiveRefresh() { this.internalListeners.size > 0 ? this.auth._startProactiveRefresh() : this.auth._stopProactiveRefresh() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function JI(t) { switch (t) { case "Node": return "node"; case "ReactNative": return "rn"; case "Worker": return "webworker"; case "Cordova": return "cordova"; case "WebExtension": return "web-extension"; default: return } } function ZI(t) { Os(new Di("auth", (e, { options: n }) => { const r = e.getProvider("app").getImmediate(), i = e.getProvider("heartbeat"), s = e.getProvider("app-check-internal"), { apiKey: o, authDomain: l } = r.options; se(o && !o.includes(":"), "invalid-api-key", { appName: r.name }); const u = { apiKey: o, authDomain: l, clientPlatform: t, apiHost: "identitytoolkit.googleapis.com", tokenApiHost: "securetoken.googleapis.com", apiScheme: "https", sdkClientVersion: b_(t) }, h = new yS(r, i, s, u); return IS(h, n), h }, "PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e, n, r) => { e.getProvider("auth-internal").initialize() })), Os(new Di("auth-internal", e => { const n = zi(e.getProvider("auth").getImmediate()); return (r => new XI(r))(n) }, "PRIVATE").setInstantiationMode("EXPLICIT")), Wr(ny, ry, JI(t)), Wr(ny, ry, "esm2017") }/**
|
|
* @license
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const eA = 5 * 60, tA = a_("authIdTokenMaxAge") || eA; let iy = null; const nA = t => async e => { const n = e && await e.getIdTokenResult(), r = n && (new Date().getTime() - Date.parse(n.issuedAtTime)) / 1e3; if (r && r > tA) return; const i = n == null ? void 0 : n.token; iy !== i && (iy = i, await fetch(t, { method: i ? "POST" : "DELETE", headers: i ? { Authorization: `Bearer ${i}` } : {} })) }; function rA(t = d_()) { const e = ip(t, "auth"); if (e.isInitialized()) return e.getImmediate(); const n = SS(t, { popupRedirectResolver: YI, persistence: [aI, QS, z_] }), r = a_("authTokenSyncURL"); if (r && typeof isSecureContext == "boolean" && isSecureContext) { const s = new URL(r, location.origin); if (location.origin === s.origin) { const o = nA(s.toString()); WS(n, o, () => o(n.currentUser)), $S(n, l => o(l)) } } const i = s_("auth"); return i && AS(n, `http://${i}`), n } function iA() { var t, e; return (e = (t = document.getElementsByTagName("head")) === null || t === void 0 ? void 0 : t[0]) !== null && e !== void 0 ? e : document } vS({ loadJS(t) { return new Promise((e, n) => { const r = document.createElement("script"); r.setAttribute("src", t), r.onload = e, r.onerror = i => { const s = bn("internal-error"); s.customData = i, n(s) }, r.type = "text/javascript", r.charset = "UTF-8", iA().appendChild(r) }) }, gapiScript: "https://apis.google.com/js/api.js", recaptchaV2Script: "https://www.google.com/recaptcha/api.js", recaptchaEnterpriseScript: "https://www.google.com/recaptcha/enterprise.js?render=" }); ZI("Browser"); var sy = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};/** @license
|
|
Copyright The Closure Library Authors.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/var Ai, G_; (function () {
|
|
var t;/** @license
|
|
|
|
Copyright The Closure Library Authors.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/function e(x, _) { function w() { } w.prototype = _.prototype, x.D = _.prototype, x.prototype = new w, x.prototype.constructor = x, x.C = function (k, A, P) { for (var T = Array(arguments.length - 2), ze = 2; ze < arguments.length; ze++)T[ze - 2] = arguments[ze]; return _.prototype[A].apply(k, T) } } function n() { this.blockSize = -1 } function r() { this.blockSize = -1, this.blockSize = 64, this.g = Array(4), this.B = Array(this.blockSize), this.o = this.h = 0, this.s() } e(r, n), r.prototype.s = function () { this.g[0] = 1732584193, this.g[1] = 4023233417, this.g[2] = 2562383102, this.g[3] = 271733878, this.o = this.h = 0 }; function i(x, _, w) { w || (w = 0); var k = Array(16); if (typeof _ == "string") for (var A = 0; 16 > A; ++A)k[A] = _.charCodeAt(w++) | _.charCodeAt(w++) << 8 | _.charCodeAt(w++) << 16 | _.charCodeAt(w++) << 24; else for (A = 0; 16 > A; ++A)k[A] = _[w++] | _[w++] << 8 | _[w++] << 16 | _[w++] << 24; _ = x.g[0], w = x.g[1], A = x.g[2]; var P = x.g[3], T = _ + (P ^ w & (A ^ P)) + k[0] + 3614090360 & 4294967295; _ = w + (T << 7 & 4294967295 | T >>> 25), T = P + (A ^ _ & (w ^ A)) + k[1] + 3905402710 & 4294967295, P = _ + (T << 12 & 4294967295 | T >>> 20), T = A + (w ^ P & (_ ^ w)) + k[2] + 606105819 & 4294967295, A = P + (T << 17 & 4294967295 | T >>> 15), T = w + (_ ^ A & (P ^ _)) + k[3] + 3250441966 & 4294967295, w = A + (T << 22 & 4294967295 | T >>> 10), T = _ + (P ^ w & (A ^ P)) + k[4] + 4118548399 & 4294967295, _ = w + (T << 7 & 4294967295 | T >>> 25), T = P + (A ^ _ & (w ^ A)) + k[5] + 1200080426 & 4294967295, P = _ + (T << 12 & 4294967295 | T >>> 20), T = A + (w ^ P & (_ ^ w)) + k[6] + 2821735955 & 4294967295, A = P + (T << 17 & 4294967295 | T >>> 15), T = w + (_ ^ A & (P ^ _)) + k[7] + 4249261313 & 4294967295, w = A + (T << 22 & 4294967295 | T >>> 10), T = _ + (P ^ w & (A ^ P)) + k[8] + 1770035416 & 4294967295, _ = w + (T << 7 & 4294967295 | T >>> 25), T = P + (A ^ _ & (w ^ A)) + k[9] + 2336552879 & 4294967295, P = _ + (T << 12 & 4294967295 | T >>> 20), T = A + (w ^ P & (_ ^ w)) + k[10] + 4294925233 & 4294967295, A = P + (T << 17 & 4294967295 | T >>> 15), T = w + (_ ^ A & (P ^ _)) + k[11] + 2304563134 & 4294967295, w = A + (T << 22 & 4294967295 | T >>> 10), T = _ + (P ^ w & (A ^ P)) + k[12] + 1804603682 & 4294967295, _ = w + (T << 7 & 4294967295 | T >>> 25), T = P + (A ^ _ & (w ^ A)) + k[13] + 4254626195 & 4294967295, P = _ + (T << 12 & 4294967295 | T >>> 20), T = A + (w ^ P & (_ ^ w)) + k[14] + 2792965006 & 4294967295, A = P + (T << 17 & 4294967295 | T >>> 15), T = w + (_ ^ A & (P ^ _)) + k[15] + 1236535329 & 4294967295, w = A + (T << 22 & 4294967295 | T >>> 10), T = _ + (A ^ P & (w ^ A)) + k[1] + 4129170786 & 4294967295, _ = w + (T << 5 & 4294967295 | T >>> 27), T = P + (w ^ A & (_ ^ w)) + k[6] + 3225465664 & 4294967295, P = _ + (T << 9 & 4294967295 | T >>> 23), T = A + (_ ^ w & (P ^ _)) + k[11] + 643717713 & 4294967295, A = P + (T << 14 & 4294967295 | T >>> 18), T = w + (P ^ _ & (A ^ P)) + k[0] + 3921069994 & 4294967295, w = A + (T << 20 & 4294967295 | T >>> 12), T = _ + (A ^ P & (w ^ A)) + k[5] + 3593408605 & 4294967295, _ = w + (T << 5 & 4294967295 | T >>> 27), T = P + (w ^ A & (_ ^ w)) + k[10] + 38016083 & 4294967295, P = _ + (T << 9 & 4294967295 | T >>> 23), T = A + (_ ^ w & (P ^ _)) + k[15] + 3634488961 & 4294967295, A = P + (T << 14 & 4294967295 | T >>> 18), T = w + (P ^ _ & (A ^ P)) + k[4] + 3889429448 & 4294967295, w = A + (T << 20 & 4294967295 | T >>> 12), T = _ + (A ^ P & (w ^ A)) + k[9] + 568446438 & 4294967295, _ = w + (T << 5 & 4294967295 | T >>> 27), T = P + (w ^ A & (_ ^ w)) + k[14] + 3275163606 & 4294967295, P = _ + (T << 9 & 4294967295 | T >>> 23), T = A + (_ ^ w & (P ^ _)) + k[3] + 4107603335 & 4294967295, A = P + (T << 14 & 4294967295 | T >>> 18), T = w + (P ^ _ & (A ^ P)) + k[8] + 1163531501 & 4294967295, w = A + (T << 20 & 4294967295 | T >>> 12), T = _ + (A ^ P & (w ^ A)) + k[13] + 2850285829 & 4294967295, _ = w + (T << 5 & 4294967295 | T >>> 27), T = P + (w ^ A & (_ ^ w)) + k[2] + 4243563512 & 4294967295, P = _ + (T << 9 & 4294967295 | T >>> 23), T = A + (_ ^ w & (P ^ _)) + k[7] + 1735328473 & 4294967295, A = P + (T << 14 & 4294967295 | T >>> 18), T = w + (P ^ _ & (A ^ P)) + k[12] + 2368359562 & 4294967295, w = A + (T << 20 & 4294967295 | T >>> 12), T = _ + (w ^ A ^ P) + k[5] + 4294588738 & 4294967295, _ = w + (T << 4 & 4294967295 | T >>> 28), T = P + (_ ^ w ^ A) + k[8] + 2272392833 & 4294967295, P = _ + (T << 11 & 4294967295 | T >>> 21), T = A + (P ^ _ ^ w) + k[11] + 1839030562 & 4294967295, A = P + (T << 16 & 4294967295 | T >>> 16), T = w + (A ^ P ^ _) + k[14] + 4259657740 & 4294967295, w = A + (T << 23 & 4294967295 | T >>> 9), T = _ + (w ^ A ^ P) + k[1] + 2763975236 & 4294967295, _ = w + (T << 4 & 4294967295 | T >>> 28), T = P + (_ ^ w ^ A) + k[4] + 1272893353 & 4294967295, P = _ + (T << 11 & 4294967295 | T >>> 21), T = A + (P ^ _ ^ w) + k[7] + 4139469664 & 4294967295, A = P + (T << 16 & 4294967295 | T >>> 16), T = w + (A ^ P ^ _) + k[10] + 3200236656 & 4294967295, w = A + (T << 23 & 4294967295 | T >>> 9), T = _ + (w ^ A ^ P) + k[13] + 681279174 & 4294967295, _ = w + (T << 4 & 4294967295 | T >>> 28), T = P + (_ ^ w ^ A) + k[0] + 3936430074 & 4294967295, P = _ + (T << 11 & 4294967295 | T >>> 21), T = A + (P ^ _ ^ w) + k[3] + 3572445317 & 4294967295, A = P + (T << 16 & 4294967295 | T >>> 16), T = w + (A ^ P ^ _) + k[6] + 76029189 & 4294967295, w = A + (T << 23 & 4294967295 | T >>> 9), T = _ + (w ^ A ^ P) + k[9] + 3654602809 & 4294967295, _ = w + (T << 4 & 4294967295 | T >>> 28), T = P + (_ ^ w ^ A) + k[12] + 3873151461 & 4294967295, P = _ + (T << 11 & 4294967295 | T >>> 21), T = A + (P ^ _ ^ w) + k[15] + 530742520 & 4294967295, A = P + (T << 16 & 4294967295 | T >>> 16), T = w + (A ^ P ^ _) + k[2] + 3299628645 & 4294967295, w = A + (T << 23 & 4294967295 | T >>> 9), T = _ + (A ^ (w | ~P)) + k[0] + 4096336452 & 4294967295, _ = w + (T << 6 & 4294967295 | T >>> 26), T = P + (w ^ (_ | ~A)) + k[7] + 1126891415 & 4294967295, P = _ + (T << 10 & 4294967295 | T >>> 22), T = A + (_ ^ (P | ~w)) + k[14] + 2878612391 & 4294967295, A = P + (T << 15 & 4294967295 | T >>> 17), T = w + (P ^ (A | ~_)) + k[5] + 4237533241 & 4294967295, w = A + (T << 21 & 4294967295 | T >>> 11), T = _ + (A ^ (w | ~P)) + k[12] + 1700485571 & 4294967295, _ = w + (T << 6 & 4294967295 | T >>> 26), T = P + (w ^ (_ | ~A)) + k[3] + 2399980690 & 4294967295, P = _ + (T << 10 & 4294967295 | T >>> 22), T = A + (_ ^ (P | ~w)) + k[10] + 4293915773 & 4294967295, A = P + (T << 15 & 4294967295 | T >>> 17), T = w + (P ^ (A | ~_)) + k[1] + 2240044497 & 4294967295, w = A + (T << 21 & 4294967295 | T >>> 11), T = _ + (A ^ (w | ~P)) + k[8] + 1873313359 & 4294967295, _ = w + (T << 6 & 4294967295 | T >>> 26), T = P + (w ^ (_ | ~A)) + k[15] + 4264355552 & 4294967295, P = _ + (T << 10 & 4294967295 | T >>> 22), T = A + (_ ^ (P | ~w)) + k[6] + 2734768916 & 4294967295, A = P + (T << 15 & 4294967295 | T >>> 17), T = w + (P ^ (A | ~_)) + k[13] + 1309151649 & 4294967295, w = A + (T << 21 & 4294967295 | T >>> 11), T = _ + (A ^ (w | ~P)) + k[4] + 4149444226 & 4294967295, _ = w + (T << 6 & 4294967295 | T >>> 26), T = P + (w ^ (_ | ~A)) + k[11] + 3174756917 & 4294967295, P = _ + (T << 10 & 4294967295 | T >>> 22), T = A + (_ ^ (P | ~w)) + k[2] + 718787259 & 4294967295, A = P + (T << 15 & 4294967295 | T >>> 17), T = w + (P ^ (A | ~_)) + k[9] + 3951481745 & 4294967295, x.g[0] = x.g[0] + _ & 4294967295, x.g[1] = x.g[1] + (A + (T << 21 & 4294967295 | T >>> 11)) & 4294967295, x.g[2] = x.g[2] + A & 4294967295, x.g[3] = x.g[3] + P & 4294967295 } r.prototype.u = function (x, _) { _ === void 0 && (_ = x.length); for (var w = _ - this.blockSize, k = this.B, A = this.h, P = 0; P < _;) { if (A == 0) for (; P <= w;)i(this, x, P), P += this.blockSize; if (typeof x == "string") { for (; P < _;)if (k[A++] = x.charCodeAt(P++), A == this.blockSize) { i(this, k), A = 0; break } } else for (; P < _;)if (k[A++] = x[P++], A == this.blockSize) { i(this, k), A = 0; break } } this.h = A, this.o += _ }, r.prototype.v = function () { var x = Array((56 > this.h ? this.blockSize : 2 * this.blockSize) - this.h); x[0] = 128; for (var _ = 1; _ < x.length - 8; ++_)x[_] = 0; var w = 8 * this.o; for (_ = x.length - 8; _ < x.length; ++_)x[_] = w & 255, w /= 256; for (this.u(x), x = Array(16), _ = w = 0; 4 > _; ++_)for (var k = 0; 32 > k; k += 8)x[w++] = this.g[_] >>> k & 255; return x }; function s(x, _) { var w = l; return Object.prototype.hasOwnProperty.call(w, x) ? w[x] : w[x] = _(x) } function o(x, _) { this.h = _; for (var w = [], k = !0, A = x.length - 1; 0 <= A; A--) { var P = x[A] | 0; k && P == _ || (w[A] = P, k = !1) } this.g = w } var l = {}; function u(x) { return -128 <= x && 128 > x ? s(x, function (_) { return new o([_ | 0], 0 > _ ? -1 : 0) }) : new o([x | 0], 0 > x ? -1 : 0) } function h(x) { if (isNaN(x) || !isFinite(x)) return v; if (0 > x) return V(h(-x)); for (var _ = [], w = 1, k = 0; x >= w; k++)_[k] = x / w | 0, w *= 4294967296; return new o(_, 0) } function p(x, _) { if (x.length == 0) throw Error("number format error: empty string"); if (_ = _ || 10, 2 > _ || 36 < _) throw Error("radix out of range: " + _); if (x.charAt(0) == "-") return V(p(x.substring(1), _)); if (0 <= x.indexOf("-")) throw Error('number format error: interior "-" character'); for (var w = h(Math.pow(_, 8)), k = v, A = 0; A < x.length; A += 8) { var P = Math.min(8, x.length - A), T = parseInt(x.substring(A, A + P), _); 8 > P ? (P = h(Math.pow(_, P)), k = k.j(P).add(h(T))) : (k = k.j(w), k = k.add(h(T))) } return k } var v = u(0), m = u(1), C = u(16777216); t = o.prototype, t.m = function () { if (L(this)) return -V(this).m(); for (var x = 0, _ = 1, w = 0; w < this.g.length; w++) { var k = this.i(w); x += (0 <= k ? k : 4294967296 + k) * _, _ *= 4294967296 } return x }, t.toString = function (x) { if (x = x || 10, 2 > x || 36 < x) throw Error("radix out of range: " + x); if (R(this)) return "0"; if (L(this)) return "-" + V(this).toString(x); for (var _ = h(Math.pow(x, 6)), w = this, k = ""; ;) { var A = j(w, _).g; w = S(w, A.j(_)); var P = ((0 < w.g.length ? w.g[0] : w.h) >>> 0).toString(x); if (w = A, R(w)) return P + k; for (; 6 > P.length;)P = "0" + P; k = P + k } }, t.i = function (x) { return 0 > x ? 0 : x < this.g.length ? this.g[x] : this.h }; function R(x) { if (x.h != 0) return !1; for (var _ = 0; _ < x.g.length; _++)if (x.g[_] != 0) return !1; return !0 } function L(x) { return x.h == -1 } t.l = function (x) { return x = S(this, x), L(x) ? -1 : R(x) ? 0 : 1 }; function V(x) { for (var _ = x.g.length, w = [], k = 0; k < _; k++)w[k] = ~x.g[k]; return new o(w, ~x.h).add(m) } t.abs = function () { return L(this) ? V(this) : this }, t.add = function (x) { for (var _ = Math.max(this.g.length, x.g.length), w = [], k = 0, A = 0; A <= _; A++) { var P = k + (this.i(A) & 65535) + (x.i(A) & 65535), T = (P >>> 16) + (this.i(A) >>> 16) + (x.i(A) >>> 16); k = T >>> 16, P &= 65535, T &= 65535, w[A] = T << 16 | P } return new o(w, w[w.length - 1] & -2147483648 ? -1 : 0) }; function S(x, _) { return x.add(V(_)) } t.j = function (x) { if (R(this) || R(x)) return v; if (L(this)) return L(x) ? V(this).j(V(x)) : V(V(this).j(x)); if (L(x)) return V(this.j(V(x))); if (0 > this.l(C) && 0 > x.l(C)) return h(this.m() * x.m()); for (var _ = this.g.length + x.g.length, w = [], k = 0; k < 2 * _; k++)w[k] = 0; for (k = 0; k < this.g.length; k++)for (var A = 0; A < x.g.length; A++) { var P = this.i(k) >>> 16, T = this.i(k) & 65535, ze = x.i(A) >>> 16, ln = x.i(A) & 65535; w[2 * k + 2 * A] += T * ln, E(w, 2 * k + 2 * A), w[2 * k + 2 * A + 1] += P * ln, E(w, 2 * k + 2 * A + 1), w[2 * k + 2 * A + 1] += T * ze, E(w, 2 * k + 2 * A + 1), w[2 * k + 2 * A + 2] += P * ze, E(w, 2 * k + 2 * A + 2) } for (k = 0; k < _; k++)w[k] = w[2 * k + 1] << 16 | w[2 * k]; for (k = _; k < 2 * _; k++)w[k] = 0; return new o(w, 0) }; function E(x, _) { for (; (x[_] & 65535) != x[_];)x[_ + 1] += x[_] >>> 16, x[_] &= 65535, _++ } function I(x, _) { this.g = x, this.h = _ } function j(x, _) { if (R(_)) throw Error("division by zero"); if (R(x)) return new I(v, v); if (L(x)) return _ = j(V(x), _), new I(V(_.g), V(_.h)); if (L(_)) return _ = j(x, V(_)), new I(V(_.g), _.h); if (30 < x.g.length) { if (L(x) || L(_)) throw Error("slowDivide_ only works with positive integers."); for (var w = m, k = _; 0 >= k.l(x);)w = K(w), k = K(k); var A = $(w, 1), P = $(k, 1); for (k = $(k, 2), w = $(w, 2); !R(k);) { var T = P.add(k); 0 >= T.l(x) && (A = A.add(w), P = T), k = $(k, 1), w = $(w, 1) } return _ = S(x, A.j(_)), new I(A, _) } for (A = v; 0 <= x.l(_);) { for (w = Math.max(1, Math.floor(x.m() / _.m())), k = Math.ceil(Math.log(w) / Math.LN2), k = 48 >= k ? 1 : Math.pow(2, k - 48), P = h(w), T = P.j(_); L(T) || 0 < T.l(x);)w -= k, P = h(w), T = P.j(_); R(P) && (P = m), A = A.add(P), x = S(x, T) } return new I(A, x) } t.A = function (x) { return j(this, x).h }, t.and = function (x) { for (var _ = Math.max(this.g.length, x.g.length), w = [], k = 0; k < _; k++)w[k] = this.i(k) & x.i(k); return new o(w, this.h & x.h) }, t.or = function (x) { for (var _ = Math.max(this.g.length, x.g.length), w = [], k = 0; k < _; k++)w[k] = this.i(k) | x.i(k); return new o(w, this.h | x.h) }, t.xor = function (x) { for (var _ = Math.max(this.g.length, x.g.length), w = [], k = 0; k < _; k++)w[k] = this.i(k) ^ x.i(k); return new o(w, this.h ^ x.h) }; function K(x) { for (var _ = x.g.length + 1, w = [], k = 0; k < _; k++)w[k] = x.i(k) << 1 | x.i(k - 1) >>> 31; return new o(w, x.h) } function $(x, _) { var w = _ >> 5; _ %= 32; for (var k = x.g.length - w, A = [], P = 0; P < k; P++)A[P] = 0 < _ ? x.i(P + w) >>> _ | x.i(P + w + 1) << 32 - _ : x.i(P + w); return new o(A, x.h) } r.prototype.digest = r.prototype.v, r.prototype.reset = r.prototype.s, r.prototype.update = r.prototype.u, G_ = r, o.prototype.add = o.prototype.add, o.prototype.multiply = o.prototype.j, o.prototype.modulo = o.prototype.A, o.prototype.compare = o.prototype.l, o.prototype.toNumber = o.prototype.m, o.prototype.toString = o.prototype.toString, o.prototype.getBits = o.prototype.i, o.fromNumber = h, o.fromString = p, Ai = o
|
|
}).apply(typeof sy < "u" ? sy : typeof self < "u" ? self : typeof window < "u" ? window : {}); var zl = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};/** @license
|
|
Copyright The Closure Library Authors.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/var Q_, Fo, Y_, du, Hh, X_, J_, Z_; (function () {
|
|
var t, e = typeof Object.defineProperties == "function" ? Object.defineProperty : function (a, c, f) { return a == Array.prototype || a == Object.prototype || (a[c] = f.value), a }; function n(a) { a = [typeof globalThis == "object" && globalThis, a, typeof window == "object" && window, typeof self == "object" && self, typeof zl == "object" && zl]; for (var c = 0; c < a.length; ++c) { var f = a[c]; if (f && f.Math == Math) return f } throw Error("Cannot find global object") } var r = n(this); function i(a, c) { if (c) e: { var f = r; a = a.split("."); for (var y = 0; y < a.length - 1; y++) { var b = a[y]; if (!(b in f)) break e; f = f[b] } a = a[a.length - 1], y = f[a], c = c(y), c != y && c != null && e(f, a, { configurable: !0, writable: !0, value: c }) } } function s(a, c) { a instanceof String && (a += ""); var f = 0, y = !1, b = { next: function () { if (!y && f < a.length) { var D = f++; return { value: c(D, a[D]), done: !1 } } return y = !0, { done: !0, value: void 0 } } }; return b[Symbol.iterator] = function () { return b }, b } i("Array.prototype.values", function (a) { return a || function () { return s(this, function (c, f) { return f }) } });/** @license
|
|
|
|
Copyright The Closure Library Authors.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/var o = o || {}, l = this || self; function u(a) { var c = typeof a; return c = c != "object" ? c : a ? Array.isArray(a) ? "array" : c : "null", c == "array" || c == "object" && typeof a.length == "number" } function h(a) { var c = typeof a; return c == "object" && a != null || c == "function" } function p(a, c, f) { return a.call.apply(a.bind, arguments) } function v(a, c, f) { if (!a) throw Error(); if (2 < arguments.length) { var y = Array.prototype.slice.call(arguments, 2); return function () { var b = Array.prototype.slice.call(arguments); return Array.prototype.unshift.apply(b, y), a.apply(c, b) } } return function () { return a.apply(c, arguments) } } function m(a, c, f) { return m = Function.prototype.bind && Function.prototype.bind.toString().indexOf("native code") != -1 ? p : v, m.apply(null, arguments) } function C(a, c) { var f = Array.prototype.slice.call(arguments, 1); return function () { var y = f.slice(); return y.push.apply(y, arguments), a.apply(this, y) } } function R(a, c) { function f() { } f.prototype = c.prototype, a.aa = c.prototype, a.prototype = new f, a.prototype.constructor = a, a.Qb = function (y, b, D) { for (var H = Array(arguments.length - 2), Se = 2; Se < arguments.length; Se++)H[Se - 2] = arguments[Se]; return c.prototype[b].apply(y, H) } } function L(a) { const c = a.length; if (0 < c) { const f = Array(c); for (let y = 0; y < c; y++)f[y] = a[y]; return f } return [] } function V(a, c) { for (let f = 1; f < arguments.length; f++) { const y = arguments[f]; if (u(y)) { const b = a.length || 0, D = y.length || 0; a.length = b + D; for (let H = 0; H < D; H++)a[b + H] = y[H] } else a.push(y) } } class S { constructor(c, f) { this.i = c, this.j = f, this.h = 0, this.g = null } get() { let c; return 0 < this.h ? (this.h--, c = this.g, this.g = c.next, c.next = null) : c = this.i(), c } } function E(a) { return /^[\s\xa0]*$/.test(a) } function I() { var a = l.navigator; return a && (a = a.userAgent) ? a : "" } function j(a) { return j[" "](a), a } j[" "] = function () { }; var K = I().indexOf("Gecko") != -1 && !(I().toLowerCase().indexOf("webkit") != -1 && I().indexOf("Edge") == -1) && !(I().indexOf("Trident") != -1 || I().indexOf("MSIE") != -1) && I().indexOf("Edge") == -1; function $(a, c, f) { for (const y in a) c.call(f, a[y], y, a) } function x(a, c) { for (const f in a) c.call(void 0, a[f], f, a) } function _(a) { const c = {}; for (const f in a) c[f] = a[f]; return c } const w = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); function k(a, c) { let f, y; for (let b = 1; b < arguments.length; b++) { y = arguments[b]; for (f in y) a[f] = y[f]; for (let D = 0; D < w.length; D++)f = w[D], Object.prototype.hasOwnProperty.call(y, f) && (a[f] = y[f]) } } function A(a) { var c = 1; a = a.split(":"); const f = []; for (; 0 < c && a.length;)f.push(a.shift()), c--; return a.length && f.push(a.join(":")), f } function P(a) { l.setTimeout(() => { throw a }, 0) } function T() { var a = ne; let c = null; return a.g && (c = a.g, a.g = a.g.next, a.g || (a.h = null), c.next = null), c } class ze { constructor() { this.h = this.g = null } add(c, f) { const y = ln.get(); y.set(c, f), this.h ? this.h.next = y : this.g = y, this.h = y } } var ln = new S(() => new ii, a => a.reset()); class ii { constructor() { this.next = this.g = this.h = null } set(c, f) { this.h = c, this.g = f, this.next = null } reset() { this.next = this.g = this.h = null } } let Nt, W = !1, ne = new ze, ee = () => { const a = l.Promise.resolve(void 0); Nt = () => { a.then(xe) } }; var xe = () => { for (var a; a = T();) { try { a.h.call(a.g) } catch (f) { P(f) } var c = ln; c.j(a), 100 > c.h && (c.h++, a.next = c.g, c.g = a) } W = !1 }; function O() { this.s = this.s, this.C = this.C } O.prototype.s = !1, O.prototype.ma = function () { this.s || (this.s = !0, this.N()) }, O.prototype.N = function () { if (this.C) for (; this.C.length;)this.C.shift()() }; function Ce(a, c) { this.type = a, this.g = this.target = c, this.defaultPrevented = !1 } Ce.prototype.h = function () { this.defaultPrevented = !0 }; var Qt = function () { if (!l.addEventListener || !Object.defineProperty) return !1; var a = !1, c = Object.defineProperty({}, "passive", { get: function () { a = !0 } }); try { const f = () => { }; l.addEventListener("test", f, c), l.removeEventListener("test", f, c) } catch { } return a }(); function Yt(a, c) { if (Ce.call(this, a ? a.type : ""), this.relatedTarget = this.g = this.target = null, this.button = this.screenY = this.screenX = this.clientY = this.clientX = 0, this.key = "", this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1, this.state = null, this.pointerId = 0, this.pointerType = "", this.i = null, a) { var f = this.type = a.type, y = a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : null; if (this.target = a.target || a.srcElement, this.g = c, c = a.relatedTarget) { if (K) { e: { try { j(c.nodeName); var b = !0; break e } catch { } b = !1 } b || (c = null) } } else f == "mouseover" ? c = a.fromElement : f == "mouseout" && (c = a.toElement); this.relatedTarget = c, y ? (this.clientX = y.clientX !== void 0 ? y.clientX : y.pageX, this.clientY = y.clientY !== void 0 ? y.clientY : y.pageY, this.screenX = y.screenX || 0, this.screenY = y.screenY || 0) : (this.clientX = a.clientX !== void 0 ? a.clientX : a.pageX, this.clientY = a.clientY !== void 0 ? a.clientY : a.pageY, this.screenX = a.screenX || 0, this.screenY = a.screenY || 0), this.button = a.button, this.key = a.key || "", this.ctrlKey = a.ctrlKey, this.altKey = a.altKey, this.shiftKey = a.shiftKey, this.metaKey = a.metaKey, this.pointerId = a.pointerId || 0, this.pointerType = typeof a.pointerType == "string" ? a.pointerType : Vt[a.pointerType] || "", this.state = a.state, this.i = a, a.defaultPrevented && Yt.aa.h.call(this) } } R(Yt, Ce); var Vt = { 2: "touch", 3: "pen", 4: "mouse" }; Yt.prototype.h = function () { Yt.aa.h.call(this); var a = this.i; a.preventDefault ? a.preventDefault() : a.returnValue = !1 }; var Ot = "closure_listenable_" + (1e6 * Math.random() | 0), eo = 0; function to(a, c, f, y, b) { this.listener = a, this.proxy = null, this.src = c, this.type = f, this.capture = !!y, this.ha = b, this.key = ++eo, this.da = this.fa = !1 } function Ft(a) { a.da = !0, a.listener = null, a.proxy = null, a.src = null, a.ha = null } function ur(a) { this.src = a, this.g = {}, this.h = 0 } ur.prototype.add = function (a, c, f, y, b) { var D = a.toString(); a = this.g[D], a || (a = this.g[D] = [], this.h++); var H = cr(a, c, y, b); return -1 < H ? (c = a[H], f || (c.fa = !1)) : (c = new to(c, this.src, D, !!y, b), c.fa = f, a.push(c)), c }; function no(a, c) { var f = c.type; if (f in a.g) { var y = a.g[f], b = Array.prototype.indexOf.call(y, c, void 0), D; (D = 0 <= b) && Array.prototype.splice.call(y, b, 1), D && (Ft(c), a.g[f].length == 0 && (delete a.g[f], a.h--)) } } function cr(a, c, f, y) { for (var b = 0; b < a.length; ++b) { var D = a[b]; if (!D.da && D.listener == c && D.capture == !!f && D.ha == y) return b } return -1 } var Vn = "closure_lm_" + (1e6 * Math.random() | 0), dr = {}; function un(a, c, f, y, b) { if (Array.isArray(c)) { for (var D = 0; D < c.length; D++)un(a, c[D], f, y, b); return null } return f = Ki(f), a && a[Ot] ? a.K(c, f, h(y) ? !!y.capture : !1, b) : Ga(a, c, f, !1, y, b) } function Ga(a, c, f, y, b, D) { if (!c) throw Error("Invalid event type"); var H = h(b) ? !!b.capture : !!b, Se = Hi(a); if (Se || (a[Vn] = Se = new ur(a)), f = Se.add(c, f, y, H, D), f.proxy) return f; if (y = Qa(), f.proxy = y, y.src = a, y.listener = f, a.addEventListener) Qt || (b = H), b === void 0 && (b = !1), a.addEventListener(c.toString(), y, b); else if (a.attachEvent) a.attachEvent(Ya(c.toString()), y); else if (a.addListener && a.removeListener) a.addListener(y); else throw Error("addEventListener and attachEvent are unavailable."); return f } function Qa() { function a(f) { return c.call(a.src, a.listener, f) } const c = Wi; return a } function it(a, c, f, y, b) { if (Array.isArray(c)) for (var D = 0; D < c.length; D++)it(a, c[D], f, y, b); else y = h(y) ? !!y.capture : !!y, f = Ki(f), a && a[Ot] ? (a = a.i, c = String(c).toString(), c in a.g && (D = a.g[c], f = cr(D, f, y, b), -1 < f && (Ft(D[f]), Array.prototype.splice.call(D, f, 1), D.length == 0 && (delete a.g[c], a.h--)))) : a && (a = Hi(a)) && (c = a.g[c.toString()], a = -1, c && (a = cr(c, f, y, b)), (f = -1 < a ? c[a] : null) && hr(f)) } function hr(a) { if (typeof a != "number" && a && !a.da) { var c = a.src; if (c && c[Ot]) no(c.i, a); else { var f = a.type, y = a.proxy; c.removeEventListener ? c.removeEventListener(f, y, a.capture) : c.detachEvent ? c.detachEvent(Ya(f), y) : c.addListener && c.removeListener && c.removeListener(y), (f = Hi(c)) ? (no(f, a), f.h == 0 && (f.src = null, c[Vn] = null)) : Ft(a) } } } function Ya(a) { return a in dr ? dr[a] : dr[a] = "on" + a } function Wi(a, c) { if (a.da) a = !0; else { c = new Yt(c, this); var f = a.listener, y = a.ha || a.src; a.fa && hr(a), a = f.call(y, c) } return a } function Hi(a) { return a = a[Vn], a instanceof ur ? a : null } var qi = "__closure_events_fn_" + (1e9 * Math.random() >>> 0); function Ki(a) { return typeof a == "function" ? a : (a[qi] || (a[qi] = function (c) { return a.handleEvent(c) }), a[qi]) } function Ke() { O.call(this), this.i = new ur(this), this.M = this, this.F = null } R(Ke, O), Ke.prototype[Ot] = !0, Ke.prototype.removeEventListener = function (a, c, f, y) { it(this, a, c, f, y) }; function Ne(a, c) { var f, y = a.F; if (y) for (f = []; y; y = y.F)f.push(y); if (a = a.M, y = c.type || c, typeof c == "string") c = new Ce(c, a); else if (c instanceof Ce) c.target = c.target || a; else { var b = c; c = new Ce(y, a), k(c, b) } if (b = !0, f) for (var D = f.length - 1; 0 <= D; D--) { var H = c.g = f[D]; b = si(H, y, !0, c) && b } if (H = c.g = a, b = si(H, y, !0, c) && b, b = si(H, y, !1, c) && b, f) for (D = 0; D < f.length; D++)H = c.g = f[D], b = si(H, y, !1, c) && b } Ke.prototype.N = function () { if (Ke.aa.N.call(this), this.i) { var a = this.i, c; for (c in a.g) { for (var f = a.g[c], y = 0; y < f.length; y++)Ft(f[y]); delete a.g[c], a.h-- } } this.F = null }, Ke.prototype.K = function (a, c, f, y) { return this.i.add(String(a), c, !1, f, y) }, Ke.prototype.L = function (a, c, f, y) { return this.i.add(String(a), c, !0, f, y) }; function si(a, c, f, y) { if (c = a.i.g[String(c)], !c) return !0; c = c.concat(); for (var b = !0, D = 0; D < c.length; ++D) { var H = c[D]; if (H && !H.da && H.capture == f) { var Se = H.listener, st = H.ha || H.src; H.fa && no(a.i, H), b = Se.call(st, y) !== !1 && b } } return b && !y.defaultPrevented } function Pt(a, c, f) { if (typeof a == "function") f && (a = m(a, f)); else if (a && typeof a.handleEvent == "function") a = m(a.handleEvent, a); else throw Error("Invalid listener argument"); return 2147483647 < Number(c) ? -1 : l.setTimeout(a, c || 0) } function Gi(a) { a.g = Pt(() => { a.g = null, a.i && (a.i = !1, Gi(a)) }, a.l); const c = a.h; a.h = null, a.m.apply(null, c) } class zc extends O { constructor(c, f) { super(), this.m = c, this.l = f, this.h = null, this.i = !1, this.g = null } j(c) { this.h = arguments, this.g ? this.i = !0 : Gi(this) } N() { super.N(), this.g && (l.clearTimeout(this.g), this.g = null, this.i = !1, this.h = null) } } function Xt(a) { O.call(this), this.h = a, this.g = {} } R(Xt, O); var oi = []; function ro(a) { $(a.g, function (c, f) { this.g.hasOwnProperty(f) && hr(c) }, a), a.g = {} } Xt.prototype.N = function () { Xt.aa.N.call(this), ro(this) }, Xt.prototype.handleEvent = function () { throw Error("EventHandler.handleEvent not implemented") }; var Qi = l.JSON.stringify, Xa = l.JSON.parse, fr = class { stringify(a) { return l.JSON.stringify(a, void 0) } parse(a) { return l.JSON.parse(a, void 0) } }; function ai() { } ai.prototype.h = null; function On(a) { return a.h || (a.h = a.i()) } function Yi() { } var Fn = { OPEN: "a", kb: "b", Ja: "c", wb: "d" }; function li() { Ce.call(this, "d") } R(li, Ce); function pr() { Ce.call(this, "c") } R(pr, Ce); var cn = {}, io = null; function mr() { return io = io || new Ke } cn.La = "serverreachability"; function Xi(a) { Ce.call(this, cn.La, a) } R(Xi, Ce); function ui(a) { const c = mr(); Ne(c, new Xi(c)) } cn.STAT_EVENT = "statevent"; function Ja(a, c) { Ce.call(this, cn.STAT_EVENT, a), this.stat = c } R(Ja, Ce); function Ge(a) { const c = mr(); Ne(c, new Ja(c, a)) } cn.Ma = "timingevent"; function so(a, c) { Ce.call(this, cn.Ma, a), this.size = c } R(so, Ce); function Jt(a, c) { if (typeof a != "function") throw Error("Fn must not be null and must be a function"); return l.setTimeout(function () { a() }, c) } function N() { this.g = !0 } N.prototype.xa = function () { this.g = !1 }; function Bc(a, c, f, y, b, D) {
|
|
a.info(function () {
|
|
if (a.g) if (D) for (var H = "", Se = D.split("&"), st = 0; st < Se.length; st++) { var ye = Se[st].split("="); if (1 < ye.length) { var ft = ye[0]; ye = ye[1]; var pt = ft.split("_"); H = 2 <= pt.length && pt[1] == "type" ? H + (ft + "=" + ye + "&") : H + (ft + "=redacted&") } } else H = null; else H = D; return "XMLHTTP REQ (" + y + ") [attempt " + b + "]: " + c + `
|
|
`+ f + `
|
|
`+ H
|
|
})
|
|
} function $c(a, c, f, y, b, D, H) {
|
|
a.info(function () {
|
|
return "XMLHTTP RESP (" + y + ") [ attempt " + b + "]: " + c + `
|
|
`+ f + `
|
|
`+ D + " " + H
|
|
})
|
|
} function Zt(a, c, f, y) { a.info(function () { return "XMLHTTP TEXT (" + c + "): " + Wc(a, f) + (y ? " " + y : "") }) } function oo(a, c) { a.info(function () { return "TIMEOUT: " + c }) } N.prototype.info = function () { }; function Wc(a, c) { if (!a.g) return c; if (!c) return null; try { var f = JSON.parse(c); if (f) { for (a = 0; a < f.length; a++)if (Array.isArray(f[a])) { var y = f[a]; if (!(2 > y.length)) { var b = y[1]; if (Array.isArray(b) && !(1 > b.length)) { var D = b[0]; if (D != "noop" && D != "stop" && D != "close") for (var H = 1; H < b.length; H++)b[H] = "" } } } } return Qi(f) } catch { return c } } var Ji = { NO_ERROR: 0, gb: 1, tb: 2, sb: 3, nb: 4, rb: 5, ub: 6, Ia: 7, TIMEOUT: 8, xb: 9 }, Za = { lb: "complete", Hb: "success", Ja: "error", Ia: "abort", zb: "ready", Ab: "readystatechange", TIMEOUT: "timeout", vb: "incrementaldata", yb: "progress", ob: "downloadprogress", Pb: "uploadprogress" }, ao; function ci() { } R(ci, ai), ci.prototype.g = function () { return new XMLHttpRequest }, ci.prototype.i = function () { return {} }, ao = new ci; function xn(a, c, f, y) { this.j = a, this.i = c, this.l = f, this.R = y || 1, this.U = new Xt(this), this.I = 45e3, this.H = null, this.o = !1, this.m = this.A = this.v = this.L = this.F = this.S = this.B = null, this.D = [], this.g = null, this.C = 0, this.s = this.u = null, this.X = -1, this.J = !1, this.O = 0, this.M = null, this.W = this.K = this.T = this.P = !1, this.h = new dn } function dn() { this.i = null, this.g = "", this.h = !1 } var Zi = {}, di = {}; function lo(a, c, f) { a.L = 1, a.v = mi(en(c)), a.m = f, a.P = !0, el(a, null) } function el(a, c) { a.F = Date.now(), es(a), a.A = en(a.v); var f = a.A, y = a.R; Array.isArray(y) || (y = [String(y)]), ie(f.i, "t", y), a.C = 0, f = a.j.J, a.h = new dn, a.g = lm(a.j, f ? c : null, !a.m), 0 < a.O && (a.M = new zc(m(a.Y, a, a.g), a.O)), c = a.U, f = a.g, y = a.ca; var b = "readystatechange"; Array.isArray(b) || (b && (oi[0] = b.toString()), b = oi); for (var D = 0; D < b.length; D++) { var H = un(f, b[D], y || c.handleEvent, !1, c.h || c); if (!H) break; c.g[H.key] = H } c = a.H ? _(a.H) : {}, a.m ? (a.u || (a.u = "POST"), c["Content-Type"] = "application/x-www-form-urlencoded", a.g.ea(a.A, a.u, a.m, c)) : (a.u = "GET", a.g.ea(a.A, a.u, null, c)), ui(), Bc(a.i, a.u, a.A, a.l, a.R, a.m) } xn.prototype.ca = function (a) { a = a.target; const c = this.M; c && zn(a) == 3 ? c.j() : this.Y(a) }, xn.prototype.Y = function (a) { try { if (a == this.g) e: { const pt = zn(this.g); var c = this.g.Ba(); const ns = this.g.Z(); if (!(3 > pt) && (pt != 3 || this.g && (this.h.h || this.g.oa() || Xp(this.g)))) { this.J || pt != 4 || c == 7 || (c == 8 || 0 >= ns ? ui(3) : ui(2)), co(this); var f = this.g.Z(); this.X = f; t: if (uo(this)) { var y = Xp(this.g); a = ""; var b = y.length, D = zn(this.g) == 4; if (!this.h.i) { if (typeof TextDecoder > "u") { Un(this), gr(this); var H = ""; break t } this.h.i = new l.TextDecoder } for (c = 0; c < b; c++)this.h.h = !0, a += this.h.i.decode(y[c], { stream: !(D && c == b - 1) }); y.length = 0, this.h.g += a, this.C = 0, H = this.h.g } else H = this.g.oa(); if (this.o = f == 200, $c(this.i, this.u, this.A, this.l, this.R, pt, f), this.o) { if (this.T && !this.K) { t: { if (this.g) { var Se, st = this.g; if ((Se = st.g ? st.g.getResponseHeader("X-HTTP-Initial-Response") : null) && !E(Se)) { var ye = Se; break t } } ye = null } if (f = ye) Zt(this.i, this.l, f, "Initial handshake response via X-HTTP-Initial-Response"), this.K = !0, kn(this, f); else { this.o = !1, this.s = 3, Ge(12), Un(this), gr(this); break e } } if (this.P) { f = !0; let hn; for (; !this.J && this.C < H.length;)if (hn = tl(this, H), hn == di) { pt == 4 && (this.s = 4, Ge(14), f = !1), Zt(this.i, this.l, null, "[Incomplete Response]"); break } else if (hn == Zi) { this.s = 4, Ge(15), Zt(this.i, this.l, H, "[Invalid Chunk]"), f = !1; break } else Zt(this.i, this.l, hn, null), kn(this, hn); if (uo(this) && this.C != 0 && (this.h.g = this.h.g.slice(this.C), this.C = 0), pt != 4 || H.length != 0 || this.h.h || (this.s = 1, Ge(16), f = !1), this.o = this.o && f, !f) Zt(this.i, this.l, H, "[Invalid Chunked Response]"), Un(this), gr(this); else if (0 < H.length && !this.W) { this.W = !0; var ft = this.j; ft.g == this && ft.ba && !ft.M && (ft.j.info("Great, no buffering proxy detected. Bytes received: " + H.length), Xc(ft), ft.M = !0, Ge(11)) } } else Zt(this.i, this.l, H, null), kn(this, H); pt == 4 && Un(this), this.o && !this.J && (pt == 4 ? im(this.j, this) : (this.o = !1, es(this))) } else EE(this.g), f == 400 && 0 < H.indexOf("Unknown SID") ? (this.s = 3, Ge(12)) : (this.s = 0, Ge(13)), Un(this), gr(this) } } } catch { } finally { } }; function uo(a) { return a.g ? a.u == "GET" && a.L != 2 && a.j.Ca : !1 } function tl(a, c) {
|
|
var f = a.C, y = c.indexOf(`
|
|
`, f); return y == -1 ? di : (f = Number(c.substring(f, y)), isNaN(f) ? Zi : (y += 1, y + f > c.length ? di : (c = c.slice(y, y + f), a.C = y + f, c)))
|
|
} xn.prototype.cancel = function () { this.J = !0, Un(this) }; function es(a) { a.S = Date.now() + a.I, hi(a, a.I) } function hi(a, c) { if (a.B != null) throw Error("WatchDog timer not null"); a.B = Jt(m(a.ba, a), c) } function co(a) { a.B && (l.clearTimeout(a.B), a.B = null) } xn.prototype.ba = function () { this.B = null; const a = Date.now(); 0 <= a - this.S ? (oo(this.i, this.A), this.L != 2 && (ui(), Ge(17)), Un(this), this.s = 2, gr(this)) : hi(this, this.S - a) }; function gr(a) { a.j.G == 0 || a.J || im(a.j, a) } function Un(a) { co(a); var c = a.M; c && typeof c.ma == "function" && c.ma(), a.M = null, ro(a.U), a.g && (c = a.g, a.g = null, c.abort(), c.ma()) } function kn(a, c) { try { var f = a.j; if (f.G != 0 && (f.g == a || ho(f.h, a))) { if (!a.K && ho(f.h, a) && f.G == 3) { try { var y = f.Da.g.parse(c) } catch { y = null } if (Array.isArray(y) && y.length == 3) { var b = y; if (b[0] == 0) { e: if (!f.u) { if (f.g) if (f.g.F + 3e3 < a.F) gl(f), pl(f); else break e; Yc(f), Ge(18) } } else f.za = b[1], 0 < f.za - f.T && 37500 > b[2] && f.F && f.v == 0 && !f.C && (f.C = Jt(m(f.Za, f), 6e3)); if (1 >= il(f.h) && f.ca) { try { f.ca() } catch { } f.ca = void 0 } } else gi(f, 11) } else if ((a.K || f.g == a) && gl(f), !E(c)) for (b = f.Da.g.parse(c), c = 0; c < b.length; c++) { let ye = b[c]; if (f.T = ye[0], ye = ye[1], f.G == 2) if (ye[0] == "c") { f.K = ye[1], f.ia = ye[2]; const ft = ye[3]; ft != null && (f.la = ft, f.j.info("VER=" + f.la)); const pt = ye[4]; pt != null && (f.Aa = pt, f.j.info("SVER=" + f.Aa)); const ns = ye[5]; ns != null && typeof ns == "number" && 0 < ns && (y = 1.5 * ns, f.L = y, f.j.info("backChannelRequestTimeoutMs_=" + y)), y = f; const hn = a.g; if (hn) { const vl = hn.g ? hn.g.getResponseHeader("X-Client-Wire-Protocol") : null; if (vl) { var D = y.h; D.g || vl.indexOf("spdy") == -1 && vl.indexOf("quic") == -1 && vl.indexOf("h2") == -1 || (D.j = D.l, D.g = new Set, D.h && (fo(D, D.h), D.h = null)) } if (y.D) { const Jc = hn.g ? hn.g.getResponseHeader("X-HTTP-Session-Id") : null; Jc && (y.ya = Jc, ke(y.I, y.D, Jc)) } } f.G = 3, f.l && f.l.ua(), f.ba && (f.R = Date.now() - a.F, f.j.info("Handshake RTT: " + f.R + "ms")), y = f; var H = a; if (y.qa = am(y, y.J ? y.ia : null, y.W), H.K) { sl(y.h, H); var Se = H, st = y.L; st && (Se.I = st), Se.B && (co(Se), es(Se)), y.g = H } else nm(y); 0 < f.i.length && ml(f) } else ye[0] != "stop" && ye[0] != "close" || gi(f, 7); else f.G == 3 && (ye[0] == "stop" || ye[0] == "close" ? ye[0] == "stop" ? gi(f, 7) : Qc(f) : ye[0] != "noop" && f.l && f.l.ta(ye), f.v = 0) } } ui(4) } catch { } } var Hc = class { constructor(a, c) { this.g = a, this.map = c } }; function nl(a) { this.l = a || 10, l.PerformanceNavigationTiming ? (a = l.performance.getEntriesByType("navigation"), a = 0 < a.length && (a[0].nextHopProtocol == "hq" || a[0].nextHopProtocol == "h2")) : a = !!(l.chrome && l.chrome.loadTimes && l.chrome.loadTimes() && l.chrome.loadTimes().wasFetchedViaSpdy), this.j = a ? this.l : 1, this.g = null, 1 < this.j && (this.g = new Set), this.h = null, this.i = [] } function rl(a) { return a.h ? !0 : a.g ? a.g.size >= a.j : !1 } function il(a) { return a.h ? 1 : a.g ? a.g.size : 0 } function ho(a, c) { return a.h ? a.h == c : a.g ? a.g.has(c) : !1 } function fo(a, c) { a.g ? a.g.add(c) : a.h = c } function sl(a, c) { a.h && a.h == c ? a.h = null : a.g && a.g.has(c) && a.g.delete(c) } nl.prototype.cancel = function () { if (this.i = ol(this), this.h) this.h.cancel(), this.h = null; else if (this.g && this.g.size !== 0) { for (const a of this.g.values()) a.cancel(); this.g.clear() } }; function ol(a) { if (a.h != null) return a.i.concat(a.h.D); if (a.g != null && a.g.size !== 0) { let c = a.i; for (const f of a.g.values()) c = c.concat(f.D); return c } return L(a.i) } function qc(a) { if (a.V && typeof a.V == "function") return a.V(); if (typeof Map < "u" && a instanceof Map || typeof Set < "u" && a instanceof Set) return Array.from(a.values()); if (typeof a == "string") return a.split(""); if (u(a)) { for (var c = [], f = a.length, y = 0; y < f; y++)c.push(a[y]); return c } c = [], f = 0; for (y in a) c[f++] = a[y]; return c } function Kc(a) { if (a.na && typeof a.na == "function") return a.na(); if (!a.V || typeof a.V != "function") { if (typeof Map < "u" && a instanceof Map) return Array.from(a.keys()); if (!(typeof Set < "u" && a instanceof Set)) { if (u(a) || typeof a == "string") { var c = []; a = a.length; for (var f = 0; f < a; f++)c.push(f); return c } c = [], f = 0; for (const y in a) c[f++] = y; return c } } } function al(a, c) { if (a.forEach && typeof a.forEach == "function") a.forEach(c, void 0); else if (u(a) || typeof a == "string") Array.prototype.forEach.call(a, c, void 0); else for (var f = Kc(a), y = qc(a), b = y.length, D = 0; D < b; D++)c.call(void 0, y[D], f && f[D], a) } var ll = RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$"); function ul(a, c) { if (a) { a = a.split("&"); for (var f = 0; f < a.length; f++) { var y = a[f].indexOf("="), b = null; if (0 <= y) { var D = a[f].substring(0, y); b = a[f].substring(y + 1) } else D = a[f]; c(D, b ? decodeURIComponent(b.replace(/\+/g, " ")) : "") } } } function Tn(a) { if (this.g = this.o = this.j = "", this.s = null, this.m = this.l = "", this.h = !1, a instanceof Tn) { this.h = a.h, fi(this, a.j), this.o = a.o, this.g = a.g, pi(this, a.s), this.l = a.l; var c = a.i, f = new q; f.i = c.i, c.g && (f.g = new Map(c.g), f.h = c.h), po(this, f), this.m = a.m } else a && (c = String(a).match(ll)) ? (this.h = !1, fi(this, c[1] || "", !0), this.o = yr(c[2] || ""), this.g = yr(c[3] || "", !0), pi(this, c[4]), this.l = yr(c[5] || "", !0), po(this, c[6] || "", !0), this.m = yr(c[7] || "")) : (this.h = !1, this.i = new q(null, this.h)) } Tn.prototype.toString = function () { var a = [], c = this.j; c && a.push(vr(c, mo, !0), ":"); var f = this.g; return (f || c == "file") && (a.push("//"), (c = this.o) && a.push(vr(c, mo, !0), "@"), a.push(encodeURIComponent(String(f)).replace(/%25([0-9a-fA-F]{2})/g, "%$1")), f = this.s, f != null && a.push(":", String(f))), (f = this.l) && (this.g && f.charAt(0) != "/" && a.push("/"), a.push(vr(f, f.charAt(0) == "/" ? M : g, !0))), (f = this.i.toString()) && a.push("?", f), (f = this.m) && a.push("#", vr(f, Q)), a.join("") }; function en(a) { return new Tn(a) } function fi(a, c, f) { a.j = f ? yr(c, !0) : c, a.j && (a.j = a.j.replace(/:$/, "")) } function pi(a, c) { if (c) { if (c = Number(c), isNaN(c) || 0 > c) throw Error("Bad port number " + c); a.s = c } else a.s = null } function po(a, c, f) { c instanceof q ? (a.i = c, Ie(a.i, a.h)) : (f || (c = vr(c, U)), a.i = new q(c, a.h)) } function ke(a, c, f) { a.i.set(c, f) } function mi(a) { return ke(a, "zx", Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ Date.now()).toString(36)), a } function yr(a, c) { return a ? c ? decodeURI(a.replace(/%25/g, "%2525")) : decodeURIComponent(a) : "" } function vr(a, c, f) { return typeof a == "string" ? (a = encodeURI(a).replace(c, cl), f && (a = a.replace(/%25([0-9a-fA-F]{2})/g, "%$1")), a) : null } function cl(a) { return a = a.charCodeAt(0), "%" + (a >> 4 & 15).toString(16) + (a & 15).toString(16) } var mo = /[#\/\?@]/g, g = /[#\?:]/g, M = /[#\?]/g, U = /[#\?@]/g, Q = /#/g; function q(a, c) { this.h = this.g = null, this.i = a || null, this.j = !!c } function te(a) { a.g || (a.g = new Map, a.h = 0, a.i && ul(a.i, function (c, f) { a.add(decodeURIComponent(c.replace(/\+/g, " ")), f) })) } t = q.prototype, t.add = function (a, c) { te(this), this.i = null, a = Re(this, a); var f = this.g.get(a); return f || this.g.set(a, f = []), f.push(c), this.h += 1, this }; function oe(a, c) { te(a), c = Re(a, c), a.g.has(c) && (a.i = null, a.h -= a.g.get(c).length, a.g.delete(c)) } function Z(a, c) { return te(a), c = Re(a, c), a.g.has(c) } t.forEach = function (a, c) { te(this), this.g.forEach(function (f, y) { f.forEach(function (b) { a.call(c, b, y, this) }, this) }, this) }, t.na = function () { te(this); const a = Array.from(this.g.values()), c = Array.from(this.g.keys()), f = []; for (let y = 0; y < c.length; y++) { const b = a[y]; for (let D = 0; D < b.length; D++)f.push(c[y]) } return f }, t.V = function (a) { te(this); let c = []; if (typeof a == "string") Z(this, a) && (c = c.concat(this.g.get(Re(this, a)))); else { a = Array.from(this.g.values()); for (let f = 0; f < a.length; f++)c = c.concat(a[f]) } return c }, t.set = function (a, c) { return te(this), this.i = null, a = Re(this, a), Z(this, a) && (this.h -= this.g.get(a).length), this.g.set(a, [c]), this.h += 1, this }, t.get = function (a, c) { return a ? (a = this.V(a), 0 < a.length ? String(a[0]) : c) : c }; function ie(a, c, f) { oe(a, c), 0 < f.length && (a.i = null, a.g.set(Re(a, c), L(f)), a.h += f.length) } t.toString = function () { if (this.i) return this.i; if (!this.g) return ""; const a = [], c = Array.from(this.g.keys()); for (var f = 0; f < c.length; f++) { var y = c[f]; const D = encodeURIComponent(String(y)), H = this.V(y); for (y = 0; y < H.length; y++) { var b = D; H[y] !== "" && (b += "=" + encodeURIComponent(String(H[y]))), a.push(b) } } return this.i = a.join("&") }; function Re(a, c) { return c = String(c), a.j && (c = c.toLowerCase()), c } function Ie(a, c) { c && !a.j && (te(a), a.i = null, a.g.forEach(function (f, y) { var b = y.toLowerCase(); y != b && (oe(this, y), ie(this, b, f)) }, a)), a.j = c } function pe(a, c) { const f = new N; if (l.Image) { const y = new Image; y.onload = C(_r, f, "TestLoadImage: loaded", !0, c, y), y.onerror = C(_r, f, "TestLoadImage: error", !1, c, y), y.onabort = C(_r, f, "TestLoadImage: abort", !1, c, y), y.ontimeout = C(_r, f, "TestLoadImage: timeout", !1, c, y), l.setTimeout(function () { y.ontimeout && y.ontimeout() }, 1e4), y.src = a } else c(!1) } function go(a, c) { const f = new N, y = new AbortController, b = setTimeout(() => { y.abort(), _r(f, "TestPingServer: timeout", !1, c) }, 1e4); fetch(a, { signal: y.signal }).then(D => { clearTimeout(b), D.ok ? _r(f, "TestPingServer: ok", !0, c) : _r(f, "TestPingServer: server error", !1, c) }).catch(() => { clearTimeout(b), _r(f, "TestPingServer: error", !1, c) }) } function _r(a, c, f, y, b) { try { b && (b.onload = null, b.onerror = null, b.onabort = null, b.ontimeout = null), y(f) } catch { } } function yE() { this.g = new fr } function vE(a, c, f) { const y = f || ""; try { al(a, function (b, D) { let H = b; h(b) && (H = Qi(b)), c.push(y + D + "=" + encodeURIComponent(H)) }) } catch (b) { throw c.push(y + "type=" + encodeURIComponent("_badmap")), b } } function dl(a) { this.l = a.Ub || null, this.j = a.eb || !1 } R(dl, ai), dl.prototype.g = function () { return new hl(this.l, this.j) }, dl.prototype.i = function (a) { return function () { return a } }({}); function hl(a, c) { Ke.call(this), this.D = a, this.o = c, this.m = void 0, this.status = this.readyState = 0, this.responseType = this.responseText = this.response = this.statusText = "", this.onreadystatechange = null, this.u = new Headers, this.h = null, this.B = "GET", this.A = "", this.g = !1, this.v = this.j = this.l = null } R(hl, Ke), t = hl.prototype, t.open = function (a, c) { if (this.readyState != 0) throw this.abort(), Error("Error reopening a connection"); this.B = a, this.A = c, this.readyState = 1, vo(this) }, t.send = function (a) { if (this.readyState != 1) throw this.abort(), Error("need to call open() first. "); this.g = !0; const c = { headers: this.u, method: this.B, credentials: this.m, cache: void 0 }; a && (c.body = a), (this.D || l).fetch(new Request(this.A, c)).then(this.Sa.bind(this), this.ga.bind(this)) }, t.abort = function () { this.response = this.responseText = "", this.u = new Headers, this.status = 0, this.j && this.j.cancel("Request was aborted.").catch(() => { }), 1 <= this.readyState && this.g && this.readyState != 4 && (this.g = !1, yo(this)), this.readyState = 0 }, t.Sa = function (a) { if (this.g && (this.l = a, this.h || (this.status = this.l.status, this.statusText = this.l.statusText, this.h = a.headers, this.readyState = 2, vo(this)), this.g && (this.readyState = 3, vo(this), this.g))) if (this.responseType === "arraybuffer") a.arrayBuffer().then(this.Qa.bind(this), this.ga.bind(this)); else if (typeof l.ReadableStream < "u" && "body" in a) { if (this.j = a.body.getReader(), this.o) { if (this.responseType) throw Error('responseType must be empty for "streamBinaryChunks" mode responses.'); this.response = [] } else this.response = this.responseText = "", this.v = new TextDecoder; Hp(this) } else a.text().then(this.Ra.bind(this), this.ga.bind(this)) }; function Hp(a) { a.j.read().then(a.Pa.bind(a)).catch(a.ga.bind(a)) } t.Pa = function (a) { if (this.g) { if (this.o && a.value) this.response.push(a.value); else if (!this.o) { var c = a.value ? a.value : new Uint8Array(0); (c = this.v.decode(c, { stream: !a.done })) && (this.response = this.responseText += c) } a.done ? yo(this) : vo(this), this.readyState == 3 && Hp(this) } }, t.Ra = function (a) { this.g && (this.response = this.responseText = a, yo(this)) }, t.Qa = function (a) { this.g && (this.response = a, yo(this)) }, t.ga = function () { this.g && yo(this) }; function yo(a) { a.readyState = 4, a.l = null, a.j = null, a.v = null, vo(a) } t.setRequestHeader = function (a, c) { this.u.append(a, c) }, t.getResponseHeader = function (a) { return this.h && this.h.get(a.toLowerCase()) || "" }, t.getAllResponseHeaders = function () {
|
|
if (!this.h) return ""; const a = [], c = this.h.entries(); for (var f = c.next(); !f.done;)f = f.value, a.push(f[0] + ": " + f[1]), f = c.next(); return a.join(`\r
|
|
`)
|
|
}; function vo(a) { a.onreadystatechange && a.onreadystatechange.call(a) } Object.defineProperty(hl.prototype, "withCredentials", { get: function () { return this.m === "include" }, set: function (a) { this.m = a ? "include" : "same-origin" } }); function qp(a) {
|
|
let c = ""; return $(a, function (f, y) {
|
|
c += y, c += ":", c += f, c += `\r
|
|
`}), c
|
|
} function Gc(a, c, f) { e: { for (y in f) { var y = !1; break e } y = !0 } y || (f = qp(f), typeof a == "string" ? f != null && encodeURIComponent(String(f)) : ke(a, c, f)) } function Fe(a) { Ke.call(this), this.headers = new Map, this.o = a || null, this.h = !1, this.v = this.g = null, this.D = "", this.m = 0, this.l = "", this.j = this.B = this.u = this.A = !1, this.I = null, this.H = "", this.J = !1 } R(Fe, Ke); var _E = /^https?$/i, wE = ["POST", "PUT"]; t = Fe.prototype, t.Ha = function (a) { this.J = a }, t.ea = function (a, c, f, y) { if (this.g) throw Error("[goog.net.XhrIo] Object is active with another request=" + this.D + "; newUri=" + a); c = c ? c.toUpperCase() : "GET", this.D = a, this.l = "", this.m = 0, this.A = !1, this.h = !0, this.g = this.o ? this.o.g() : ao.g(), this.v = this.o ? On(this.o) : On(ao), this.g.onreadystatechange = m(this.Ea, this); try { this.B = !0, this.g.open(c, String(a), !0), this.B = !1 } catch (D) { Kp(this, D); return } if (a = f || "", f = new Map(this.headers), y) if (Object.getPrototypeOf(y) === Object.prototype) for (var b in y) f.set(b, y[b]); else if (typeof y.keys == "function" && typeof y.get == "function") for (const D of y.keys()) f.set(D, y.get(D)); else throw Error("Unknown input type for opt_headers: " + String(y)); y = Array.from(f.keys()).find(D => D.toLowerCase() == "content-type"), b = l.FormData && a instanceof l.FormData, !(0 <= Array.prototype.indexOf.call(wE, c, void 0)) || y || b || f.set("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); for (const [D, H] of f) this.g.setRequestHeader(D, H); this.H && (this.g.responseType = this.H), "withCredentials" in this.g && this.g.withCredentials !== this.J && (this.g.withCredentials = this.J); try { Yp(this), this.u = !0, this.g.send(a), this.u = !1 } catch (D) { Kp(this, D) } }; function Kp(a, c) { a.h = !1, a.g && (a.j = !0, a.g.abort(), a.j = !1), a.l = c, a.m = 5, Gp(a), fl(a) } function Gp(a) { a.A || (a.A = !0, Ne(a, "complete"), Ne(a, "error")) } t.abort = function (a) { this.g && this.h && (this.h = !1, this.j = !0, this.g.abort(), this.j = !1, this.m = a || 7, Ne(this, "complete"), Ne(this, "abort"), fl(this)) }, t.N = function () { this.g && (this.h && (this.h = !1, this.j = !0, this.g.abort(), this.j = !1), fl(this, !0)), Fe.aa.N.call(this) }, t.Ea = function () { this.s || (this.B || this.u || this.j ? Qp(this) : this.bb()) }, t.bb = function () { Qp(this) }; function Qp(a) { if (a.h && typeof o < "u" && (!a.v[1] || zn(a) != 4 || a.Z() != 2)) { if (a.u && zn(a) == 4) Pt(a.Ea, 0, a); else if (Ne(a, "readystatechange"), zn(a) == 4) { a.h = !1; try { const H = a.Z(); e: switch (H) { case 200: case 201: case 202: case 204: case 206: case 304: case 1223: var c = !0; break e; default: c = !1 }var f; if (!(f = c)) { var y; if (y = H === 0) { var b = String(a.D).match(ll)[1] || null; !b && l.self && l.self.location && (b = l.self.location.protocol.slice(0, -1)), y = !_E.test(b ? b.toLowerCase() : "") } f = y } if (f) Ne(a, "complete"), Ne(a, "success"); else { a.m = 6; try { var D = 2 < zn(a) ? a.g.statusText : "" } catch { D = "" } a.l = D + " [" + a.Z() + "]", Gp(a) } } finally { fl(a) } } } } function fl(a, c) { if (a.g) { Yp(a); const f = a.g, y = a.v[0] ? () => { } : null; a.g = null, a.v = null, c || Ne(a, "ready"); try { f.onreadystatechange = y } catch { } } } function Yp(a) { a.I && (l.clearTimeout(a.I), a.I = null) } t.isActive = function () { return !!this.g }; function zn(a) { return a.g ? a.g.readyState : 0 } t.Z = function () { try { return 2 < zn(this) ? this.g.status : -1 } catch { return -1 } }, t.oa = function () { try { return this.g ? this.g.responseText : "" } catch { return "" } }, t.Oa = function (a) { if (this.g) { var c = this.g.responseText; return a && c.indexOf(a) == 0 && (c = c.substring(a.length)), Xa(c) } }; function Xp(a) { try { if (!a.g) return null; if ("response" in a.g) return a.g.response; switch (a.H) { case "": case "text": return a.g.responseText; case "arraybuffer": if ("mozResponseArrayBuffer" in a.g) return a.g.mozResponseArrayBuffer }return null } catch { return null } } function EE(a) {
|
|
const c = {}; a = (a.g && 2 <= zn(a) && a.g.getAllResponseHeaders() || "").split(`\r
|
|
`); for (let y = 0; y < a.length; y++) { if (E(a[y])) continue; var f = A(a[y]); const b = f[0]; if (f = f[1], typeof f != "string") continue; f = f.trim(); const D = c[b] || []; c[b] = D, D.push(f) } x(c, function (y) { return y.join(", ") })
|
|
} t.Ba = function () { return this.m }, t.Ka = function () { return typeof this.l == "string" ? this.l : String(this.l) }; function _o(a, c, f) { return f && f.internalChannelParams && f.internalChannelParams[a] || c } function Jp(a) { this.Aa = 0, this.i = [], this.j = new N, this.ia = this.qa = this.I = this.W = this.g = this.ya = this.D = this.H = this.m = this.S = this.o = null, this.Ya = this.U = 0, this.Va = _o("failFast", !1, a), this.F = this.C = this.u = this.s = this.l = null, this.X = !0, this.za = this.T = -1, this.Y = this.v = this.B = 0, this.Ta = _o("baseRetryDelayMs", 5e3, a), this.cb = _o("retryDelaySeedMs", 1e4, a), this.Wa = _o("forwardChannelMaxRetries", 2, a), this.wa = _o("forwardChannelRequestTimeoutMs", 2e4, a), this.pa = a && a.xmlHttpFactory || void 0, this.Xa = a && a.Tb || void 0, this.Ca = a && a.useFetchStreams || !1, this.L = void 0, this.J = a && a.supportsCrossDomainXhr || !1, this.K = "", this.h = new nl(a && a.concurrentRequestLimit), this.Da = new yE, this.P = a && a.fastHandshake || !1, this.O = a && a.encodeInitMessageHeaders || !1, this.P && this.O && (this.O = !1), this.Ua = a && a.Rb || !1, a && a.xa && this.j.xa(), a && a.forceLongPolling && (this.X = !1), this.ba = !this.P && this.X && a && a.detectBufferingProxy || !1, this.ja = void 0, a && a.longPollingTimeout && 0 < a.longPollingTimeout && (this.ja = a.longPollingTimeout), this.ca = void 0, this.R = 0, this.M = !1, this.ka = this.A = null } t = Jp.prototype, t.la = 8, t.G = 1, t.connect = function (a, c, f, y) { Ge(0), this.W = a, this.H = c || {}, f && y !== void 0 && (this.H.OSID = f, this.H.OAID = y), this.F = this.X, this.I = am(this, null, this.W), ml(this) }; function Qc(a) { if (Zp(a), a.G == 3) { var c = a.U++, f = en(a.I); if (ke(f, "SID", a.K), ke(f, "RID", c), ke(f, "TYPE", "terminate"), wo(a, f), c = new xn(a, a.j, c), c.L = 2, c.v = mi(en(f)), f = !1, l.navigator && l.navigator.sendBeacon) try { f = l.navigator.sendBeacon(c.v.toString(), "") } catch { } !f && l.Image && (new Image().src = c.v, f = !0), f || (c.g = lm(c.j, null), c.g.ea(c.v)), c.F = Date.now(), es(c) } om(a) } function pl(a) { a.g && (Xc(a), a.g.cancel(), a.g = null) } function Zp(a) { pl(a), a.u && (l.clearTimeout(a.u), a.u = null), gl(a), a.h.cancel(), a.s && (typeof a.s == "number" && l.clearTimeout(a.s), a.s = null) } function ml(a) { if (!rl(a.h) && !a.s) { a.s = !0; var c = a.Ga; Nt || ee(), W || (Nt(), W = !0), ne.add(c, a), a.B = 0 } } function xE(a, c) { return il(a.h) >= a.h.j - (a.s ? 1 : 0) ? !1 : a.s ? (a.i = c.D.concat(a.i), !0) : a.G == 1 || a.G == 2 || a.B >= (a.Va ? 0 : a.Wa) ? !1 : (a.s = Jt(m(a.Ga, a, c), sm(a, a.B)), a.B++, !0) } t.Ga = function (a) { if (this.s) if (this.s = null, this.G == 1) { if (!a) { this.U = Math.floor(1e5 * Math.random()), a = this.U++; const b = new xn(this, this.j, a); let D = this.o; if (this.S && (D ? (D = _(D), k(D, this.S)) : D = this.S), this.m !== null || this.O || (b.H = D, D = null), this.P) e: { for (var c = 0, f = 0; f < this.i.length; f++) { t: { var y = this.i[f]; if ("__data__" in y.map && (y = y.map.__data__, typeof y == "string")) { y = y.length; break t } y = void 0 } if (y === void 0) break; if (c += y, 4096 < c) { c = f; break e } if (c === 4096 || f === this.i.length - 1) { c = f + 1; break e } } c = 1e3 } else c = 1e3; c = tm(this, b, c), f = en(this.I), ke(f, "RID", a), ke(f, "CVER", 22), this.D && ke(f, "X-HTTP-Session-Id", this.D), wo(this, f), D && (this.O ? c = "headers=" + encodeURIComponent(String(qp(D))) + "&" + c : this.m && Gc(f, this.m, D)), fo(this.h, b), this.Ua && ke(f, "TYPE", "init"), this.P ? (ke(f, "$req", c), ke(f, "SID", "null"), b.T = !0, lo(b, f, null)) : lo(b, f, c), this.G = 2 } } else this.G == 3 && (a ? em(this, a) : this.i.length == 0 || rl(this.h) || em(this)) }; function em(a, c) { var f; c ? f = c.l : f = a.U++; const y = en(a.I); ke(y, "SID", a.K), ke(y, "RID", f), ke(y, "AID", a.T), wo(a, y), a.m && a.o && Gc(y, a.m, a.o), f = new xn(a, a.j, f, a.B + 1), a.m === null && (f.H = a.o), c && (a.i = c.D.concat(a.i)), c = tm(a, f, 1e3), f.I = Math.round(.5 * a.wa) + Math.round(.5 * a.wa * Math.random()), fo(a.h, f), lo(f, y, c) } function wo(a, c) { a.H && $(a.H, function (f, y) { ke(c, y, f) }), a.l && al({}, function (f, y) { ke(c, y, f) }) } function tm(a, c, f) { f = Math.min(a.i.length, f); var y = a.l ? m(a.l.Na, a.l, a) : null; e: { var b = a.i; let D = -1; for (; ;) { const H = ["count=" + f]; D == -1 ? 0 < f ? (D = b[0].g, H.push("ofs=" + D)) : D = 0 : H.push("ofs=" + D); let Se = !0; for (let st = 0; st < f; st++) { let ye = b[st].g; const ft = b[st].map; if (ye -= D, 0 > ye) D = Math.max(0, b[st].g - 100), Se = !1; else try { vE(ft, H, "req" + ye + "_") } catch { y && y(ft) } } if (Se) { y = H.join("&"); break e } } } return a = a.i.splice(0, f), c.D = a, y } function nm(a) { if (!a.g && !a.u) { a.Y = 1; var c = a.Fa; Nt || ee(), W || (Nt(), W = !0), ne.add(c, a), a.v = 0 } } function Yc(a) { return a.g || a.u || 3 <= a.v ? !1 : (a.Y++, a.u = Jt(m(a.Fa, a), sm(a, a.v)), a.v++, !0) } t.Fa = function () { if (this.u = null, rm(this), this.ba && !(this.M || this.g == null || 0 >= this.R)) { var a = 2 * this.R; this.j.info("BP detection timer enabled: " + a), this.A = Jt(m(this.ab, this), a) } }, t.ab = function () { this.A && (this.A = null, this.j.info("BP detection timeout reached."), this.j.info("Buffering proxy detected and switch to long-polling!"), this.F = !1, this.M = !0, Ge(10), pl(this), rm(this)) }; function Xc(a) { a.A != null && (l.clearTimeout(a.A), a.A = null) } function rm(a) { a.g = new xn(a, a.j, "rpc", a.Y), a.m === null && (a.g.H = a.o), a.g.O = 0; var c = en(a.qa); ke(c, "RID", "rpc"), ke(c, "SID", a.K), ke(c, "AID", a.T), ke(c, "CI", a.F ? "0" : "1"), !a.F && a.ja && ke(c, "TO", a.ja), ke(c, "TYPE", "xmlhttp"), wo(a, c), a.m && a.o && Gc(c, a.m, a.o), a.L && (a.g.I = a.L); var f = a.g; a = a.ia, f.L = 1, f.v = mi(en(c)), f.m = null, f.P = !0, el(f, a) } t.Za = function () { this.C != null && (this.C = null, pl(this), Yc(this), Ge(19)) }; function gl(a) { a.C != null && (l.clearTimeout(a.C), a.C = null) } function im(a, c) { var f = null; if (a.g == c) { gl(a), Xc(a), a.g = null; var y = 2 } else if (ho(a.h, c)) f = c.D, sl(a.h, c), y = 1; else return; if (a.G != 0) { if (c.o) if (y == 1) { f = c.m ? c.m.length : 0, c = Date.now() - c.F; var b = a.B; y = mr(), Ne(y, new so(y, f)), ml(a) } else nm(a); else if (b = c.s, b == 3 || b == 0 && 0 < c.X || !(y == 1 && xE(a, c) || y == 2 && Yc(a))) switch (f && 0 < f.length && (c = a.h, c.i = c.i.concat(f)), b) { case 1: gi(a, 5); break; case 4: gi(a, 10); break; case 3: gi(a, 6); break; default: gi(a, 2) } } } function sm(a, c) { let f = a.Ta + Math.floor(Math.random() * a.cb); return a.isActive() || (f *= 2), f * c } function gi(a, c) { if (a.j.info("Error code " + c), c == 2) { var f = m(a.fb, a), y = a.Xa; const b = !y; y = new Tn(y || "//www.google.com/images/cleardot.gif"), l.location && l.location.protocol == "http" || fi(y, "https"), mi(y), b ? pe(y.toString(), f) : go(y.toString(), f) } else Ge(2); a.G = 0, a.l && a.l.sa(c), om(a), Zp(a) } t.fb = function (a) { a ? (this.j.info("Successfully pinged google.com"), Ge(2)) : (this.j.info("Failed to ping google.com"), Ge(1)) }; function om(a) { if (a.G = 0, a.ka = [], a.l) { const c = ol(a.h); (c.length != 0 || a.i.length != 0) && (V(a.ka, c), V(a.ka, a.i), a.h.i.length = 0, L(a.i), a.i.length = 0), a.l.ra() } } function am(a, c, f) { var y = f instanceof Tn ? en(f) : new Tn(f); if (y.g != "") c && (y.g = c + "." + y.g), pi(y, y.s); else { var b = l.location; y = b.protocol, c = c ? c + "." + b.hostname : b.hostname, b = +b.port; var D = new Tn(null); y && fi(D, y), c && (D.g = c), b && pi(D, b), f && (D.l = f), y = D } return f = a.D, c = a.ya, f && c && ke(y, f, c), ke(y, "VER", a.la), wo(a, y), y } function lm(a, c, f) { if (c && !a.J) throw Error("Can't create secondary domain capable XhrIo object."); return c = a.Ca && !a.pa ? new Fe(new dl({ eb: f })) : new Fe(a.pa), c.Ha(a.J), c } t.isActive = function () { return !!this.l && this.l.isActive(this) }; function um() { } t = um.prototype, t.ua = function () { }, t.ta = function () { }, t.sa = function () { }, t.ra = function () { }, t.isActive = function () { return !0 }, t.Na = function () { }; function yl() { } yl.prototype.g = function (a, c) { return new Ut(a, c) }; function Ut(a, c) { Ke.call(this), this.g = new Jp(c), this.l = a, this.h = c && c.messageUrlParams || null, a = c && c.messageHeaders || null, c && c.clientProtocolHeaderRequired && (a ? a["X-Client-Protocol"] = "webchannel" : a = { "X-Client-Protocol": "webchannel" }), this.g.o = a, a = c && c.initMessageHeaders || null, c && c.messageContentType && (a ? a["X-WebChannel-Content-Type"] = c.messageContentType : a = { "X-WebChannel-Content-Type": c.messageContentType }), c && c.va && (a ? a["X-WebChannel-Client-Profile"] = c.va : a = { "X-WebChannel-Client-Profile": c.va }), this.g.S = a, (a = c && c.Sb) && !E(a) && (this.g.m = a), this.v = c && c.supportsCrossDomainXhr || !1, this.u = c && c.sendRawJson || !1, (c = c && c.httpSessionIdParam) && !E(c) && (this.g.D = c, a = this.h, a !== null && c in a && (a = this.h, c in a && delete a[c])), this.j = new ts(this) } R(Ut, Ke), Ut.prototype.m = function () { this.g.l = this.j, this.v && (this.g.J = !0), this.g.connect(this.l, this.h || void 0) }, Ut.prototype.close = function () { Qc(this.g) }, Ut.prototype.o = function (a) { var c = this.g; if (typeof a == "string") { var f = {}; f.__data__ = a, a = f } else this.u && (f = {}, f.__data__ = Qi(a), a = f); c.i.push(new Hc(c.Ya++, a)), c.G == 3 && ml(c) }, Ut.prototype.N = function () { this.g.l = null, delete this.j, Qc(this.g), delete this.g, Ut.aa.N.call(this) }; function cm(a) { li.call(this), a.__headers__ && (this.headers = a.__headers__, this.statusCode = a.__status__, delete a.__headers__, delete a.__status__); var c = a.__sm__; if (c) { e: { for (const f in c) { a = f; break e } a = void 0 } (this.i = a) && (a = this.i, c = c !== null && a in c ? c[a] : void 0), this.data = c } else this.data = a } R(cm, li); function dm() { pr.call(this), this.status = 1 } R(dm, pr); function ts(a) { this.g = a } R(ts, um), ts.prototype.ua = function () { Ne(this.g, "a") }, ts.prototype.ta = function (a) { Ne(this.g, new cm(a)) }, ts.prototype.sa = function (a) { Ne(this.g, new dm) }, ts.prototype.ra = function () { Ne(this.g, "b") }, yl.prototype.createWebChannel = yl.prototype.g, Ut.prototype.send = Ut.prototype.o, Ut.prototype.open = Ut.prototype.m, Ut.prototype.close = Ut.prototype.close, Z_ = function () { return new yl }, J_ = function () { return mr() }, X_ = cn, Hh = { mb: 0, pb: 1, qb: 2, Jb: 3, Ob: 4, Lb: 5, Mb: 6, Kb: 7, Ib: 8, Nb: 9, PROXY: 10, NOPROXY: 11, Gb: 12, Cb: 13, Db: 14, Bb: 15, Eb: 16, Fb: 17, ib: 18, hb: 19, jb: 20 }, Ji.NO_ERROR = 0, Ji.TIMEOUT = 8, Ji.HTTP_ERROR = 6, du = Ji, Za.COMPLETE = "complete", Y_ = Za, Yi.EventType = Fn, Fn.OPEN = "a", Fn.CLOSE = "b", Fn.ERROR = "c", Fn.MESSAGE = "d", Ke.prototype.listen = Ke.prototype.K, Fo = Yi, Fe.prototype.listenOnce = Fe.prototype.L, Fe.prototype.getLastError = Fe.prototype.Ka, Fe.prototype.getLastErrorCode = Fe.prototype.Ba, Fe.prototype.getStatus = Fe.prototype.Z, Fe.prototype.getResponseJson = Fe.prototype.Oa, Fe.prototype.getResponseText = Fe.prototype.oa, Fe.prototype.send = Fe.prototype.ea, Fe.prototype.setWithCredentials = Fe.prototype.Ha, Q_ = Fe
|
|
}).apply(typeof zl < "u" ? zl : typeof self < "u" ? self : typeof window < "u" ? window : {}); const oy = "@firebase/firestore";/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class vt { constructor(e) { this.uid = e } isAuthenticated() { return this.uid != null } toKey() { return this.isAuthenticated() ? "uid:" + this.uid : "anonymous-user" } isEqual(e) { return e.uid === this.uid } } vt.UNAUTHENTICATED = new vt(null), vt.GOOGLE_CREDENTIALS = new vt("google-credentials-uid"), vt.FIRST_PARTY = new vt("first-party-uid"), vt.MOCK_USER = new vt("mock-user");/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/let Xs = "10.14.0";/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const ji = new np("@firebase/firestore"); function Po() { return ji.logLevel } function X(t, ...e) { if (ji.logLevel <= he.DEBUG) { const n = e.map(pp); ji.debug(`Firestore (${Xs}): ${t}`, ...n) } } function ir(t, ...e) { if (ji.logLevel <= he.ERROR) { const n = e.map(pp); ji.error(`Firestore (${Xs}): ${t}`, ...n) } } function Fs(t, ...e) { if (ji.logLevel <= he.WARN) { const n = e.map(pp); ji.warn(`Firestore (${Xs}): ${t}`, ...n) } } function pp(t) {
|
|
if (typeof t == "string") return t; try {/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/return function (n) { return JSON.stringify(n) }(t)
|
|
} catch { return t }
|
|
}/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function ae(t = "Unexpected state") { const e = `FIRESTORE (${Xs}) INTERNAL ASSERTION FAILED: ` + t; throw ir(e), new Error(e) } function Ee(t, e) { t || ae() } function ue(t, e) { return t }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const F = { OK: "ok", CANCELLED: "cancelled", UNKNOWN: "unknown", INVALID_ARGUMENT: "invalid-argument", DEADLINE_EXCEEDED: "deadline-exceeded", NOT_FOUND: "not-found", ALREADY_EXISTS: "already-exists", PERMISSION_DENIED: "permission-denied", UNAUTHENTICATED: "unauthenticated", RESOURCE_EXHAUSTED: "resource-exhausted", FAILED_PRECONDITION: "failed-precondition", ABORTED: "aborted", OUT_OF_RANGE: "out-of-range", UNIMPLEMENTED: "unimplemented", INTERNAL: "internal", UNAVAILABLE: "unavailable", DATA_LOSS: "data-loss" }; class J extends lr { constructor(e, n) { super(e, n), this.code = e, this.message = n, this.toString = () => `${this.name}: [code=${this.code}]: ${this.message}` } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Hr { constructor() { this.promise = new Promise((e, n) => { this.resolve = e, this.reject = n }) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ew { constructor(e, n) { this.user = n, this.type = "OAuth", this.headers = new Map, this.headers.set("Authorization", `Bearer ${e}`) } } class sA { getToken() { return Promise.resolve(null) } invalidateToken() { } start(e, n) { e.enqueueRetryable(() => n(vt.UNAUTHENTICATED)) } shutdown() { } } class oA { constructor(e) { this.token = e, this.changeListener = null } getToken() { return Promise.resolve(this.token) } invalidateToken() { } start(e, n) { this.changeListener = n, e.enqueueRetryable(() => n(this.token.user)) } shutdown() { this.changeListener = null } } class aA { constructor(e) { this.t = e, this.currentUser = vt.UNAUTHENTICATED, this.i = 0, this.forceRefresh = !1, this.auth = null } start(e, n) { Ee(this.o === void 0); let r = this.i; const i = u => this.i !== r ? (r = this.i, n(u)) : Promise.resolve(); let s = new Hr; this.o = () => { this.i++, this.currentUser = this.u(), s.resolve(), s = new Hr, e.enqueueRetryable(() => i(this.currentUser)) }; const o = () => { const u = s; e.enqueueRetryable(async () => { await u.promise, await i(this.currentUser) }) }, l = u => { X("FirebaseAuthCredentialsProvider", "Auth detected"), this.auth = u, this.o && (this.auth.addAuthTokenListener(this.o), o()) }; this.t.onInit(u => l(u)), setTimeout(() => { if (!this.auth) { const u = this.t.getImmediate({ optional: !0 }); u ? l(u) : (X("FirebaseAuthCredentialsProvider", "Auth not yet detected"), s.resolve(), s = new Hr) } }, 0), o() } getToken() { const e = this.i, n = this.forceRefresh; return this.forceRefresh = !1, this.auth ? this.auth.getToken(n).then(r => this.i !== e ? (X("FirebaseAuthCredentialsProvider", "getToken aborted due to token change."), this.getToken()) : r ? (Ee(typeof r.accessToken == "string"), new ew(r.accessToken, this.currentUser)) : null) : Promise.resolve(null) } invalidateToken() { this.forceRefresh = !0 } shutdown() { this.auth && this.o && this.auth.removeAuthTokenListener(this.o), this.o = void 0 } u() { const e = this.auth && this.auth.getUid(); return Ee(e === null || typeof e == "string"), new vt(e) } } class lA { constructor(e, n, r) { this.l = e, this.h = n, this.P = r, this.type = "FirstParty", this.user = vt.FIRST_PARTY, this.I = new Map } T() { return this.P ? this.P() : null } get headers() { this.I.set("X-Goog-AuthUser", this.l); const e = this.T(); return e && this.I.set("Authorization", e), this.h && this.I.set("X-Goog-Iam-Authorization-Token", this.h), this.I } } class uA { constructor(e, n, r) { this.l = e, this.h = n, this.P = r } getToken() { return Promise.resolve(new lA(this.l, this.h, this.P)) } start(e, n) { e.enqueueRetryable(() => n(vt.FIRST_PARTY)) } shutdown() { } invalidateToken() { } } class cA { constructor(e) { this.value = e, this.type = "AppCheck", this.headers = new Map, e && e.length > 0 && this.headers.set("x-firebase-appcheck", this.value) } } class dA { constructor(e) { this.A = e, this.forceRefresh = !1, this.appCheck = null, this.R = null } start(e, n) { Ee(this.o === void 0); const r = s => { s.error != null && X("FirebaseAppCheckTokenProvider", `Error getting App Check token; using placeholder token instead. Error: ${s.error.message}`); const o = s.token !== this.R; return this.R = s.token, X("FirebaseAppCheckTokenProvider", `Received ${o ? "new" : "existing"} token.`), o ? n(s.token) : Promise.resolve() }; this.o = s => { e.enqueueRetryable(() => r(s)) }; const i = s => { X("FirebaseAppCheckTokenProvider", "AppCheck detected"), this.appCheck = s, this.o && this.appCheck.addTokenListener(this.o) }; this.A.onInit(s => i(s)), setTimeout(() => { if (!this.appCheck) { const s = this.A.getImmediate({ optional: !0 }); s ? i(s) : X("FirebaseAppCheckTokenProvider", "AppCheck not yet detected") } }, 0) } getToken() { const e = this.forceRefresh; return this.forceRefresh = !1, this.appCheck ? this.appCheck.getToken(e).then(n => n ? (Ee(typeof n.token == "string"), this.R = n.token, new cA(n.token)) : null) : Promise.resolve(null) } invalidateToken() { this.forceRefresh = !0 } shutdown() { this.appCheck && this.o && this.appCheck.removeTokenListener(this.o), this.o = void 0 } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function hA(t) { const e = typeof self < "u" && (self.crypto || self.msCrypto), n = new Uint8Array(t); if (e && typeof e.getRandomValues == "function") e.getRandomValues(n); else for (let r = 0; r < t; r++)n[r] = Math.floor(256 * Math.random()); return n }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class tw { static newId() { const e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = Math.floor(256 / e.length) * e.length; let r = ""; for (; r.length < 20;) { const i = hA(40); for (let s = 0; s < i.length; ++s)r.length < 20 && i[s] < n && (r += e.charAt(i[s] % e.length)) } return r } } function _e(t, e) { return t < e ? -1 : t > e ? 1 : 0 } function Us(t, e, n) { return t.length === e.length && t.every((r, i) => n(r, e[i])) }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class et { constructor(e, n) { if (this.seconds = e, this.nanoseconds = n, n < 0) throw new J(F.INVALID_ARGUMENT, "Timestamp nanoseconds out of range: " + n); if (n >= 1e9) throw new J(F.INVALID_ARGUMENT, "Timestamp nanoseconds out of range: " + n); if (e < -62135596800) throw new J(F.INVALID_ARGUMENT, "Timestamp seconds out of range: " + e); if (e >= 253402300800) throw new J(F.INVALID_ARGUMENT, "Timestamp seconds out of range: " + e) } static now() { return et.fromMillis(Date.now()) } static fromDate(e) { return et.fromMillis(e.getTime()) } static fromMillis(e) { const n = Math.floor(e / 1e3), r = Math.floor(1e6 * (e - 1e3 * n)); return new et(n, r) } toDate() { return new Date(this.toMillis()) } toMillis() { return 1e3 * this.seconds + this.nanoseconds / 1e6 } _compareTo(e) { return this.seconds === e.seconds ? _e(this.nanoseconds, e.nanoseconds) : _e(this.seconds, e.seconds) } isEqual(e) { return e.seconds === this.seconds && e.nanoseconds === this.nanoseconds } toString() { return "Timestamp(seconds=" + this.seconds + ", nanoseconds=" + this.nanoseconds + ")" } toJSON() { return { seconds: this.seconds, nanoseconds: this.nanoseconds } } valueOf() { const e = this.seconds - -62135596800; return String(e).padStart(12, "0") + "." + String(this.nanoseconds).padStart(9, "0") } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class le { constructor(e) { this.timestamp = e } static fromTimestamp(e) { return new le(e) } static min() { return new le(new et(0, 0)) } static max() { return new le(new et(253402300799, 999999999)) } compareTo(e) { return this.timestamp._compareTo(e.timestamp) } isEqual(e) { return this.timestamp.isEqual(e.timestamp) } toMicroseconds() { return 1e6 * this.timestamp.seconds + this.timestamp.nanoseconds / 1e3 } toString() { return "SnapshotVersion(" + this.timestamp.toString() + ")" } toTimestamp() { return this.timestamp } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ka { constructor(e, n, r) { n === void 0 ? n = 0 : n > e.length && ae(), r === void 0 ? r = e.length - n : r > e.length - n && ae(), this.segments = e, this.offset = n, this.len = r } get length() { return this.len } isEqual(e) { return ka.comparator(this, e) === 0 } child(e) { const n = this.segments.slice(this.offset, this.limit()); return e instanceof ka ? e.forEach(r => { n.push(r) }) : n.push(e), this.construct(n) } limit() { return this.offset + this.length } popFirst(e) { return e = e === void 0 ? 1 : e, this.construct(this.segments, this.offset + e, this.length - e) } popLast() { return this.construct(this.segments, this.offset, this.length - 1) } firstSegment() { return this.segments[this.offset] } lastSegment() { return this.get(this.length - 1) } get(e) { return this.segments[this.offset + e] } isEmpty() { return this.length === 0 } isPrefixOf(e) { if (e.length < this.length) return !1; for (let n = 0; n < this.length; n++)if (this.get(n) !== e.get(n)) return !1; return !0 } isImmediateParentOf(e) { if (this.length + 1 !== e.length) return !1; for (let n = 0; n < this.length; n++)if (this.get(n) !== e.get(n)) return !1; return !0 } forEach(e) { for (let n = this.offset, r = this.limit(); n < r; n++)e(this.segments[n]) } toArray() { return this.segments.slice(this.offset, this.limit()) } static comparator(e, n) { const r = Math.min(e.length, n.length); for (let i = 0; i < r; i++) { const s = e.get(i), o = n.get(i); if (s < o) return -1; if (s > o) return 1 } return e.length < n.length ? -1 : e.length > n.length ? 1 : 0 } } class Le extends ka { construct(e, n, r) { return new Le(e, n, r) } canonicalString() { return this.toArray().join("/") } toString() { return this.canonicalString() } toUriEncodedString() { return this.toArray().map(encodeURIComponent).join("/") } static fromString(...e) { const n = []; for (const r of e) { if (r.indexOf("//") >= 0) throw new J(F.INVALID_ARGUMENT, `Invalid segment (${r}). Paths must not contain // in them.`); n.push(...r.split("/").filter(i => i.length > 0)) } return new Le(n) } static emptyPath() { return new Le([]) } } const fA = /^[_a-zA-Z][_a-zA-Z0-9]*$/; class lt extends ka { construct(e, n, r) { return new lt(e, n, r) } static isValidIdentifier(e) { return fA.test(e) } canonicalString() { return this.toArray().map(e => (e = e.replace(/\\/g, "\\\\").replace(/`/g, "\\`"), lt.isValidIdentifier(e) || (e = "`" + e + "`"), e)).join(".") } toString() { return this.canonicalString() } isKeyField() { return this.length === 1 && this.get(0) === "__name__" } static keyField() { return new lt(["__name__"]) } static fromServerFormat(e) { const n = []; let r = "", i = 0; const s = () => { if (r.length === 0) throw new J(F.INVALID_ARGUMENT, `Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`); n.push(r), r = "" }; let o = !1; for (; i < e.length;) { const l = e[i]; if (l === "\\") { if (i + 1 === e.length) throw new J(F.INVALID_ARGUMENT, "Path has trailing escape character: " + e); const u = e[i + 1]; if (u !== "\\" && u !== "." && u !== "`") throw new J(F.INVALID_ARGUMENT, "Path has invalid escape sequence: " + e); r += u, i += 2 } else l === "`" ? (o = !o, i++) : l !== "." || o ? (r += l, i++) : (s(), i++) } if (s(), o) throw new J(F.INVALID_ARGUMENT, "Unterminated ` in path: " + e); return new lt(n) } static emptyPath() { return new lt([]) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class re { constructor(e) { this.path = e } static fromPath(e) { return new re(Le.fromString(e)) } static fromName(e) { return new re(Le.fromString(e).popFirst(5)) } static empty() { return new re(Le.emptyPath()) } get collectionGroup() { return this.path.popLast().lastSegment() } hasCollectionId(e) { return this.path.length >= 2 && this.path.get(this.path.length - 2) === e } getCollectionGroup() { return this.path.get(this.path.length - 2) } getCollectionPath() { return this.path.popLast() } isEqual(e) { return e !== null && Le.comparator(this.path, e.path) === 0 } toString() { return this.path.toString() } static comparator(e, n) { return Le.comparator(e.path, n.path) } static isDocumentKey(e) { return e.length % 2 == 0 } static fromSegments(e) { return new re(new Le(e.slice())) } } function pA(t, e) { const n = t.toTimestamp().seconds, r = t.toTimestamp().nanoseconds + 1, i = le.fromTimestamp(r === 1e9 ? new et(n + 1, 0) : new et(n, r)); return new Qr(i, re.empty(), e) } function mA(t) { return new Qr(t.readTime, t.key, -1) } class Qr { constructor(e, n, r) { this.readTime = e, this.documentKey = n, this.largestBatchId = r } static min() { return new Qr(le.min(), re.empty(), -1) } static max() { return new Qr(le.max(), re.empty(), -1) } } function gA(t, e) { let n = t.readTime.compareTo(e.readTime); return n !== 0 ? n : (n = re.comparator(t.documentKey, e.documentKey), n !== 0 ? n : _e(t.largestBatchId, e.largestBatchId)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const yA = "The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab."; class vA { constructor() { this.onCommittedListeners = [] } addOnCommittedListener(e) { this.onCommittedListeners.push(e) } raiseOnCommittedEvent() { this.onCommittedListeners.forEach(e => e()) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/async function Ua(t) { if (t.code !== F.FAILED_PRECONDITION || t.message !== yA) throw t; X("LocalStore", "Unexpectedly lost primary lease") }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class z { constructor(e) { this.nextCallback = null, this.catchCallback = null, this.result = void 0, this.error = void 0, this.isDone = !1, this.callbackAttached = !1, e(n => { this.isDone = !0, this.result = n, this.nextCallback && this.nextCallback(n) }, n => { this.isDone = !0, this.error = n, this.catchCallback && this.catchCallback(n) }) } catch(e) { return this.next(void 0, e) } next(e, n) { return this.callbackAttached && ae(), this.callbackAttached = !0, this.isDone ? this.error ? this.wrapFailure(n, this.error) : this.wrapSuccess(e, this.result) : new z((r, i) => { this.nextCallback = s => { this.wrapSuccess(e, s).next(r, i) }, this.catchCallback = s => { this.wrapFailure(n, s).next(r, i) } }) } toPromise() { return new Promise((e, n) => { this.next(e, n) }) } wrapUserFunction(e) { try { const n = e(); return n instanceof z ? n : z.resolve(n) } catch (n) { return z.reject(n) } } wrapSuccess(e, n) { return e ? this.wrapUserFunction(() => e(n)) : z.resolve(n) } wrapFailure(e, n) { return e ? this.wrapUserFunction(() => e(n)) : z.reject(n) } static resolve(e) { return new z((n, r) => { n(e) }) } static reject(e) { return new z((n, r) => { r(e) }) } static waitFor(e) { return new z((n, r) => { let i = 0, s = 0, o = !1; e.forEach(l => { ++i, l.next(() => { ++s, o && s === i && n() }, u => r(u)) }), o = !0, s === i && n() }) } static or(e) { let n = z.resolve(!1); for (const r of e) n = n.next(i => i ? z.resolve(i) : r()); return n } static forEach(e, n) { const r = []; return e.forEach((i, s) => { r.push(n.call(this, i, s)) }), this.waitFor(r) } static mapArray(e, n) { return new z((r, i) => { const s = e.length, o = new Array(s); let l = 0; for (let u = 0; u < s; u++) { const h = u; n(e[h]).next(p => { o[h] = p, ++l, l === s && r(o) }, p => i(p)) } }) } static doWhile(e, n) { return new z((r, i) => { const s = () => { e() === !0 ? n().next(() => { s() }, i) : r() }; s() }) } } function _A(t) { const e = t.match(/Android ([\d.]+)/i), n = e ? e[1].split(".").slice(0, 2).join(".") : "-1"; return Number(n) } function za(t) { return t.name === "IndexedDbTransactionError" }/**
|
|
* @license
|
|
* Copyright 2018 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class mp { constructor(e, n) { this.previousValue = e, n && (n.sequenceNumberHandler = r => this.ie(r), this.se = r => n.writeSequenceNumber(r)) } ie(e) { return this.previousValue = Math.max(e, this.previousValue), this.previousValue } next() { const e = ++this.previousValue; return this.se && this.se(e), e } } mp.oe = -1; function kc(t) { return t == null } function Gu(t) { return t === 0 && 1 / t == -1 / 0 } function wA(t) { return typeof t == "number" && Number.isInteger(t) && !Gu(t) && t <= Number.MAX_SAFE_INTEGER && t >= Number.MIN_SAFE_INTEGER }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function ay(t) { let e = 0; for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e++; return e } function Bi(t, e) { for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e(n, t[n]) } function nw(t) { for (const e in t) if (Object.prototype.hasOwnProperty.call(t, e)) return !1; return !0 }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Oe { constructor(e, n) { this.comparator = e, this.root = n || at.EMPTY } insert(e, n) { return new Oe(this.comparator, this.root.insert(e, n, this.comparator).copy(null, null, at.BLACK, null, null)) } remove(e) { return new Oe(this.comparator, this.root.remove(e, this.comparator).copy(null, null, at.BLACK, null, null)) } get(e) { let n = this.root; for (; !n.isEmpty();) { const r = this.comparator(e, n.key); if (r === 0) return n.value; r < 0 ? n = n.left : r > 0 && (n = n.right) } return null } indexOf(e) { let n = 0, r = this.root; for (; !r.isEmpty();) { const i = this.comparator(e, r.key); if (i === 0) return n + r.left.size; i < 0 ? r = r.left : (n += r.left.size + 1, r = r.right) } return -1 } isEmpty() { return this.root.isEmpty() } get size() { return this.root.size } minKey() { return this.root.minKey() } maxKey() { return this.root.maxKey() } inorderTraversal(e) { return this.root.inorderTraversal(e) } forEach(e) { this.inorderTraversal((n, r) => (e(n, r), !1)) } toString() { const e = []; return this.inorderTraversal((n, r) => (e.push(`${n}:${r}`), !1)), `{${e.join(", ")}}` } reverseTraversal(e) { return this.root.reverseTraversal(e) } getIterator() { return new Bl(this.root, null, this.comparator, !1) } getIteratorFrom(e) { return new Bl(this.root, e, this.comparator, !1) } getReverseIterator() { return new Bl(this.root, null, this.comparator, !0) } getReverseIteratorFrom(e) { return new Bl(this.root, e, this.comparator, !0) } } class Bl { constructor(e, n, r, i) { this.isReverse = i, this.nodeStack = []; let s = 1; for (; !e.isEmpty();)if (s = n ? r(e.key, n) : 1, n && i && (s *= -1), s < 0) e = this.isReverse ? e.left : e.right; else { if (s === 0) { this.nodeStack.push(e); break } this.nodeStack.push(e), e = this.isReverse ? e.right : e.left } } getNext() { let e = this.nodeStack.pop(); const n = { key: e.key, value: e.value }; if (this.isReverse) for (e = e.left; !e.isEmpty();)this.nodeStack.push(e), e = e.right; else for (e = e.right; !e.isEmpty();)this.nodeStack.push(e), e = e.left; return n } hasNext() { return this.nodeStack.length > 0 } peek() { if (this.nodeStack.length === 0) return null; const e = this.nodeStack[this.nodeStack.length - 1]; return { key: e.key, value: e.value } } } class at { constructor(e, n, r, i, s) { this.key = e, this.value = n, this.color = r ?? at.RED, this.left = i ?? at.EMPTY, this.right = s ?? at.EMPTY, this.size = this.left.size + 1 + this.right.size } copy(e, n, r, i, s) { return new at(e ?? this.key, n ?? this.value, r ?? this.color, i ?? this.left, s ?? this.right) } isEmpty() { return !1 } inorderTraversal(e) { return this.left.inorderTraversal(e) || e(this.key, this.value) || this.right.inorderTraversal(e) } reverseTraversal(e) { return this.right.reverseTraversal(e) || e(this.key, this.value) || this.left.reverseTraversal(e) } min() { return this.left.isEmpty() ? this : this.left.min() } minKey() { return this.min().key } maxKey() { return this.right.isEmpty() ? this.key : this.right.maxKey() } insert(e, n, r) { let i = this; const s = r(e, i.key); return i = s < 0 ? i.copy(null, null, null, i.left.insert(e, n, r), null) : s === 0 ? i.copy(null, n, null, null, null) : i.copy(null, null, null, null, i.right.insert(e, n, r)), i.fixUp() } removeMin() { if (this.left.isEmpty()) return at.EMPTY; let e = this; return e.left.isRed() || e.left.left.isRed() || (e = e.moveRedLeft()), e = e.copy(null, null, null, e.left.removeMin(), null), e.fixUp() } remove(e, n) { let r, i = this; if (n(e, i.key) < 0) i.left.isEmpty() || i.left.isRed() || i.left.left.isRed() || (i = i.moveRedLeft()), i = i.copy(null, null, null, i.left.remove(e, n), null); else { if (i.left.isRed() && (i = i.rotateRight()), i.right.isEmpty() || i.right.isRed() || i.right.left.isRed() || (i = i.moveRedRight()), n(e, i.key) === 0) { if (i.right.isEmpty()) return at.EMPTY; r = i.right.min(), i = i.copy(r.key, r.value, null, null, i.right.removeMin()) } i = i.copy(null, null, null, null, i.right.remove(e, n)) } return i.fixUp() } isRed() { return this.color } fixUp() { let e = this; return e.right.isRed() && !e.left.isRed() && (e = e.rotateLeft()), e.left.isRed() && e.left.left.isRed() && (e = e.rotateRight()), e.left.isRed() && e.right.isRed() && (e = e.colorFlip()), e } moveRedLeft() { let e = this.colorFlip(); return e.right.left.isRed() && (e = e.copy(null, null, null, null, e.right.rotateRight()), e = e.rotateLeft(), e = e.colorFlip()), e } moveRedRight() { let e = this.colorFlip(); return e.left.left.isRed() && (e = e.rotateRight(), e = e.colorFlip()), e } rotateLeft() { const e = this.copy(null, null, at.RED, null, this.right.left); return this.right.copy(null, null, this.color, e, null) } rotateRight() { const e = this.copy(null, null, at.RED, this.left.right, null); return this.left.copy(null, null, this.color, null, e) } colorFlip() { const e = this.left.copy(null, null, !this.left.color, null, null), n = this.right.copy(null, null, !this.right.color, null, null); return this.copy(null, null, !this.color, e, n) } checkMaxDepth() { const e = this.check(); return Math.pow(2, e) <= this.size + 1 } check() { if (this.isRed() && this.left.isRed() || this.right.isRed()) throw ae(); const e = this.left.check(); if (e !== this.right.check()) throw ae(); return e + (this.isRed() ? 0 : 1) } } at.EMPTY = null, at.RED = !0, at.BLACK = !1; at.EMPTY = new class { constructor() { this.size = 0 } get key() { throw ae() } get value() { throw ae() } get color() { throw ae() } get left() { throw ae() } get right() { throw ae() } copy(e, n, r, i, s) { return this } insert(e, n, r) { return new at(e, n) } remove(e, n) { return this } isEmpty() { return !0 } inorderTraversal(e) { return !1 } reverseTraversal(e) { return !1 } minKey() { return null } maxKey() { return null } isRed() { return !1 } checkMaxDepth() { return !0 } check() { return 0 } };/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ct { constructor(e) { this.comparator = e, this.data = new Oe(this.comparator) } has(e) { return this.data.get(e) !== null } first() { return this.data.minKey() } last() { return this.data.maxKey() } get size() { return this.data.size } indexOf(e) { return this.data.indexOf(e) } forEach(e) { this.data.inorderTraversal((n, r) => (e(n), !1)) } forEachInRange(e, n) { const r = this.data.getIteratorFrom(e[0]); for (; r.hasNext();) { const i = r.getNext(); if (this.comparator(i.key, e[1]) >= 0) return; n(i.key) } } forEachWhile(e, n) { let r; for (r = n !== void 0 ? this.data.getIteratorFrom(n) : this.data.getIterator(); r.hasNext();)if (!e(r.getNext().key)) return } firstAfterOrEqual(e) { const n = this.data.getIteratorFrom(e); return n.hasNext() ? n.getNext().key : null } getIterator() { return new ly(this.data.getIterator()) } getIteratorFrom(e) { return new ly(this.data.getIteratorFrom(e)) } add(e) { return this.copy(this.data.remove(e).insert(e, !0)) } delete(e) { return this.has(e) ? this.copy(this.data.remove(e)) : this } isEmpty() { return this.data.isEmpty() } unionWith(e) { let n = this; return n.size < e.size && (n = e, e = this), e.forEach(r => { n = n.add(r) }), n } isEqual(e) { if (!(e instanceof ct) || this.size !== e.size) return !1; const n = this.data.getIterator(), r = e.data.getIterator(); for (; n.hasNext();) { const i = n.getNext().key, s = r.getNext().key; if (this.comparator(i, s) !== 0) return !1 } return !0 } toArray() { const e = []; return this.forEach(n => { e.push(n) }), e } toString() { const e = []; return this.forEach(n => e.push(n)), "SortedSet(" + e.toString() + ")" } copy(e) { const n = new ct(this.comparator); return n.data = e, n } } class ly { constructor(e) { this.iter = e } getNext() { return this.iter.getNext().key } hasNext() { return this.iter.hasNext() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class $t { constructor(e) { this.fields = e, e.sort(lt.comparator) } static empty() { return new $t([]) } unionWith(e) { let n = new ct(lt.comparator); for (const r of this.fields) n = n.add(r); for (const r of e) n = n.add(r); return new $t(n.toArray()) } covers(e) { for (const n of this.fields) if (n.isPrefixOf(e)) return !0; return !1 } isEqual(e) { return Us(this.fields, e.fields, (n, r) => n.isEqual(r)) } }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class rw extends Error { constructor() { super(...arguments), this.name = "Base64DecodeError" } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ht { constructor(e) { this.binaryString = e } static fromBase64String(e) { const n = function (i) { try { return atob(i) } catch (s) { throw typeof DOMException < "u" && s instanceof DOMException ? new rw("Invalid base64 string: " + s) : s } }(e); return new ht(n) } static fromUint8Array(e) { const n = function (i) { let s = ""; for (let o = 0; o < i.length; ++o)s += String.fromCharCode(i[o]); return s }(e); return new ht(n) } [Symbol.iterator]() { let e = 0; return { next: () => e < this.binaryString.length ? { value: this.binaryString.charCodeAt(e++), done: !1 } : { value: void 0, done: !0 } } } toBase64() { return function (n) { return btoa(n) }(this.binaryString) } toUint8Array() { return function (n) { const r = new Uint8Array(n.length); for (let i = 0; i < n.length; i++)r[i] = n.charCodeAt(i); return r }(this.binaryString) } approximateByteSize() { return 2 * this.binaryString.length } compareTo(e) { return _e(this.binaryString, e.binaryString) } isEqual(e) { return this.binaryString === e.binaryString } } ht.EMPTY_BYTE_STRING = new ht(""); const EA = new RegExp(/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.(\d+))?Z$/); function Yr(t) { if (Ee(!!t), typeof t == "string") { let e = 0; const n = EA.exec(t); if (Ee(!!n), n[1]) { let i = n[1]; i = (i + "000000000").substr(0, 9), e = Number(i) } const r = new Date(t); return { seconds: Math.floor(r.getTime() / 1e3), nanos: e } } return { seconds: Be(t.seconds), nanos: Be(t.nanos) } } function Be(t) { return typeof t == "number" ? t : typeof t == "string" ? Number(t) : 0 } function Vi(t) { return typeof t == "string" ? ht.fromBase64String(t) : ht.fromUint8Array(t) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function gp(t) { var e, n; return ((n = (((e = t == null ? void 0 : t.mapValue) === null || e === void 0 ? void 0 : e.fields) || {}).__type__) === null || n === void 0 ? void 0 : n.stringValue) === "server_timestamp" } function yp(t) { const e = t.mapValue.fields.__previous_value__; return gp(e) ? yp(e) : e } function Ta(t) { const e = Yr(t.mapValue.fields.__local_write_time__.timestampValue); return new et(e.seconds, e.nanos) }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class xA { constructor(e, n, r, i, s, o, l, u, h) { this.databaseId = e, this.appId = n, this.persistenceKey = r, this.host = i, this.ssl = s, this.forceLongPolling = o, this.autoDetectLongPolling = l, this.longPollingOptions = u, this.useFetchStreams = h } } class Sa { constructor(e, n) { this.projectId = e, this.database = n || "(default)" } static empty() { return new Sa("", "") } get isDefaultDatabase() { return this.database === "(default)" } isEqual(e) { return e instanceof Sa && e.projectId === this.projectId && e.database === this.database } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const $l = { mapValue: {} }; function Oi(t) { return "nullValue" in t ? 0 : "booleanValue" in t ? 1 : "integerValue" in t || "doubleValue" in t ? 2 : "timestampValue" in t ? 3 : "stringValue" in t ? 5 : "bytesValue" in t ? 6 : "referenceValue" in t ? 7 : "geoPointValue" in t ? 8 : "arrayValue" in t ? 9 : "mapValue" in t ? gp(t) ? 4 : TA(t) ? 9007199254740991 : kA(t) ? 10 : 11 : ae() } function Mn(t, e) { if (t === e) return !0; const n = Oi(t); if (n !== Oi(e)) return !1; switch (n) { case 0: case 9007199254740991: return !0; case 1: return t.booleanValue === e.booleanValue; case 4: return Ta(t).isEqual(Ta(e)); case 3: return function (i, s) { if (typeof i.timestampValue == "string" && typeof s.timestampValue == "string" && i.timestampValue.length === s.timestampValue.length) return i.timestampValue === s.timestampValue; const o = Yr(i.timestampValue), l = Yr(s.timestampValue); return o.seconds === l.seconds && o.nanos === l.nanos }(t, e); case 5: return t.stringValue === e.stringValue; case 6: return function (i, s) { return Vi(i.bytesValue).isEqual(Vi(s.bytesValue)) }(t, e); case 7: return t.referenceValue === e.referenceValue; case 8: return function (i, s) { return Be(i.geoPointValue.latitude) === Be(s.geoPointValue.latitude) && Be(i.geoPointValue.longitude) === Be(s.geoPointValue.longitude) }(t, e); case 2: return function (i, s) { if ("integerValue" in i && "integerValue" in s) return Be(i.integerValue) === Be(s.integerValue); if ("doubleValue" in i && "doubleValue" in s) { const o = Be(i.doubleValue), l = Be(s.doubleValue); return o === l ? Gu(o) === Gu(l) : isNaN(o) && isNaN(l) } return !1 }(t, e); case 9: return Us(t.arrayValue.values || [], e.arrayValue.values || [], Mn); case 10: case 11: return function (i, s) { const o = i.mapValue.fields || {}, l = s.mapValue.fields || {}; if (ay(o) !== ay(l)) return !1; for (const u in o) if (o.hasOwnProperty(u) && (l[u] === void 0 || !Mn(o[u], l[u]))) return !1; return !0 }(t, e); default: return ae() } } function Ia(t, e) { return (t.values || []).find(n => Mn(n, e)) !== void 0 } function zs(t, e) { if (t === e) return 0; const n = Oi(t), r = Oi(e); if (n !== r) return _e(n, r); switch (n) { case 0: case 9007199254740991: return 0; case 1: return _e(t.booleanValue, e.booleanValue); case 2: return function (s, o) { const l = Be(s.integerValue || s.doubleValue), u = Be(o.integerValue || o.doubleValue); return l < u ? -1 : l > u ? 1 : l === u ? 0 : isNaN(l) ? isNaN(u) ? 0 : -1 : 1 }(t, e); case 3: return uy(t.timestampValue, e.timestampValue); case 4: return uy(Ta(t), Ta(e)); case 5: return _e(t.stringValue, e.stringValue); case 6: return function (s, o) { const l = Vi(s), u = Vi(o); return l.compareTo(u) }(t.bytesValue, e.bytesValue); case 7: return function (s, o) { const l = s.split("/"), u = o.split("/"); for (let h = 0; h < l.length && h < u.length; h++) { const p = _e(l[h], u[h]); if (p !== 0) return p } return _e(l.length, u.length) }(t.referenceValue, e.referenceValue); case 8: return function (s, o) { const l = _e(Be(s.latitude), Be(o.latitude)); return l !== 0 ? l : _e(Be(s.longitude), Be(o.longitude)) }(t.geoPointValue, e.geoPointValue); case 9: return cy(t.arrayValue, e.arrayValue); case 10: return function (s, o) { var l, u, h, p; const v = s.fields || {}, m = o.fields || {}, C = (l = v.value) === null || l === void 0 ? void 0 : l.arrayValue, R = (u = m.value) === null || u === void 0 ? void 0 : u.arrayValue, L = _e(((h = C == null ? void 0 : C.values) === null || h === void 0 ? void 0 : h.length) || 0, ((p = R == null ? void 0 : R.values) === null || p === void 0 ? void 0 : p.length) || 0); return L !== 0 ? L : cy(C, R) }(t.mapValue, e.mapValue); case 11: return function (s, o) { if (s === $l.mapValue && o === $l.mapValue) return 0; if (s === $l.mapValue) return 1; if (o === $l.mapValue) return -1; const l = s.fields || {}, u = Object.keys(l), h = o.fields || {}, p = Object.keys(h); u.sort(), p.sort(); for (let v = 0; v < u.length && v < p.length; ++v) { const m = _e(u[v], p[v]); if (m !== 0) return m; const C = zs(l[u[v]], h[p[v]]); if (C !== 0) return C } return _e(u.length, p.length) }(t.mapValue, e.mapValue); default: throw ae() } } function uy(t, e) { if (typeof t == "string" && typeof e == "string" && t.length === e.length) return _e(t, e); const n = Yr(t), r = Yr(e), i = _e(n.seconds, r.seconds); return i !== 0 ? i : _e(n.nanos, r.nanos) } function cy(t, e) { const n = t.values || [], r = e.values || []; for (let i = 0; i < n.length && i < r.length; ++i) { const s = zs(n[i], r[i]); if (s) return s } return _e(n.length, r.length) } function Bs(t) { return qh(t) } function qh(t) { return "nullValue" in t ? "null" : "booleanValue" in t ? "" + t.booleanValue : "integerValue" in t ? "" + t.integerValue : "doubleValue" in t ? "" + t.doubleValue : "timestampValue" in t ? function (n) { const r = Yr(n); return `time(${r.seconds},${r.nanos})` }(t.timestampValue) : "stringValue" in t ? t.stringValue : "bytesValue" in t ? function (n) { return Vi(n).toBase64() }(t.bytesValue) : "referenceValue" in t ? function (n) { return re.fromName(n).toString() }(t.referenceValue) : "geoPointValue" in t ? function (n) { return `geo(${n.latitude},${n.longitude})` }(t.geoPointValue) : "arrayValue" in t ? function (n) { let r = "[", i = !0; for (const s of n.values || []) i ? i = !1 : r += ",", r += qh(s); return r + "]" }(t.arrayValue) : "mapValue" in t ? function (n) { const r = Object.keys(n.fields || {}).sort(); let i = "{", s = !0; for (const o of r) s ? s = !1 : i += ",", i += `${o}:${qh(n.fields[o])}`; return i + "}" }(t.mapValue) : ae() } function Kh(t) { return !!t && "integerValue" in t } function vp(t) { return !!t && "arrayValue" in t } function dy(t) { return !!t && "nullValue" in t } function hy(t) { return !!t && "doubleValue" in t && isNaN(Number(t.doubleValue)) } function hu(t) { return !!t && "mapValue" in t } function kA(t) { var e, n; return ((n = (((e = t == null ? void 0 : t.mapValue) === null || e === void 0 ? void 0 : e.fields) || {}).__type__) === null || n === void 0 ? void 0 : n.stringValue) === "__vector__" } function Zo(t) { if (t.geoPointValue) return { geoPointValue: Object.assign({}, t.geoPointValue) }; if (t.timestampValue && typeof t.timestampValue == "object") return { timestampValue: Object.assign({}, t.timestampValue) }; if (t.mapValue) { const e = { mapValue: { fields: {} } }; return Bi(t.mapValue.fields, (n, r) => e.mapValue.fields[n] = Zo(r)), e } if (t.arrayValue) { const e = { arrayValue: { values: [] } }; for (let n = 0; n < (t.arrayValue.values || []).length; ++n)e.arrayValue.values[n] = Zo(t.arrayValue.values[n]); return e } return Object.assign({}, t) } function TA(t) { return (((t.mapValue || {}).fields || {}).__type__ || {}).stringValue === "__max__" }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Rt { constructor(e) { this.value = e } static empty() { return new Rt({ mapValue: {} }) } field(e) { if (e.isEmpty()) return this.value; { let n = this.value; for (let r = 0; r < e.length - 1; ++r)if (n = (n.mapValue.fields || {})[e.get(r)], !hu(n)) return null; return n = (n.mapValue.fields || {})[e.lastSegment()], n || null } } set(e, n) { this.getFieldsMap(e.popLast())[e.lastSegment()] = Zo(n) } setAll(e) { let n = lt.emptyPath(), r = {}, i = []; e.forEach((o, l) => { if (!n.isImmediateParentOf(l)) { const u = this.getFieldsMap(n); this.applyChanges(u, r, i), r = {}, i = [], n = l.popLast() } o ? r[l.lastSegment()] = Zo(o) : i.push(l.lastSegment()) }); const s = this.getFieldsMap(n); this.applyChanges(s, r, i) } delete(e) { const n = this.field(e.popLast()); hu(n) && n.mapValue.fields && delete n.mapValue.fields[e.lastSegment()] } isEqual(e) { return Mn(this.value, e.value) } getFieldsMap(e) { let n = this.value; n.mapValue.fields || (n.mapValue = { fields: {} }); for (let r = 0; r < e.length; ++r) { let i = n.mapValue.fields[e.get(r)]; hu(i) && i.mapValue.fields || (i = { mapValue: { fields: {} } }, n.mapValue.fields[e.get(r)] = i), n = i } return n.mapValue.fields } applyChanges(e, n, r) { Bi(n, (i, s) => e[i] = s); for (const i of r) delete e[i] } clone() { return new Rt(Zo(this.value)) } } function iw(t) { const e = []; return Bi(t.fields, (n, r) => { const i = new lt([n]); if (hu(r)) { const s = iw(r.mapValue).fields; if (s.length === 0) e.push(i); else for (const o of s) e.push(i.child(o)) } else e.push(i) }), new $t(e) }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class wt { constructor(e, n, r, i, s, o, l) { this.key = e, this.documentType = n, this.version = r, this.readTime = i, this.createTime = s, this.data = o, this.documentState = l } static newInvalidDocument(e) { return new wt(e, 0, le.min(), le.min(), le.min(), Rt.empty(), 0) } static newFoundDocument(e, n, r, i) { return new wt(e, 1, n, le.min(), r, i, 0) } static newNoDocument(e, n) { return new wt(e, 2, n, le.min(), le.min(), Rt.empty(), 0) } static newUnknownDocument(e, n) { return new wt(e, 3, n, le.min(), le.min(), Rt.empty(), 2) } convertToFoundDocument(e, n) { return !this.createTime.isEqual(le.min()) || this.documentType !== 2 && this.documentType !== 0 || (this.createTime = e), this.version = e, this.documentType = 1, this.data = n, this.documentState = 0, this } convertToNoDocument(e) { return this.version = e, this.documentType = 2, this.data = Rt.empty(), this.documentState = 0, this } convertToUnknownDocument(e) { return this.version = e, this.documentType = 3, this.data = Rt.empty(), this.documentState = 2, this } setHasCommittedMutations() { return this.documentState = 2, this } setHasLocalMutations() { return this.documentState = 1, this.version = le.min(), this } setReadTime(e) { return this.readTime = e, this } get hasLocalMutations() { return this.documentState === 1 } get hasCommittedMutations() { return this.documentState === 2 } get hasPendingWrites() { return this.hasLocalMutations || this.hasCommittedMutations } isValidDocument() { return this.documentType !== 0 } isFoundDocument() { return this.documentType === 1 } isNoDocument() { return this.documentType === 2 } isUnknownDocument() { return this.documentType === 3 } isEqual(e) { return e instanceof wt && this.key.isEqual(e.key) && this.version.isEqual(e.version) && this.documentType === e.documentType && this.documentState === e.documentState && this.data.isEqual(e.data) } mutableCopy() { return new wt(this.key, this.documentType, this.version, this.readTime, this.createTime, this.data.clone(), this.documentState) } toString() { return `Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})` } }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Qu { constructor(e, n) { this.position = e, this.inclusive = n } } function fy(t, e, n) { let r = 0; for (let i = 0; i < t.position.length; i++) { const s = e[i], o = t.position[i]; if (s.field.isKeyField() ? r = re.comparator(re.fromName(o.referenceValue), n.key) : r = zs(o, n.data.field(s.field)), s.dir === "desc" && (r *= -1), r !== 0) break } return r } function py(t, e) { if (t === null) return e === null; if (e === null || t.inclusive !== e.inclusive || t.position.length !== e.position.length) return !1; for (let n = 0; n < t.position.length; n++)if (!Mn(t.position[n], e.position[n])) return !1; return !0 }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Yu { constructor(e, n = "asc") { this.field = e, this.dir = n } } function SA(t, e) { return t.dir === e.dir && t.field.isEqual(e.field) }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class sw { } class Je extends sw { constructor(e, n, r) { super(), this.field = e, this.op = n, this.value = r } static create(e, n, r) { return e.isKeyField() ? n === "in" || n === "not-in" ? this.createKeyFieldInFilter(e, n, r) : new AA(e, n, r) : n === "array-contains" ? new PA(e, r) : n === "in" ? new bA(e, r) : n === "not-in" ? new RA(e, r) : n === "array-contains-any" ? new DA(e, r) : new Je(e, n, r) } static createKeyFieldInFilter(e, n, r) { return n === "in" ? new CA(e, r) : new NA(e, r) } matches(e) { const n = e.data.field(this.field); return this.op === "!=" ? n !== null && this.matchesComparison(zs(n, this.value)) : n !== null && Oi(this.value) === Oi(n) && this.matchesComparison(zs(n, this.value)) } matchesComparison(e) { switch (this.op) { case "<": return e < 0; case "<=": return e <= 0; case "==": return e === 0; case "!=": return e !== 0; case ">": return e > 0; case ">=": return e >= 0; default: return ae() } } isInequality() { return ["<", "<=", ">", ">=", "!=", "not-in"].indexOf(this.op) >= 0 } getFlattenedFilters() { return [this] } getFilters() { return [this] } } class jn extends sw { constructor(e, n) { super(), this.filters = e, this.op = n, this.ae = null } static create(e, n) { return new jn(e, n) } matches(e) { return ow(this) ? this.filters.find(n => !n.matches(e)) === void 0 : this.filters.find(n => n.matches(e)) !== void 0 } getFlattenedFilters() { return this.ae !== null || (this.ae = this.filters.reduce((e, n) => e.concat(n.getFlattenedFilters()), [])), this.ae } getFilters() { return Object.assign([], this.filters) } } function ow(t) { return t.op === "and" } function aw(t) { return IA(t) && ow(t) } function IA(t) { for (const e of t.filters) if (e instanceof jn) return !1; return !0 } function Gh(t) { if (t instanceof Je) return t.field.canonicalString() + t.op.toString() + Bs(t.value); if (aw(t)) return t.filters.map(e => Gh(e)).join(","); { const e = t.filters.map(n => Gh(n)).join(","); return `${t.op}(${e})` } } function lw(t, e) { return t instanceof Je ? function (r, i) { return i instanceof Je && r.op === i.op && r.field.isEqual(i.field) && Mn(r.value, i.value) }(t, e) : t instanceof jn ? function (r, i) { return i instanceof jn && r.op === i.op && r.filters.length === i.filters.length ? r.filters.reduce((s, o, l) => s && lw(o, i.filters[l]), !0) : !1 }(t, e) : void ae() } function uw(t) { return t instanceof Je ? function (n) { return `${n.field.canonicalString()} ${n.op} ${Bs(n.value)}` }(t) : t instanceof jn ? function (n) { return n.op.toString() + " {" + n.getFilters().map(uw).join(" ,") + "}" }(t) : "Filter" } class AA extends Je { constructor(e, n, r) { super(e, n, r), this.key = re.fromName(r.referenceValue) } matches(e) { const n = re.comparator(e.key, this.key); return this.matchesComparison(n) } } class CA extends Je { constructor(e, n) { super(e, "in", n), this.keys = cw("in", n) } matches(e) { return this.keys.some(n => n.isEqual(e.key)) } } class NA extends Je { constructor(e, n) { super(e, "not-in", n), this.keys = cw("not-in", n) } matches(e) { return !this.keys.some(n => n.isEqual(e.key)) } } function cw(t, e) { var n; return (((n = e.arrayValue) === null || n === void 0 ? void 0 : n.values) || []).map(r => re.fromName(r.referenceValue)) } class PA extends Je { constructor(e, n) { super(e, "array-contains", n) } matches(e) { const n = e.data.field(this.field); return vp(n) && Ia(n.arrayValue, this.value) } } class bA extends Je { constructor(e, n) { super(e, "in", n) } matches(e) { const n = e.data.field(this.field); return n !== null && Ia(this.value.arrayValue, n) } } class RA extends Je { constructor(e, n) { super(e, "not-in", n) } matches(e) { if (Ia(this.value.arrayValue, { nullValue: "NULL_VALUE" })) return !1; const n = e.data.field(this.field); return n !== null && !Ia(this.value.arrayValue, n) } } class DA extends Je { constructor(e, n) { super(e, "array-contains-any", n) } matches(e) { const n = e.data.field(this.field); return !(!vp(n) || !n.arrayValue.values) && n.arrayValue.values.some(r => Ia(this.value.arrayValue, r)) } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class LA { constructor(e, n = null, r = [], i = [], s = null, o = null, l = null) { this.path = e, this.collectionGroup = n, this.orderBy = r, this.filters = i, this.limit = s, this.startAt = o, this.endAt = l, this.ue = null } } function my(t, e = null, n = [], r = [], i = null, s = null, o = null) { return new LA(t, e, n, r, i, s, o) } function _p(t) { const e = ue(t); if (e.ue === null) { let n = e.path.canonicalString(); e.collectionGroup !== null && (n += "|cg:" + e.collectionGroup), n += "|f:", n += e.filters.map(r => Gh(r)).join(","), n += "|ob:", n += e.orderBy.map(r => function (s) { return s.field.canonicalString() + s.dir }(r)).join(","), kc(e.limit) || (n += "|l:", n += e.limit), e.startAt && (n += "|lb:", n += e.startAt.inclusive ? "b:" : "a:", n += e.startAt.position.map(r => Bs(r)).join(",")), e.endAt && (n += "|ub:", n += e.endAt.inclusive ? "a:" : "b:", n += e.endAt.position.map(r => Bs(r)).join(",")), e.ue = n } return e.ue } function wp(t, e) { if (t.limit !== e.limit || t.orderBy.length !== e.orderBy.length) return !1; for (let n = 0; n < t.orderBy.length; n++)if (!SA(t.orderBy[n], e.orderBy[n])) return !1; if (t.filters.length !== e.filters.length) return !1; for (let n = 0; n < t.filters.length; n++)if (!lw(t.filters[n], e.filters[n])) return !1; return t.collectionGroup === e.collectionGroup && !!t.path.isEqual(e.path) && !!py(t.startAt, e.startAt) && py(t.endAt, e.endAt) } function Qh(t) { return re.isDocumentKey(t.path) && t.collectionGroup === null && t.filters.length === 0 }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Tc { constructor(e, n = null, r = [], i = [], s = null, o = "F", l = null, u = null) { this.path = e, this.collectionGroup = n, this.explicitOrderBy = r, this.filters = i, this.limit = s, this.limitType = o, this.startAt = l, this.endAt = u, this.ce = null, this.le = null, this.he = null, this.startAt, this.endAt } } function MA(t, e, n, r, i, s, o, l) { return new Tc(t, e, n, r, i, s, o, l) } function Sc(t) { return new Tc(t) } function gy(t) { return t.filters.length === 0 && t.limit === null && t.startAt == null && t.endAt == null && (t.explicitOrderBy.length === 0 || t.explicitOrderBy.length === 1 && t.explicitOrderBy[0].field.isKeyField()) } function jA(t) { return t.collectionGroup !== null } function ea(t) { const e = ue(t); if (e.ce === null) { e.ce = []; const n = new Set; for (const s of e.explicitOrderBy) e.ce.push(s), n.add(s.field.canonicalString()); const r = e.explicitOrderBy.length > 0 ? e.explicitOrderBy[e.explicitOrderBy.length - 1].dir : "asc"; (function (o) { let l = new ct(lt.comparator); return o.filters.forEach(u => { u.getFlattenedFilters().forEach(h => { h.isInequality() && (l = l.add(h.field)) }) }), l })(e).forEach(s => { n.has(s.canonicalString()) || s.isKeyField() || e.ce.push(new Yu(s, r)) }), n.has(lt.keyField().canonicalString()) || e.ce.push(new Yu(lt.keyField(), r)) } return e.ce } function Dn(t) { const e = ue(t); return e.le || (e.le = VA(e, ea(t))), e.le } function VA(t, e) { if (t.limitType === "F") return my(t.path, t.collectionGroup, e, t.filters, t.limit, t.startAt, t.endAt); { e = e.map(i => { const s = i.dir === "desc" ? "asc" : "desc"; return new Yu(i.field, s) }); const n = t.endAt ? new Qu(t.endAt.position, t.endAt.inclusive) : null, r = t.startAt ? new Qu(t.startAt.position, t.startAt.inclusive) : null; return my(t.path, t.collectionGroup, e, t.filters, t.limit, n, r) } } function Yh(t, e, n) { return new Tc(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), e, n, t.startAt, t.endAt) } function Ic(t, e) { return wp(Dn(t), Dn(e)) && t.limitType === e.limitType } function dw(t) { return `${_p(Dn(t))}|lt:${t.limitType}` } function ss(t) { return `Query(target=${function (n) { let r = n.path.canonicalString(); return n.collectionGroup !== null && (r += " collectionGroup=" + n.collectionGroup), n.filters.length > 0 && (r += `, filters: [${n.filters.map(i => uw(i)).join(", ")}]`), kc(n.limit) || (r += ", limit: " + n.limit), n.orderBy.length > 0 && (r += `, orderBy: [${n.orderBy.map(i => function (o) { return `${o.field.canonicalString()} (${o.dir})` }(i)).join(", ")}]`), n.startAt && (r += ", startAt: ", r += n.startAt.inclusive ? "b:" : "a:", r += n.startAt.position.map(i => Bs(i)).join(",")), n.endAt && (r += ", endAt: ", r += n.endAt.inclusive ? "a:" : "b:", r += n.endAt.position.map(i => Bs(i)).join(",")), `Target(${r})` }(Dn(t))}; limitType=${t.limitType})` } function Ac(t, e) { return e.isFoundDocument() && function (r, i) { const s = i.key.path; return r.collectionGroup !== null ? i.key.hasCollectionId(r.collectionGroup) && r.path.isPrefixOf(s) : re.isDocumentKey(r.path) ? r.path.isEqual(s) : r.path.isImmediateParentOf(s) }(t, e) && function (r, i) { for (const s of ea(r)) if (!s.field.isKeyField() && i.data.field(s.field) === null) return !1; return !0 }(t, e) && function (r, i) { for (const s of r.filters) if (!s.matches(i)) return !1; return !0 }(t, e) && function (r, i) { return !(r.startAt && !function (o, l, u) { const h = fy(o, l, u); return o.inclusive ? h <= 0 : h < 0 }(r.startAt, ea(r), i) || r.endAt && !function (o, l, u) { const h = fy(o, l, u); return o.inclusive ? h >= 0 : h > 0 }(r.endAt, ea(r), i)) }(t, e) } function OA(t) { return t.collectionGroup || (t.path.length % 2 == 1 ? t.path.lastSegment() : t.path.get(t.path.length - 2)) } function hw(t) { return (e, n) => { let r = !1; for (const i of ea(t)) { const s = FA(i, e, n); if (s !== 0) return s; r = r || i.field.isKeyField() } return 0 } } function FA(t, e, n) { const r = t.field.isKeyField() ? re.comparator(e.key, n.key) : function (s, o, l) { const u = o.data.field(s), h = l.data.field(s); return u !== null && h !== null ? zs(u, h) : ae() }(t.field, e, n); switch (t.dir) { case "asc": return r; case "desc": return -1 * r; default: return ae() } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Js { constructor(e, n) { this.mapKeyFn = e, this.equalsFn = n, this.inner = {}, this.innerSize = 0 } get(e) { const n = this.mapKeyFn(e), r = this.inner[n]; if (r !== void 0) { for (const [i, s] of r) if (this.equalsFn(i, e)) return s } } has(e) { return this.get(e) !== void 0 } set(e, n) { const r = this.mapKeyFn(e), i = this.inner[r]; if (i === void 0) return this.inner[r] = [[e, n]], void this.innerSize++; for (let s = 0; s < i.length; s++)if (this.equalsFn(i[s][0], e)) return void (i[s] = [e, n]); i.push([e, n]), this.innerSize++ } delete(e) { const n = this.mapKeyFn(e), r = this.inner[n]; if (r === void 0) return !1; for (let i = 0; i < r.length; i++)if (this.equalsFn(r[i][0], e)) return r.length === 1 ? delete this.inner[n] : r.splice(i, 1), this.innerSize--, !0; return !1 } forEach(e) { Bi(this.inner, (n, r) => { for (const [i, s] of r) e(i, s) }) } isEmpty() { return nw(this.inner) } size() { return this.innerSize } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const UA = new Oe(re.comparator); function sr() { return UA } const fw = new Oe(re.comparator); function Uo(...t) { let e = fw; for (const n of t) e = e.insert(n.key, n); return e } function pw(t) { let e = fw; return t.forEach((n, r) => e = e.insert(n, r.overlayedDocument)), e } function Ti() { return ta() } function mw() { return ta() } function ta() { return new Js(t => t.toString(), (t, e) => t.isEqual(e)) } const zA = new Oe(re.comparator), BA = new ct(re.comparator); function de(...t) { let e = BA; for (const n of t) e = e.add(n); return e } const $A = new ct(_e); function WA() { return $A }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Ep(t, e) { if (t.useProto3Json) { if (isNaN(e)) return { doubleValue: "NaN" }; if (e === 1 / 0) return { doubleValue: "Infinity" }; if (e === -1 / 0) return { doubleValue: "-Infinity" } } return { doubleValue: Gu(e) ? "-0" : e } } function gw(t) { return { integerValue: "" + t } } function HA(t, e) { return wA(e) ? gw(e) : Ep(t, e) }/**
|
|
* @license
|
|
* Copyright 2018 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Cc { constructor() { this._ = void 0 } } function qA(t, e, n) { return t instanceof Xu ? function (i, s) { const o = { fields: { __type__: { stringValue: "server_timestamp" }, __local_write_time__: { timestampValue: { seconds: i.seconds, nanos: i.nanoseconds } } } }; return s && gp(s) && (s = yp(s)), s && (o.fields.__previous_value__ = s), { mapValue: o } }(n, e) : t instanceof Aa ? vw(t, e) : t instanceof Ca ? _w(t, e) : function (i, s) { const o = yw(i, s), l = yy(o) + yy(i.Pe); return Kh(o) && Kh(i.Pe) ? gw(l) : Ep(i.serializer, l) }(t, e) } function KA(t, e, n) { return t instanceof Aa ? vw(t, e) : t instanceof Ca ? _w(t, e) : n } function yw(t, e) { return t instanceof Ju ? function (r) { return Kh(r) || function (s) { return !!s && "doubleValue" in s }(r) }(e) ? e : { integerValue: 0 } : null } class Xu extends Cc { } class Aa extends Cc { constructor(e) { super(), this.elements = e } } function vw(t, e) { const n = ww(e); for (const r of t.elements) n.some(i => Mn(i, r)) || n.push(r); return { arrayValue: { values: n } } } class Ca extends Cc { constructor(e) { super(), this.elements = e } } function _w(t, e) { let n = ww(e); for (const r of t.elements) n = n.filter(i => !Mn(i, r)); return { arrayValue: { values: n } } } class Ju extends Cc { constructor(e, n) { super(), this.serializer = e, this.Pe = n } } function yy(t) { return Be(t.integerValue || t.doubleValue) } function ww(t) { return vp(t) && t.arrayValue.values ? t.arrayValue.values.slice() : [] } function GA(t, e) { return t.field.isEqual(e.field) && function (r, i) { return r instanceof Aa && i instanceof Aa || r instanceof Ca && i instanceof Ca ? Us(r.elements, i.elements, Mn) : r instanceof Ju && i instanceof Ju ? Mn(r.Pe, i.Pe) : r instanceof Xu && i instanceof Xu }(t.transform, e.transform) } class QA { constructor(e, n) { this.version = e, this.transformResults = n } } class St { constructor(e, n) { this.updateTime = e, this.exists = n } static none() { return new St } static exists(e) { return new St(void 0, e) } static updateTime(e) { return new St(e) } get isNone() { return this.updateTime === void 0 && this.exists === void 0 } isEqual(e) { return this.exists === e.exists && (this.updateTime ? !!e.updateTime && this.updateTime.isEqual(e.updateTime) : !e.updateTime) } } function fu(t, e) { return t.updateTime !== void 0 ? e.isFoundDocument() && e.version.isEqual(t.updateTime) : t.exists === void 0 || t.exists === e.isFoundDocument() } class Nc { } function Ew(t, e) { if (!t.hasLocalMutations || e && e.fields.length === 0) return null; if (e === null) return t.isNoDocument() ? new Pc(t.key, St.none()) : new Ba(t.key, t.data, St.none()); { const n = t.data, r = Rt.empty(); let i = new ct(lt.comparator); for (let s of e.fields) if (!i.has(s)) { let o = n.field(s); o === null && s.length > 1 && (s = s.popLast(), o = n.field(s)), o === null ? r.delete(s) : r.set(s, o), i = i.add(s) } return new ri(t.key, r, new $t(i.toArray()), St.none()) } } function YA(t, e, n) { t instanceof Ba ? function (i, s, o) { const l = i.value.clone(), u = _y(i.fieldTransforms, s, o.transformResults); l.setAll(u), s.convertToFoundDocument(o.version, l).setHasCommittedMutations() }(t, e, n) : t instanceof ri ? function (i, s, o) { if (!fu(i.precondition, s)) return void s.convertToUnknownDocument(o.version); const l = _y(i.fieldTransforms, s, o.transformResults), u = s.data; u.setAll(xw(i)), u.setAll(l), s.convertToFoundDocument(o.version, u).setHasCommittedMutations() }(t, e, n) : function (i, s, o) { s.convertToNoDocument(o.version).setHasCommittedMutations() }(0, e, n) } function na(t, e, n, r) { return t instanceof Ba ? function (s, o, l, u) { if (!fu(s.precondition, o)) return l; const h = s.value.clone(), p = wy(s.fieldTransforms, u, o); return h.setAll(p), o.convertToFoundDocument(o.version, h).setHasLocalMutations(), null }(t, e, n, r) : t instanceof ri ? function (s, o, l, u) { if (!fu(s.precondition, o)) return l; const h = wy(s.fieldTransforms, u, o), p = o.data; return p.setAll(xw(s)), p.setAll(h), o.convertToFoundDocument(o.version, p).setHasLocalMutations(), l === null ? null : l.unionWith(s.fieldMask.fields).unionWith(s.fieldTransforms.map(v => v.field)) }(t, e, n, r) : function (s, o, l) { return fu(s.precondition, o) ? (o.convertToNoDocument(o.version).setHasLocalMutations(), null) : l }(t, e, n) } function XA(t, e) { let n = null; for (const r of t.fieldTransforms) { const i = e.data.field(r.field), s = yw(r.transform, i || null); s != null && (n === null && (n = Rt.empty()), n.set(r.field, s)) } return n || null } function vy(t, e) { return t.type === e.type && !!t.key.isEqual(e.key) && !!t.precondition.isEqual(e.precondition) && !!function (r, i) { return r === void 0 && i === void 0 || !(!r || !i) && Us(r, i, (s, o) => GA(s, o)) }(t.fieldTransforms, e.fieldTransforms) && (t.type === 0 ? t.value.isEqual(e.value) : t.type !== 1 || t.data.isEqual(e.data) && t.fieldMask.isEqual(e.fieldMask)) } class Ba extends Nc { constructor(e, n, r, i = []) { super(), this.key = e, this.value = n, this.precondition = r, this.fieldTransforms = i, this.type = 0 } getFieldMask() { return null } } class ri extends Nc { constructor(e, n, r, i, s = []) { super(), this.key = e, this.data = n, this.fieldMask = r, this.precondition = i, this.fieldTransforms = s, this.type = 1 } getFieldMask() { return this.fieldMask } } function xw(t) { const e = new Map; return t.fieldMask.fields.forEach(n => { if (!n.isEmpty()) { const r = t.data.field(n); e.set(n, r) } }), e } function _y(t, e, n) { const r = new Map; Ee(t.length === n.length); for (let i = 0; i < n.length; i++) { const s = t[i], o = s.transform, l = e.data.field(s.field); r.set(s.field, KA(o, l, n[i])) } return r } function wy(t, e, n) { const r = new Map; for (const i of t) { const s = i.transform, o = n.data.field(i.field); r.set(i.field, qA(s, o, e)) } return r } class Pc extends Nc { constructor(e, n) { super(), this.key = e, this.precondition = n, this.type = 2, this.fieldTransforms = [] } getFieldMask() { return null } } class JA extends Nc { constructor(e, n) { super(), this.key = e, this.precondition = n, this.type = 3, this.fieldTransforms = [] } getFieldMask() { return null } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class ZA { constructor(e, n, r, i) { this.batchId = e, this.localWriteTime = n, this.baseMutations = r, this.mutations = i } applyToRemoteDocument(e, n) { const r = n.mutationResults; for (let i = 0; i < this.mutations.length; i++) { const s = this.mutations[i]; s.key.isEqual(e.key) && YA(s, e, r[i]) } } applyToLocalView(e, n) { for (const r of this.baseMutations) r.key.isEqual(e.key) && (n = na(r, e, n, this.localWriteTime)); for (const r of this.mutations) r.key.isEqual(e.key) && (n = na(r, e, n, this.localWriteTime)); return n } applyToLocalDocumentSet(e, n) { const r = mw(); return this.mutations.forEach(i => { const s = e.get(i.key), o = s.overlayedDocument; let l = this.applyToLocalView(o, s.mutatedFields); l = n.has(i.key) ? null : l; const u = Ew(o, l); u !== null && r.set(i.key, u), o.isValidDocument() || o.convertToNoDocument(le.min()) }), r } keys() { return this.mutations.reduce((e, n) => e.add(n.key), de()) } isEqual(e) { return this.batchId === e.batchId && Us(this.mutations, e.mutations, (n, r) => vy(n, r)) && Us(this.baseMutations, e.baseMutations, (n, r) => vy(n, r)) } } class xp { constructor(e, n, r, i) { this.batch = e, this.commitVersion = n, this.mutationResults = r, this.docVersions = i } static from(e, n, r) { Ee(e.mutations.length === r.length); let i = function () { return zA }(); const s = e.mutations; for (let o = 0; o < s.length; o++)i = i.insert(s[o].key, r[o].version); return new xp(e, n, r, i) } }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class eC {
|
|
constructor(e, n) { this.largestBatchId = e, this.mutation = n } getKey() { return this.mutation.key } isEqual(e) { return e !== null && this.mutation === e.mutation } toString() {
|
|
return `Overlay{
|
|
largestBatchId: ${this.largestBatchId},
|
|
mutation: ${this.mutation.toString()}
|
|
}`}
|
|
}/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class tC { constructor(e, n) { this.count = e, this.unchangedNames = n } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/var We, me; function nC(t) { switch (t) { default: return ae(); case F.CANCELLED: case F.UNKNOWN: case F.DEADLINE_EXCEEDED: case F.RESOURCE_EXHAUSTED: case F.INTERNAL: case F.UNAVAILABLE: case F.UNAUTHENTICATED: return !1; case F.INVALID_ARGUMENT: case F.NOT_FOUND: case F.ALREADY_EXISTS: case F.PERMISSION_DENIED: case F.FAILED_PRECONDITION: case F.ABORTED: case F.OUT_OF_RANGE: case F.UNIMPLEMENTED: case F.DATA_LOSS: return !0 } } function kw(t) { if (t === void 0) return ir("GRPC error has no .code"), F.UNKNOWN; switch (t) { case We.OK: return F.OK; case We.CANCELLED: return F.CANCELLED; case We.UNKNOWN: return F.UNKNOWN; case We.DEADLINE_EXCEEDED: return F.DEADLINE_EXCEEDED; case We.RESOURCE_EXHAUSTED: return F.RESOURCE_EXHAUSTED; case We.INTERNAL: return F.INTERNAL; case We.UNAVAILABLE: return F.UNAVAILABLE; case We.UNAUTHENTICATED: return F.UNAUTHENTICATED; case We.INVALID_ARGUMENT: return F.INVALID_ARGUMENT; case We.NOT_FOUND: return F.NOT_FOUND; case We.ALREADY_EXISTS: return F.ALREADY_EXISTS; case We.PERMISSION_DENIED: return F.PERMISSION_DENIED; case We.FAILED_PRECONDITION: return F.FAILED_PRECONDITION; case We.ABORTED: return F.ABORTED; case We.OUT_OF_RANGE: return F.OUT_OF_RANGE; case We.UNIMPLEMENTED: return F.UNIMPLEMENTED; case We.DATA_LOSS: return F.DATA_LOSS; default: return ae() } } (me = We || (We = {}))[me.OK = 0] = "OK", me[me.CANCELLED = 1] = "CANCELLED", me[me.UNKNOWN = 2] = "UNKNOWN", me[me.INVALID_ARGUMENT = 3] = "INVALID_ARGUMENT", me[me.DEADLINE_EXCEEDED = 4] = "DEADLINE_EXCEEDED", me[me.NOT_FOUND = 5] = "NOT_FOUND", me[me.ALREADY_EXISTS = 6] = "ALREADY_EXISTS", me[me.PERMISSION_DENIED = 7] = "PERMISSION_DENIED", me[me.UNAUTHENTICATED = 16] = "UNAUTHENTICATED", me[me.RESOURCE_EXHAUSTED = 8] = "RESOURCE_EXHAUSTED", me[me.FAILED_PRECONDITION = 9] = "FAILED_PRECONDITION", me[me.ABORTED = 10] = "ABORTED", me[me.OUT_OF_RANGE = 11] = "OUT_OF_RANGE", me[me.UNIMPLEMENTED = 12] = "UNIMPLEMENTED", me[me.INTERNAL = 13] = "INTERNAL", me[me.UNAVAILABLE = 14] = "UNAVAILABLE", me[me.DATA_LOSS = 15] = "DATA_LOSS";/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function rC() { return new TextEncoder }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const iC = new Ai([4294967295, 4294967295], 0); function Ey(t) { const e = rC().encode(t), n = new G_; return n.update(e), new Uint8Array(n.digest()) } function xy(t) { const e = new DataView(t.buffer), n = e.getUint32(0, !0), r = e.getUint32(4, !0), i = e.getUint32(8, !0), s = e.getUint32(12, !0); return [new Ai([n, r], 0), new Ai([i, s], 0)] } class kp { constructor(e, n, r) { if (this.bitmap = e, this.padding = n, this.hashCount = r, n < 0 || n >= 8) throw new zo(`Invalid padding: ${n}`); if (r < 0) throw new zo(`Invalid hash count: ${r}`); if (e.length > 0 && this.hashCount === 0) throw new zo(`Invalid hash count: ${r}`); if (e.length === 0 && n !== 0) throw new zo(`Invalid padding when bitmap length is 0: ${n}`); this.Ie = 8 * e.length - n, this.Te = Ai.fromNumber(this.Ie) } Ee(e, n, r) { let i = e.add(n.multiply(Ai.fromNumber(r))); return i.compare(iC) === 1 && (i = new Ai([i.getBits(0), i.getBits(1)], 0)), i.modulo(this.Te).toNumber() } de(e) { return (this.bitmap[Math.floor(e / 8)] & 1 << e % 8) != 0 } mightContain(e) { if (this.Ie === 0) return !1; const n = Ey(e), [r, i] = xy(n); for (let s = 0; s < this.hashCount; s++) { const o = this.Ee(r, i, s); if (!this.de(o)) return !1 } return !0 } static create(e, n, r) { const i = e % 8 == 0 ? 0 : 8 - e % 8, s = new Uint8Array(Math.ceil(e / 8)), o = new kp(s, i, n); return r.forEach(l => o.insert(l)), o } insert(e) { if (this.Ie === 0) return; const n = Ey(e), [r, i] = xy(n); for (let s = 0; s < this.hashCount; s++) { const o = this.Ee(r, i, s); this.Ae(o) } } Ae(e) { const n = Math.floor(e / 8), r = e % 8; this.bitmap[n] |= 1 << r } } class zo extends Error { constructor() { super(...arguments), this.name = "BloomFilterError" } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class bc { constructor(e, n, r, i, s) { this.snapshotVersion = e, this.targetChanges = n, this.targetMismatches = r, this.documentUpdates = i, this.resolvedLimboDocuments = s } static createSynthesizedRemoteEventForCurrentChange(e, n, r) { const i = new Map; return i.set(e, $a.createSynthesizedTargetChangeForCurrentChange(e, n, r)), new bc(le.min(), i, new Oe(_e), sr(), de()) } } class $a { constructor(e, n, r, i, s) { this.resumeToken = e, this.current = n, this.addedDocuments = r, this.modifiedDocuments = i, this.removedDocuments = s } static createSynthesizedTargetChangeForCurrentChange(e, n, r) { return new $a(r, n, de(), de(), de()) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class pu { constructor(e, n, r, i) { this.Re = e, this.removedTargetIds = n, this.key = r, this.Ve = i } } class Tw { constructor(e, n) { this.targetId = e, this.me = n } } class Sw { constructor(e, n, r = ht.EMPTY_BYTE_STRING, i = null) { this.state = e, this.targetIds = n, this.resumeToken = r, this.cause = i } } class ky { constructor() { this.fe = 0, this.ge = Sy(), this.pe = ht.EMPTY_BYTE_STRING, this.ye = !1, this.we = !0 } get current() { return this.ye } get resumeToken() { return this.pe } get Se() { return this.fe !== 0 } get be() { return this.we } De(e) { e.approximateByteSize() > 0 && (this.we = !0, this.pe = e) } ve() { let e = de(), n = de(), r = de(); return this.ge.forEach((i, s) => { switch (s) { case 0: e = e.add(i); break; case 2: n = n.add(i); break; case 1: r = r.add(i); break; default: ae() } }), new $a(this.pe, this.ye, e, n, r) } Ce() { this.we = !1, this.ge = Sy() } Fe(e, n) { this.we = !0, this.ge = this.ge.insert(e, n) } Me(e) { this.we = !0, this.ge = this.ge.remove(e) } xe() { this.fe += 1 } Oe() { this.fe -= 1, Ee(this.fe >= 0) } Ne() { this.we = !0, this.ye = !0 } } class sC { constructor(e) { this.Le = e, this.Be = new Map, this.ke = sr(), this.qe = Ty(), this.Qe = new Oe(_e) } Ke(e) { for (const n of e.Re) e.Ve && e.Ve.isFoundDocument() ? this.$e(n, e.Ve) : this.Ue(n, e.key, e.Ve); for (const n of e.removedTargetIds) this.Ue(n, e.key, e.Ve) } We(e) { this.forEachTarget(e, n => { const r = this.Ge(n); switch (e.state) { case 0: this.ze(n) && r.De(e.resumeToken); break; case 1: r.Oe(), r.Se || r.Ce(), r.De(e.resumeToken); break; case 2: r.Oe(), r.Se || this.removeTarget(n); break; case 3: this.ze(n) && (r.Ne(), r.De(e.resumeToken)); break; case 4: this.ze(n) && (this.je(n), r.De(e.resumeToken)); break; default: ae() } }) } forEachTarget(e, n) { e.targetIds.length > 0 ? e.targetIds.forEach(n) : this.Be.forEach((r, i) => { this.ze(i) && n(i) }) } He(e) { const n = e.targetId, r = e.me.count, i = this.Je(n); if (i) { const s = i.target; if (Qh(s)) if (r === 0) { const o = new re(s.path); this.Ue(n, o, wt.newNoDocument(o, le.min())) } else Ee(r === 1); else { const o = this.Ye(n); if (o !== r) { const l = this.Ze(e), u = l ? this.Xe(l, e, o) : 1; if (u !== 0) { this.je(n); const h = u === 2 ? "TargetPurposeExistenceFilterMismatchBloom" : "TargetPurposeExistenceFilterMismatch"; this.Qe = this.Qe.insert(n, h) } } } } } Ze(e) { const n = e.me.unchangedNames; if (!n || !n.bits) return null; const { bits: { bitmap: r = "", padding: i = 0 }, hashCount: s = 0 } = n; let o, l; try { o = Vi(r).toUint8Array() } catch (u) { if (u instanceof rw) return Fs("Decoding the base64 bloom filter in existence filter failed (" + u.message + "); ignoring the bloom filter and falling back to full re-query."), null; throw u } try { l = new kp(o, i, s) } catch (u) { return Fs(u instanceof zo ? "BloomFilter error: " : "Applying bloom filter failed: ", u), null } return l.Ie === 0 ? null : l } Xe(e, n, r) { return n.me.count === r - this.nt(e, n.targetId) ? 0 : 2 } nt(e, n) { const r = this.Le.getRemoteKeysForTarget(n); let i = 0; return r.forEach(s => { const o = this.Le.tt(), l = `projects/${o.projectId}/databases/${o.database}/documents/${s.path.canonicalString()}`; e.mightContain(l) || (this.Ue(n, s, null), i++) }), i } rt(e) { const n = new Map; this.Be.forEach((s, o) => { const l = this.Je(o); if (l) { if (s.current && Qh(l.target)) { const u = new re(l.target.path); this.ke.get(u) !== null || this.it(o, u) || this.Ue(o, u, wt.newNoDocument(u, e)) } s.be && (n.set(o, s.ve()), s.Ce()) } }); let r = de(); this.qe.forEach((s, o) => { let l = !0; o.forEachWhile(u => { const h = this.Je(u); return !h || h.purpose === "TargetPurposeLimboResolution" || (l = !1, !1) }), l && (r = r.add(s)) }), this.ke.forEach((s, o) => o.setReadTime(e)); const i = new bc(e, n, this.Qe, this.ke, r); return this.ke = sr(), this.qe = Ty(), this.Qe = new Oe(_e), i } $e(e, n) { if (!this.ze(e)) return; const r = this.it(e, n.key) ? 2 : 0; this.Ge(e).Fe(n.key, r), this.ke = this.ke.insert(n.key, n), this.qe = this.qe.insert(n.key, this.st(n.key).add(e)) } Ue(e, n, r) { if (!this.ze(e)) return; const i = this.Ge(e); this.it(e, n) ? i.Fe(n, 1) : i.Me(n), this.qe = this.qe.insert(n, this.st(n).delete(e)), r && (this.ke = this.ke.insert(n, r)) } removeTarget(e) { this.Be.delete(e) } Ye(e) { const n = this.Ge(e).ve(); return this.Le.getRemoteKeysForTarget(e).size + n.addedDocuments.size - n.removedDocuments.size } xe(e) { this.Ge(e).xe() } Ge(e) { let n = this.Be.get(e); return n || (n = new ky, this.Be.set(e, n)), n } st(e) { let n = this.qe.get(e); return n || (n = new ct(_e), this.qe = this.qe.insert(e, n)), n } ze(e) { const n = this.Je(e) !== null; return n || X("WatchChangeAggregator", "Detected inactive target", e), n } Je(e) { const n = this.Be.get(e); return n && n.Se ? null : this.Le.ot(e) } je(e) { this.Be.set(e, new ky), this.Le.getRemoteKeysForTarget(e).forEach(n => { this.Ue(e, n, null) }) } it(e, n) { return this.Le.getRemoteKeysForTarget(e).has(n) } } function Ty() { return new Oe(re.comparator) } function Sy() { return new Oe(re.comparator) } const oC = { asc: "ASCENDING", desc: "DESCENDING" }, aC = { "<": "LESS_THAN", "<=": "LESS_THAN_OR_EQUAL", ">": "GREATER_THAN", ">=": "GREATER_THAN_OR_EQUAL", "==": "EQUAL", "!=": "NOT_EQUAL", "array-contains": "ARRAY_CONTAINS", in: "IN", "not-in": "NOT_IN", "array-contains-any": "ARRAY_CONTAINS_ANY" }, lC = { and: "AND", or: "OR" }; class uC { constructor(e, n) { this.databaseId = e, this.useProto3Json = n } } function Xh(t, e) { return t.useProto3Json || kc(e) ? e : { value: e } } function Zu(t, e) { return t.useProto3Json ? `${new Date(1e3 * e.seconds).toISOString().replace(/\.\d*/, "").replace("Z", "")}.${("000000000" + e.nanoseconds).slice(-9)}Z` : { seconds: "" + e.seconds, nanos: e.nanoseconds } } function Iw(t, e) { return t.useProto3Json ? e.toBase64() : e.toUint8Array() } function cC(t, e) { return Zu(t, e.toTimestamp()) } function Ln(t) { return Ee(!!t), le.fromTimestamp(function (n) { const r = Yr(n); return new et(r.seconds, r.nanos) }(t)) } function Tp(t, e) { return Jh(t, e).canonicalString() } function Jh(t, e) { const n = function (i) { return new Le(["projects", i.projectId, "databases", i.database]) }(t).child("documents"); return e === void 0 ? n : n.child(e) } function Aw(t) { const e = Le.fromString(t); return Ee(Rw(e)), e } function Zh(t, e) { return Tp(t.databaseId, e.path) } function Vd(t, e) { const n = Aw(e); if (n.get(1) !== t.databaseId.projectId) throw new J(F.INVALID_ARGUMENT, "Tried to deserialize key from different project: " + n.get(1) + " vs " + t.databaseId.projectId); if (n.get(3) !== t.databaseId.database) throw new J(F.INVALID_ARGUMENT, "Tried to deserialize key from different database: " + n.get(3) + " vs " + t.databaseId.database); return new re(Nw(n)) } function Cw(t, e) { return Tp(t.databaseId, e) } function dC(t) { const e = Aw(t); return e.length === 4 ? Le.emptyPath() : Nw(e) } function ef(t) { return new Le(["projects", t.databaseId.projectId, "databases", t.databaseId.database]).canonicalString() } function Nw(t) { return Ee(t.length > 4 && t.get(4) === "documents"), t.popFirst(5) } function Iy(t, e, n) { return { name: Zh(t, e), fields: n.value.mapValue.fields } } function hC(t, e) { let n; if ("targetChange" in e) { e.targetChange; const r = function (h) { return h === "NO_CHANGE" ? 0 : h === "ADD" ? 1 : h === "REMOVE" ? 2 : h === "CURRENT" ? 3 : h === "RESET" ? 4 : ae() }(e.targetChange.targetChangeType || "NO_CHANGE"), i = e.targetChange.targetIds || [], s = function (h, p) { return h.useProto3Json ? (Ee(p === void 0 || typeof p == "string"), ht.fromBase64String(p || "")) : (Ee(p === void 0 || p instanceof Buffer || p instanceof Uint8Array), ht.fromUint8Array(p || new Uint8Array)) }(t, e.targetChange.resumeToken), o = e.targetChange.cause, l = o && function (h) { const p = h.code === void 0 ? F.UNKNOWN : kw(h.code); return new J(p, h.message || "") }(o); n = new Sw(r, i, s, l || null) } else if ("documentChange" in e) { e.documentChange; const r = e.documentChange; r.document, r.document.name, r.document.updateTime; const i = Vd(t, r.document.name), s = Ln(r.document.updateTime), o = r.document.createTime ? Ln(r.document.createTime) : le.min(), l = new Rt({ mapValue: { fields: r.document.fields } }), u = wt.newFoundDocument(i, s, o, l), h = r.targetIds || [], p = r.removedTargetIds || []; n = new pu(h, p, u.key, u) } else if ("documentDelete" in e) { e.documentDelete; const r = e.documentDelete; r.document; const i = Vd(t, r.document), s = r.readTime ? Ln(r.readTime) : le.min(), o = wt.newNoDocument(i, s), l = r.removedTargetIds || []; n = new pu([], l, o.key, o) } else if ("documentRemove" in e) { e.documentRemove; const r = e.documentRemove; r.document; const i = Vd(t, r.document), s = r.removedTargetIds || []; n = new pu([], s, i, null) } else { if (!("filter" in e)) return ae(); { e.filter; const r = e.filter; r.targetId; const { count: i = 0, unchangedNames: s } = r, o = new tC(i, s), l = r.targetId; n = new Tw(l, o) } } return n } function fC(t, e) { let n; if (e instanceof Ba) n = { update: Iy(t, e.key, e.value) }; else if (e instanceof Pc) n = { delete: Zh(t, e.key) }; else if (e instanceof ri) n = { update: Iy(t, e.key, e.data), updateMask: xC(e.fieldMask) }; else { if (!(e instanceof JA)) return ae(); n = { verify: Zh(t, e.key) } } return e.fieldTransforms.length > 0 && (n.updateTransforms = e.fieldTransforms.map(r => function (s, o) { const l = o.transform; if (l instanceof Xu) return { fieldPath: o.field.canonicalString(), setToServerValue: "REQUEST_TIME" }; if (l instanceof Aa) return { fieldPath: o.field.canonicalString(), appendMissingElements: { values: l.elements } }; if (l instanceof Ca) return { fieldPath: o.field.canonicalString(), removeAllFromArray: { values: l.elements } }; if (l instanceof Ju) return { fieldPath: o.field.canonicalString(), increment: l.Pe }; throw ae() }(0, r))), e.precondition.isNone || (n.currentDocument = function (i, s) { return s.updateTime !== void 0 ? { updateTime: cC(i, s.updateTime) } : s.exists !== void 0 ? { exists: s.exists } : ae() }(t, e.precondition)), n } function pC(t, e) { return t && t.length > 0 ? (Ee(e !== void 0), t.map(n => function (i, s) { let o = i.updateTime ? Ln(i.updateTime) : Ln(s); return o.isEqual(le.min()) && (o = Ln(s)), new QA(o, i.transformResults || []) }(n, e))) : [] } function mC(t, e) { return { documents: [Cw(t, e.path)] } } function gC(t, e) { const n = { structuredQuery: {} }, r = e.path; let i; e.collectionGroup !== null ? (i = r, n.structuredQuery.from = [{ collectionId: e.collectionGroup, allDescendants: !0 }]) : (i = r.popLast(), n.structuredQuery.from = [{ collectionId: r.lastSegment() }]), n.parent = Cw(t, i); const s = function (h) { if (h.length !== 0) return bw(jn.create(h, "and")) }(e.filters); s && (n.structuredQuery.where = s); const o = function (h) { if (h.length !== 0) return h.map(p => function (m) { return { field: os(m.field), direction: _C(m.dir) } }(p)) }(e.orderBy); o && (n.structuredQuery.orderBy = o); const l = Xh(t, e.limit); return l !== null && (n.structuredQuery.limit = l), e.startAt && (n.structuredQuery.startAt = function (h) { return { before: h.inclusive, values: h.position } }(e.startAt)), e.endAt && (n.structuredQuery.endAt = function (h) { return { before: !h.inclusive, values: h.position } }(e.endAt)), { _t: n, parent: i } } function yC(t) { let e = dC(t.parent); const n = t.structuredQuery, r = n.from ? n.from.length : 0; let i = null; if (r > 0) { Ee(r === 1); const p = n.from[0]; p.allDescendants ? i = p.collectionId : e = e.child(p.collectionId) } let s = []; n.where && (s = function (v) { const m = Pw(v); return m instanceof jn && aw(m) ? m.getFilters() : [m] }(n.where)); let o = []; n.orderBy && (o = function (v) { return v.map(m => function (R) { return new Yu(as(R.field), function (V) { switch (V) { case "ASCENDING": return "asc"; case "DESCENDING": return "desc"; default: return } }(R.direction)) }(m)) }(n.orderBy)); let l = null; n.limit && (l = function (v) { let m; return m = typeof v == "object" ? v.value : v, kc(m) ? null : m }(n.limit)); let u = null; n.startAt && (u = function (v) { const m = !!v.before, C = v.values || []; return new Qu(C, m) }(n.startAt)); let h = null; return n.endAt && (h = function (v) { const m = !v.before, C = v.values || []; return new Qu(C, m) }(n.endAt)), MA(e, i, o, s, l, "F", u, h) } function vC(t, e) { const n = function (i) { switch (i) { case "TargetPurposeListen": return null; case "TargetPurposeExistenceFilterMismatch": return "existence-filter-mismatch"; case "TargetPurposeExistenceFilterMismatchBloom": return "existence-filter-mismatch-bloom"; case "TargetPurposeLimboResolution": return "limbo-document"; default: return ae() } }(e.purpose); return n == null ? null : { "goog-listen-tags": n } } function Pw(t) { return t.unaryFilter !== void 0 ? function (n) { switch (n.unaryFilter.op) { case "IS_NAN": const r = as(n.unaryFilter.field); return Je.create(r, "==", { doubleValue: NaN }); case "IS_NULL": const i = as(n.unaryFilter.field); return Je.create(i, "==", { nullValue: "NULL_VALUE" }); case "IS_NOT_NAN": const s = as(n.unaryFilter.field); return Je.create(s, "!=", { doubleValue: NaN }); case "IS_NOT_NULL": const o = as(n.unaryFilter.field); return Je.create(o, "!=", { nullValue: "NULL_VALUE" }); default: return ae() } }(t) : t.fieldFilter !== void 0 ? function (n) { return Je.create(as(n.fieldFilter.field), function (i) { switch (i) { case "EQUAL": return "=="; case "NOT_EQUAL": return "!="; case "GREATER_THAN": return ">"; case "GREATER_THAN_OR_EQUAL": return ">="; case "LESS_THAN": return "<"; case "LESS_THAN_OR_EQUAL": return "<="; case "ARRAY_CONTAINS": return "array-contains"; case "IN": return "in"; case "NOT_IN": return "not-in"; case "ARRAY_CONTAINS_ANY": return "array-contains-any"; default: return ae() } }(n.fieldFilter.op), n.fieldFilter.value) }(t) : t.compositeFilter !== void 0 ? function (n) { return jn.create(n.compositeFilter.filters.map(r => Pw(r)), function (i) { switch (i) { case "AND": return "and"; case "OR": return "or"; default: return ae() } }(n.compositeFilter.op)) }(t) : ae() } function _C(t) { return oC[t] } function wC(t) { return aC[t] } function EC(t) { return lC[t] } function os(t) { return { fieldPath: t.canonicalString() } } function as(t) { return lt.fromServerFormat(t.fieldPath) } function bw(t) { return t instanceof Je ? function (n) { if (n.op === "==") { if (hy(n.value)) return { unaryFilter: { field: os(n.field), op: "IS_NAN" } }; if (dy(n.value)) return { unaryFilter: { field: os(n.field), op: "IS_NULL" } } } else if (n.op === "!=") { if (hy(n.value)) return { unaryFilter: { field: os(n.field), op: "IS_NOT_NAN" } }; if (dy(n.value)) return { unaryFilter: { field: os(n.field), op: "IS_NOT_NULL" } } } return { fieldFilter: { field: os(n.field), op: wC(n.op), value: n.value } } }(t) : t instanceof jn ? function (n) { const r = n.getFilters().map(i => bw(i)); return r.length === 1 ? r[0] : { compositeFilter: { op: EC(n.op), filters: r } } }(t) : ae() } function xC(t) { const e = []; return t.fields.forEach(n => e.push(n.canonicalString())), { fieldPaths: e } } function Rw(t) { return t.length >= 4 && t.get(0) === "projects" && t.get(2) === "databases" }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Dr { constructor(e, n, r, i, s = le.min(), o = le.min(), l = ht.EMPTY_BYTE_STRING, u = null) { this.target = e, this.targetId = n, this.purpose = r, this.sequenceNumber = i, this.snapshotVersion = s, this.lastLimboFreeSnapshotVersion = o, this.resumeToken = l, this.expectedCount = u } withSequenceNumber(e) { return new Dr(this.target, this.targetId, this.purpose, e, this.snapshotVersion, this.lastLimboFreeSnapshotVersion, this.resumeToken, this.expectedCount) } withResumeToken(e, n) { return new Dr(this.target, this.targetId, this.purpose, this.sequenceNumber, n, this.lastLimboFreeSnapshotVersion, e, null) } withExpectedCount(e) { return new Dr(this.target, this.targetId, this.purpose, this.sequenceNumber, this.snapshotVersion, this.lastLimboFreeSnapshotVersion, this.resumeToken, e) } withLastLimboFreeSnapshotVersion(e) { return new Dr(this.target, this.targetId, this.purpose, this.sequenceNumber, this.snapshotVersion, e, this.resumeToken, this.expectedCount) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class kC { constructor(e) { this.ct = e } } function TC(t) { const e = yC({ parent: t.parent, structuredQuery: t.structuredQuery }); return t.limitType === "LAST" ? Yh(e, e.limit, "L") : e }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class SC { constructor() { this.un = new IC } addToCollectionParentIndex(e, n) { return this.un.add(n), z.resolve() } getCollectionParents(e, n) { return z.resolve(this.un.getEntries(n)) } addFieldIndex(e, n) { return z.resolve() } deleteFieldIndex(e, n) { return z.resolve() } deleteAllFieldIndexes(e) { return z.resolve() } createTargetIndexes(e, n) { return z.resolve() } getDocumentsMatchingTarget(e, n) { return z.resolve(null) } getIndexType(e, n) { return z.resolve(0) } getFieldIndexes(e, n) { return z.resolve([]) } getNextCollectionGroupToUpdate(e) { return z.resolve(null) } getMinOffset(e, n) { return z.resolve(Qr.min()) } getMinOffsetFromCollectionGroup(e, n) { return z.resolve(Qr.min()) } updateCollectionGroup(e, n, r) { return z.resolve() } updateIndexEntries(e, n) { return z.resolve() } } class IC { constructor() { this.index = {} } add(e) { const n = e.lastSegment(), r = e.popLast(), i = this.index[n] || new ct(Le.comparator), s = !i.has(r); return this.index[n] = i.add(r), s } has(e) { const n = e.lastSegment(), r = e.popLast(), i = this.index[n]; return i && i.has(r) } getEntries(e) { return (this.index[e] || new ct(Le.comparator)).toArray() } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class $s { constructor(e) { this.Ln = e } next() { return this.Ln += 2, this.Ln } static Bn() { return new $s(0) } static kn() { return new $s(-1) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class AC { constructor() { this.changes = new Js(e => e.toString(), (e, n) => e.isEqual(n)), this.changesApplied = !1 } addEntry(e) { this.assertNotApplied(), this.changes.set(e.key, e) } removeEntry(e, n) { this.assertNotApplied(), this.changes.set(e, wt.newInvalidDocument(e).setReadTime(n)) } getEntry(e, n) { this.assertNotApplied(); const r = this.changes.get(n); return r !== void 0 ? z.resolve(r) : this.getFromCache(e, n) } getEntries(e, n) { return this.getAllFromCache(e, n) } apply(e) { return this.assertNotApplied(), this.changesApplied = !0, this.applyChanges(e) } assertNotApplied() { } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*//**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class CC { constructor(e, n) { this.overlayedDocument = e, this.mutatedFields = n } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class NC { constructor(e, n, r, i) { this.remoteDocumentCache = e, this.mutationQueue = n, this.documentOverlayCache = r, this.indexManager = i } getDocument(e, n) { let r = null; return this.documentOverlayCache.getOverlay(e, n).next(i => (r = i, this.remoteDocumentCache.getEntry(e, n))).next(i => (r !== null && na(r.mutation, i, $t.empty(), et.now()), i)) } getDocuments(e, n) { return this.remoteDocumentCache.getEntries(e, n).next(r => this.getLocalViewOfDocuments(e, r, de()).next(() => r)) } getLocalViewOfDocuments(e, n, r = de()) { const i = Ti(); return this.populateOverlays(e, i, n).next(() => this.computeViews(e, n, i, r).next(s => { let o = Uo(); return s.forEach((l, u) => { o = o.insert(l, u.overlayedDocument) }), o })) } getOverlayedDocuments(e, n) { const r = Ti(); return this.populateOverlays(e, r, n).next(() => this.computeViews(e, n, r, de())) } populateOverlays(e, n, r) { const i = []; return r.forEach(s => { n.has(s) || i.push(s) }), this.documentOverlayCache.getOverlays(e, i).next(s => { s.forEach((o, l) => { n.set(o, l) }) }) } computeViews(e, n, r, i) { let s = sr(); const o = ta(), l = function () { return ta() }(); return n.forEach((u, h) => { const p = r.get(h.key); i.has(h.key) && (p === void 0 || p.mutation instanceof ri) ? s = s.insert(h.key, h) : p !== void 0 ? (o.set(h.key, p.mutation.getFieldMask()), na(p.mutation, h, p.mutation.getFieldMask(), et.now())) : o.set(h.key, $t.empty()) }), this.recalculateAndSaveOverlays(e, s).next(u => (u.forEach((h, p) => o.set(h, p)), n.forEach((h, p) => { var v; return l.set(h, new CC(p, (v = o.get(h)) !== null && v !== void 0 ? v : null)) }), l)) } recalculateAndSaveOverlays(e, n) { const r = ta(); let i = new Oe((o, l) => o - l), s = de(); return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e, n).next(o => { for (const l of o) l.keys().forEach(u => { const h = n.get(u); if (h === null) return; let p = r.get(u) || $t.empty(); p = l.applyToLocalView(h, p), r.set(u, p); const v = (i.get(l.batchId) || de()).add(u); i = i.insert(l.batchId, v) }) }).next(() => { const o = [], l = i.getReverseIterator(); for (; l.hasNext();) { const u = l.getNext(), h = u.key, p = u.value, v = mw(); p.forEach(m => { if (!s.has(m)) { const C = Ew(n.get(m), r.get(m)); C !== null && v.set(m, C), s = s.add(m) } }), o.push(this.documentOverlayCache.saveOverlays(e, h, v)) } return z.waitFor(o) }).next(() => r) } recalculateAndSaveOverlaysForDocumentKeys(e, n) { return this.remoteDocumentCache.getEntries(e, n).next(r => this.recalculateAndSaveOverlays(e, r)) } getDocumentsMatchingQuery(e, n, r, i) { return function (o) { return re.isDocumentKey(o.path) && o.collectionGroup === null && o.filters.length === 0 }(n) ? this.getDocumentsMatchingDocumentQuery(e, n.path) : jA(n) ? this.getDocumentsMatchingCollectionGroupQuery(e, n, r, i) : this.getDocumentsMatchingCollectionQuery(e, n, r, i) } getNextDocuments(e, n, r, i) { return this.remoteDocumentCache.getAllFromCollectionGroup(e, n, r, i).next(s => { const o = i - s.size > 0 ? this.documentOverlayCache.getOverlaysForCollectionGroup(e, n, r.largestBatchId, i - s.size) : z.resolve(Ti()); let l = -1, u = s; return o.next(h => z.forEach(h, (p, v) => (l < v.largestBatchId && (l = v.largestBatchId), s.get(p) ? z.resolve() : this.remoteDocumentCache.getEntry(e, p).next(m => { u = u.insert(p, m) }))).next(() => this.populateOverlays(e, h, s)).next(() => this.computeViews(e, u, h, de())).next(p => ({ batchId: l, changes: pw(p) }))) }) } getDocumentsMatchingDocumentQuery(e, n) { return this.getDocument(e, new re(n)).next(r => { let i = Uo(); return r.isFoundDocument() && (i = i.insert(r.key, r)), i }) } getDocumentsMatchingCollectionGroupQuery(e, n, r, i) { const s = n.collectionGroup; let o = Uo(); return this.indexManager.getCollectionParents(e, s).next(l => z.forEach(l, u => { const h = function (v, m) { return new Tc(m, null, v.explicitOrderBy.slice(), v.filters.slice(), v.limit, v.limitType, v.startAt, v.endAt) }(n, u.child(s)); return this.getDocumentsMatchingCollectionQuery(e, h, r, i).next(p => { p.forEach((v, m) => { o = o.insert(v, m) }) }) }).next(() => o)) } getDocumentsMatchingCollectionQuery(e, n, r, i) { let s; return this.documentOverlayCache.getOverlaysForCollection(e, n.path, r.largestBatchId).next(o => (s = o, this.remoteDocumentCache.getDocumentsMatchingQuery(e, n, r, s, i))).next(o => { s.forEach((u, h) => { const p = h.getKey(); o.get(p) === null && (o = o.insert(p, wt.newInvalidDocument(p))) }); let l = Uo(); return o.forEach((u, h) => { const p = s.get(u); p !== void 0 && na(p.mutation, h, $t.empty(), et.now()), Ac(n, h) && (l = l.insert(u, h)) }), l }) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class PC { constructor(e) { this.serializer = e, this.hr = new Map, this.Pr = new Map } getBundleMetadata(e, n) { return z.resolve(this.hr.get(n)) } saveBundleMetadata(e, n) { return this.hr.set(n.id, function (i) { return { id: i.id, version: i.version, createTime: Ln(i.createTime) } }(n)), z.resolve() } getNamedQuery(e, n) { return z.resolve(this.Pr.get(n)) } saveNamedQuery(e, n) { return this.Pr.set(n.name, function (i) { return { name: i.name, query: TC(i.bundledQuery), readTime: Ln(i.readTime) } }(n)), z.resolve() } }/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class bC { constructor() { this.overlays = new Oe(re.comparator), this.Ir = new Map } getOverlay(e, n) { return z.resolve(this.overlays.get(n)) } getOverlays(e, n) { const r = Ti(); return z.forEach(n, i => this.getOverlay(e, i).next(s => { s !== null && r.set(i, s) })).next(() => r) } saveOverlays(e, n, r) { return r.forEach((i, s) => { this.ht(e, n, s) }), z.resolve() } removeOverlaysForBatchId(e, n, r) { const i = this.Ir.get(r); return i !== void 0 && (i.forEach(s => this.overlays = this.overlays.remove(s)), this.Ir.delete(r)), z.resolve() } getOverlaysForCollection(e, n, r) { const i = Ti(), s = n.length + 1, o = new re(n.child("")), l = this.overlays.getIteratorFrom(o); for (; l.hasNext();) { const u = l.getNext().value, h = u.getKey(); if (!n.isPrefixOf(h.path)) break; h.path.length === s && u.largestBatchId > r && i.set(u.getKey(), u) } return z.resolve(i) } getOverlaysForCollectionGroup(e, n, r, i) { let s = new Oe((h, p) => h - p); const o = this.overlays.getIterator(); for (; o.hasNext();) { const h = o.getNext().value; if (h.getKey().getCollectionGroup() === n && h.largestBatchId > r) { let p = s.get(h.largestBatchId); p === null && (p = Ti(), s = s.insert(h.largestBatchId, p)), p.set(h.getKey(), h) } } const l = Ti(), u = s.getIterator(); for (; u.hasNext() && (u.getNext().value.forEach((h, p) => l.set(h, p)), !(l.size() >= i));); return z.resolve(l) } ht(e, n, r) { const i = this.overlays.get(r.key); if (i !== null) { const o = this.Ir.get(i.largestBatchId).delete(r.key); this.Ir.set(i.largestBatchId, o) } this.overlays = this.overlays.insert(r.key, new eC(n, r)); let s = this.Ir.get(n); s === void 0 && (s = de(), this.Ir.set(n, s)), this.Ir.set(n, s.add(r.key)) } }/**
|
|
* @license
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class RC { constructor() { this.sessionToken = ht.EMPTY_BYTE_STRING } getSessionToken(e) { return z.resolve(this.sessionToken) } setSessionToken(e, n) { return this.sessionToken = n, z.resolve() } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Sp { constructor() { this.Tr = new ct(tt.Er), this.dr = new ct(tt.Ar) } isEmpty() { return this.Tr.isEmpty() } addReference(e, n) { const r = new tt(e, n); this.Tr = this.Tr.add(r), this.dr = this.dr.add(r) } Rr(e, n) { e.forEach(r => this.addReference(r, n)) } removeReference(e, n) { this.Vr(new tt(e, n)) } mr(e, n) { e.forEach(r => this.removeReference(r, n)) } gr(e) { const n = new re(new Le([])), r = new tt(n, e), i = new tt(n, e + 1), s = []; return this.dr.forEachInRange([r, i], o => { this.Vr(o), s.push(o.key) }), s } pr() { this.Tr.forEach(e => this.Vr(e)) } Vr(e) { this.Tr = this.Tr.delete(e), this.dr = this.dr.delete(e) } yr(e) { const n = new re(new Le([])), r = new tt(n, e), i = new tt(n, e + 1); let s = de(); return this.dr.forEachInRange([r, i], o => { s = s.add(o.key) }), s } containsKey(e) { const n = new tt(e, 0), r = this.Tr.firstAfterOrEqual(n); return r !== null && e.isEqual(r.key) } } class tt { constructor(e, n) { this.key = e, this.wr = n } static Er(e, n) { return re.comparator(e.key, n.key) || _e(e.wr, n.wr) } static Ar(e, n) { return _e(e.wr, n.wr) || re.comparator(e.key, n.key) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class DC { constructor(e, n) { this.indexManager = e, this.referenceDelegate = n, this.mutationQueue = [], this.Sr = 1, this.br = new ct(tt.Er) } checkEmpty(e) { return z.resolve(this.mutationQueue.length === 0) } addMutationBatch(e, n, r, i) { const s = this.Sr; this.Sr++, this.mutationQueue.length > 0 && this.mutationQueue[this.mutationQueue.length - 1]; const o = new ZA(s, n, r, i); this.mutationQueue.push(o); for (const l of i) this.br = this.br.add(new tt(l.key, s)), this.indexManager.addToCollectionParentIndex(e, l.key.path.popLast()); return z.resolve(o) } lookupMutationBatch(e, n) { return z.resolve(this.Dr(n)) } getNextMutationBatchAfterBatchId(e, n) { const r = n + 1, i = this.vr(r), s = i < 0 ? 0 : i; return z.resolve(this.mutationQueue.length > s ? this.mutationQueue[s] : null) } getHighestUnacknowledgedBatchId() { return z.resolve(this.mutationQueue.length === 0 ? -1 : this.Sr - 1) } getAllMutationBatches(e) { return z.resolve(this.mutationQueue.slice()) } getAllMutationBatchesAffectingDocumentKey(e, n) { const r = new tt(n, 0), i = new tt(n, Number.POSITIVE_INFINITY), s = []; return this.br.forEachInRange([r, i], o => { const l = this.Dr(o.wr); s.push(l) }), z.resolve(s) } getAllMutationBatchesAffectingDocumentKeys(e, n) { let r = new ct(_e); return n.forEach(i => { const s = new tt(i, 0), o = new tt(i, Number.POSITIVE_INFINITY); this.br.forEachInRange([s, o], l => { r = r.add(l.wr) }) }), z.resolve(this.Cr(r)) } getAllMutationBatchesAffectingQuery(e, n) { const r = n.path, i = r.length + 1; let s = r; re.isDocumentKey(s) || (s = s.child("")); const o = new tt(new re(s), 0); let l = new ct(_e); return this.br.forEachWhile(u => { const h = u.key.path; return !!r.isPrefixOf(h) && (h.length === i && (l = l.add(u.wr)), !0) }, o), z.resolve(this.Cr(l)) } Cr(e) { const n = []; return e.forEach(r => { const i = this.Dr(r); i !== null && n.push(i) }), n } removeMutationBatch(e, n) { Ee(this.Fr(n.batchId, "removed") === 0), this.mutationQueue.shift(); let r = this.br; return z.forEach(n.mutations, i => { const s = new tt(i.key, n.batchId); return r = r.delete(s), this.referenceDelegate.markPotentiallyOrphaned(e, i.key) }).next(() => { this.br = r }) } On(e) { } containsKey(e, n) { const r = new tt(n, 0), i = this.br.firstAfterOrEqual(r); return z.resolve(n.isEqual(i && i.key)) } performConsistencyCheck(e) { return this.mutationQueue.length, z.resolve() } Fr(e, n) { return this.vr(e) } vr(e) { return this.mutationQueue.length === 0 ? 0 : e - this.mutationQueue[0].batchId } Dr(e) { const n = this.vr(e); return n < 0 || n >= this.mutationQueue.length ? null : this.mutationQueue[n] } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class LC { constructor(e) { this.Mr = e, this.docs = function () { return new Oe(re.comparator) }(), this.size = 0 } setIndexManager(e) { this.indexManager = e } addEntry(e, n) { const r = n.key, i = this.docs.get(r), s = i ? i.size : 0, o = this.Mr(n); return this.docs = this.docs.insert(r, { document: n.mutableCopy(), size: o }), this.size += o - s, this.indexManager.addToCollectionParentIndex(e, r.path.popLast()) } removeEntry(e) { const n = this.docs.get(e); n && (this.docs = this.docs.remove(e), this.size -= n.size) } getEntry(e, n) { const r = this.docs.get(n); return z.resolve(r ? r.document.mutableCopy() : wt.newInvalidDocument(n)) } getEntries(e, n) { let r = sr(); return n.forEach(i => { const s = this.docs.get(i); r = r.insert(i, s ? s.document.mutableCopy() : wt.newInvalidDocument(i)) }), z.resolve(r) } getDocumentsMatchingQuery(e, n, r, i) { let s = sr(); const o = n.path, l = new re(o.child("")), u = this.docs.getIteratorFrom(l); for (; u.hasNext();) { const { key: h, value: { document: p } } = u.getNext(); if (!o.isPrefixOf(h.path)) break; h.path.length > o.length + 1 || gA(mA(p), r) <= 0 || (i.has(p.key) || Ac(n, p)) && (s = s.insert(p.key, p.mutableCopy())) } return z.resolve(s) } getAllFromCollectionGroup(e, n, r, i) { ae() } Or(e, n) { return z.forEach(this.docs, r => n(r)) } newChangeBuffer(e) { return new MC(this) } getSize(e) { return z.resolve(this.size) } } class MC extends AC { constructor(e) { super(), this.cr = e } applyChanges(e) { const n = []; return this.changes.forEach((r, i) => { i.isValidDocument() ? n.push(this.cr.addEntry(e, i)) : this.cr.removeEntry(r) }), z.waitFor(n) } getFromCache(e, n) { return this.cr.getEntry(e, n) } getAllFromCache(e, n) { return this.cr.getEntries(e, n) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class jC { constructor(e) { this.persistence = e, this.Nr = new Js(n => _p(n), wp), this.lastRemoteSnapshotVersion = le.min(), this.highestTargetId = 0, this.Lr = 0, this.Br = new Sp, this.targetCount = 0, this.kr = $s.Bn() } forEachTarget(e, n) { return this.Nr.forEach((r, i) => n(i)), z.resolve() } getLastRemoteSnapshotVersion(e) { return z.resolve(this.lastRemoteSnapshotVersion) } getHighestSequenceNumber(e) { return z.resolve(this.Lr) } allocateTargetId(e) { return this.highestTargetId = this.kr.next(), z.resolve(this.highestTargetId) } setTargetsMetadata(e, n, r) { return r && (this.lastRemoteSnapshotVersion = r), n > this.Lr && (this.Lr = n), z.resolve() } Kn(e) { this.Nr.set(e.target, e); const n = e.targetId; n > this.highestTargetId && (this.kr = new $s(n), this.highestTargetId = n), e.sequenceNumber > this.Lr && (this.Lr = e.sequenceNumber) } addTargetData(e, n) { return this.Kn(n), this.targetCount += 1, z.resolve() } updateTargetData(e, n) { return this.Kn(n), z.resolve() } removeTargetData(e, n) { return this.Nr.delete(n.target), this.Br.gr(n.targetId), this.targetCount -= 1, z.resolve() } removeTargets(e, n, r) { let i = 0; const s = []; return this.Nr.forEach((o, l) => { l.sequenceNumber <= n && r.get(l.targetId) === null && (this.Nr.delete(o), s.push(this.removeMatchingKeysForTargetId(e, l.targetId)), i++) }), z.waitFor(s).next(() => i) } getTargetCount(e) { return z.resolve(this.targetCount) } getTargetData(e, n) { const r = this.Nr.get(n) || null; return z.resolve(r) } addMatchingKeys(e, n, r) { return this.Br.Rr(n, r), z.resolve() } removeMatchingKeys(e, n, r) { this.Br.mr(n, r); const i = this.persistence.referenceDelegate, s = []; return i && n.forEach(o => { s.push(i.markPotentiallyOrphaned(e, o)) }), z.waitFor(s) } removeMatchingKeysForTargetId(e, n) { return this.Br.gr(n), z.resolve() } getMatchingKeysForTargetId(e, n) { const r = this.Br.yr(n); return z.resolve(r) } containsKey(e, n) { return z.resolve(this.Br.containsKey(n)) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class VC { constructor(e, n) { this.qr = {}, this.overlays = {}, this.Qr = new mp(0), this.Kr = !1, this.Kr = !0, this.$r = new RC, this.referenceDelegate = e(this), this.Ur = new jC(this), this.indexManager = new SC, this.remoteDocumentCache = function (i) { return new LC(i) }(r => this.referenceDelegate.Wr(r)), this.serializer = new kC(n), this.Gr = new PC(this.serializer) } start() { return Promise.resolve() } shutdown() { return this.Kr = !1, Promise.resolve() } get started() { return this.Kr } setDatabaseDeletedListener() { } setNetworkEnabled() { } getIndexManager(e) { return this.indexManager } getDocumentOverlayCache(e) { let n = this.overlays[e.toKey()]; return n || (n = new bC, this.overlays[e.toKey()] = n), n } getMutationQueue(e, n) { let r = this.qr[e.toKey()]; return r || (r = new DC(n, this.referenceDelegate), this.qr[e.toKey()] = r), r } getGlobalsCache() { return this.$r } getTargetCache() { return this.Ur } getRemoteDocumentCache() { return this.remoteDocumentCache } getBundleCache() { return this.Gr } runTransaction(e, n, r) { X("MemoryPersistence", "Starting transaction:", e); const i = new OC(this.Qr.next()); return this.referenceDelegate.zr(), r(i).next(s => this.referenceDelegate.jr(i).next(() => s)).toPromise().then(s => (i.raiseOnCommittedEvent(), s)) } Hr(e, n) { return z.or(Object.values(this.qr).map(r => () => r.containsKey(e, n))) } } class OC extends vA { constructor(e) { super(), this.currentSequenceNumber = e } } class Ip { constructor(e) { this.persistence = e, this.Jr = new Sp, this.Yr = null } static Zr(e) { return new Ip(e) } get Xr() { if (this.Yr) return this.Yr; throw ae() } addReference(e, n, r) { return this.Jr.addReference(r, n), this.Xr.delete(r.toString()), z.resolve() } removeReference(e, n, r) { return this.Jr.removeReference(r, n), this.Xr.add(r.toString()), z.resolve() } markPotentiallyOrphaned(e, n) { return this.Xr.add(n.toString()), z.resolve() } removeTarget(e, n) { this.Jr.gr(n.targetId).forEach(i => this.Xr.add(i.toString())); const r = this.persistence.getTargetCache(); return r.getMatchingKeysForTargetId(e, n.targetId).next(i => { i.forEach(s => this.Xr.add(s.toString())) }).next(() => r.removeTargetData(e, n)) } zr() { this.Yr = new Set } jr(e) { const n = this.persistence.getRemoteDocumentCache().newChangeBuffer(); return z.forEach(this.Xr, r => { const i = re.fromPath(r); return this.ei(e, i).next(s => { s || n.removeEntry(i, le.min()) }) }).next(() => (this.Yr = null, n.apply(e))) } updateLimboDocument(e, n) { return this.ei(e, n).next(r => { r ? this.Xr.delete(n.toString()) : this.Xr.add(n.toString()) }) } Wr(e) { return 0 } ei(e, n) { return z.or([() => z.resolve(this.Jr.containsKey(n)), () => this.persistence.getTargetCache().containsKey(e, n), () => this.persistence.Hr(e, n)]) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ap { constructor(e, n, r, i) { this.targetId = e, this.fromCache = n, this.$i = r, this.Ui = i } static Wi(e, n) { let r = de(), i = de(); for (const s of n.docChanges) switch (s.type) { case 0: r = r.add(s.doc.key); break; case 1: i = i.add(s.doc.key) }return new Ap(e, n.fromCache, r, i) } }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class FC { constructor() { this._documentReadCount = 0 } get documentReadCount() { return this._documentReadCount } incrementDocumentReadCount(e) { this._documentReadCount += e } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class UC { constructor() { this.Gi = !1, this.zi = !1, this.ji = 100, this.Hi = function () { return NT() ? 8 : _A(xt()) > 0 ? 6 : 4 }() } initialize(e, n) { this.Ji = e, this.indexManager = n, this.Gi = !0 } getDocumentsMatchingQuery(e, n, r, i) { const s = { result: null }; return this.Yi(e, n).next(o => { s.result = o }).next(() => { if (!s.result) return this.Zi(e, n, i, r).next(o => { s.result = o }) }).next(() => { if (s.result) return; const o = new FC; return this.Xi(e, n, o).next(l => { if (s.result = l, this.zi) return this.es(e, n, o, l.size) }) }).next(() => s.result) } es(e, n, r, i) { return r.documentReadCount < this.ji ? (Po() <= he.DEBUG && X("QueryEngine", "SDK will not create cache indexes for query:", ss(n), "since it only creates cache indexes for collection contains", "more than or equal to", this.ji, "documents"), z.resolve()) : (Po() <= he.DEBUG && X("QueryEngine", "Query:", ss(n), "scans", r.documentReadCount, "local documents and returns", i, "documents as results."), r.documentReadCount > this.Hi * i ? (Po() <= he.DEBUG && X("QueryEngine", "The SDK decides to create cache indexes for query:", ss(n), "as using cache indexes may help improve performance."), this.indexManager.createTargetIndexes(e, Dn(n))) : z.resolve()) } Yi(e, n) { if (gy(n)) return z.resolve(null); let r = Dn(n); return this.indexManager.getIndexType(e, r).next(i => i === 0 ? null : (n.limit !== null && i === 1 && (n = Yh(n, null, "F"), r = Dn(n)), this.indexManager.getDocumentsMatchingTarget(e, r).next(s => { const o = de(...s); return this.Ji.getDocuments(e, o).next(l => this.indexManager.getMinOffset(e, r).next(u => { const h = this.ts(n, l); return this.ns(n, h, o, u.readTime) ? this.Yi(e, Yh(n, null, "F")) : this.rs(e, h, n, u) })) }))) } Zi(e, n, r, i) { return gy(n) || i.isEqual(le.min()) ? z.resolve(null) : this.Ji.getDocuments(e, r).next(s => { const o = this.ts(n, s); return this.ns(n, o, r, i) ? z.resolve(null) : (Po() <= he.DEBUG && X("QueryEngine", "Re-using previous result from %s to execute query: %s", i.toString(), ss(n)), this.rs(e, o, n, pA(i, -1)).next(l => l)) }) } ts(e, n) { let r = new ct(hw(e)); return n.forEach((i, s) => { Ac(e, s) && (r = r.add(s)) }), r } ns(e, n, r, i) { if (e.limit === null) return !1; if (r.size !== n.size) return !0; const s = e.limitType === "F" ? n.last() : n.first(); return !!s && (s.hasPendingWrites || s.version.compareTo(i) > 0) } Xi(e, n, r) { return Po() <= he.DEBUG && X("QueryEngine", "Using full collection scan to execute query:", ss(n)), this.Ji.getDocumentsMatchingQuery(e, n, Qr.min(), r) } rs(e, n, r, i) { return this.Ji.getDocumentsMatchingQuery(e, r, i).next(s => (n.forEach(o => { s = s.insert(o.key, o) }), s)) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class zC { constructor(e, n, r, i) { this.persistence = e, this.ss = n, this.serializer = i, this.os = new Oe(_e), this._s = new Js(s => _p(s), wp), this.us = new Map, this.cs = e.getRemoteDocumentCache(), this.Ur = e.getTargetCache(), this.Gr = e.getBundleCache(), this.ls(r) } ls(e) { this.documentOverlayCache = this.persistence.getDocumentOverlayCache(e), this.indexManager = this.persistence.getIndexManager(e), this.mutationQueue = this.persistence.getMutationQueue(e, this.indexManager), this.localDocuments = new NC(this.cs, this.mutationQueue, this.documentOverlayCache, this.indexManager), this.cs.setIndexManager(this.indexManager), this.ss.initialize(this.localDocuments, this.indexManager) } collectGarbage(e) { return this.persistence.runTransaction("Collect garbage", "readwrite-primary", n => e.collect(n, this.os)) } } function BC(t, e, n, r) { return new zC(t, e, n, r) } async function Dw(t, e) { const n = ue(t); return await n.persistence.runTransaction("Handle user change", "readonly", r => { let i; return n.mutationQueue.getAllMutationBatches(r).next(s => (i = s, n.ls(e), n.mutationQueue.getAllMutationBatches(r))).next(s => { const o = [], l = []; let u = de(); for (const h of i) { o.push(h.batchId); for (const p of h.mutations) u = u.add(p.key) } for (const h of s) { l.push(h.batchId); for (const p of h.mutations) u = u.add(p.key) } return n.localDocuments.getDocuments(r, u).next(h => ({ hs: h, removedBatchIds: o, addedBatchIds: l })) }) }) } function $C(t, e) { const n = ue(t); return n.persistence.runTransaction("Acknowledge batch", "readwrite-primary", r => { const i = e.batch.keys(), s = n.cs.newChangeBuffer({ trackRemovals: !0 }); return function (l, u, h, p) { const v = h.batch, m = v.keys(); let C = z.resolve(); return m.forEach(R => { C = C.next(() => p.getEntry(u, R)).next(L => { const V = h.docVersions.get(R); Ee(V !== null), L.version.compareTo(V) < 0 && (v.applyToRemoteDocument(L, h), L.isValidDocument() && (L.setReadTime(h.commitVersion), p.addEntry(L))) }) }), C.next(() => l.mutationQueue.removeMutationBatch(u, v)) }(n, r, e, s).next(() => s.apply(r)).next(() => n.mutationQueue.performConsistencyCheck(r)).next(() => n.documentOverlayCache.removeOverlaysForBatchId(r, i, e.batch.batchId)).next(() => n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(r, function (l) { let u = de(); for (let h = 0; h < l.mutationResults.length; ++h)l.mutationResults[h].transformResults.length > 0 && (u = u.add(l.batch.mutations[h].key)); return u }(e))).next(() => n.localDocuments.getDocuments(r, i)) }) } function Lw(t) { const e = ue(t); return e.persistence.runTransaction("Get last remote snapshot version", "readonly", n => e.Ur.getLastRemoteSnapshotVersion(n)) } function WC(t, e) { const n = ue(t), r = e.snapshotVersion; let i = n.os; return n.persistence.runTransaction("Apply remote event", "readwrite-primary", s => { const o = n.cs.newChangeBuffer({ trackRemovals: !0 }); i = n.os; const l = []; e.targetChanges.forEach((p, v) => { const m = i.get(v); if (!m) return; l.push(n.Ur.removeMatchingKeys(s, p.removedDocuments, v).next(() => n.Ur.addMatchingKeys(s, p.addedDocuments, v))); let C = m.withSequenceNumber(s.currentSequenceNumber); e.targetMismatches.get(v) !== null ? C = C.withResumeToken(ht.EMPTY_BYTE_STRING, le.min()).withLastLimboFreeSnapshotVersion(le.min()) : p.resumeToken.approximateByteSize() > 0 && (C = C.withResumeToken(p.resumeToken, r)), i = i.insert(v, C), function (L, V, S) { return L.resumeToken.approximateByteSize() === 0 || V.snapshotVersion.toMicroseconds() - L.snapshotVersion.toMicroseconds() >= 3e8 ? !0 : S.addedDocuments.size + S.modifiedDocuments.size + S.removedDocuments.size > 0 }(m, C, p) && l.push(n.Ur.updateTargetData(s, C)) }); let u = sr(), h = de(); if (e.documentUpdates.forEach(p => { e.resolvedLimboDocuments.has(p) && l.push(n.persistence.referenceDelegate.updateLimboDocument(s, p)) }), l.push(HC(s, o, e.documentUpdates).next(p => { u = p.Ps, h = p.Is })), !r.isEqual(le.min())) { const p = n.Ur.getLastRemoteSnapshotVersion(s).next(v => n.Ur.setTargetsMetadata(s, s.currentSequenceNumber, r)); l.push(p) } return z.waitFor(l).next(() => o.apply(s)).next(() => n.localDocuments.getLocalViewOfDocuments(s, u, h)).next(() => u) }).then(s => (n.os = i, s)) } function HC(t, e, n) { let r = de(), i = de(); return n.forEach(s => r = r.add(s)), e.getEntries(t, r).next(s => { let o = sr(); return n.forEach((l, u) => { const h = s.get(l); u.isFoundDocument() !== h.isFoundDocument() && (i = i.add(l)), u.isNoDocument() && u.version.isEqual(le.min()) ? (e.removeEntry(l, u.readTime), o = o.insert(l, u)) : !h.isValidDocument() || u.version.compareTo(h.version) > 0 || u.version.compareTo(h.version) === 0 && h.hasPendingWrites ? (e.addEntry(u), o = o.insert(l, u)) : X("LocalStore", "Ignoring outdated watch update for ", l, ". Current version:", h.version, " Watch version:", u.version) }), { Ps: o, Is: i } }) } function qC(t, e) { const n = ue(t); return n.persistence.runTransaction("Get next mutation batch", "readonly", r => (e === void 0 && (e = -1), n.mutationQueue.getNextMutationBatchAfterBatchId(r, e))) } function KC(t, e) { const n = ue(t); return n.persistence.runTransaction("Allocate target", "readwrite", r => { let i; return n.Ur.getTargetData(r, e).next(s => s ? (i = s, z.resolve(i)) : n.Ur.allocateTargetId(r).next(o => (i = new Dr(e, o, "TargetPurposeListen", r.currentSequenceNumber), n.Ur.addTargetData(r, i).next(() => i)))) }).then(r => { const i = n.os.get(r.targetId); return (i === null || r.snapshotVersion.compareTo(i.snapshotVersion) > 0) && (n.os = n.os.insert(r.targetId, r), n._s.set(e, r.targetId)), r }) } async function tf(t, e, n) { const r = ue(t), i = r.os.get(e), s = n ? "readwrite" : "readwrite-primary"; try { n || await r.persistence.runTransaction("Release target", s, o => r.persistence.referenceDelegate.removeTarget(o, i)) } catch (o) { if (!za(o)) throw o; X("LocalStore", `Failed to update sequence numbers for target ${e}: ${o}`) } r.os = r.os.remove(e), r._s.delete(i.target) } function Ay(t, e, n) { const r = ue(t); let i = le.min(), s = de(); return r.persistence.runTransaction("Execute query", "readwrite", o => function (u, h, p) { const v = ue(u), m = v._s.get(p); return m !== void 0 ? z.resolve(v.os.get(m)) : v.Ur.getTargetData(h, p) }(r, o, Dn(e)).next(l => { if (l) return i = l.lastLimboFreeSnapshotVersion, r.Ur.getMatchingKeysForTargetId(o, l.targetId).next(u => { s = u }) }).next(() => r.ss.getDocumentsMatchingQuery(o, e, n ? i : le.min(), n ? s : de())).next(l => (GC(r, OA(e), l), { documents: l, Ts: s }))) } function GC(t, e, n) { let r = t.us.get(e) || le.min(); n.forEach((i, s) => { s.readTime.compareTo(r) > 0 && (r = s.readTime) }), t.us.set(e, r) } class Cy { constructor() { this.activeTargetIds = WA() } fs(e) { this.activeTargetIds = this.activeTargetIds.add(e) } gs(e) { this.activeTargetIds = this.activeTargetIds.delete(e) } Vs() { const e = { activeTargetIds: this.activeTargetIds.toArray(), updateTimeMs: Date.now() }; return JSON.stringify(e) } } class QC { constructor() { this.so = new Cy, this.oo = {}, this.onlineStateHandler = null, this.sequenceNumberHandler = null } addPendingMutation(e) { } updateMutationState(e, n, r) { } addLocalQueryTarget(e, n = !0) { return n && this.so.fs(e), this.oo[e] || "not-current" } updateQueryState(e, n, r) { this.oo[e] = n } removeLocalQueryTarget(e) { this.so.gs(e) } isLocalQueryTarget(e) { return this.so.activeTargetIds.has(e) } clearQueryState(e) { delete this.oo[e] } getAllActiveQueryTargets() { return this.so.activeTargetIds } isActiveQueryTarget(e) { return this.so.activeTargetIds.has(e) } start() { return this.so = new Cy, Promise.resolve() } handleUserChange(e, n, r) { } setOnlineState(e) { } shutdown() { } writeSequenceNumber(e) { } notifyBundleLoaded(e) { } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class YC { _o(e) { } shutdown() { } }/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ny { constructor() { this.ao = () => this.uo(), this.co = () => this.lo(), this.ho = [], this.Po() } _o(e) { this.ho.push(e) } shutdown() { window.removeEventListener("online", this.ao), window.removeEventListener("offline", this.co) } Po() { window.addEventListener("online", this.ao), window.addEventListener("offline", this.co) } uo() { X("ConnectivityMonitor", "Network connectivity changed: AVAILABLE"); for (const e of this.ho) e(0) } lo() { X("ConnectivityMonitor", "Network connectivity changed: UNAVAILABLE"); for (const e of this.ho) e(1) } static D() { return typeof window < "u" && window.addEventListener !== void 0 && window.removeEventListener !== void 0 } }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/let Wl = null; function Od() { return Wl === null ? Wl = function () { return 268435456 + Math.round(2147483648 * Math.random()) }() : Wl++, "0x" + Wl.toString(16) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const XC = { BatchGetDocuments: "batchGet", Commit: "commit", RunQuery: "runQuery", RunAggregationQuery: "runAggregationQuery" };/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class JC { constructor(e) { this.Io = e.Io, this.To = e.To } Eo(e) { this.Ao = e } Ro(e) { this.Vo = e } mo(e) { this.fo = e } onMessage(e) { this.po = e } close() { this.To() } send(e) { this.Io(e) } yo() { this.Ao() } wo() { this.Vo() } So(e) { this.fo(e) } bo(e) { this.po(e) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const yt = "WebChannelConnection"; class ZC extends class { constructor(n) { this.databaseInfo = n, this.databaseId = n.databaseId; const r = n.ssl ? "https" : "http", i = encodeURIComponent(this.databaseId.projectId), s = encodeURIComponent(this.databaseId.database); this.Do = r + "://" + n.host, this.vo = `projects/${i}/databases/${s}`, this.Co = this.databaseId.database === "(default)" ? `project_id=${i}` : `project_id=${i}&database_id=${s}` } get Fo() { return !1 } Mo(n, r, i, s, o) { const l = Od(), u = this.xo(n, r.toUriEncodedString()); X("RestConnection", `Sending RPC '${n}' ${l}:`, u, i); const h = { "google-cloud-resource-prefix": this.vo, "x-goog-request-params": this.Co }; return this.Oo(h, s, o), this.No(n, u, h, i).then(p => (X("RestConnection", `Received RPC '${n}' ${l}: `, p), p), p => { throw Fs("RestConnection", `RPC '${n}' ${l} failed with error: `, p, "url: ", u, "request:", i), p }) } Lo(n, r, i, s, o, l) { return this.Mo(n, r, i, s, o) } Oo(n, r, i) { n["X-Goog-Api-Client"] = function () { return "gl-js/ fire/" + Xs }(), n["Content-Type"] = "text/plain", this.databaseInfo.appId && (n["X-Firebase-GMPID"] = this.databaseInfo.appId), r && r.headers.forEach((s, o) => n[o] = s), i && i.headers.forEach((s, o) => n[o] = s) } xo(n, r) { const i = XC[n]; return `${this.Do}/v1/${r}:${i}` } terminate() { } }{ constructor(e) { super(e), this.forceLongPolling = e.forceLongPolling, this.autoDetectLongPolling = e.autoDetectLongPolling, this.useFetchStreams = e.useFetchStreams, this.longPollingOptions = e.longPollingOptions } No(e, n, r, i) { const s = Od(); return new Promise((o, l) => { const u = new Q_; u.setWithCredentials(!0), u.listenOnce(Y_.COMPLETE, () => { try { switch (u.getLastErrorCode()) { case du.NO_ERROR: const p = u.getResponseJson(); X(yt, `XHR for RPC '${e}' ${s} received:`, JSON.stringify(p)), o(p); break; case du.TIMEOUT: X(yt, `RPC '${e}' ${s} timed out`), l(new J(F.DEADLINE_EXCEEDED, "Request time out")); break; case du.HTTP_ERROR: const v = u.getStatus(); if (X(yt, `RPC '${e}' ${s} failed with status:`, v, "response text:", u.getResponseText()), v > 0) { let m = u.getResponseJson(); Array.isArray(m) && (m = m[0]); const C = m == null ? void 0 : m.error; if (C && C.status && C.message) { const R = function (V) { const S = V.toLowerCase().replace(/_/g, "-"); return Object.values(F).indexOf(S) >= 0 ? S : F.UNKNOWN }(C.status); l(new J(R, C.message)) } else l(new J(F.UNKNOWN, "Server responded with status " + u.getStatus())) } else l(new J(F.UNAVAILABLE, "Connection failed.")); break; default: ae() } } finally { X(yt, `RPC '${e}' ${s} completed.`) } }); const h = JSON.stringify(i); X(yt, `RPC '${e}' ${s} sending request:`, i), u.send(n, "POST", h, r, 15) }) } Bo(e, n, r) { const i = Od(), s = [this.Do, "/", "google.firestore.v1.Firestore", "/", e, "/channel"], o = Z_(), l = J_(), u = { httpSessionIdParam: "gsessionid", initMessageHeaders: {}, messageUrlParams: { database: `projects/${this.databaseId.projectId}/databases/${this.databaseId.database}` }, sendRawJson: !0, supportsCrossDomainXhr: !0, internalChannelParams: { forwardChannelRequestTimeoutMs: 6e5 }, forceLongPolling: this.forceLongPolling, detectBufferingProxy: this.autoDetectLongPolling }, h = this.longPollingOptions.timeoutSeconds; h !== void 0 && (u.longPollingTimeout = Math.round(1e3 * h)), this.useFetchStreams && (u.useFetchStreams = !0), this.Oo(u.initMessageHeaders, n, r), u.encodeInitMessageHeaders = !0; const p = s.join(""); X(yt, `Creating RPC '${e}' stream ${i}: ${p}`, u); const v = o.createWebChannel(p, u); let m = !1, C = !1; const R = new JC({ Io: V => { C ? X(yt, `Not sending because RPC '${e}' stream ${i} is closed:`, V) : (m || (X(yt, `Opening RPC '${e}' stream ${i} transport.`), v.open(), m = !0), X(yt, `RPC '${e}' stream ${i} sending:`, V), v.send(V)) }, To: () => v.close() }), L = (V, S, E) => { V.listen(S, I => { try { E(I) } catch (j) { setTimeout(() => { throw j }, 0) } }) }; return L(v, Fo.EventType.OPEN, () => { C || (X(yt, `RPC '${e}' stream ${i} transport opened.`), R.yo()) }), L(v, Fo.EventType.CLOSE, () => { C || (C = !0, X(yt, `RPC '${e}' stream ${i} transport closed`), R.So()) }), L(v, Fo.EventType.ERROR, V => { C || (C = !0, Fs(yt, `RPC '${e}' stream ${i} transport errored:`, V), R.So(new J(F.UNAVAILABLE, "The operation could not be completed"))) }), L(v, Fo.EventType.MESSAGE, V => { var S; if (!C) { const E = V.data[0]; Ee(!!E); const I = E, j = I.error || ((S = I[0]) === null || S === void 0 ? void 0 : S.error); if (j) { X(yt, `RPC '${e}' stream ${i} received error:`, j); const K = j.status; let $ = function (w) { const k = We[w]; if (k !== void 0) return kw(k) }(K), x = j.message; $ === void 0 && ($ = F.INTERNAL, x = "Unknown error status: " + K + " with message " + j.message), C = !0, R.So(new J($, x)), v.close() } else X(yt, `RPC '${e}' stream ${i} received:`, E), R.bo(E) } }), L(l, X_.STAT_EVENT, V => { V.stat === Hh.PROXY ? X(yt, `RPC '${e}' stream ${i} detected buffering proxy`) : V.stat === Hh.NOPROXY && X(yt, `RPC '${e}' stream ${i} detected no buffering proxy`) }), setTimeout(() => { R.wo() }, 0), R } } function Fd() { return typeof document < "u" ? document : null }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Rc(t) { return new uC(t, !0) }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Mw { constructor(e, n, r = 1e3, i = 1.5, s = 6e4) { this.ui = e, this.timerId = n, this.ko = r, this.qo = i, this.Qo = s, this.Ko = 0, this.$o = null, this.Uo = Date.now(), this.reset() } reset() { this.Ko = 0 } Wo() { this.Ko = this.Qo } Go(e) { this.cancel(); const n = Math.floor(this.Ko + this.zo()), r = Math.max(0, Date.now() - this.Uo), i = Math.max(0, n - r); i > 0 && X("ExponentialBackoff", `Backing off for ${i} ms (base delay: ${this.Ko} ms, delay with jitter: ${n} ms, last attempt: ${r} ms ago)`), this.$o = this.ui.enqueueAfterDelay(this.timerId, i, () => (this.Uo = Date.now(), e())), this.Ko *= this.qo, this.Ko < this.ko && (this.Ko = this.ko), this.Ko > this.Qo && (this.Ko = this.Qo) } jo() { this.$o !== null && (this.$o.skipDelay(), this.$o = null) } cancel() { this.$o !== null && (this.$o.cancel(), this.$o = null) } zo() { return (Math.random() - .5) * this.Ko } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class jw { constructor(e, n, r, i, s, o, l, u) { this.ui = e, this.Ho = r, this.Jo = i, this.connection = s, this.authCredentialsProvider = o, this.appCheckCredentialsProvider = l, this.listener = u, this.state = 0, this.Yo = 0, this.Zo = null, this.Xo = null, this.stream = null, this.e_ = 0, this.t_ = new Mw(e, n) } n_() { return this.state === 1 || this.state === 5 || this.r_() } r_() { return this.state === 2 || this.state === 3 } start() { this.e_ = 0, this.state !== 4 ? this.auth() : this.i_() } async stop() { this.n_() && await this.close(0) } s_() { this.state = 0, this.t_.reset() } o_() { this.r_() && this.Zo === null && (this.Zo = this.ui.enqueueAfterDelay(this.Ho, 6e4, () => this.__())) } a_(e) { this.u_(), this.stream.send(e) } async __() { if (this.r_()) return this.close(0) } u_() { this.Zo && (this.Zo.cancel(), this.Zo = null) } c_() { this.Xo && (this.Xo.cancel(), this.Xo = null) } async close(e, n) { this.u_(), this.c_(), this.t_.cancel(), this.Yo++, e !== 4 ? this.t_.reset() : n && n.code === F.RESOURCE_EXHAUSTED ? (ir(n.toString()), ir("Using maximum backoff delay to prevent overloading the backend."), this.t_.Wo()) : n && n.code === F.UNAUTHENTICATED && this.state !== 3 && (this.authCredentialsProvider.invalidateToken(), this.appCheckCredentialsProvider.invalidateToken()), this.stream !== null && (this.l_(), this.stream.close(), this.stream = null), this.state = e, await this.listener.mo(n) } l_() { } auth() { this.state = 1; const e = this.h_(this.Yo), n = this.Yo; Promise.all([this.authCredentialsProvider.getToken(), this.appCheckCredentialsProvider.getToken()]).then(([r, i]) => { this.Yo === n && this.P_(r, i) }, r => { e(() => { const i = new J(F.UNKNOWN, "Fetching auth token failed: " + r.message); return this.I_(i) }) }) } P_(e, n) { const r = this.h_(this.Yo); this.stream = this.T_(e, n), this.stream.Eo(() => { r(() => this.listener.Eo()) }), this.stream.Ro(() => { r(() => (this.state = 2, this.Xo = this.ui.enqueueAfterDelay(this.Jo, 1e4, () => (this.r_() && (this.state = 3), Promise.resolve())), this.listener.Ro())) }), this.stream.mo(i => { r(() => this.I_(i)) }), this.stream.onMessage(i => { r(() => ++this.e_ == 1 ? this.E_(i) : this.onNext(i)) }) } i_() { this.state = 5, this.t_.Go(async () => { this.state = 0, this.start() }) } I_(e) { return X("PersistentStream", `close with error: ${e}`), this.stream = null, this.close(4, e) } h_(e) { return n => { this.ui.enqueueAndForget(() => this.Yo === e ? n() : (X("PersistentStream", "stream callback skipped by getCloseGuardedDispatcher."), Promise.resolve())) } } } class e2 extends jw { constructor(e, n, r, i, s, o) { super(e, "listen_stream_connection_backoff", "listen_stream_idle", "health_check_timeout", n, r, i, o), this.serializer = s } T_(e, n) { return this.connection.Bo("Listen", e, n) } E_(e) { return this.onNext(e) } onNext(e) { this.t_.reset(); const n = hC(this.serializer, e), r = function (s) { if (!("targetChange" in s)) return le.min(); const o = s.targetChange; return o.targetIds && o.targetIds.length ? le.min() : o.readTime ? Ln(o.readTime) : le.min() }(e); return this.listener.d_(n, r) } A_(e) { const n = {}; n.database = ef(this.serializer), n.addTarget = function (s, o) { let l; const u = o.target; if (l = Qh(u) ? { documents: mC(s, u) } : { query: gC(s, u)._t }, l.targetId = o.targetId, o.resumeToken.approximateByteSize() > 0) { l.resumeToken = Iw(s, o.resumeToken); const h = Xh(s, o.expectedCount); h !== null && (l.expectedCount = h) } else if (o.snapshotVersion.compareTo(le.min()) > 0) { l.readTime = Zu(s, o.snapshotVersion.toTimestamp()); const h = Xh(s, o.expectedCount); h !== null && (l.expectedCount = h) } return l }(this.serializer, e); const r = vC(this.serializer, e); r && (n.labels = r), this.a_(n) } R_(e) { const n = {}; n.database = ef(this.serializer), n.removeTarget = e, this.a_(n) } } class t2 extends jw { constructor(e, n, r, i, s, o) { super(e, "write_stream_connection_backoff", "write_stream_idle", "health_check_timeout", n, r, i, o), this.serializer = s } get V_() { return this.e_ > 0 } start() { this.lastStreamToken = void 0, super.start() } l_() { this.V_ && this.m_([]) } T_(e, n) { return this.connection.Bo("Write", e, n) } E_(e) { return Ee(!!e.streamToken), this.lastStreamToken = e.streamToken, Ee(!e.writeResults || e.writeResults.length === 0), this.listener.f_() } onNext(e) { Ee(!!e.streamToken), this.lastStreamToken = e.streamToken, this.t_.reset(); const n = pC(e.writeResults, e.commitTime), r = Ln(e.commitTime); return this.listener.g_(r, n) } p_() { const e = {}; e.database = ef(this.serializer), this.a_(e) } m_(e) { const n = { streamToken: this.lastStreamToken, writes: e.map(r => fC(this.serializer, r)) }; this.a_(n) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class n2 extends class { }{ constructor(e, n, r, i) { super(), this.authCredentials = e, this.appCheckCredentials = n, this.connection = r, this.serializer = i, this.y_ = !1 } w_() { if (this.y_) throw new J(F.FAILED_PRECONDITION, "The client has already been terminated.") } Mo(e, n, r, i) { return this.w_(), Promise.all([this.authCredentials.getToken(), this.appCheckCredentials.getToken()]).then(([s, o]) => this.connection.Mo(e, Jh(n, r), i, s, o)).catch(s => { throw s.name === "FirebaseError" ? (s.code === F.UNAUTHENTICATED && (this.authCredentials.invalidateToken(), this.appCheckCredentials.invalidateToken()), s) : new J(F.UNKNOWN, s.toString()) }) } Lo(e, n, r, i, s) { return this.w_(), Promise.all([this.authCredentials.getToken(), this.appCheckCredentials.getToken()]).then(([o, l]) => this.connection.Lo(e, Jh(n, r), i, o, l, s)).catch(o => { throw o.name === "FirebaseError" ? (o.code === F.UNAUTHENTICATED && (this.authCredentials.invalidateToken(), this.appCheckCredentials.invalidateToken()), o) : new J(F.UNKNOWN, o.toString()) }) } terminate() { this.y_ = !0, this.connection.terminate() } } class r2 {
|
|
constructor(e, n) { this.asyncQueue = e, this.onlineStateHandler = n, this.state = "Unknown", this.S_ = 0, this.b_ = null, this.D_ = !0 } v_() { this.S_ === 0 && (this.C_("Unknown"), this.b_ = this.asyncQueue.enqueueAfterDelay("online_state_timeout", 1e4, () => (this.b_ = null, this.F_("Backend didn't respond within 10 seconds."), this.C_("Offline"), Promise.resolve()))) } M_(e) { this.state === "Online" ? this.C_("Unknown") : (this.S_++, this.S_ >= 1 && (this.x_(), this.F_(`Connection failed 1 times. Most recent error: ${e.toString()}`), this.C_("Offline"))) } set(e) { this.x_(), this.S_ = 0, e === "Online" && (this.D_ = !1), this.C_(e) } C_(e) { e !== this.state && (this.state = e, this.onlineStateHandler(e)) } F_(e) {
|
|
const n = `Could not reach Cloud Firestore backend. ${e}
|
|
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`; this.D_ ? (ir(n), this.D_ = !1) : X("OnlineStateTracker", n)
|
|
} x_() { this.b_ !== null && (this.b_.cancel(), this.b_ = null) }
|
|
}/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class i2 { constructor(e, n, r, i, s) { this.localStore = e, this.datastore = n, this.asyncQueue = r, this.remoteSyncer = {}, this.O_ = [], this.N_ = new Map, this.L_ = new Set, this.B_ = [], this.k_ = s, this.k_._o(o => { r.enqueueAndForget(async () => { $i(this) && (X("RemoteStore", "Restarting streams for network reachability change."), await async function (u) { const h = ue(u); h.L_.add(4), await Wa(h), h.q_.set("Unknown"), h.L_.delete(4), await Dc(h) }(this)) }) }), this.q_ = new r2(r, i) } } async function Dc(t) { if ($i(t)) for (const e of t.B_) await e(!0) } async function Wa(t) { for (const e of t.B_) await e(!1) } function Vw(t, e) { const n = ue(t); n.N_.has(e.targetId) || (n.N_.set(e.targetId, e), bp(n) ? Pp(n) : Zs(n).r_() && Np(n, e)) } function Cp(t, e) { const n = ue(t), r = Zs(n); n.N_.delete(e), r.r_() && Ow(n, e), n.N_.size === 0 && (r.r_() ? r.o_() : $i(n) && n.q_.set("Unknown")) } function Np(t, e) { if (t.Q_.xe(e.targetId), e.resumeToken.approximateByteSize() > 0 || e.snapshotVersion.compareTo(le.min()) > 0) { const n = t.remoteSyncer.getRemoteKeysForTarget(e.targetId).size; e = e.withExpectedCount(n) } Zs(t).A_(e) } function Ow(t, e) { t.Q_.xe(e), Zs(t).R_(e) } function Pp(t) { t.Q_ = new sC({ getRemoteKeysForTarget: e => t.remoteSyncer.getRemoteKeysForTarget(e), ot: e => t.N_.get(e) || null, tt: () => t.datastore.serializer.databaseId }), Zs(t).start(), t.q_.v_() } function bp(t) { return $i(t) && !Zs(t).n_() && t.N_.size > 0 } function $i(t) { return ue(t).L_.size === 0 } function Fw(t) { t.Q_ = void 0 } async function s2(t) { t.q_.set("Online") } async function o2(t) { t.N_.forEach((e, n) => { Np(t, e) }) } async function a2(t, e) { Fw(t), bp(t) ? (t.q_.M_(e), Pp(t)) : t.q_.set("Unknown") } async function l2(t, e, n) { if (t.q_.set("Online"), e instanceof Sw && e.state === 2 && e.cause) try { await async function (i, s) { const o = s.cause; for (const l of s.targetIds) i.N_.has(l) && (await i.remoteSyncer.rejectListen(l, o), i.N_.delete(l), i.Q_.removeTarget(l)) }(t, e) } catch (r) { X("RemoteStore", "Failed to remove targets %s: %s ", e.targetIds.join(","), r), await ec(t, r) } else if (e instanceof pu ? t.Q_.Ke(e) : e instanceof Tw ? t.Q_.He(e) : t.Q_.We(e), !n.isEqual(le.min())) try { const r = await Lw(t.localStore); n.compareTo(r) >= 0 && await function (s, o) { const l = s.Q_.rt(o); return l.targetChanges.forEach((u, h) => { if (u.resumeToken.approximateByteSize() > 0) { const p = s.N_.get(h); p && s.N_.set(h, p.withResumeToken(u.resumeToken, o)) } }), l.targetMismatches.forEach((u, h) => { const p = s.N_.get(u); if (!p) return; s.N_.set(u, p.withResumeToken(ht.EMPTY_BYTE_STRING, p.snapshotVersion)), Ow(s, u); const v = new Dr(p.target, u, h, p.sequenceNumber); Np(s, v) }), s.remoteSyncer.applyRemoteEvent(l) }(t, n) } catch (r) { X("RemoteStore", "Failed to raise snapshot:", r), await ec(t, r) } } async function ec(t, e, n) { if (!za(e)) throw e; t.L_.add(1), await Wa(t), t.q_.set("Offline"), n || (n = () => Lw(t.localStore)), t.asyncQueue.enqueueRetryable(async () => { X("RemoteStore", "Retrying IndexedDB access"), await n(), t.L_.delete(1), await Dc(t) }) } function Uw(t, e) { return e().catch(n => ec(t, n, e)) } async function Lc(t) { const e = ue(t), n = Xr(e); let r = e.O_.length > 0 ? e.O_[e.O_.length - 1].batchId : -1; for (; u2(e);)try { const i = await qC(e.localStore, r); if (i === null) { e.O_.length === 0 && n.o_(); break } r = i.batchId, c2(e, i) } catch (i) { await ec(e, i) } zw(e) && Bw(e) } function u2(t) { return $i(t) && t.O_.length < 10 } function c2(t, e) { t.O_.push(e); const n = Xr(t); n.r_() && n.V_ && n.m_(e.mutations) } function zw(t) { return $i(t) && !Xr(t).n_() && t.O_.length > 0 } function Bw(t) { Xr(t).start() } async function d2(t) { Xr(t).p_() } async function h2(t) { const e = Xr(t); for (const n of t.O_) e.m_(n.mutations) } async function f2(t, e, n) { const r = t.O_.shift(), i = xp.from(r, e, n); await Uw(t, () => t.remoteSyncer.applySuccessfulWrite(i)), await Lc(t) } async function p2(t, e) { e && Xr(t).V_ && await async function (r, i) { if (function (o) { return nC(o) && o !== F.ABORTED }(i.code)) { const s = r.O_.shift(); Xr(r).s_(), await Uw(r, () => r.remoteSyncer.rejectFailedWrite(s.batchId, i)), await Lc(r) } }(t, e), zw(t) && Bw(t) } async function Py(t, e) { const n = ue(t); n.asyncQueue.verifyOperationInProgress(), X("RemoteStore", "RemoteStore received new credentials"); const r = $i(n); n.L_.add(3), await Wa(n), r && n.q_.set("Unknown"), await n.remoteSyncer.handleCredentialChange(e), n.L_.delete(3), await Dc(n) } async function m2(t, e) { const n = ue(t); e ? (n.L_.delete(2), await Dc(n)) : e || (n.L_.add(2), await Wa(n), n.q_.set("Unknown")) } function Zs(t) { return t.K_ || (t.K_ = function (n, r, i) { const s = ue(n); return s.w_(), new e2(r, s.connection, s.authCredentials, s.appCheckCredentials, s.serializer, i) }(t.datastore, t.asyncQueue, { Eo: s2.bind(null, t), Ro: o2.bind(null, t), mo: a2.bind(null, t), d_: l2.bind(null, t) }), t.B_.push(async e => { e ? (t.K_.s_(), bp(t) ? Pp(t) : t.q_.set("Unknown")) : (await t.K_.stop(), Fw(t)) })), t.K_ } function Xr(t) { return t.U_ || (t.U_ = function (n, r, i) { const s = ue(n); return s.w_(), new t2(r, s.connection, s.authCredentials, s.appCheckCredentials, s.serializer, i) }(t.datastore, t.asyncQueue, { Eo: () => Promise.resolve(), Ro: d2.bind(null, t), mo: p2.bind(null, t), f_: h2.bind(null, t), g_: f2.bind(null, t) }), t.B_.push(async e => { e ? (t.U_.s_(), await Lc(t)) : (await t.U_.stop(), t.O_.length > 0 && (X("RemoteStore", `Stopping write stream with ${t.O_.length} pending writes`), t.O_ = [])) })), t.U_ }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Rp { constructor(e, n, r, i, s) { this.asyncQueue = e, this.timerId = n, this.targetTimeMs = r, this.op = i, this.removalCallback = s, this.deferred = new Hr, this.then = this.deferred.promise.then.bind(this.deferred.promise), this.deferred.promise.catch(o => { }) } get promise() { return this.deferred.promise } static createAndSchedule(e, n, r, i, s) { const o = Date.now() + r, l = new Rp(e, n, o, i, s); return l.start(r), l } start(e) { this.timerHandle = setTimeout(() => this.handleDelayElapsed(), e) } skipDelay() { return this.handleDelayElapsed() } cancel(e) { this.timerHandle !== null && (this.clearTimeout(), this.deferred.reject(new J(F.CANCELLED, "Operation cancelled" + (e ? ": " + e : "")))) } handleDelayElapsed() { this.asyncQueue.enqueueAndForget(() => this.timerHandle !== null ? (this.clearTimeout(), this.op().then(e => this.deferred.resolve(e))) : Promise.resolve()) } clearTimeout() { this.timerHandle !== null && (this.removalCallback(this), clearTimeout(this.timerHandle), this.timerHandle = null) } } function Dp(t, e) { if (ir("AsyncQueue", `${e}: ${t}`), za(t)) return new J(F.UNAVAILABLE, `${e}: ${t}`); throw t }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Ps {
|
|
constructor(e) { this.comparator = e ? (n, r) => e(n, r) || re.comparator(n.key, r.key) : (n, r) => re.comparator(n.key, r.key), this.keyedMap = Uo(), this.sortedSet = new Oe(this.comparator) } static emptySet(e) { return new Ps(e.comparator) } has(e) { return this.keyedMap.get(e) != null } get(e) { return this.keyedMap.get(e) } first() { return this.sortedSet.minKey() } last() { return this.sortedSet.maxKey() } isEmpty() { return this.sortedSet.isEmpty() } indexOf(e) { const n = this.keyedMap.get(e); return n ? this.sortedSet.indexOf(n) : -1 } get size() { return this.sortedSet.size } forEach(e) { this.sortedSet.inorderTraversal((n, r) => (e(n), !1)) } add(e) { const n = this.delete(e.key); return n.copy(n.keyedMap.insert(e.key, e), n.sortedSet.insert(e, null)) } delete(e) { const n = this.get(e); return n ? this.copy(this.keyedMap.remove(e), this.sortedSet.remove(n)) : this } isEqual(e) { if (!(e instanceof Ps) || this.size !== e.size) return !1; const n = this.sortedSet.getIterator(), r = e.sortedSet.getIterator(); for (; n.hasNext();) { const i = n.getNext().key, s = r.getNext().key; if (!i.isEqual(s)) return !1 } return !0 } toString() {
|
|
const e = []; return this.forEach(n => { e.push(n.toString()) }), e.length === 0 ? "DocumentSet ()" : `DocumentSet (
|
|
`+ e.join(`
|
|
`) + `
|
|
)`} copy(e, n) { const r = new Ps; return r.comparator = this.comparator, r.keyedMap = e, r.sortedSet = n, r }
|
|
}/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class by { constructor() { this.W_ = new Oe(re.comparator) } track(e) { const n = e.doc.key, r = this.W_.get(n); r ? e.type !== 0 && r.type === 3 ? this.W_ = this.W_.insert(n, e) : e.type === 3 && r.type !== 1 ? this.W_ = this.W_.insert(n, { type: r.type, doc: e.doc }) : e.type === 2 && r.type === 2 ? this.W_ = this.W_.insert(n, { type: 2, doc: e.doc }) : e.type === 2 && r.type === 0 ? this.W_ = this.W_.insert(n, { type: 0, doc: e.doc }) : e.type === 1 && r.type === 0 ? this.W_ = this.W_.remove(n) : e.type === 1 && r.type === 2 ? this.W_ = this.W_.insert(n, { type: 1, doc: r.doc }) : e.type === 0 && r.type === 1 ? this.W_ = this.W_.insert(n, { type: 2, doc: e.doc }) : ae() : this.W_ = this.W_.insert(n, e) } G_() { const e = []; return this.W_.inorderTraversal((n, r) => { e.push(r) }), e } } class Ws { constructor(e, n, r, i, s, o, l, u, h) { this.query = e, this.docs = n, this.oldDocs = r, this.docChanges = i, this.mutatedKeys = s, this.fromCache = o, this.syncStateChanged = l, this.excludesMetadataChanges = u, this.hasCachedResults = h } static fromInitialDocuments(e, n, r, i, s) { const o = []; return n.forEach(l => { o.push({ type: 0, doc: l }) }), new Ws(e, n, Ps.emptySet(n), o, r, i, !0, !1, s) } get hasPendingWrites() { return !this.mutatedKeys.isEmpty() } isEqual(e) { if (!(this.fromCache === e.fromCache && this.hasCachedResults === e.hasCachedResults && this.syncStateChanged === e.syncStateChanged && this.mutatedKeys.isEqual(e.mutatedKeys) && Ic(this.query, e.query) && this.docs.isEqual(e.docs) && this.oldDocs.isEqual(e.oldDocs))) return !1; const n = this.docChanges, r = e.docChanges; if (n.length !== r.length) return !1; for (let i = 0; i < n.length; i++)if (n[i].type !== r[i].type || !n[i].doc.isEqual(r[i].doc)) return !1; return !0 } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class g2 { constructor() { this.z_ = void 0, this.j_ = [] } H_() { return this.j_.some(e => e.J_()) } } class y2 { constructor() { this.queries = Ry(), this.onlineState = "Unknown", this.Y_ = new Set } terminate() { (function (n, r) { const i = ue(n), s = i.queries; i.queries = Ry(), s.forEach((o, l) => { for (const u of l.j_) u.onError(r) }) })(this, new J(F.ABORTED, "Firestore shutting down")) } } function Ry() { return new Js(t => dw(t), Ic) } async function $w(t, e) { const n = ue(t); let r = 3; const i = e.query; let s = n.queries.get(i); s ? !s.H_() && e.J_() && (r = 2) : (s = new g2, r = e.J_() ? 0 : 1); try { switch (r) { case 0: s.z_ = await n.onListen(i, !0); break; case 1: s.z_ = await n.onListen(i, !1); break; case 2: await n.onFirstRemoteStoreListen(i) } } catch (o) { const l = Dp(o, `Initialization of query '${ss(e.query)}' failed`); return void e.onError(l) } n.queries.set(i, s), s.j_.push(e), e.Z_(n.onlineState), s.z_ && e.X_(s.z_) && Lp(n) } async function Ww(t, e) { const n = ue(t), r = e.query; let i = 3; const s = n.queries.get(r); if (s) { const o = s.j_.indexOf(e); o >= 0 && (s.j_.splice(o, 1), s.j_.length === 0 ? i = e.J_() ? 0 : 1 : !s.H_() && e.J_() && (i = 2)) } switch (i) { case 0: return n.queries.delete(r), n.onUnlisten(r, !0); case 1: return n.queries.delete(r), n.onUnlisten(r, !1); case 2: return n.onLastRemoteStoreUnlisten(r); default: return } } function v2(t, e) { const n = ue(t); let r = !1; for (const i of e) { const s = i.query, o = n.queries.get(s); if (o) { for (const l of o.j_) l.X_(i) && (r = !0); o.z_ = i } } r && Lp(n) } function _2(t, e, n) { const r = ue(t), i = r.queries.get(e); if (i) for (const s of i.j_) s.onError(n); r.queries.delete(e) } function Lp(t) { t.Y_.forEach(e => { e.next() }) } var nf, Dy; (Dy = nf || (nf = {})).ea = "default", Dy.Cache = "cache"; class Hw { constructor(e, n, r) { this.query = e, this.ta = n, this.na = !1, this.ra = null, this.onlineState = "Unknown", this.options = r || {} } X_(e) { if (!this.options.includeMetadataChanges) { const r = []; for (const i of e.docChanges) i.type !== 3 && r.push(i); e = new Ws(e.query, e.docs, e.oldDocs, r, e.mutatedKeys, e.fromCache, e.syncStateChanged, !0, e.hasCachedResults) } let n = !1; return this.na ? this.ia(e) && (this.ta.next(e), n = !0) : this.sa(e, this.onlineState) && (this.oa(e), n = !0), this.ra = e, n } onError(e) { this.ta.error(e) } Z_(e) { this.onlineState = e; let n = !1; return this.ra && !this.na && this.sa(this.ra, e) && (this.oa(this.ra), n = !0), n } sa(e, n) { if (!e.fromCache || !this.J_()) return !0; const r = n !== "Offline"; return (!this.options._a || !r) && (!e.docs.isEmpty() || e.hasCachedResults || n === "Offline") } ia(e) { if (e.docChanges.length > 0) return !0; const n = this.ra && this.ra.hasPendingWrites !== e.hasPendingWrites; return !(!e.syncStateChanged && !n) && this.options.includeMetadataChanges === !0 } oa(e) { e = Ws.fromInitialDocuments(e.query, e.docs, e.mutatedKeys, e.fromCache, e.hasCachedResults), this.na = !0, this.ta.next(e) } J_() { return this.options.source !== nf.Cache } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class qw { constructor(e) { this.key = e } } class Kw { constructor(e) { this.key = e } } class w2 { constructor(e, n) { this.query = e, this.Ta = n, this.Ea = null, this.hasCachedResults = !1, this.current = !1, this.da = de(), this.mutatedKeys = de(), this.Aa = hw(e), this.Ra = new Ps(this.Aa) } get Va() { return this.Ta } ma(e, n) { const r = n ? n.fa : new by, i = n ? n.Ra : this.Ra; let s = n ? n.mutatedKeys : this.mutatedKeys, o = i, l = !1; const u = this.query.limitType === "F" && i.size === this.query.limit ? i.last() : null, h = this.query.limitType === "L" && i.size === this.query.limit ? i.first() : null; if (e.inorderTraversal((p, v) => { const m = i.get(p), C = Ac(this.query, v) ? v : null, R = !!m && this.mutatedKeys.has(m.key), L = !!C && (C.hasLocalMutations || this.mutatedKeys.has(C.key) && C.hasCommittedMutations); let V = !1; m && C ? m.data.isEqual(C.data) ? R !== L && (r.track({ type: 3, doc: C }), V = !0) : this.ga(m, C) || (r.track({ type: 2, doc: C }), V = !0, (u && this.Aa(C, u) > 0 || h && this.Aa(C, h) < 0) && (l = !0)) : !m && C ? (r.track({ type: 0, doc: C }), V = !0) : m && !C && (r.track({ type: 1, doc: m }), V = !0, (u || h) && (l = !0)), V && (C ? (o = o.add(C), s = L ? s.add(p) : s.delete(p)) : (o = o.delete(p), s = s.delete(p))) }), this.query.limit !== null) for (; o.size > this.query.limit;) { const p = this.query.limitType === "F" ? o.last() : o.first(); o = o.delete(p.key), s = s.delete(p.key), r.track({ type: 1, doc: p }) } return { Ra: o, fa: r, ns: l, mutatedKeys: s } } ga(e, n) { return e.hasLocalMutations && n.hasCommittedMutations && !n.hasLocalMutations } applyChanges(e, n, r, i) { const s = this.Ra; this.Ra = e.Ra, this.mutatedKeys = e.mutatedKeys; const o = e.fa.G_(); o.sort((p, v) => function (C, R) { const L = V => { switch (V) { case 0: return 1; case 2: case 3: return 2; case 1: return 0; default: return ae() } }; return L(C) - L(R) }(p.type, v.type) || this.Aa(p.doc, v.doc)), this.pa(r), i = i != null && i; const l = n && !i ? this.ya() : [], u = this.da.size === 0 && this.current && !i ? 1 : 0, h = u !== this.Ea; return this.Ea = u, o.length !== 0 || h ? { snapshot: new Ws(this.query, e.Ra, s, o, e.mutatedKeys, u === 0, h, !1, !!r && r.resumeToken.approximateByteSize() > 0), wa: l } : { wa: l } } Z_(e) { return this.current && e === "Offline" ? (this.current = !1, this.applyChanges({ Ra: this.Ra, fa: new by, mutatedKeys: this.mutatedKeys, ns: !1 }, !1)) : { wa: [] } } Sa(e) { return !this.Ta.has(e) && !!this.Ra.has(e) && !this.Ra.get(e).hasLocalMutations } pa(e) { e && (e.addedDocuments.forEach(n => this.Ta = this.Ta.add(n)), e.modifiedDocuments.forEach(n => { }), e.removedDocuments.forEach(n => this.Ta = this.Ta.delete(n)), this.current = e.current) } ya() { if (!this.current) return []; const e = this.da; this.da = de(), this.Ra.forEach(r => { this.Sa(r.key) && (this.da = this.da.add(r.key)) }); const n = []; return e.forEach(r => { this.da.has(r) || n.push(new Kw(r)) }), this.da.forEach(r => { e.has(r) || n.push(new qw(r)) }), n } ba(e) { this.Ta = e.Ts, this.da = de(); const n = this.ma(e.documents); return this.applyChanges(n, !0) } Da() { return Ws.fromInitialDocuments(this.query, this.Ra, this.mutatedKeys, this.Ea === 0, this.hasCachedResults) } } class E2 { constructor(e, n, r) { this.query = e, this.targetId = n, this.view = r } } class x2 { constructor(e) { this.key = e, this.va = !1 } } class k2 { constructor(e, n, r, i, s, o) { this.localStore = e, this.remoteStore = n, this.eventManager = r, this.sharedClientState = i, this.currentUser = s, this.maxConcurrentLimboResolutions = o, this.Ca = {}, this.Fa = new Js(l => dw(l), Ic), this.Ma = new Map, this.xa = new Set, this.Oa = new Oe(re.comparator), this.Na = new Map, this.La = new Sp, this.Ba = {}, this.ka = new Map, this.qa = $s.kn(), this.onlineState = "Unknown", this.Qa = void 0 } get isPrimaryClient() { return this.Qa === !0 } } async function T2(t, e, n = !0) { const r = Zw(t); let i; const s = r.Fa.get(e); return s ? (r.sharedClientState.addLocalQueryTarget(s.targetId), i = s.view.Da()) : i = await Gw(r, e, n, !0), i } async function S2(t, e) { const n = Zw(t); await Gw(n, e, !0, !1) } async function Gw(t, e, n, r) { const i = await KC(t.localStore, Dn(e)), s = i.targetId, o = t.sharedClientState.addLocalQueryTarget(s, n); let l; return r && (l = await I2(t, e, s, o === "current", i.resumeToken)), t.isPrimaryClient && n && Vw(t.remoteStore, i), l } async function I2(t, e, n, r, i) { t.Ka = (v, m, C) => async function (L, V, S, E) { let I = V.view.ma(S); I.ns && (I = await Ay(L.localStore, V.query, !1).then(({ documents: x }) => V.view.ma(x, I))); const j = E && E.targetChanges.get(V.targetId), K = E && E.targetMismatches.get(V.targetId) != null, $ = V.view.applyChanges(I, L.isPrimaryClient, j, K); return My(L, V.targetId, $.wa), $.snapshot }(t, v, m, C); const s = await Ay(t.localStore, e, !0), o = new w2(e, s.Ts), l = o.ma(s.documents), u = $a.createSynthesizedTargetChangeForCurrentChange(n, r && t.onlineState !== "Offline", i), h = o.applyChanges(l, t.isPrimaryClient, u); My(t, n, h.wa); const p = new E2(e, n, o); return t.Fa.set(e, p), t.Ma.has(n) ? t.Ma.get(n).push(e) : t.Ma.set(n, [e]), h.snapshot } async function A2(t, e, n) { const r = ue(t), i = r.Fa.get(e), s = r.Ma.get(i.targetId); if (s.length > 1) return r.Ma.set(i.targetId, s.filter(o => !Ic(o, e))), void r.Fa.delete(e); r.isPrimaryClient ? (r.sharedClientState.removeLocalQueryTarget(i.targetId), r.sharedClientState.isActiveQueryTarget(i.targetId) || await tf(r.localStore, i.targetId, !1).then(() => { r.sharedClientState.clearQueryState(i.targetId), n && Cp(r.remoteStore, i.targetId), rf(r, i.targetId) }).catch(Ua)) : (rf(r, i.targetId), await tf(r.localStore, i.targetId, !0)) } async function C2(t, e) { const n = ue(t), r = n.Fa.get(e), i = n.Ma.get(r.targetId); n.isPrimaryClient && i.length === 1 && (n.sharedClientState.removeLocalQueryTarget(r.targetId), Cp(n.remoteStore, r.targetId)) } async function N2(t, e, n) { const r = j2(t); try { const i = await function (o, l) { const u = ue(o), h = et.now(), p = l.reduce((C, R) => C.add(R.key), de()); let v, m; return u.persistence.runTransaction("Locally write mutations", "readwrite", C => { let R = sr(), L = de(); return u.cs.getEntries(C, p).next(V => { R = V, R.forEach((S, E) => { E.isValidDocument() || (L = L.add(S)) }) }).next(() => u.localDocuments.getOverlayedDocuments(C, R)).next(V => { v = V; const S = []; for (const E of l) { const I = XA(E, v.get(E.key).overlayedDocument); I != null && S.push(new ri(E.key, I, iw(I.value.mapValue), St.exists(!0))) } return u.mutationQueue.addMutationBatch(C, h, S, l) }).next(V => { m = V; const S = V.applyToLocalDocumentSet(v, L); return u.documentOverlayCache.saveOverlays(C, V.batchId, S) }) }).then(() => ({ batchId: m.batchId, changes: pw(v) })) }(r.localStore, e); r.sharedClientState.addPendingMutation(i.batchId), function (o, l, u) { let h = o.Ba[o.currentUser.toKey()]; h || (h = new Oe(_e)), h = h.insert(l, u), o.Ba[o.currentUser.toKey()] = h }(r, i.batchId, n), await Ha(r, i.changes), await Lc(r.remoteStore) } catch (i) { const s = Dp(i, "Failed to persist write"); n.reject(s) } } async function Qw(t, e) { const n = ue(t); try { const r = await WC(n.localStore, e); e.targetChanges.forEach((i, s) => { const o = n.Na.get(s); o && (Ee(i.addedDocuments.size + i.modifiedDocuments.size + i.removedDocuments.size <= 1), i.addedDocuments.size > 0 ? o.va = !0 : i.modifiedDocuments.size > 0 ? Ee(o.va) : i.removedDocuments.size > 0 && (Ee(o.va), o.va = !1)) }), await Ha(n, r, e) } catch (r) { await Ua(r) } } function Ly(t, e, n) { const r = ue(t); if (r.isPrimaryClient && n === 0 || !r.isPrimaryClient && n === 1) { const i = []; r.Fa.forEach((s, o) => { const l = o.view.Z_(e); l.snapshot && i.push(l.snapshot) }), function (o, l) { const u = ue(o); u.onlineState = l; let h = !1; u.queries.forEach((p, v) => { for (const m of v.j_) m.Z_(l) && (h = !0) }), h && Lp(u) }(r.eventManager, e), i.length && r.Ca.d_(i), r.onlineState = e, r.isPrimaryClient && r.sharedClientState.setOnlineState(e) } } async function P2(t, e, n) { const r = ue(t); r.sharedClientState.updateQueryState(e, "rejected", n); const i = r.Na.get(e), s = i && i.key; if (s) { let o = new Oe(re.comparator); o = o.insert(s, wt.newNoDocument(s, le.min())); const l = de().add(s), u = new bc(le.min(), new Map, new Oe(_e), o, l); await Qw(r, u), r.Oa = r.Oa.remove(s), r.Na.delete(e), Mp(r) } else await tf(r.localStore, e, !1).then(() => rf(r, e, n)).catch(Ua) } async function b2(t, e) { const n = ue(t), r = e.batch.batchId; try { const i = await $C(n.localStore, e); Xw(n, r, null), Yw(n, r), n.sharedClientState.updateMutationState(r, "acknowledged"), await Ha(n, i) } catch (i) { await Ua(i) } } async function R2(t, e, n) { const r = ue(t); try { const i = await function (o, l) { const u = ue(o); return u.persistence.runTransaction("Reject batch", "readwrite-primary", h => { let p; return u.mutationQueue.lookupMutationBatch(h, l).next(v => (Ee(v !== null), p = v.keys(), u.mutationQueue.removeMutationBatch(h, v))).next(() => u.mutationQueue.performConsistencyCheck(h)).next(() => u.documentOverlayCache.removeOverlaysForBatchId(h, p, l)).next(() => u.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(h, p)).next(() => u.localDocuments.getDocuments(h, p)) }) }(r.localStore, e); Xw(r, e, n), Yw(r, e), r.sharedClientState.updateMutationState(e, "rejected", n), await Ha(r, i) } catch (i) { await Ua(i) } } function Yw(t, e) { (t.ka.get(e) || []).forEach(n => { n.resolve() }), t.ka.delete(e) } function Xw(t, e, n) { const r = ue(t); let i = r.Ba[r.currentUser.toKey()]; if (i) { const s = i.get(e); s && (n ? s.reject(n) : s.resolve(), i = i.remove(e)), r.Ba[r.currentUser.toKey()] = i } } function rf(t, e, n = null) { t.sharedClientState.removeLocalQueryTarget(e); for (const r of t.Ma.get(e)) t.Fa.delete(r), n && t.Ca.$a(r, n); t.Ma.delete(e), t.isPrimaryClient && t.La.gr(e).forEach(r => { t.La.containsKey(r) || Jw(t, r) }) } function Jw(t, e) { t.xa.delete(e.path.canonicalString()); const n = t.Oa.get(e); n !== null && (Cp(t.remoteStore, n), t.Oa = t.Oa.remove(e), t.Na.delete(n), Mp(t)) } function My(t, e, n) { for (const r of n) r instanceof qw ? (t.La.addReference(r.key, e), D2(t, r)) : r instanceof Kw ? (X("SyncEngine", "Document no longer in limbo: " + r.key), t.La.removeReference(r.key, e), t.La.containsKey(r.key) || Jw(t, r.key)) : ae() } function D2(t, e) { const n = e.key, r = n.path.canonicalString(); t.Oa.get(n) || t.xa.has(r) || (X("SyncEngine", "New document in limbo: " + n), t.xa.add(r), Mp(t)) } function Mp(t) { for (; t.xa.size > 0 && t.Oa.size < t.maxConcurrentLimboResolutions;) { const e = t.xa.values().next().value; t.xa.delete(e); const n = new re(Le.fromString(e)), r = t.qa.next(); t.Na.set(r, new x2(n)), t.Oa = t.Oa.insert(n, r), Vw(t.remoteStore, new Dr(Dn(Sc(n.path)), r, "TargetPurposeLimboResolution", mp.oe)) } } async function Ha(t, e, n) { const r = ue(t), i = [], s = [], o = []; r.Fa.isEmpty() || (r.Fa.forEach((l, u) => { o.push(r.Ka(u, e, n).then(h => { var p; if ((h || n) && r.isPrimaryClient) { const v = h ? !h.fromCache : (p = n == null ? void 0 : n.targetChanges.get(u.targetId)) === null || p === void 0 ? void 0 : p.current; r.sharedClientState.updateQueryState(u.targetId, v ? "current" : "not-current") } if (h) { i.push(h); const v = Ap.Wi(u.targetId, h); s.push(v) } })) }), await Promise.all(o), r.Ca.d_(i), await async function (u, h) { const p = ue(u); try { await p.persistence.runTransaction("notifyLocalViewChanges", "readwrite", v => z.forEach(h, m => z.forEach(m.$i, C => p.persistence.referenceDelegate.addReference(v, m.targetId, C)).next(() => z.forEach(m.Ui, C => p.persistence.referenceDelegate.removeReference(v, m.targetId, C))))) } catch (v) { if (!za(v)) throw v; X("LocalStore", "Failed to update sequence numbers: " + v) } for (const v of h) { const m = v.targetId; if (!v.fromCache) { const C = p.os.get(m), R = C.snapshotVersion, L = C.withLastLimboFreeSnapshotVersion(R); p.os = p.os.insert(m, L) } } }(r.localStore, s)) } async function L2(t, e) { const n = ue(t); if (!n.currentUser.isEqual(e)) { X("SyncEngine", "User change. New user:", e.toKey()); const r = await Dw(n.localStore, e); n.currentUser = e, function (s, o) { s.ka.forEach(l => { l.forEach(u => { u.reject(new J(F.CANCELLED, o)) }) }), s.ka.clear() }(n, "'waitForPendingWrites' promise is rejected due to a user change."), n.sharedClientState.handleUserChange(e, r.removedBatchIds, r.addedBatchIds), await Ha(n, r.hs) } } function M2(t, e) { const n = ue(t), r = n.Na.get(e); if (r && r.va) return de().add(r.key); { let i = de(); const s = n.Ma.get(e); if (!s) return i; for (const o of s) { const l = n.Fa.get(o); i = i.unionWith(l.view.Va) } return i } } function Zw(t) { const e = ue(t); return e.remoteStore.remoteSyncer.applyRemoteEvent = Qw.bind(null, e), e.remoteStore.remoteSyncer.getRemoteKeysForTarget = M2.bind(null, e), e.remoteStore.remoteSyncer.rejectListen = P2.bind(null, e), e.Ca.d_ = v2.bind(null, e.eventManager), e.Ca.$a = _2.bind(null, e.eventManager), e } function j2(t) { const e = ue(t); return e.remoteStore.remoteSyncer.applySuccessfulWrite = b2.bind(null, e), e.remoteStore.remoteSyncer.rejectFailedWrite = R2.bind(null, e), e } class tc { constructor() { this.kind = "memory", this.synchronizeTabs = !1 } async initialize(e) { this.serializer = Rc(e.databaseInfo.databaseId), this.sharedClientState = this.Wa(e), this.persistence = this.Ga(e), await this.persistence.start(), this.localStore = this.za(e), this.gcScheduler = this.ja(e, this.localStore), this.indexBackfillerScheduler = this.Ha(e, this.localStore) } ja(e, n) { return null } Ha(e, n) { return null } za(e) { return BC(this.persistence, new UC, e.initialUser, this.serializer) } Ga(e) { return new VC(Ip.Zr, this.serializer) } Wa(e) { return new QC } async terminate() { var e, n; (e = this.gcScheduler) === null || e === void 0 || e.stop(), (n = this.indexBackfillerScheduler) === null || n === void 0 || n.stop(), this.sharedClientState.shutdown(), await this.persistence.shutdown() } } tc.provider = { build: () => new tc }; class sf { async initialize(e, n) { this.localStore || (this.localStore = e.localStore, this.sharedClientState = e.sharedClientState, this.datastore = this.createDatastore(n), this.remoteStore = this.createRemoteStore(n), this.eventManager = this.createEventManager(n), this.syncEngine = this.createSyncEngine(n, !e.synchronizeTabs), this.sharedClientState.onlineStateHandler = r => Ly(this.syncEngine, r, 1), this.remoteStore.remoteSyncer.handleCredentialChange = L2.bind(null, this.syncEngine), await m2(this.remoteStore, this.syncEngine.isPrimaryClient)) } createEventManager(e) { return function () { return new y2 }() } createDatastore(e) { const n = Rc(e.databaseInfo.databaseId), r = function (s) { return new ZC(s) }(e.databaseInfo); return function (s, o, l, u) { return new n2(s, o, l, u) }(e.authCredentials, e.appCheckCredentials, r, n) } createRemoteStore(e) { return function (r, i, s, o, l) { return new i2(r, i, s, o, l) }(this.localStore, this.datastore, e.asyncQueue, n => Ly(this.syncEngine, n, 0), function () { return Ny.D() ? new Ny : new YC }()) } createSyncEngine(e, n) { return function (i, s, o, l, u, h, p) { const v = new k2(i, s, o, l, u, h); return p && (v.Qa = !0), v }(this.localStore, this.remoteStore, this.eventManager, this.sharedClientState, e.initialUser, e.maxConcurrentLimboResolutions, n) } async terminate() { var e, n; await async function (i) { const s = ue(i); X("RemoteStore", "RemoteStore shutting down."), s.L_.add(5), await Wa(s), s.k_.shutdown(), s.q_.set("Unknown") }(this.remoteStore), (e = this.datastore) === null || e === void 0 || e.terminate(), (n = this.eventManager) === null || n === void 0 || n.terminate() } } sf.provider = { build: () => new sf };/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*//**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class eE { constructor(e) { this.observer = e, this.muted = !1 } next(e) { this.muted || this.observer.next && this.Ya(this.observer.next, e) } error(e) { this.muted || (this.observer.error ? this.Ya(this.observer.error, e) : ir("Uncaught Error in snapshot listener:", e.toString())) } Za() { this.muted = !0 } Ya(e, n) { setTimeout(() => { this.muted || e(n) }, 0) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class V2 { constructor(e, n, r, i, s) { this.authCredentials = e, this.appCheckCredentials = n, this.asyncQueue = r, this.databaseInfo = i, this.user = vt.UNAUTHENTICATED, this.clientId = tw.newId(), this.authCredentialListener = () => Promise.resolve(), this.appCheckCredentialListener = () => Promise.resolve(), this._uninitializedComponentsProvider = s, this.authCredentials.start(r, async o => { X("FirestoreClient", "Received user=", o.uid), await this.authCredentialListener(o), this.user = o }), this.appCheckCredentials.start(r, o => (X("FirestoreClient", "Received new app check token=", o), this.appCheckCredentialListener(o, this.user))) } get configuration() { return { asyncQueue: this.asyncQueue, databaseInfo: this.databaseInfo, clientId: this.clientId, authCredentials: this.authCredentials, appCheckCredentials: this.appCheckCredentials, initialUser: this.user, maxConcurrentLimboResolutions: 100 } } setCredentialChangeListener(e) { this.authCredentialListener = e } setAppCheckTokenChangeListener(e) { this.appCheckCredentialListener = e } terminate() { this.asyncQueue.enterRestrictedMode(); const e = new Hr; return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async () => { try { this._onlineComponents && await this._onlineComponents.terminate(), this._offlineComponents && await this._offlineComponents.terminate(), this.authCredentials.shutdown(), this.appCheckCredentials.shutdown(), e.resolve() } catch (n) { const r = Dp(n, "Failed to shutdown persistence"); e.reject(r) } }), e.promise } } async function Ud(t, e) { t.asyncQueue.verifyOperationInProgress(), X("FirestoreClient", "Initializing OfflineComponentProvider"); const n = t.configuration; await e.initialize(n); let r = n.initialUser; t.setCredentialChangeListener(async i => { r.isEqual(i) || (await Dw(e.localStore, i), r = i) }), e.persistence.setDatabaseDeletedListener(() => t.terminate()), t._offlineComponents = e } async function jy(t, e) { t.asyncQueue.verifyOperationInProgress(); const n = await O2(t); X("FirestoreClient", "Initializing OnlineComponentProvider"), await e.initialize(n, t.configuration), t.setCredentialChangeListener(r => Py(e.remoteStore, r)), t.setAppCheckTokenChangeListener((r, i) => Py(e.remoteStore, i)), t._onlineComponents = e } async function O2(t) { if (!t._offlineComponents) if (t._uninitializedComponentsProvider) { X("FirestoreClient", "Using user provided OfflineComponentProvider"); try { await Ud(t, t._uninitializedComponentsProvider._offline) } catch (e) { const n = e; if (!function (i) { return i.name === "FirebaseError" ? i.code === F.FAILED_PRECONDITION || i.code === F.UNIMPLEMENTED : !(typeof DOMException < "u" && i instanceof DOMException) || i.code === 22 || i.code === 20 || i.code === 11 }(n)) throw n; Fs("Error using user provided cache. Falling back to memory cache: " + n), await Ud(t, new tc) } } else X("FirestoreClient", "Using default OfflineComponentProvider"), await Ud(t, new tc); return t._offlineComponents } async function tE(t) { return t._onlineComponents || (t._uninitializedComponentsProvider ? (X("FirestoreClient", "Using user provided OnlineComponentProvider"), await jy(t, t._uninitializedComponentsProvider._online)) : (X("FirestoreClient", "Using default OnlineComponentProvider"), await jy(t, new sf))), t._onlineComponents } function F2(t) { return tE(t).then(e => e.syncEngine) } async function of(t) { const e = await tE(t), n = e.eventManager; return n.onListen = T2.bind(null, e.syncEngine), n.onUnlisten = A2.bind(null, e.syncEngine), n.onFirstRemoteStoreListen = S2.bind(null, e.syncEngine), n.onLastRemoteStoreUnlisten = C2.bind(null, e.syncEngine), n } function U2(t, e, n = {}) { const r = new Hr; return t.asyncQueue.enqueueAndForget(async () => function (s, o, l, u, h) { const p = new eE({ next: m => { p.Za(), o.enqueueAndForget(() => Ww(s, v)); const C = m.docs.has(l); !C && m.fromCache ? h.reject(new J(F.UNAVAILABLE, "Failed to get document because the client is offline.")) : C && m.fromCache && u && u.source === "server" ? h.reject(new J(F.UNAVAILABLE, 'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')) : h.resolve(m) }, error: m => h.reject(m) }), v = new Hw(Sc(l.path), p, { includeMetadataChanges: !0, _a: !0 }); return $w(s, v) }(await of(t), t.asyncQueue, e, n, r)), r.promise }/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function nE(t) { const e = {}; return t.timeoutSeconds !== void 0 && (e.timeoutSeconds = t.timeoutSeconds), e }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const Vy = new Map;/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function rE(t, e, n) { if (!n) throw new J(F.INVALID_ARGUMENT, `Function ${t}() cannot be called with an empty ${e}.`) } function z2(t, e, n, r) { if (e === !0 && r === !0) throw new J(F.INVALID_ARGUMENT, `${t} and ${n} cannot be used together.`) } function Oy(t) { if (!re.isDocumentKey(t)) throw new J(F.INVALID_ARGUMENT, `Invalid document reference. Document references must have an even number of segments, but ${t} has ${t.length}.`) } function Fy(t) { if (re.isDocumentKey(t)) throw new J(F.INVALID_ARGUMENT, `Invalid collection reference. Collection references must have an odd number of segments, but ${t} has ${t.length}.`) } function jp(t) { if (t === void 0) return "undefined"; if (t === null) return "null"; if (typeof t == "string") return t.length > 20 && (t = `${t.substring(0, 20)}...`), JSON.stringify(t); if (typeof t == "number" || typeof t == "boolean") return "" + t; if (typeof t == "object") { if (t instanceof Array) return "an array"; { const e = function (r) { return r.constructor ? r.constructor.name : null }(t); return e ? `a custom ${e} object` : "an object" } } return typeof t == "function" ? "a function" : ae() } function Ht(t, e) { if ("_delegate" in t && (t = t._delegate), !(t instanceof e)) { if (e.name === t.constructor.name) throw new J(F.INVALID_ARGUMENT, "Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?"); { const n = jp(t); throw new J(F.INVALID_ARGUMENT, `Expected type '${e.name}', but it was: ${n}`) } } return t }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Uy { constructor(e) { var n, r; if (e.host === void 0) { if (e.ssl !== void 0) throw new J(F.INVALID_ARGUMENT, "Can't provide ssl option if host option is not set"); this.host = "firestore.googleapis.com", this.ssl = !0 } else this.host = e.host, this.ssl = (n = e.ssl) === null || n === void 0 || n; if (this.credentials = e.credentials, this.ignoreUndefinedProperties = !!e.ignoreUndefinedProperties, this.localCache = e.localCache, e.cacheSizeBytes === void 0) this.cacheSizeBytes = 41943040; else { if (e.cacheSizeBytes !== -1 && e.cacheSizeBytes < 1048576) throw new J(F.INVALID_ARGUMENT, "cacheSizeBytes must be at least 1048576"); this.cacheSizeBytes = e.cacheSizeBytes } z2("experimentalForceLongPolling", e.experimentalForceLongPolling, "experimentalAutoDetectLongPolling", e.experimentalAutoDetectLongPolling), this.experimentalForceLongPolling = !!e.experimentalForceLongPolling, this.experimentalForceLongPolling ? this.experimentalAutoDetectLongPolling = !1 : e.experimentalAutoDetectLongPolling === void 0 ? this.experimentalAutoDetectLongPolling = !0 : this.experimentalAutoDetectLongPolling = !!e.experimentalAutoDetectLongPolling, this.experimentalLongPollingOptions = nE((r = e.experimentalLongPollingOptions) !== null && r !== void 0 ? r : {}), function (s) { if (s.timeoutSeconds !== void 0) { if (isNaN(s.timeoutSeconds)) throw new J(F.INVALID_ARGUMENT, `invalid long polling timeout: ${s.timeoutSeconds} (must not be NaN)`); if (s.timeoutSeconds < 5) throw new J(F.INVALID_ARGUMENT, `invalid long polling timeout: ${s.timeoutSeconds} (minimum allowed value is 5)`); if (s.timeoutSeconds > 30) throw new J(F.INVALID_ARGUMENT, `invalid long polling timeout: ${s.timeoutSeconds} (maximum allowed value is 30)`) } }(this.experimentalLongPollingOptions), this.useFetchStreams = !!e.useFetchStreams } isEqual(e) { return this.host === e.host && this.ssl === e.ssl && this.credentials === e.credentials && this.cacheSizeBytes === e.cacheSizeBytes && this.experimentalForceLongPolling === e.experimentalForceLongPolling && this.experimentalAutoDetectLongPolling === e.experimentalAutoDetectLongPolling && function (r, i) { return r.timeoutSeconds === i.timeoutSeconds }(this.experimentalLongPollingOptions, e.experimentalLongPollingOptions) && this.ignoreUndefinedProperties === e.ignoreUndefinedProperties && this.useFetchStreams === e.useFetchStreams } } class Mc { constructor(e, n, r, i) { this._authCredentials = e, this._appCheckCredentials = n, this._databaseId = r, this._app = i, this.type = "firestore-lite", this._persistenceKey = "(lite)", this._settings = new Uy({}), this._settingsFrozen = !1, this._terminateTask = "notTerminated" } get app() { if (!this._app) throw new J(F.FAILED_PRECONDITION, "Firestore was not initialized using the Firebase SDK. 'app' is not available"); return this._app } get _initialized() { return this._settingsFrozen } get _terminated() { return this._terminateTask !== "notTerminated" } _setSettings(e) { if (this._settingsFrozen) throw new J(F.FAILED_PRECONDITION, "Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object."); this._settings = new Uy(e), e.credentials !== void 0 && (this._authCredentials = function (r) { if (!r) return new sA; switch (r.type) { case "firstParty": return new uA(r.sessionIndex || "0", r.iamToken || null, r.authTokenFactory || null); case "provider": return r.client; default: throw new J(F.INVALID_ARGUMENT, "makeAuthCredentialsProvider failed due to invalid credential type") } }(e.credentials)) } _getSettings() { return this._settings } _freezeSettings() { return this._settingsFrozen = !0, this._settings } _delete() { return this._terminateTask === "notTerminated" && (this._terminateTask = this._terminate()), this._terminateTask } async _restart() { this._terminateTask === "notTerminated" ? await this._terminate() : this._terminateTask = "notTerminated" } toJSON() { return { app: this._app, databaseId: this._databaseId, settings: this._settings } } _terminate() { return function (n) { const r = Vy.get(n); r && (X("ComponentProvider", "Removing Datastore"), Vy.delete(n), r.terminate()) }(this), Promise.resolve() } } function B2(t, e, n, r = {}) { var i; const s = (t = Ht(t, Mc))._getSettings(), o = `${e}:${n}`; if (s.host !== "firestore.googleapis.com" && s.host !== o && Fs("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."), t._setSettings(Object.assign(Object.assign({}, s), { host: o, ssl: !1 })), r.mockUserToken) { let l, u; if (typeof r.mockUserToken == "string") l = r.mockUserToken, u = vt.MOCK_USER; else { l = xT(r.mockUserToken, (i = t._app) === null || i === void 0 ? void 0 : i.options.projectId); const h = r.mockUserToken.sub || r.mockUserToken.user_id; if (!h) throw new J(F.INVALID_ARGUMENT, "mockUserToken must contain 'sub' or 'user_id' field!"); u = new vt(h) } t._authCredentials = new oA(new ew(l, u)) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class jc { constructor(e, n, r) { this.converter = n, this._query = r, this.type = "query", this.firestore = e } withConverter(e) { return new jc(this.firestore, e, this._query) } } class It { constructor(e, n, r) { this.converter = n, this._key = r, this.type = "document", this.firestore = e } get _path() { return this._key.path } get id() { return this._key.path.lastSegment() } get path() { return this._key.path.canonicalString() } get parent() { return new qr(this.firestore, this.converter, this._key.path.popLast()) } withConverter(e) { return new It(this.firestore, e, this._key) } } class qr extends jc { constructor(e, n, r) { super(e, n, Sc(r)), this._path = r, this.type = "collection" } get id() { return this._query.path.lastSegment() } get path() { return this._query.path.canonicalString() } get parent() { const e = this._path.popLast(); return e.isEmpty() ? null : new It(this.firestore, null, new re(e)) } withConverter(e) { return new qr(this.firestore, e, this._path) } } function pn(t, e, ...n) { if (t = qe(t), rE("collection", "path", e), t instanceof Mc) { const r = Le.fromString(e, ...n); return Fy(r), new qr(t, null, r) } { if (!(t instanceof It || t instanceof qr)) throw new J(F.INVALID_ARGUMENT, "Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore"); const r = t._path.child(Le.fromString(e, ...n)); return Fy(r), new qr(t.firestore, null, r) } } function Ye(t, e, ...n) { if (t = qe(t), arguments.length === 1 && (e = tw.newId()), rE("doc", "path", e), t instanceof Mc) { const r = Le.fromString(e, ...n); return Oy(r), new It(t, null, new re(r)) } { if (!(t instanceof It || t instanceof qr)) throw new J(F.INVALID_ARGUMENT, "Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore"); const r = t._path.child(Le.fromString(e, ...n)); return Oy(r), new It(t.firestore, t instanceof qr ? t.converter : null, new re(r)) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class zy {
|
|
constructor(e = Promise.resolve()) { this.Pu = [], this.Iu = !1, this.Tu = [], this.Eu = null, this.du = !1, this.Au = !1, this.Ru = [], this.t_ = new Mw(this, "async_queue_retry"), this.Vu = () => { const r = Fd(); r && X("AsyncQueue", "Visibility state changed to " + r.visibilityState), this.t_.jo() }, this.mu = e; const n = Fd(); n && typeof n.addEventListener == "function" && n.addEventListener("visibilitychange", this.Vu) } get isShuttingDown() { return this.Iu } enqueueAndForget(e) { this.enqueue(e) } enqueueAndForgetEvenWhileRestricted(e) { this.fu(), this.gu(e) } enterRestrictedMode(e) { if (!this.Iu) { this.Iu = !0, this.Au = e || !1; const n = Fd(); n && typeof n.removeEventListener == "function" && n.removeEventListener("visibilitychange", this.Vu) } } enqueue(e) { if (this.fu(), this.Iu) return new Promise(() => { }); const n = new Hr; return this.gu(() => this.Iu && this.Au ? Promise.resolve() : (e().then(n.resolve, n.reject), n.promise)).then(() => n.promise) } enqueueRetryable(e) { this.enqueueAndForget(() => (this.Pu.push(e), this.pu())) } async pu() { if (this.Pu.length !== 0) { try { await this.Pu[0](), this.Pu.shift(), this.t_.reset() } catch (e) { if (!za(e)) throw e; X("AsyncQueue", "Operation failed with retryable error: " + e) } this.Pu.length > 0 && this.t_.Go(() => this.pu()) } } gu(e) {
|
|
const n = this.mu.then(() => (this.du = !0, e().catch(r => {
|
|
this.Eu = r, this.du = !1; const i = function (o) {
|
|
let l = o.message || ""; return o.stack && (l = o.stack.includes(o.message) ? o.stack : o.message + `
|
|
`+ o.stack), l
|
|
}(r); throw ir("INTERNAL UNHANDLED ERROR: ", i), r
|
|
}).then(r => (this.du = !1, r)))); return this.mu = n, n
|
|
} enqueueAfterDelay(e, n, r) { this.fu(), this.Ru.indexOf(e) > -1 && (n = 0); const i = Rp.createAndSchedule(this, e, n, r, s => this.yu(s)); return this.Tu.push(i), i } fu() { this.Eu && ae() } verifyOperationInProgress() { } async wu() { let e; do e = this.mu, await e; while (e !== this.mu) } Su(e) { for (const n of this.Tu) if (n.timerId === e) return !0; return !1 } bu(e) { return this.wu().then(() => { this.Tu.sort((n, r) => n.targetTimeMs - r.targetTimeMs); for (const n of this.Tu) if (n.skipDelay(), e !== "all" && n.timerId === e) break; return this.wu() }) } Du(e) { this.Ru.push(e) } yu(e) { const n = this.Tu.indexOf(e); this.Tu.splice(n, 1) }
|
|
} function By(t) { return function (n, r) { if (typeof n != "object" || n === null) return !1; const i = n; for (const s of r) if (s in i && typeof i[s] == "function") return !0; return !1 }(t, ["next", "error", "complete"]) } class or extends Mc { constructor(e, n, r, i) { super(e, n, r, i), this.type = "firestore", this._queue = new zy, this._persistenceKey = (i == null ? void 0 : i.name) || "[DEFAULT]" } async _terminate() { if (this._firestoreClient) { const e = this._firestoreClient.terminate(); this._queue = new zy(e), this._firestoreClient = void 0, await e } } } function $2(t, e) { const n = typeof t == "object" ? t : d_(), r = typeof t == "string" ? t : "(default)", i = ip(n, "firestore").getImmediate({ identifier: r }); if (!i._initialized) { const s = wT("firestore"); s && B2(i, ...s) } return i } function Vc(t) { if (t._terminated) throw new J(F.FAILED_PRECONDITION, "The client has already been terminated."); return t._firestoreClient || W2(t), t._firestoreClient } function W2(t) { var e, n, r; const i = t._freezeSettings(), s = function (l, u, h, p) { return new xA(l, u, h, p.host, p.ssl, p.experimentalForceLongPolling, p.experimentalAutoDetectLongPolling, nE(p.experimentalLongPollingOptions), p.useFetchStreams) }(t._databaseId, ((e = t._app) === null || e === void 0 ? void 0 : e.options.appId) || "", t._persistenceKey, i); t._componentsProvider || !((n = i.localCache) === null || n === void 0) && n._offlineComponentProvider && (!((r = i.localCache) === null || r === void 0) && r._onlineComponentProvider) && (t._componentsProvider = { _offline: i.localCache._offlineComponentProvider, _online: i.localCache._onlineComponentProvider }), t._firestoreClient = new V2(t._authCredentials, t._appCheckCredentials, t._queue, s, t._componentsProvider && function (l) { const u = l == null ? void 0 : l._online.build(); return { _offline: l == null ? void 0 : l._offline.build(u), _online: u } }(t._componentsProvider)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Hs { constructor(e) { this._byteString = e } static fromBase64String(e) { try { return new Hs(ht.fromBase64String(e)) } catch (n) { throw new J(F.INVALID_ARGUMENT, "Failed to construct data from Base64 string: " + n) } } static fromUint8Array(e) { return new Hs(ht.fromUint8Array(e)) } toBase64() { return this._byteString.toBase64() } toUint8Array() { return this._byteString.toUint8Array() } toString() { return "Bytes(base64: " + this.toBase64() + ")" } isEqual(e) { return this._byteString.isEqual(e._byteString) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class qa { constructor(...e) { for (let n = 0; n < e.length; ++n)if (e[n].length === 0) throw new J(F.INVALID_ARGUMENT, "Invalid field name at argument $(i + 1). Field names must not be empty."); this._internalPath = new lt(e) } isEqual(e) { return this._internalPath.isEqual(e._internalPath) } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Vp { constructor(e) { this._methodName = e } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Op { constructor(e, n) { if (!isFinite(e) || e < -90 || e > 90) throw new J(F.INVALID_ARGUMENT, "Latitude must be a number between -90 and 90, but was: " + e); if (!isFinite(n) || n < -180 || n > 180) throw new J(F.INVALID_ARGUMENT, "Longitude must be a number between -180 and 180, but was: " + n); this._lat = e, this._long = n } get latitude() { return this._lat } get longitude() { return this._long } isEqual(e) { return this._lat === e._lat && this._long === e._long } toJSON() { return { latitude: this._lat, longitude: this._long } } _compareTo(e) { return _e(this._lat, e._lat) || _e(this._long, e._long) } }/**
|
|
* @license
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Fp { constructor(e) { this._values = (e || []).map(n => n) } toArray() { return this._values.map(e => e) } isEqual(e) { return function (r, i) { if (r.length !== i.length) return !1; for (let s = 0; s < r.length; ++s)if (r[s] !== i[s]) return !1; return !0 }(this._values, e._values) } }/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/const H2 = /^__.*__$/; class q2 { constructor(e, n, r) { this.data = e, this.fieldMask = n, this.fieldTransforms = r } toMutation(e, n) { return this.fieldMask !== null ? new ri(e, this.data, this.fieldMask, n, this.fieldTransforms) : new Ba(e, this.data, n, this.fieldTransforms) } } class iE { constructor(e, n, r) { this.data = e, this.fieldMask = n, this.fieldTransforms = r } toMutation(e, n) { return new ri(e, this.data, this.fieldMask, n, this.fieldTransforms) } } function sE(t) { switch (t) { case 0: case 2: case 1: return !0; case 3: case 4: return !1; default: throw ae() } } class Up { constructor(e, n, r, i, s, o) { this.settings = e, this.databaseId = n, this.serializer = r, this.ignoreUndefinedProperties = i, s === void 0 && this.vu(), this.fieldTransforms = s || [], this.fieldMask = o || [] } get path() { return this.settings.path } get Cu() { return this.settings.Cu } Fu(e) { return new Up(Object.assign(Object.assign({}, this.settings), e), this.databaseId, this.serializer, this.ignoreUndefinedProperties, this.fieldTransforms, this.fieldMask) } Mu(e) { var n; const r = (n = this.path) === null || n === void 0 ? void 0 : n.child(e), i = this.Fu({ path: r, xu: !1 }); return i.Ou(e), i } Nu(e) { var n; const r = (n = this.path) === null || n === void 0 ? void 0 : n.child(e), i = this.Fu({ path: r, xu: !1 }); return i.vu(), i } Lu(e) { return this.Fu({ path: void 0, xu: !0 }) } Bu(e) { return nc(e, this.settings.methodName, this.settings.ku || !1, this.path, this.settings.qu) } contains(e) { return this.fieldMask.find(n => e.isPrefixOf(n)) !== void 0 || this.fieldTransforms.find(n => e.isPrefixOf(n.field)) !== void 0 } vu() { if (this.path) for (let e = 0; e < this.path.length; e++)this.Ou(this.path.get(e)) } Ou(e) { if (e.length === 0) throw this.Bu("Document fields must not be empty"); if (sE(this.Cu) && H2.test(e)) throw this.Bu('Document fields cannot begin and end with "__"') } } class K2 { constructor(e, n, r) { this.databaseId = e, this.ignoreUndefinedProperties = n, this.serializer = r || Rc(e) } Qu(e, n, r, i = !1) { return new Up({ Cu: e, methodName: n, qu: r, path: lt.emptyPath(), xu: !1, ku: i }, this.databaseId, this.serializer, this.ignoreUndefinedProperties) } } function Oc(t) { const e = t._freezeSettings(), n = Rc(t._databaseId); return new K2(t._databaseId, !!e.ignoreUndefinedProperties, n) } function zp(t, e, n, r, i, s = {}) { const o = t.Qu(s.merge || s.mergeFields ? 2 : 0, e, n, i); Bp("Data must be an object, but it was:", o, r); const l = lE(r, o); let u, h; if (s.merge) u = new $t(o.fieldMask), h = o.fieldTransforms; else if (s.mergeFields) { const p = []; for (const v of s.mergeFields) { const m = af(e, v, n); if (!o.contains(m)) throw new J(F.INVALID_ARGUMENT, `Field '${m}' is specified in your field mask but missing from your input data.`); cE(p, m) || p.push(m) } u = new $t(p), h = o.fieldTransforms.filter(v => u.covers(v.field)) } else u = null, h = o.fieldTransforms; return new q2(new Rt(l), u, h) } class Fc extends Vp { _toFieldTransform(e) { if (e.Cu !== 2) throw e.Cu === 1 ? e.Bu(`${this._methodName}() can only appear at the top level of your update data`) : e.Bu(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`); return e.fieldMask.push(e.path), null } isEqual(e) { return e instanceof Fc } } function oE(t, e, n, r) { const i = t.Qu(1, e, n); Bp("Data must be an object, but it was:", i, r); const s = [], o = Rt.empty(); Bi(r, (u, h) => { const p = $p(e, u, n); h = qe(h); const v = i.Nu(p); if (h instanceof Fc) s.push(p); else { const m = Uc(h, v); m != null && (s.push(p), o.set(p, m)) } }); const l = new $t(s); return new iE(o, l, i.fieldTransforms) } function aE(t, e, n, r, i, s) { const o = t.Qu(1, e, n), l = [af(e, r, n)], u = [i]; if (s.length % 2 != 0) throw new J(F.INVALID_ARGUMENT, `Function ${e}() needs to be called with an even number of arguments that alternate between field names and values.`); for (let m = 0; m < s.length; m += 2)l.push(af(e, s[m])), u.push(s[m + 1]); const h = [], p = Rt.empty(); for (let m = l.length - 1; m >= 0; --m)if (!cE(h, l[m])) { const C = l[m]; let R = u[m]; R = qe(R); const L = o.Nu(C); if (R instanceof Fc) h.push(C); else { const V = Uc(R, L); V != null && (h.push(C), p.set(C, V)) } } const v = new $t(h); return new iE(p, v, o.fieldTransforms) } function Uc(t, e) { if (uE(t = qe(t))) return Bp("Unsupported field value:", e, t), lE(t, e); if (t instanceof Vp) return function (r, i) { if (!sE(i.Cu)) throw i.Bu(`${r._methodName}() can only be used with update() and set()`); if (!i.path) throw i.Bu(`${r._methodName}() is not currently supported inside arrays`); const s = r._toFieldTransform(i); s && i.fieldTransforms.push(s) }(t, e), null; if (t === void 0 && e.ignoreUndefinedProperties) return null; if (e.path && e.fieldMask.push(e.path), t instanceof Array) { if (e.settings.xu && e.Cu !== 4) throw e.Bu("Nested arrays are not supported"); return function (r, i) { const s = []; let o = 0; for (const l of r) { let u = Uc(l, i.Lu(o)); u == null && (u = { nullValue: "NULL_VALUE" }), s.push(u), o++ } return { arrayValue: { values: s } } }(t, e) } return function (r, i) { if ((r = qe(r)) === null) return { nullValue: "NULL_VALUE" }; if (typeof r == "number") return HA(i.serializer, r); if (typeof r == "boolean") return { booleanValue: r }; if (typeof r == "string") return { stringValue: r }; if (r instanceof Date) { const s = et.fromDate(r); return { timestampValue: Zu(i.serializer, s) } } if (r instanceof et) { const s = new et(r.seconds, 1e3 * Math.floor(r.nanoseconds / 1e3)); return { timestampValue: Zu(i.serializer, s) } } if (r instanceof Op) return { geoPointValue: { latitude: r.latitude, longitude: r.longitude } }; if (r instanceof Hs) return { bytesValue: Iw(i.serializer, r._byteString) }; if (r instanceof It) { const s = i.databaseId, o = r.firestore._databaseId; if (!o.isEqual(s)) throw i.Bu(`Document reference is for database ${o.projectId}/${o.database} but should be for database ${s.projectId}/${s.database}`); return { referenceValue: Tp(r.firestore._databaseId || i.databaseId, r._key.path) } } if (r instanceof Fp) return function (o, l) { return { mapValue: { fields: { __type__: { stringValue: "__vector__" }, value: { arrayValue: { values: o.toArray().map(u => { if (typeof u != "number") throw l.Bu("VectorValues must only contain numeric values."); return Ep(l.serializer, u) }) } } } } } }(r, i); throw i.Bu(`Unsupported field value: ${jp(r)}`) }(t, e) } function lE(t, e) { const n = {}; return nw(t) ? e.path && e.path.length > 0 && e.fieldMask.push(e.path) : Bi(t, (r, i) => { const s = Uc(i, e.Mu(r)); s != null && (n[r] = s) }), { mapValue: { fields: n } } } function uE(t) { return !(typeof t != "object" || t === null || t instanceof Array || t instanceof Date || t instanceof et || t instanceof Op || t instanceof Hs || t instanceof It || t instanceof Vp || t instanceof Fp) } function Bp(t, e, n) { if (!uE(n) || !function (i) { return typeof i == "object" && i !== null && (Object.getPrototypeOf(i) === Object.prototype || Object.getPrototypeOf(i) === null) }(n)) { const r = jp(n); throw r === "an object" ? e.Bu(t + " a custom object") : e.Bu(t + " " + r) } } function af(t, e, n) { if ((e = qe(e)) instanceof qa) return e._internalPath; if (typeof e == "string") return $p(t, e); throw nc("Field path arguments must be of type string or ", t, !1, void 0, n) } const G2 = new RegExp("[~\\*/\\[\\]]"); function $p(t, e, n) { if (e.search(G2) >= 0) throw nc(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`, t, !1, void 0, n); try { return new qa(...e.split("."))._internalPath } catch { throw nc(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`, t, !1, void 0, n) } } function nc(t, e, n, r, i) { const s = r && !r.isEmpty(), o = i !== void 0; let l = `Function ${e}() called with invalid data`; n && (l += " (via `toFirestore()`)"), l += ". "; let u = ""; return (s || o) && (u += " (found", s && (u += ` in field ${r}`), o && (u += ` in document ${i}`), u += ")"), new J(F.INVALID_ARGUMENT, l + t + u) } function cE(t, e) { return t.some(n => n.isEqual(e)) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class dE { constructor(e, n, r, i, s) { this._firestore = e, this._userDataWriter = n, this._key = r, this._document = i, this._converter = s } get id() { return this._key.path.lastSegment() } get ref() { return new It(this._firestore, this._converter, this._key) } exists() { return this._document !== null } data() { if (this._document) { if (this._converter) { const e = new Q2(this._firestore, this._userDataWriter, this._key, this._document, null); return this._converter.fromFirestore(e) } return this._userDataWriter.convertValue(this._document.data.value) } } get(e) { if (this._document) { const n = this._document.data.field(hE("DocumentSnapshot.get", e)); if (n !== null) return this._userDataWriter.convertValue(n) } } } class Q2 extends dE { data() { return super.data() } } function hE(t, e) { return typeof e == "string" ? $p(t, e) : e instanceof qa ? e._internalPath : e._delegate._internalPath }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Y2(t) { if (t.limitType === "L" && t.explicitOrderBy.length === 0) throw new J(F.UNIMPLEMENTED, "limitToLast() queries require specifying at least one orderBy() clause") } class X2 { convertValue(e, n = "none") { switch (Oi(e)) { case 0: return null; case 1: return e.booleanValue; case 2: return Be(e.integerValue || e.doubleValue); case 3: return this.convertTimestamp(e.timestampValue); case 4: return this.convertServerTimestamp(e, n); case 5: return e.stringValue; case 6: return this.convertBytes(Vi(e.bytesValue)); case 7: return this.convertReference(e.referenceValue); case 8: return this.convertGeoPoint(e.geoPointValue); case 9: return this.convertArray(e.arrayValue, n); case 11: return this.convertObject(e.mapValue, n); case 10: return this.convertVectorValue(e.mapValue); default: throw ae() } } convertObject(e, n) { return this.convertObjectMap(e.fields, n) } convertObjectMap(e, n = "none") { const r = {}; return Bi(e, (i, s) => { r[i] = this.convertValue(s, n) }), r } convertVectorValue(e) { var n, r, i; const s = (i = (r = (n = e.fields) === null || n === void 0 ? void 0 : n.value.arrayValue) === null || r === void 0 ? void 0 : r.values) === null || i === void 0 ? void 0 : i.map(o => Be(o.doubleValue)); return new Fp(s) } convertGeoPoint(e) { return new Op(Be(e.latitude), Be(e.longitude)) } convertArray(e, n) { return (e.values || []).map(r => this.convertValue(r, n)) } convertServerTimestamp(e, n) { switch (n) { case "previous": const r = yp(e); return r == null ? null : this.convertValue(r, n); case "estimate": return this.convertTimestamp(Ta(e)); default: return null } } convertTimestamp(e) { const n = Yr(e); return new et(n.seconds, n.nanos) } convertDocumentKey(e, n) { const r = Le.fromString(e); Ee(Rw(r)); const i = new Sa(r.get(1), r.get(3)), s = new re(r.popFirst(5)); return i.isEqual(n) || ir(`Document ${s} contains a document reference within a different database (${i.projectId}/${i.database}) which is not supported. It will be treated as a reference in the current database (${n.projectId}/${n.database}) instead.`), s } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function Wp(t, e, n) { let r; return r = t ? n && (n.merge || n.mergeFields) ? t.toFirestore(e, n) : t.toFirestore(e) : e, r }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class Bo { constructor(e, n) { this.hasPendingWrites = e, this.fromCache = n } isEqual(e) { return this.hasPendingWrites === e.hasPendingWrites && this.fromCache === e.fromCache } } class fE extends dE { constructor(e, n, r, i, s, o) { super(e, n, r, i, o), this._firestore = e, this._firestoreImpl = e, this.metadata = s } exists() { return super.exists() } data(e = {}) { if (this._document) { if (this._converter) { const n = new mu(this._firestore, this._userDataWriter, this._key, this._document, this.metadata, null); return this._converter.fromFirestore(n, e) } return this._userDataWriter.convertValue(this._document.data.value, e.serverTimestamps) } } get(e, n = {}) { if (this._document) { const r = this._document.data.field(hE("DocumentSnapshot.get", e)); if (r !== null) return this._userDataWriter.convertValue(r, n.serverTimestamps) } } } class mu extends fE { data(e = {}) { return super.data(e) } } class J2 { constructor(e, n, r, i) { this._firestore = e, this._userDataWriter = n, this._snapshot = i, this.metadata = new Bo(i.hasPendingWrites, i.fromCache), this.query = r } get docs() { const e = []; return this.forEach(n => e.push(n)), e } get size() { return this._snapshot.docs.size } get empty() { return this.size === 0 } forEach(e, n) { this._snapshot.docs.forEach(r => { e.call(n, new mu(this._firestore, this._userDataWriter, r.key, r, new Bo(this._snapshot.mutatedKeys.has(r.key), this._snapshot.fromCache), this.query.converter)) }) } docChanges(e = {}) { const n = !!e.includeMetadataChanges; if (n && this._snapshot.excludesMetadataChanges) throw new J(F.INVALID_ARGUMENT, "To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot()."); return this._cachedChanges && this._cachedChangesIncludeMetadataChanges === n || (this._cachedChanges = function (i, s) { if (i._snapshot.oldDocs.isEmpty()) { let o = 0; return i._snapshot.docChanges.map(l => { const u = new mu(i._firestore, i._userDataWriter, l.doc.key, l.doc, new Bo(i._snapshot.mutatedKeys.has(l.doc.key), i._snapshot.fromCache), i.query.converter); return l.doc, { type: "added", doc: u, oldIndex: -1, newIndex: o++ } }) } { let o = i._snapshot.oldDocs; return i._snapshot.docChanges.filter(l => s || l.type !== 3).map(l => { const u = new mu(i._firestore, i._userDataWriter, l.doc.key, l.doc, new Bo(i._snapshot.mutatedKeys.has(l.doc.key), i._snapshot.fromCache), i.query.converter); let h = -1, p = -1; return l.type !== 0 && (h = o.indexOf(l.doc.key), o = o.delete(l.doc.key)), l.type !== 1 && (o = o.add(l.doc), p = o.indexOf(l.doc.key)), { type: Z2(l.type), doc: u, oldIndex: h, newIndex: p } }) } }(this, n), this._cachedChangesIncludeMetadataChanges = n), this._cachedChanges } } function Z2(t) { switch (t) { case 0: return "added"; case 2: case 3: return "modified"; case 1: return "removed"; default: return ae() } }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function eN(t) { t = Ht(t, It); const e = Ht(t.firestore, or); return U2(Vc(e), t._key).then(n => mE(e, t, n)) } class pE extends X2 { constructor(e) { super(), this.firestore = e } convertBytes(e) { return new Hs(e) } convertReference(e) { const n = this.convertDocumentKey(e, this.firestore._databaseId); return new It(this.firestore, null, n) } } function Hl(t, e, n) { t = Ht(t, It); const r = Ht(t.firestore, or), i = Wp(t.converter, e, n); return Ka(r, [zp(Oc(r), "setDoc", t._key, i, t.converter !== null, n).toMutation(t._key, St.none())]) } function Bn(t, e, n, ...r) { t = Ht(t, It); const i = Ht(t.firestore, or), s = Oc(i); let o; return o = typeof (e = qe(e)) == "string" || e instanceof qa ? aE(s, "updateDoc", t._key, e, n, r) : oE(s, "updateDoc", t._key, e), Ka(i, [o.toMutation(t._key, St.exists(!0))]) } function zd(t) { return Ka(Ht(t.firestore, or), [new Pc(t._key, St.none())]) } function is(t, e) { const n = Ht(t.firestore, or), r = Ye(t), i = Wp(t.converter, e); return Ka(n, [zp(Oc(t.firestore), "addDoc", r._key, i, t.converter !== null, {}).toMutation(r._key, St.exists(!1))]).then(() => r) } function bo(t, ...e) { var n, r, i; t = qe(t); let s = { includeMetadataChanges: !1, source: "default" }, o = 0; typeof e[o] != "object" || By(e[o]) || (s = e[o], o++); const l = { includeMetadataChanges: s.includeMetadataChanges, source: s.source }; if (By(e[o])) { const v = e[o]; e[o] = (n = v.next) === null || n === void 0 ? void 0 : n.bind(v), e[o + 1] = (r = v.error) === null || r === void 0 ? void 0 : r.bind(v), e[o + 2] = (i = v.complete) === null || i === void 0 ? void 0 : i.bind(v) } let u, h, p; if (t instanceof It) h = Ht(t.firestore, or), p = Sc(t._key.path), u = { next: v => { e[o] && e[o](mE(h, t, v)) }, error: e[o + 1], complete: e[o + 2] }; else { const v = Ht(t, jc); h = Ht(v.firestore, or), p = v._query; const m = new pE(h); u = { next: C => { e[o] && e[o](new J2(h, m, v, C)) }, error: e[o + 1], complete: e[o + 2] }, Y2(t._query) } return function (m, C, R, L) { const V = new eE(L), S = new Hw(C, V, R); return m.asyncQueue.enqueueAndForget(async () => $w(await of(m), S)), () => { V.Za(), m.asyncQueue.enqueueAndForget(async () => Ww(await of(m), S)) } }(Vc(h), p, l, u) } function Ka(t, e) { return function (r, i) { const s = new Hr; return r.asyncQueue.enqueueAndForget(async () => N2(await F2(r), i, s)), s.promise }(Vc(t), e) } function mE(t, e, n) { const r = n.docs.get(e._key), i = new pE(t); return new fE(t, i, e._key, r, new Bo(n.hasPendingWrites, n.fromCache), e.converter) }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/class tN { constructor(e, n) { this._firestore = e, this._commitHandler = n, this._mutations = [], this._committed = !1, this._dataReader = Oc(e) } set(e, n, r) { this._verifyNotCommitted(); const i = Bd(e, this._firestore), s = Wp(i.converter, n, r), o = zp(this._dataReader, "WriteBatch.set", i._key, s, i.converter !== null, r); return this._mutations.push(o.toMutation(i._key, St.none())), this } update(e, n, r, ...i) { this._verifyNotCommitted(); const s = Bd(e, this._firestore); let o; return o = typeof (n = qe(n)) == "string" || n instanceof qa ? aE(this._dataReader, "WriteBatch.update", s._key, n, r, i) : oE(this._dataReader, "WriteBatch.update", s._key, n), this._mutations.push(o.toMutation(s._key, St.exists(!0))), this } delete(e) { this._verifyNotCommitted(); const n = Bd(e, this._firestore); return this._mutations = this._mutations.concat(new Pc(n._key, St.none())), this } commit() { return this._verifyNotCommitted(), this._committed = !0, this._mutations.length > 0 ? this._commitHandler(this._mutations) : Promise.resolve() } _verifyNotCommitted() { if (this._committed) throw new J(F.FAILED_PRECONDITION, "A write batch can no longer be used after commit() has been called.") } } function Bd(t, e) { if ((t = qe(t)).firestore !== e) throw new J(F.INVALID_ARGUMENT, "Provided document reference is from a different Firestore instance."); return t }/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/function ql(t) { return Vc(t = Ht(t, or)), new tN(t, e => Ka(t, e)) } (function (e, n = !0) { (function (i) { Xs = i })(Qs), Os(new Di("firestore", (r, { instanceIdentifier: i, options: s }) => { const o = r.getProvider("app").getImmediate(), l = new or(new aA(r.getProvider("auth-internal")), new dA(r.getProvider("app-check-internal")), function (h, p) { if (!Object.prototype.hasOwnProperty.apply(h.options, ["projectId"])) throw new J(F.INVALID_ARGUMENT, '"projectId" not provided in firebase.initializeApp.'); return new Sa(h.options.projectId, p) }(o, i), o); return s = Object.assign({ useFetchStreams: n }, s), l._setSettings(s), l }, "PUBLIC").setMultipleInstances(!0)), Wr(oy, "4.7.3", e), Wr(oy, "4.7.3", "esm2017") })(); var nN = "firebase", rN = "10.14.1";/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/Wr(nN, rN, "app"); const iN = { apiKey: "AIzaSyBBitFgNKnJ_3B0aqJgbbhGL_erufKd9lk", authDomain: "mycloset1-864c4.firebaseapp.com", projectId: "mycloset1-864c4", storageBucket: "mycloset1-864c4.firebasestorage.app", messagingSenderId: "219982610263", appId: "1:219982610263:web:0ebe67d9cf0e7d2753c812" }, gE = c_(iN), Kl = rA(gE), ve = $2(gE), Te = "my-closet-app", Qe = ({ children: t, className: e = "", darkMode: n, ...r }) => d.jsx("div", { className: `rounded-[2rem] border transition-all duration-300 ${n ? "bg-gray-800/40 border-gray-700/50 backdrop-blur-md" : "bg-white/80 border-gray-200/50 backdrop-blur-md shadow-sm"} ${e}`, ...r, children: t }), Gl = ({ children: t, variant: e = "default" }) => { const n = { default: "bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300", success: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300", danger: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300", warning: "bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300" }; return d.jsx("span", { className: `px-3 py-1 rounded-full text-[10px] font-black uppercase tracking-widest whitespace-nowrap ${n[e]}`, children: t }) }, Ro = ({ label: t, type: e = "text", value: n, onChange: r, placeholder: i, required: s = !1, name: o, minLength: l, defaultValue: u }) => { const h = n !== void 0; return d.jsxs("div", { className: "flex flex-col gap-1 w-full", children: [t && d.jsx("label", { className: "text-sm font-black uppercase tracking-widest opacity-40 ml-1", children: t }), d.jsx("input", { type: e, name: o, ...h ? { value: n } : { defaultValue: u }, onChange: p => r ? r(p.target.value) : null, placeholder: i, required: s, minLength: l, className: "w-full p-5 rounded-2xl border-none outline-none focus:ring-4 focus:ring-indigo-500/10 font-bold bg-gray-100 dark:bg-gray-700 text-inherit transition-all" })] }) }, $y = { PT: { loginModeIntro: "O Futuro do Teu Estilo", emailPlaceholder: "E-mail", passwordPlaceholder: "Palavra-passe", loginBtn: "ENTRAR", registerBtn: "REGISTAR", createAccount: "Criar Nova Conta", haveAccount: "Já Tenho Conta", authErrorDisabled: "O login por e-mail está desativado.", dashboard: "Dashboard", closet: "Armário", laundry: "Lavandaria", outfits: "Looks", settings: "Definições", online: "Online", logout: "Sair do Sistema", overview: "Visão Geral", myCloset: "O Meu Armário", outfitsAndStyle: "Looks & Estilo", readyClothes: "Roupas Prontas", inLaundry: "Na Lavandaria", myLooks: "Meus Looks", favorites: "Favoritos", todayIn: "Hoje em Portugal", weatherUpdate: "22°C - Ensolarado", weatherMsg: "Está um dia fantástico! Recomendamos as tuas peças leves. Que tal um visual casual com as tuas sapatilhas favoritas?", exploreSuggestions: "Explorar Sugestões", topColors: "Top Cores", searchPlaceholder: "Procurar no meu guarda-roupa...", all: "Todos", tops: "Tops", bottoms: "Bottoms", footwear: "Calçado", coats: "Casacos", accessories: "Acessórios", edit: "Editar", makeDirty: "Lavar", moveToTrash: "Mover para Lixo", laundryBasket: "Cesto da Roupa", lookSentToLaundry: "Peças enviadas para a lavandaria!", laundryMsg: "Aqui encontras as peças que marcaste como sujas. Lava-as para que voltem ao armário principal.", washing: "A lavar", emptyBasket: "Cesto Vazio", createNewLook: "Criar Novo Look", lookName: "Nome do Look", selectedPieces: "Peças Selecionadas", selectPieces: "Seleciona peças...", saveLook: "Guardar Look", closetLabel: "Armário", lookHistory: "Histórico de Looks", pieces: "Peças", newItem: "Novo Item", preview: "Preview", name: "Nome", category: "Categoria", color: "Cor", imageUrl: "URL da Imagem", cancel: "Cancelar", save: "Guardar", register: "Registar", yourAccount: "A Tua Conta", papMode: "Modo PAP", preferences: "Preferências", darkMode: "Modo Escuro", interfaceAppearance: "Aparência da interface", notifications: "Notificações", lookReminders: "Lembretes de looks", weatherAlerts: "Alertas de Clima", weatherSuggestions: "Sugestões pelo tempo", systemAndData: "Sistema e Dados", appLanguage: "Idioma da Aplicação", portuguese: "Português (PT)", english: "English (EN)", spanish: "Español (ES)", french: "Français (FR)", german: "Deutsch (DE)", exportData: "Exportar Dados (JSON)", exportDataAlert: "Os teus dados seriam exportados agora em formato JSON.", privacyPolicy: "Política de Privacidade", recycleBin: "Reciclagem", empty: "Esvaziar", deleted: "Eliminado", criticalZone: "Zona Crítica", fullCleanActions: "Ações de limpeza total do armário.", clearAll: "Limpar Tudo", confirmDeletePerm: "Apagar permanentemente?", confirmDeleteLook: "Apagar este Look?", confirmEmptyTrash: "Esvaziar o lixo permanentemente?", confirmClearAll: "Mover todas as peças ativas para o lixo?", colorBlack: "Preto", colorWhite: "Branco", colorBlue: "Azul", colorRed: "Vermelho", colorGreen: "Verde", colorYellow: "Amarelo", colorPink: "Rosa", colorPurple: "Roxo", colorOrange: "Laranja", colorBrown: "Marrom", colorBeige: "Bege", colorGray: "Cinza", userTitle: "Utilizador", themeColor: "Cor do Tema", personalizeColor: "Personalizar a cor", advancedFilters: "Filtros Avançados", filterByColor: "Cor", filterByAge: "Idade da Peça", anyAge: "Qualquer Idade", lessThanMonth: "Menos de 1 Mês", lessThan6Months: "Menos de 6 Meses", lessThanYear: "Menos de 1 Ano", older: "Mais antigo", applyFilters: "Aplicar Filtros", profileInfo: "Informações da Conta", username: "Nome de Utilizador", fullName: "Nome Completo", dob: "Data de Nascimento", bio: "Bio / Sobre mim", optional: "(Opcional)", saving: "A guardar...", sections: "Secções", manageSections: "Gerir Secções", newSection: "Nova Secção", sectionName: "Nome da Secção", sectionEmoji: "Emoji", noSections: "Nenhuma secção criada ainda.", addSection: "Adicionar Secção", deleteSection: "Apagar", assignSections: "Atribuir a Secções", allSections: "Todas", confirmDeleteSection: "Apagar esta secção?", sectionPlaceholder: "Ex: Trabalho, Festa...", emojiPlaceholder: "Ex: 💼", createSection: "Criar Secção", noSectionsCreated: "Ainda não tem secções criadas", linkCopied: "Link copiado!", share: "Partilhar", piecesInLaundry: "peça(s) na lavandaria", toBeWashed: "A ser lavados", unavailable: "Indisponíveis", availableLooks: "Disponíveis", noLooksAvailable: "Nenhum look disponível", location: "Localidade", locationEx: "Ex: Lisboa, Portugal", ideaSuggestion: "Ideia / Sugestão", bugError: "Bug / Erro", writeMessage: "Escreva aqui a sua mensagem...", sendMessage: "Enviar Mensagem", notificationsModal: "Notificações", noNotifications: "Sem Notificações", userSavedLook: "guardou o seu look", inTheirCloset: "no armário dele!", sharedLookTitle: "Look Partilhado", sharedBy: "Partilhado por", includedPieces: "Peças incluídas", ignore: "Ignorar", copying: "A copiar...", copyToMyCloset: "Copiar para o meu armário", msgSentSuccess: "Mensagem enviada com sucesso!", msgSendError: "Erro ao enviar mensagem. Verifica a tua ligação.", addFuturePurchase: "Adicionar peça como compra futura", wishlistDesc: "Lista de Desejos", someone: "alguém", feedbackTitle: "Suporte e Feedback", feedbackDesc: "Tem alguma ideia, sugestão ou encontrou algum problema? Envie uma mensagem diretamente para nós!", themeColorTitle: "Cor do Tema", personalizeColorDesc: "Personalize a cor", saveChanges: "Guardar Alterações", pasteLink: "Colar Link", pasteSharedLookLink: "Cole o link do look partilhado:", invalidSharedLink: "Link inválido. Certifique-se de copiar o link completo." }, EN: { loginModeIntro: "The Future of Your Style", emailPlaceholder: "Email", passwordPlaceholder: "Password", loginBtn: "LOGIN", registerBtn: "REGISTER", createAccount: "Create New Account", haveAccount: "I Already Have an Account", authErrorDisabled: "Email login is disabled.", dashboard: "Dashboard", closet: "Closet", laundry: "Laundry", outfits: "Outfits", settings: "Settings", online: "Online", logout: "Logout", overview: "Overview", myCloset: "My Closet", outfitsAndStyle: "Outfits & Style", readyClothes: "Ready Clothes", inLaundry: "In Laundry", myLooks: "My Looks", favorites: "Favorites", todayIn: "Today in Portugal", weatherUpdate: "22°C - Sunny", weatherMsg: "It's a fantastic day! We recommend your light pieces. How about a casual look with your favorite sneakers?", exploreSuggestions: "Explore Suggestions", topColors: "Top Colors", searchPlaceholder: "Search my wardrobe...", all: "All", tops: "Tops", bottoms: "Bottoms", footwear: "Footwear", coats: "Coats", accessories: "Accessories", edit: "Edit", makeDirty: "Make Dirty", moveToTrash: "Move to Trash", laundryBasket: "Laundry Basket", lookSentToLaundry: "Pieces sent to the laundry!", laundryMsg: "Here you find the pieces you marked as dirty. Wash them to return them to the main closet.", washing: "Washing", emptyBasket: "Empty Basket", createNewLook: "Create New Look", lookName: "Look Name", selectedPieces: "Selected Pieces", selectPieces: "Select pieces...", saveLook: "Save Look", closetLabel: "Closet", lookHistory: "Look History", pieces: "Pieces", newItem: "New Item", preview: "Preview", name: "Name", category: "Category", color: "Color", imageUrl: "Image URL", cancel: "Cancel", save: "Save", register: "Register", yourAccount: "Your Account", papMode: "PAP Mode", preferences: "Preferences", darkMode: "Dark Mode", interfaceAppearance: "Interface Appearance", notifications: "Notifications", lookReminders: "Look reminders", weatherAlerts: "Weather Alerts", weatherSuggestions: "Weather-based suggestions", systemAndData: "System and Data", appLanguage: "App Language", portuguese: "Português (PT)", english: "English (EN)", spanish: "Español (ES)", french: "Français (FR)", german: "Deutsch (DE)", exportData: "Export Data (JSON)", exportDataAlert: "Your data would be exported now in JSON format.", privacyPolicy: "Privacy Policy", recycleBin: "Recycle Bin", empty: "Empty", deleted: "Deleted", criticalZone: "Critical Zone", fullCleanActions: "Full closet wipe actions.", clearAll: "Clear All", confirmDeletePerm: "Delete permanently?", confirmDeleteLook: "Delete this Look?", confirmEmptyTrash: "Empty trash permanently?", confirmClearAll: "Move all active pieces to trash?", colorBlack: "Black", colorWhite: "White", colorBlue: "Blue", colorRed: "Red", colorGreen: "Green", colorYellow: "Yellow", colorPink: "Pink", colorPurple: "Purple", colorOrange: "Orange", colorBrown: "Brown", colorBeige: "Beige", colorGray: "Gray", userTitle: "User", themeColor: "Theme Color", personalizeColor: "Personalize the color", advancedFilters: "Advanced Filters", filterByColor: "Color", filterByAge: "Item Age", anyAge: "Any Age", lessThanMonth: "Less than 1 Month", lessThan6Months: "Less than 6 Months", lessThanYear: "Less than 1 Year", older: "Older", applyFilters: "Apply Filters", profileInfo: "Account Information", username: "Username", fullName: "Full Name", dob: "Date of Birth", bio: "Bio / About me", optional: "(Optional)", saving: "Saving...", sections: "Sections", manageSections: "Manage Sections", newSection: "New Section", sectionName: "Section Name", sectionEmoji: "Emoji", noSections: "No sections created yet.", addSection: "Add Section", deleteSection: "Delete", assignSections: "Assign to Sections", allSections: "All", confirmDeleteSection: "Delete this section?", sectionPlaceholder: "E.g.: Work, Party...", emojiPlaceholder: "E.g.: 💼", createSection: "Create Section", noSectionsCreated: "No sections created yet", linkCopied: "Link copied!", share: "Share", piecesInLaundry: "piece(s) in laundry", toBeWashed: "To be washed", unavailable: "Unavailable", availableLooks: "Available", noLooksAvailable: "No look available", location: "Location", locationEx: "E.g.: Lisbon, Portugal", ideaSuggestion: "Idea / Suggestion", bugError: "Bug / Error", writeMessage: "Write your message here...", sendMessage: "Send Message", notificationsModal: "Notifications", noNotifications: "No Notifications", userSavedLook: "saved your look", inTheirCloset: "in their closet!", sharedLookTitle: "Shared Look", sharedBy: "Shared by", includedPieces: "Included Pieces", ignore: "Ignore", copying: "Copying...", copyToMyCloset: "Copy to my closet", msgSentSuccess: "Message sent successfully!", msgSendError: "Error sending message. Check your connection.", addFuturePurchase: "Add piece as future purchase", wishlistDesc: "Wishlist", someone: "someone", feedbackTitle: "Support and Feedback", feedbackDesc: "Do you have any ideas, suggestions, or found a problem? Send a message directly to us!", themeColorTitle: "Theme Color", personalizeColorDesc: "Personalize the color", saveChanges: "Save Changes", pasteLink: "Paste Link", pasteSharedLookLink: "Paste the shared look link:", invalidSharedLink: "Invalid link. Make sure you copied the full link." }, ES: { loginModeIntro: "El Futuro de Tu Estilo", emailPlaceholder: "Correo electrónico", passwordPlaceholder: "Contraseña", loginBtn: "ENTRAR", registerBtn: "REGISTRAR", createAccount: "Crear Nueva Cuenta", haveAccount: "Ya Tengo Cuenta", authErrorDisabled: "El inicio de sesión por correo electrónico está desactivado.", dashboard: "Panel", closet: "Armario", laundry: "Lavandería", outfits: "Looks", settings: "Ajustes", online: "En línea", logout: "Cerrar Sesión", overview: "Visión General", myCloset: "Mi Armario", outfitsAndStyle: "Looks y Estilo", readyClothes: "Ropa Lista", inLaundry: "En la Lavandería", myLooks: "Mis Looks", favorites: "Favoritos", todayIn: "Hoy en Portugal", weatherUpdate: "22°C - Soleado", weatherMsg: "¡Es un día fantástico! Recomendamos tus piezas ligeras. ¿Qué tal un look casual con tus zapatillas favoritas?", exploreSuggestions: "Explorar Sugerencias", topColors: "Colores Principales", searchPlaceholder: "Buscar en mi guardarropa...", all: "Todos", tops: "Tops", bottoms: "Partes Inferiores", footwear: "Calzado", coats: "Abrigos", accessories: "Accesorios", edit: "Editar", makeDirty: "Ensuciar", moveToTrash: "Mover a la Papelera", laundryBasket: "Cesto de Ropa", lookSentToLaundry: "¡Piezas enviadas a la lavandería!", laundryMsg: "Aquí encuentras las piezas que marcaste como sucias. Lávalas para que vuelvan al armario principal.", washing: "Lavando", emptyBasket: "Cesto Vacío", createNewLook: "Crear Nuevo Look", lookName: "Nombre del Look", selectedPieces: "Piezas Seleccionadas", selectPieces: "Elige piezas...", saveLook: "Guardar Look", closetLabel: "Armario", lookHistory: "Historial de Looks", pieces: "Piezas", newItem: "Nuevo Artículo", preview: "Vista Previa", name: "Nombre", category: "Categoría", color: "Color", imageUrl: "URL de la Imagen", cancel: "Cancelar", save: "Guardar", register: "Registrar", yourAccount: "Tu Cuenta", papMode: "Modo PAP", preferences: "Preferencias", darkMode: "Modo Oscuro", interfaceAppearance: "Apariencia de la interfaz", notifications: "Notificaciones", lookReminders: "Recordatorios de looks", weatherAlerts: "Alertas del Clima", weatherSuggestions: "Sugerencias por clima", systemAndData: "Sistema y Datos", appLanguage: "Idioma de la Aplicación", portuguese: "Português (PT)", english: "English (EN)", spanish: "Español (ES)", french: "Français (FR)", german: "Deutsch (DE)", exportData: "Exportar Datos (JSON)", exportDataAlert: "Tus datos se exportarían ahora en formato JSON.", privacyPolicy: "Política de Privacidad", recycleBin: "Papelera de Reciclaje", empty: "Vaciar", deleted: "Eliminado", criticalZone: "Zona Crítica", fullCleanActions: "Acciones de limpieza total.", clearAll: "Limpiar Todo", confirmDeletePerm: "¿Borrar permanentemente?", confirmDeleteLook: "¿Borrar este Look?", confirmEmptyTrash: "¿Vaciar la papelera permanentemente?", confirmClearAll: "¿Mover todas las piezas activas a la papelera?", colorBlack: "Negro", colorWhite: "Blanco", colorBlue: "Azul", colorRed: "Rojo", colorGreen: "Verde", colorYellow: "Amarillo", colorPink: "Rosa", colorPurple: "Morado", colorOrange: "Naranja", colorBrown: "Marrón", colorBeige: "Beige", colorGray: "Gris", userTitle: "Usuario", themeColor: "Color del Tema", personalizeColor: "Personaliza el color", advancedFilters: "Filtros Avanzados", filterByColor: "Color", filterByAge: "Edad de la Prenda", anyAge: "Cualquier Edad", lessThanMonth: "Menos de 1 Mes", lessThan6Months: "Menos de 6 Meses", lessThanYear: "Menos de 1 Año", older: "Más Antiguo", applyFilters: "Aplicar Filtros", profileInfo: "Información de la Cuenta", username: "Nombre de Usuario", fullName: "Nombre Completo", dob: "Fecha de Nacimiento", bio: "Bio / Sobre mí", optional: "(Opcional)", saving: "Guardando...", sections: "Secciones", manageSections: "Gestionar Secciones", newSection: "Nueva Sección", sectionName: "Nombre de la Sección", sectionEmoji: "Emoji", noSections: "Aún no hay secciones creadas.", addSection: "Añadir Sección", deleteSection: "Eliminar", assignSections: "Asignar a Secciones", allSections: "Todas", confirmDeleteSection: "¿Eliminar esta sección?", sectionPlaceholder: "Ej: Trabajo, Fiesta...", emojiPlaceholder: "Ej: 💼", createSection: "Crear Sección", noSectionsCreated: "Aún no hay secciones creadas", linkCopied: "¡Enlace copiado!", share: "Compartir", piecesInLaundry: "pieza(s) en la lavandería", toBeWashed: "Por lavar", unavailable: "No disponibles", availableLooks: "Disponibles", noLooksAvailable: "Ningún look disponible", location: "Ubicación", locationEx: "Ej: Lisboa, Portugal", ideaSuggestion: "Idea / Sugerencia", bugError: "Error / Fallo", writeMessage: "Escribe aquí tu mensaje...", sendMessage: "Enviar Mensaje", notificationsModal: "Notificaciones", noNotifications: "Sin Notificaciones", userSavedLook: "guardó tu look", inTheirCloset: "en su armario!", sharedLookTitle: "Look Compartido", sharedBy: "Compartido por", includedPieces: "Piezas incluidas", ignore: "Ignorar", copying: "Copiando...", copyToMyCloset: "Copiar a mi armario", msgSentSuccess: "¡Mensaje enviado con éxito!", msgSendError: "Error al enviar. Revisa tu conexión.", addFuturePurchase: "Añadir pieza como compra futura", wishlistDesc: "Lista de Deseos", someone: "alguien", feedbackTitle: "Soporte y Comentarios", feedbackDesc: "¿Tienes alguna idea, sugerencia o encontraste un problema? ¡Envíanos un mensaje directamente!", themeColorTitle: "Color del Tema", personalizeColorDesc: "Personaliza el color", saveChanges: "Guardar Cambios", pasteLink: "Pegar Enlace", pasteSharedLookLink: "Pega el enlace del look compartido:", invalidSharedLink: "Enlace no válido. Asegúrate de copiar el enlace completo." }, FR: { loginModeIntro: "Le Futur de Ton Style", emailPlaceholder: "E-mail", passwordPlaceholder: "Mot de passe", loginBtn: "CONNEXION", registerBtn: "S'INSCRIRE", createAccount: "Créer un Nouveau Compte", haveAccount: "J'ai Déjà un Compte", authErrorDisabled: "La connexion par e-mail est désactivée.", dashboard: "Tableau de bord", closet: "Placard", laundry: "Blanchisserie", outfits: "Tenues", settings: "Paramètres", online: "En ligne", logout: "Déconnexion", overview: "Vue d'ensemble", myCloset: "Mon Placard", outfitsAndStyle: "Tenues & Style", readyClothes: "Vêtements Prêts", inLaundry: "À la Blanchisserie", myLooks: "Mes Looks", favorites: "Favoris", todayIn: "Aujourd'hui au Portugal", weatherUpdate: "22°C - Ensoleillé", weatherMsg: "C'est une journée fantastique ! Nous recommandons vos pièces légères. Que diriez-vous d'un look décontracté avec vos baskets préférées ?", exploreSuggestions: "Explorer les Suggestions", topColors: "Couleurs Principales", searchPlaceholder: "Chercher dans ma garde-robe...", all: "Tout", tops: "Hauts", bottoms: "Bas", footwear: "Chaussures", coats: "Manteaux", accessories: "Accessoires", edit: "Modifier", makeDirty: "Salir", moveToTrash: "Mettre à la corbeille", laundryBasket: "Panier à linge", lookSentToLaundry: "Pièces envoyées à la blanchisserie !", laundryMsg: "Ici vous trouvez les pièces que vous avez marquées comme sales. Lavez-les pour les remettre dans le placard principal.", washing: "En lavage", emptyBasket: "Panier Vide", createNewLook: "Créer un Nouveau Look", lookName: "Nom du Look", selectedPieces: "Pièces Sélectionnées", selectPieces: "Sélectionnez des pièces...", saveLook: "Enregistrer le Look", closetLabel: "Placard", lookHistory: "Historique des Looks", pieces: "Pièces", newItem: "Nouvel Article", preview: "Aperçu", name: "Nom", category: "Catégorie", color: "Couleur", imageUrl: "URL de l'image", cancel: "Annuler", save: "Enregistrer", register: "S'inscrire", yourAccount: "Votre Compte", papMode: "Mode PAP", preferences: "Préférences", darkMode: "Mode Sombre", interfaceAppearance: "Apparence de l'interface", notifications: "Notifications", lookReminders: "Rappels de looks", weatherAlerts: "Alertes Météo", weatherSuggestions: "Suggestions selon la météo", systemAndData: "Système et Données", appLanguage: "Langue de l'application", portuguese: "Português (PT)", english: "English (EN)", spanish: "Español (ES)", french: "Français (FR)", german: "Deutsch (DE)", exportData: "Exporter les Données (JSON)", exportDataAlert: "Vos données seraient exportées maintenant au format JSON.", privacyPolicy: "Politique de Confidentialité", recycleBin: "Corbeille", empty: "Vider", deleted: "Supprimé", criticalZone: "Zone Critique", fullCleanActions: "Actions de nettoyage total.", clearAll: "Tout Effacer", confirmDeletePerm: "Supprimer définitivement ?", confirmDeleteLook: "Supprimer ce Look ?", confirmEmptyTrash: "Vider la corbeille définitivement ?", confirmClearAll: "Déplacer toutes les pièces actives vers la corbeille ?", colorBlack: "Noir", colorWhite: "Blanc", colorBlue: "Bleu", colorRed: "Rouge", colorGreen: "Vert", colorYellow: "Jaune", colorPink: "Rose", colorPurple: "Violet", colorOrange: "Orange", colorBrown: "Marron", colorBeige: "Beige", colorGray: "Gris", userTitle: "Utilisateur", themeColor: "Couleur du Thème", personalizeColor: "Personnaliser la couleur", advancedFilters: "Filtres Avancés", filterByColor: "Couleur", filterByAge: "Âge de l'article", anyAge: "Tout âge", lessThanMonth: "Moins d'un mois", lessThan6Months: "Moins de 6 mois", lessThanYear: "Moins d'un an", older: "Plus ancien", applyFilters: "Appliquer les filtres", profileInfo: "Informations du Compte", username: "Nom d'utilisateur", fullName: "Nom Complet", dob: "Date de Naissance", bio: "Bio / À propos", optional: "(Optionnel)", saving: "Enregistrement...", sections: "Sections", manageSections: "Gérer les Sections", newSection: "Nouvelle Section", sectionName: "Nom de la Section", sectionEmoji: "Emoji", noSections: "Aucune section créée pour l'instant.", addSection: "Ajouter une Section", deleteSection: "Supprimer", assignSections: "Attribuer aux Sections", allSections: "Toutes", confirmDeleteSection: "Supprimer cette section ?", sectionPlaceholder: "Ex: Travail, Fête...", emojiPlaceholder: "Ex: 💼", createSection: "Créer une Section", noSectionsCreated: "Aucune section créée", linkCopied: "Lien copié !", share: "Partager", piecesInLaundry: "pièce(s) à la blanchisserie", toBeWashed: "À laver", unavailable: "Indisponibles", availableLooks: "Disponibles", noLooksAvailable: "Aucun look disponible", location: "Emplacement", locationEx: "Ex: Lisbonne, Portugal", ideaSuggestion: "Idée / Suggestion", bugError: "Bug / Erreur", writeMessage: "Écrivez votre message ici...", sendMessage: "Envoyer le Message", notificationsModal: "Notifications", noNotifications: "Aucune Notification", userSavedLook: "a sauvegardé votre look", inTheirCloset: "dans son placard !", sharedLookTitle: "Look Partagé", sharedBy: "Partagé par", includedPieces: "Pièces incluses", ignore: "Ignorer", copying: "Copie en cours...", copyToMyCloset: "Copier dans mon placard", msgSentSuccess: "Message envoyé avec succès !", msgSendError: "Erreur d'envoi. Vérifiez votre connexion.", addFuturePurchase: "Ajouter comme achat futur", wishlistDesc: "Liste de Souhaits", someone: "quelqu'un", feedbackTitle: "Support et Commentaires", feedbackDesc: "Avez-vous des idées, des suggestions ou trouvé un problème ? Envoyez-nous un message directement !", themeColorTitle: "Couleur du Thème", personalizeColorDesc: "Personnaliser la couleur", saveChanges: "Enregistrer les Modifications", pasteLink: "Coller le Lien", pasteSharedLookLink: "Collez le lien du look partagé :", invalidSharedLink: "Lien invalide. Assurez-vous d'avoir copié le lien complet." }, DE: { loginModeIntro: "Die Zukunft deines Stils", emailPlaceholder: "E-Mail", passwordPlaceholder: "Passwort", loginBtn: "ANMELDEN", registerBtn: "REGISTRIEREN", createAccount: "Neues Konto erstellen", haveAccount: "Ich habe bereits ein Konto", authErrorDisabled: "E-Mail-Anmeldung ist deaktiviert.", dashboard: "Dashboard", closet: "Schrank", laundry: "Wäsche", outfits: "Outfits", settings: "Einstellungen", online: "Online", logout: "Abmelden", overview: "Übersicht", myCloset: "Mein Schrank", outfitsAndStyle: "Outfits & Stil", readyClothes: "Fertige Kleidung", inLaundry: "In der Wäsche", myLooks: "Meine Looks", favorites: "Favoriten", todayIn: "Heute in Portugal", weatherUpdate: "22°C - Sonnig", weatherMsg: "Es ist ein fantastischer Tag! Wir empfehlen leichte Stücke. Wie wäre es mit einem lässigen Look mit deinen Lieblings-Sneakern?", exploreSuggestions: "Vorschläge entdecken", topColors: "Top Farben", searchPlaceholder: "In meiner Garderobe suchen...", all: "Alle", tops: "Oberteile", bottoms: "Unterteile", footwear: "Schuhe", coats: "Mäntel", accessories: "Accessoires", edit: "Bearbeiten", makeDirty: "Schmutzig machen", moveToTrash: "In den Papierkorb verschieben", laundryBasket: "Wäschekorb", lookSentToLaundry: "Stücke in die Wäsche geschickt!", laundryMsg: "Hier findest du die Stücke, die du als schmutzig markiert hast. Wasche sie, um sie in den Hauptschrank zurückzulegen.", washing: "Waschen", emptyBasket: "Leerer Korb", createNewLook: "Neuen Look erstellen", lookName: "Look Name", selectedPieces: "Ausgewählte Stücke", selectPieces: "Stücke auswählen...", saveLook: "Look speichern", closetLabel: "Schrank", lookHistory: "Look-Verlauf", pieces: "Stücke", newItem: "Neuer Artikel", preview: "Vorschau", name: "Name", category: "Kategorie", color: "Farbe", imageUrl: "Bild-URL", cancel: "Abbrechen", save: "Speichern", register: "Registrieren", yourAccount: "Dein Konto", papMode: "PAP-Modus", preferences: "Präferenzen", darkMode: "Dunkelmodus", interfaceAppearance: "Erscheinungsbild der Schnittstelle", notifications: "Benachrichtigungen", lookReminders: "Look-Erinnerungen", weatherAlerts: "Wetterwarnungen", weatherSuggestions: "Wetterbasierte Vorschläge", systemAndData: "System und Daten", appLanguage: "App-Sprache", portuguese: "Português (PT)", english: "English (EN)", spanish: "Español (ES)", french: "Français (FR)", german: "Deutsch (DE)", exportData: "Daten exportieren (JSON)", exportDataAlert: "Deine Daten würden jetzt im JSON-Format exportiert werden.", privacyPolicy: "Datenschutzrichtlinie", recycleBin: "Papierkorb", empty: "Leeren", deleted: "Gelöscht", criticalZone: "Kritische Zone", fullCleanActions: "Aktionen zur vollständigen Bereinigung.", clearAll: "Alles löschen", confirmDeletePerm: "Dauerhaft löschen?", confirmDeleteLook: "Diesen Look löschen?", confirmEmptyTrash: "Papierkorb dauerhaft leeren?", confirmClearAll: "Alle aktiven Stücke in den Papierkorb verschieben?", colorBlack: "Schwarz", colorWhite: "Weiß", colorBlue: "Blau", colorRed: "Rot", colorGreen: "Grün", colorYellow: "Gelb", colorPink: "Rosa", colorPurple: "Lila", colorOrange: "Orange", colorBrown: "Braun", colorBeige: "Beige", colorGray: "Grau", userTitle: "Benutzer", themeColor: "Themenfarbe", personalizeColor: "Farbe anpassen", advancedFilters: "Erweiterte Filter", filterByColor: "Farbe", filterByAge: "Artikelalter", anyAge: "Jedes Alter", lessThanMonth: "Weniger als 1 Monat", lessThan6Months: "Weniger als 6 Monate", lessThanYear: "Weniger als 1 Jahr", older: "Älter", applyFilters: "Filter anwenden", profileInfo: "Kontoinformationen", username: "Benutzername", fullName: "Vollständiger Name", dob: "Geburtsdatum", bio: "Biografie / Über mich", optional: "(Optional)", saving: "Speichern...", sections: "Bereiche", manageSections: "Bereiche verwalten", newSection: "Neuer Bereich", sectionName: "Bereichsname", sectionEmoji: "Emoji", noSections: "Noch keine Bereiche erstellt.", addSection: "Bereich hinzufügen", deleteSection: "Löschen", assignSections: "Bereichen zuweisen", allSections: "Alle", confirmDeleteSection: "Diesen Bereich löschen?", sectionPlaceholder: "Zb: Arbeit, Party...", emojiPlaceholder: "Zb: 💼", createSection: "Bereich erstellen", noSectionsCreated: "Noch keine Bereiche erstellt", linkCopied: "Link kopiert!", share: "Teilen", piecesInLaundry: "Stück(e) in der Wäsche", toBeWashed: "Zum Waschen", unavailable: "Nicht verfügbar", availableLooks: "Verfügbar", noLooksAvailable: "Kein Look verfügbar", location: "Ort", locationEx: "Z.B.: Lissabon, Portugal", ideaSuggestion: "Idee / Vorschlag", bugError: "Fehler / Bug", writeMessage: "Schreibe hier deine Nachricht...", sendMessage: "Nachricht Senden", notificationsModal: "Benachrichtigungen", noNotifications: "Keine Benachrichtigungen", userSavedLook: "hat deinen Look gespeichert", inTheirCloset: "in seinem Schrank!", sharedLookTitle: "Geteilter Look", sharedBy: "Geteilt von", includedPieces: "Enthaltene Stücke", ignore: "Ignorieren", copying: "Kopieren...", copyToMyCloset: "In meinen Schrank kopieren", msgSentSuccess: "Nachricht erfolgreich gesendet!", msgSendError: "Fehler beim Senden. Überprüfe deine Verbindung.", addFuturePurchase: "Als zukünftigen Kauf hinzufügen", wishlistDesc: "Wunschzettel", someone: "jemand", feedbackTitle: "Support und Feedback", feedbackDesc: "Hast du Ideen, Vorschläge oder ein Problem gefunden? Sende uns direkt eine Nachricht!", themeColorTitle: "Themenfarbe", personalizeColorDesc: "Farbe anpassen", saveChanges: "Änderungen Speichern", pasteLink: "Link Einfügen", pasteSharedLookLink: "Fügen Sie den Link zum geteilten Look ein:", invalidSharedLink: "Ungültiger Link. Stellen Sie sicher, dass Sie den vollständigen Link kopiert haben." } }; function sN() {
|
|
var ul, Tn, en, fi, pi, po, ke, mi, yr, vr, cl, mo; const [t, e] = Y.useState("auth"), [n, r] = Y.useState(null), [i, s] = Y.useState(!0), [o, l] = Y.useState([]), [u, h] = Y.useState([]), [p, v] = Y.useState(null), [m, C] = Y.useState(!1), [R, L] = Y.useState(""), [V, S] = Y.useState(""), [E, I] = Y.useState([]), [j, K] = Y.useState(!0), [$, x] = Y.useState("login"), [_, w] = Y.useState(""), [k, A] = Y.useState("Todos"), [P, T] = Y.useState(""), [ze, ln] = Y.useState("any"), [ii, Nt] = Y.useState(!1), [W, ne] = Y.useState([]), [ee, xe] = Y.useState(null), [O, Ce] = Y.useState({}), [Qt, Yt] = Y.useState(!1), [Vt, Ot] = Y.useState(!0), [eo, to] = Y.useState(!0), [Ft, ur] = Y.useState("PT"), [no, cr] = Y.useState(!1), [Vn, dr] = Y.useState("theme-indigo"), [un, Ga] = Y.useState(null), Qa = Y.useRef(""), [it, hr] = Y.useState(null), [Ya, Wi] = Y.useState(!1), [Hi, qi] = Y.useState(!1), [Ki, Ke] = Y.useState(null), [Ne, si] = Y.useState([]), [Pt, Gi] = Y.useState("all"), [zc, Xt] = Y.useState(!1), [oi, ro] = Y.useState(""), [Qi, Xa] = Y.useState(""), [fr, ai] = Y.useState([]), [On, Yi] = Y.useState([]), [Fn, li] = Y.useState(null), [pr, cn] = Y.useState(""), [io, mr] = Y.useState(""), [Xi, ui] = Y.useState([]), [Ja, Ge] = Y.useState(!1), [so, Jt] = Y.useState(null), N = g => { var M; return ((M = $y[Ft]) == null ? void 0 : M[g]) || $y.PT[g] || g }, Bc = { Vermelho: "#ef4444", Azul: "#3b82f6", Amarelo: "#eab308", Verde: "#22c55e", Laranja: "#f97316", Roxo: "#a855f7", Branco: "#f8fafc", Preto: "#0f172a", Cinzento: "#6b7280", Bege: "#d4b896" }, $c = g => { if (!g) return { backgroundColor: "#e5e7eb" }; const U = g.split(",").map(Q => Q.trim()).filter(Boolean).map(Q => Bc[Q] || Q.toLowerCase()); return U.length === 1 ? { backgroundColor: U[0] } : { background: `linear-gradient(135deg, ${U.join(", ")})` } }, Zt = async (g, M) => { if (n) try { const U = Ye(ve, "artifacts", Te, "users", n.uid, "profile", "data"); await Hl(U, { settings: { [g]: M } }, { merge: !0 }) } catch (U) { console.error("Error saving setting:", U) } }, oo = g => { C(g), Zt("darkMode", g) }, Wc = g => { dr(g), Zt("theme", g) }, Ji = g => { ur(g), Zt("language", g), cr(!1) }, Za = g => { Ot(g), Zt("notificationsEnabled", g) }, ao = g => { to(g), Zt("weatherAlerts", g) }, ci = async g => { if (g) try { const M = Ye(ve, "artifacts", Te, "sharedLooks", g), U = await eN(M); U.exists() && (hr({ id: U.id, ...U.data() }), Wi(!0), window.history.replaceState({}, "", window.location.pathname)) } catch (M) { console.error("Erro ao buscar look partilhado:", M) } }, xn = () => { const g = window.prompt(N("pasteSharedLookLink") || "Cole o link do look partilhado:"); if (g) try { const U = new URL(g).searchParams.get("shared"); U ? ci(U) : alert(N("invalidSharedLink") || "Link inválido. Certifique-se de copiar o link completo.") } catch { alert(N("invalidSharedLink") || "Link inválido. Certifique-se de copiar o link completo.") } }; Y.useEffect(() => { p && p.color ? I(p.color.split(",").map(g => g.trim()).filter(Boolean)) : I([]), ai((p == null ? void 0 : p.sections) || []) }, [p]), Y.useEffect(() => { Yi((ee == null ? void 0 : ee.sections) || []) }, [ee]), Y.useEffect(() => { document.documentElement.classList.remove("theme-indigo", "theme-rose", "theme-emerald", "theme-amber", "theme-slate"); const g = t === "auth" ? "theme-indigo" : Vn; document.documentElement.classList.add(g), t !== "auth" && (n != null && n.uid) && localStorage.setItem(`app-theme-${n.uid}`, Vn) }, [Vn, t, n == null ? void 0 : n.uid]), Y.useEffect(() => { (async () => { })(); const M = HS(Kl, U => { if (!U) r(null), l([]), h([]), si([]), Ce({}), C(!1), dr("theme-indigo"), ur("PT"), Ot(!0), to(!0), Ga(null), e("auth"); else { const Q = localStorage.getItem(`app-theme-${U.uid}`) || "theme-indigo"; dr(Q), r(U), e("dashboard"); const q = Qa.current || new URLSearchParams(window.location.search).get("shared"); Qa.current = "", q && ci(q) } s(!1) }); return () => M() }, []), Y.useEffect(() => { if (!n) return; const g = pn(ve, "artifacts", Te, "users", n.uid, "clothes"), M = bo(g, Ie => { l(Ie.docs.map(pe => ({ id: pe.id, ...pe.data() }))) }, Ie => console.error(Ie)), U = pn(ve, "artifacts", Te, "users", n.uid, "looks"), Q = bo(U, Ie => { h(Ie.docs.map(pe => ({ id: pe.id, ...pe.data() }))) }, Ie => console.error(Ie)), q = pn(ve, "artifacts", Te, "users", n.uid, "sections"), te = bo(q, Ie => { si(Ie.docs.map(pe => ({ id: pe.id, ...pe.data() })).sort((pe, go) => pe.createdAt - go.createdAt)) }, Ie => console.error(Ie)), oe = Ye(ve, "artifacts", Te, "users", n.uid, "profile", "data"), Z = bo(oe, Ie => { if (Ie.exists()) { const pe = Ie.data(); Ce(pe), pe.settings && (pe.settings.language !== void 0 && ur(pe.settings.language), pe.settings.darkMode !== void 0 && C(pe.settings.darkMode), pe.settings.theme !== void 0 && dr(pe.settings.theme), pe.settings.notificationsEnabled !== void 0 && Ot(pe.settings.notificationsEnabled), pe.settings.weatherAlerts !== void 0 && to(pe.settings.weatherAlerts)) } else Ce({}) }, Ie => console.error(Ie)), ie = pn(ve, "artifacts", Te, "users", n.uid, "notifications"), Re = bo(ie, Ie => { ui(Ie.docs.map(pe => ({ id: pe.id, ...pe.data() })).sort((pe, go) => go.createdAt - pe.createdAt)) }, Ie => console.error(Ie)); return () => { M(), Q(), te(), Z(), Re() } }, [n]), Y.useEffect(() => { if (t !== "dashboard") return; (async () => { try { const M = (O == null ? void 0 : O.location) || "Lisboa, Portugal", Q = await (await fetch(`https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(M)}&count=1&language=pt&format=json`)).json(); if (Q.results && Q.results.length > 0) { const { latitude: q, longitude: te, name: oe, country: Z } = Q.results[0], Re = await (await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${q}&longitude=${te}¤t_weather=true&daily=temperature_2m_max,temperature_2m_min&timezone=auto`)).json(); Re.current_weather && Re.daily && Ga({ name: `${oe}, ${Z || ""}`.replace(/,\s*$/, ""), currentTemp: Math.round(Re.current_weather.temperature), minTemp: Math.round(Re.daily.temperature_2m_min[0]), maxTemp: Math.round(Re.daily.temperature_2m_max[0]), avgTemp: Math.round((Re.daily.temperature_2m_min[0] + Re.daily.temperature_2m_max[0]) / 2) }) } } catch (M) { console.error("Error fetching weather", M) } })() }, [O == null ? void 0 : O.location, t]); const dn = Y.useMemo(() => o.filter(g => g.status === "active"), [o]), Zi = Y.useMemo(() => o.filter(g => g.status === "laundry"), [o]), di = Y.useMemo(() => o.filter(g => g.status === "trash"), [o]), lo = Y.useMemo(() => o.filter(g => g.status === "wishlist"), [o]), el = Y.useMemo(() => o.filter(g => { const M = g.status !== "trash", U = Pt === "all" || g.sections && g.sections.includes(Pt); return M && U }), [o, Pt]), uo = async () => { if (!pr.trim() || !n || !Fn) return; const g = Ye(ve, "artifacts", Te, "users", n.uid, "sections", Fn); await Bn(g, { name: pr.trim(), emoji: io.trim() || "💼" }), li(null), cn(""), mr("") }, tl = async () => { if (!oi.trim() || !n) return; const g = pn(ve, "artifacts", Te, "users", n.uid, "sections"); await is(g, { name: oi.trim(), emoji: Qi.trim() || "💼", createdAt: new Date().getTime() }), ro(""), Xa("") }, es = async g => { if (!window.confirm(N("confirmDeleteSection"))) return; const M = Ye(ve, "artifacts", Te, "users", n.uid, "sections", g); await zd(M); const U = ql(ve); o.forEach(Q => { if (Q.sections && Q.sections.includes(g)) { const q = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", Q.id); U.update(q, { sections: Q.sections.filter(te => te !== g) }) } }), u.forEach(Q => { if (Q.sections && Q.sections.includes(g)) { const q = Ye(ve, "artifacts", Te, "users", n.uid, "looks", Q.id); U.update(q, { sections: Q.sections.filter(te => te !== g) }) } }), await U.commit(), Pt === g && Gi("all") }, hi = t === "wishlist" ? lo : dn, co = Y.useMemo(() => { const g = new Set(hi.map(M => M.color).filter(Boolean)); return Array.from(g) }, [hi]), gr = Y.useMemo(() => { if (!dn.length) return []; const g = {}; let M = 0; return dn.forEach(U => { U.color && (g[U.color] = (g[U.color] || 0) + 1, M++) }), M === 0 ? [] : Object.entries(g).sort((U, Q) => Q[1] - U[1]).slice(0, 3).map(([U, Q]) => ({ color: U, count: Q, percentage: Math.round(Q / M * 100) })) }, [dn]), Un = Y.useMemo(() => hi.filter(g => { const M = (g.name || "").toLowerCase().includes(R.toLowerCase()) || (g.color || "").toLowerCase().includes(R.toLowerCase()), U = k === "Todos" || k === N("all") || g.category === k, Q = !P || g.color && g.color.includes(P), q = Pt === "all" || g.sections && g.sections.includes(Pt); let te = !0; if (ze !== "any") { const Z = (new Date().getTime() - (g.createdAt || new Date().getTime())) / (1e3 * 60 * 60 * 24); ze === "month" ? te = Z <= 30 : ze === "6months" ? te = Z <= 180 : ze === "1year" ? te = Z <= 365 : ze === "older" && (te = Z > 365) } return M && U && Q && te && q }), [hi, R, k, P, ze, N, Pt]), kn = async (g, M) => { if (!n) return; const U = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", M.id || M); switch (g) { case "favorite": await Bn(U, { favorite: !M.favorite }); break; case "trash": await Bn(U, { status: "trash", trashedAt: new Date().getTime() }); break; case "restore": await Bn(U, { status: "active", trashedAt: null }); break; case "laundry": await Bn(U, { status: "laundry" }); break; case "clean": await Bn(U, { status: "active" }); break; case "delete": window.confirm(N("confirmDeletePerm")) && await zd(U); break } }, Hc = async g => { if (g.preventDefault(), !n) return; const M = new FormData(g.target), U = M.get("color"); if (!U || U.trim() === "") { alert("Por favor selecione pelo menos uma cor."); return } s(!0); const Q = { name: M.get("name"), category: M.get("category"), color: M.get("color"), imageUrl: M.get("imageUrl") || "https://images.unsplash.com/photo-1521572267360-ee0c2909d518?q=80&w=500&auto=format&fit=crop", status: M.get("isWishlist") ? "wishlist" : p && p.status === "wishlist" ? "active" : p ? p.status : "active", favorite: p && p.favorite || !1, sections: fr, updatedAt: new Date().getTime() }; try { const q = p ? p.id : null; if (v(null), S(""), A("Todos"), T(""), ln("any"), L(""), e(M.get("isWishlist") ? "wishlist" : "closet"), q) { const te = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", q); await Bn(te, Q) } else { Q.createdAt = new Date().getTime(); const te = pn(ve, "artifacts", Te, "users", n.uid, "clothes"); await is(te, Q) } } catch (q) { console.error(q) } finally { s(!1) } }, nl = async g => { if (g.preventDefault(), W.length < 2) return; s(!0); const U = { name: new FormData(g.target).get("lookName"), items: W, sections: On, updatedAt: new Date().getTime() }; try { if (ee) { const Q = Ye(ve, "artifacts", Te, "users", n.uid, "looks", ee.id); await Bn(Q, U) } else { U.createdAt = new Date().getTime(); const Q = pn(ve, "artifacts", Te, "users", n.uid, "looks"); await is(Q, U) } ne([]), xe(null), e("outfits") } catch (Q) { console.error(Q) } finally { s(!1) } }, rl = async g => { if (!window.confirm(N("confirmDeleteLook"))) return; const M = Ye(ve, "artifacts", Te, "users", n.uid, "looks", g); await zd(M) }, il = async g => { if (n) try { const M = g.items.map(Z => { const ie = o.find(Re => Re.id === Z); return ie ? { name: ie.name, category: ie.category, color: ie.color, imageUrl: ie.imageUrl } : null }).filter(Boolean), U = pn(ve, "artifacts", Te, "sharedLooks"), Q = Ye(U), te = `${window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1" ? "https://mycloset.epvc.pt" : window.location.origin}${window.location.pathname}?shared=${Q.id}`; let oe = !1; try { if (navigator.clipboard && window.isSecureContext) await navigator.clipboard.writeText(te), oe = !0; else throw new Error("Clipboard API indisponível") } catch { try { const ie = document.createElement("textarea"); ie.value = te, ie.style.position = "fixed", ie.style.left = "-9999px", document.body.appendChild(ie), ie.focus(), ie.select(), oe = document.execCommand("copy"), document.body.removeChild(ie) } catch (ie) { console.error("Erro no fallback de clipboard:", ie) } } await Hl(Q, { lookName: g.name, ownerUid: n.uid, ownerEmail: n.email || "", items: M, createdAt: new Date().getTime() }), oe ? (Ke(g.id), setTimeout(() => Ke(null), 3e3)) : alert("Link de partilha: " + te) } catch (M) { console.error("Erro ao partilhar look:", M), alert("Erro ao gerar link de partilha.") } }, ho = async () => { if (!(!n || !it)) { qi(!0); try { const g = []; for (const U of it.items) { const Q = pn(ve, "artifacts", Te, "users", n.uid, "clothes"), q = await is(Q, { name: U.name, category: U.category, color: U.color, imageUrl: U.imageUrl, status: "active", favorite: !1, createdAt: new Date().getTime(), updatedAt: new Date().getTime() }); g.push(q.id) } const M = pn(ve, "artifacts", Te, "users", n.uid, "looks"); if (await is(M, { name: it.lookName, items: g, createdAt: new Date().getTime(), updatedAt: new Date().getTime() }), it.ownerUid && it.ownerUid !== n.uid) try { const U = pn(ve, "artifacts", Te, "users", it.ownerUid, "notifications"); await is(U, { type: "look_copied", lookName: it.lookName, copiedByEmail: (O == null ? void 0 : O.username) || n.email || "Alguém", createdAt: new Date().getTime(), read: !1 }) } catch (U) { console.warn("Não foi possível enviar notificação ao dono do look:", U) } Wi(!1), hr(null), e("outfits") } catch (g) { console.error("Erro ao copiar look:", g), alert("Erro ao copiar look.") } finally { qi(!1) } } }, fo = async g => { s(!0); try { const M = ql(ve); g.items.forEach(U => { const Q = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", U); M.update(Q, { status: "laundry" }) }), await M.commit(), Jt(N("lookSentToLaundry") || "Peças enviadas para a lavandaria!"), setTimeout(() => Jt(null), 3e3) } catch (M) { console.error(M) } finally { s(!1) } }, sl = async g => { g.preventDefault(), w(""), s(!0); const M = new FormData(g.target), U = M.get("email"), Q = M.get("password"); try { $ === "login" ? await BS(Kl, U, Q) : await zS(Kl, U, Q) } catch (q) { console.error(q), q.code === "auth/operation-not-allowed" ? w(N("authErrorDisabled")) : w(q.message) } finally { s(!1) } }, ol = async () => { if (!(!n || !window.confirm(N("confirmEmptyTrash")))) { s(!0); try { const g = ql(ve); di.forEach(M => { const U = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", M.id); g.delete(U) }), await g.commit() } catch (g) { console.error(g) } finally { s(!1) } } }, qc = async () => { if (!(!n || !window.confirm(N("confirmClearAll")))) { s(!0); try { const g = ql(ve); dn.forEach(M => { const U = Ye(ve, "artifacts", Te, "users", n.uid, "clothes", M.id); g.update(U, { status: "trash", trashedAt: new Date().getTime() }) }), await g.commit() } catch (g) { console.error(g) } finally { s(!1) } } }, Kc = g => { const M = g.target.files[0]; if (!M || !n) return; const U = new FileReader; U.onload = Q => { const q = new Image; q.onload = async () => { const te = document.createElement("canvas"), oe = 400; let Z = q.width, ie = q.height; Z > ie ? Z > oe && (ie *= oe / Z, Z = oe) : ie > oe && (Z *= oe / ie, ie = oe), te.width = Z, te.height = ie, te.getContext("2d").drawImage(q, 0, 0, Z, ie); const Ie = te.toDataURL("image/jpeg", .8); try { const pe = Ye(ve, "artifacts", Te, "users", n.uid, "profile", "data"); await Hl(pe, { avatar: Ie }, { merge: !0 }) } catch (pe) { console.error("Error uploading image:", pe) } }, q.src = Q.target.result }, U.readAsDataURL(M) }, al = g => { const M = g.target.files[0]; if (!M) return; const U = new FileReader; U.onload = Q => { const q = new Image; q.onload = () => { const te = document.createElement("canvas"), oe = 800; let Z = q.width, ie = q.height; Z > ie ? Z > oe && (ie *= oe / Z, Z = oe) : ie > oe && (Z *= oe / ie, ie = oe), te.width = Z, te.height = ie, te.getContext("2d").drawImage(q, 0, 0, Z, ie); const Ie = te.toDataURL("image/jpeg", .8); S(Ie) }, q.src = Q.target.result }, U.readAsDataURL(M) }, ll = async g => { g.preventDefault(), Yt(!0); const M = new FormData(g.target); try { const U = Ye(ve, "artifacts", Te, "users", n.uid, "profile", "data"), Q = M.get("dobDay"), q = M.get("dobMonth"), te = M.get("dobYear"); let oe = M.get("dob") || ""; Q && q && te && (oe = `${te}-${q}-${Q}`), Hl(U, { username: M.get("username") || "", fullName: M.get("fullName") || "", dob: oe, bio: M.get("bio") || "", location: M.get("location") || "" }, { merge: !0 }).catch(Z => { console.error(Z) }) } catch (U) { console.error(U) } finally { setTimeout(() => { Yt(!1) }, 600) } }; return i && !n ? d.jsx("div", { className: "h-screen flex items-center justify-center bg-primary-50 dark:bg-gray-950", children: d.jsx(Ig, { className: "animate-spin text-primary-600", size: 40 }) }) : t === "auth" ? d.jsx("div", { className: `min-h-screen bg-gradient-to-br from-primary-100 via-white to-purple-50 dark:from-gray-950 dark:to-gray-900 flex items-center justify-center p-6 text-gray-900 ${m ? "dark" : ""}`, children: d.jsx(Qe, { className: "max-w-md w-full p-12 border-none shadow-2xl overflow-hidden", darkMode: m, children: d.jsxs("div", { className: "animate-custom-zoom", children: [d.jsxs("div", { className: "text-center mb-10", children: [d.jsx("div", { className: "inline-flex p-5 bg-primary-600 rounded-[2rem] shadow-2xl shadow-primary-600/40 mb-6 transition-all duration-300", children: $ === "login" ? d.jsx(Fl, { className: "text-white w-12 h-12" }) : d.jsx(xg, { className: "text-white w-12 h-12" }) }), d.jsx("h1", { className: "text-5xl font-black tracking-tighter italic", children: "MyCloset" })] }), _ && d.jsxs("div", { className: "mb-6 p-4 bg-red-50 text-red-600 text-[10px] rounded-2xl flex items-center gap-2 font-black uppercase tracking-widest border border-red-100", children: [d.jsx(Zk, { size: 16 }), " ", _] }), d.jsxs("form", { onSubmit: sl, className: "space-y-4", children: [d.jsx("input", { name: "email", type: "email", placeholder: N("emailPlaceholder"), required: !0, className: "w-full p-5 rounded-2xl bg-gray-50 dark:bg-gray-800 border-none focus:ring-2 focus:ring-primary-500 outline-none font-bold" }), d.jsx("input", { name: "password", type: "password", placeholder: N("passwordPlaceholder"), required: !0, className: "w-full p-5 rounded-2xl bg-gray-50 dark:bg-gray-800 border-none focus:ring-2 focus:ring-primary-500 outline-none font-bold" }), d.jsx("button", { className: "w-full py-5 bg-primary-600 text-white rounded-[2rem] font-black text-lg shadow-2xl hover:scale-[1.02] active:scale-95 transition-all", children: N($ === "login" ? "loginBtn" : "registerBtn") })] }), d.jsx("div", { className: "mt-10 text-center", children: d.jsx("button", { type: "button", onClick: () => x($ === "login" ? "register" : "login"), className: "text-gray-400 font-black text-[10px] uppercase tracking-[0.3em] hover:text-primary-600 transition-colors text-inherit", children: N($ === "login" ? "createAccount" : "haveAccount") }) })] }, $) }) }) : d.jsxs("div", {
|
|
className: `min-h-screen flex transition-all duration-700 ${m ? "bg-gray-950 text-white dark" : "bg-[#FDFDFF] text-gray-900"}`, children: [d.jsx("aside", {
|
|
className: `
|
|
fixed md:relative inset-y-0 left-0 z-[100] transition-all duration-500 ease-in-out border-r overflow-hidden
|
|
${m ? "bg-gray-900/80 border-gray-800" : "bg-white border-gray-100"}
|
|
${j ? "w-80 translate-x-0" : "w-0 -translate-x-full md:w-0 md:opacity-0"}
|
|
`, children: d.jsxs("div", { className: "p-10 h-full flex flex-col backdrop-blur-xl", children: [d.jsxs("button", { onClick: () => e("closet"), className: "flex items-center gap-4 mb-16 hover:scale-[1.02] transition-transform text-left cursor-pointer w-full", children: [d.jsx("div", { className: "p-3 bg-primary-600 rounded-2xl shadow-xl shadow-primary-600/30", children: d.jsx(Fl, { className: "text-white", size: 24 }) }), d.jsx("span", { className: "text-3xl font-black tracking-tighter italic", children: "MyCloset" })] }), d.jsx("nav", { className: "flex-1 space-y-3", children: [{ id: "dashboard", label: N("dashboard"), icon: tT }, { id: "closet", label: N("closet"), icon: Fl }, { id: "wishlist", label: N("wishlist") || "Lista de Desejos", icon: Cg }, { id: "laundry", label: N("laundry"), icon: yi }, { id: "outfits", label: N("outfits"), icon: Cd }, { id: "settings", label: N("settings"), icon: Ad }].map(g => d.jsxs("button", { onClick: () => e(g.id), className: `w-full flex items-center gap-4 px-6 py-4 rounded-2xl transition-all font-black text-[11px] uppercase tracking-widest ${t === g.id ? "bg-primary-600 text-white shadow-2xl shadow-primary-600/30 scale-105" : "opacity-40 hover:opacity-100 hover:bg-primary-500/5"}`, children: [d.jsx(g.icon, { size: 20 }), d.jsx("span", { children: g.label })] }, g.id)) }), d.jsxs("div", { className: "mt-auto pt-10 border-t border-inherit", children: [d.jsxs("button", { onClick: () => e("profile"), className: "w-full flex items-center gap-4 mb-8 px-2 text-left hover:bg-gray-100 dark:hover:bg-gray-800 py-3 rounded-2xl transition-all cursor-pointer", children: [d.jsx("div", { className: `w-12 h-12 rounded-2xl shrink-0 flex items-center justify-center font-black text-white shadow-xl overflow-hidden ${m ? "bg-primary-500" : "bg-primary-600"}`, children: O != null && O.avatar ? d.jsx("img", { src: O.avatar, className: "w-full h-full object-cover", alt: "Avatar" }) : (((ul = O == null ? void 0 : O.fullName) == null ? void 0 : ul[0]) || ((Tn = O == null ? void 0 : O.username) == null ? void 0 : Tn[0]) || ((en = n == null ? void 0 : n.email) == null ? void 0 : en[0]) || "U").toUpperCase() }), d.jsxs("div", { className: "flex-1 min-w-0", children: [d.jsx("p", { className: "text-sm font-black truncate", children: (O == null ? void 0 : O.username) || (O == null ? void 0 : O.fullName) || ((fi = n == null ? void 0 : n.email) == null ? void 0 : fi.split("@")[0]) || N("userTitle") }), d.jsx(Gl, { variant: "success", children: N("online") })] })] }), d.jsxs("button", { onClick: () => { n != null && n.uid && localStorage.removeItem(`app-theme-${n.uid}`), qS(Kl) }, className: "w-full py-4 text-red-500 font-black uppercase tracking-widest text-[10px] hover:bg-red-500/10 rounded-2xl transition-all flex items-center justify-center gap-3", children: [d.jsx(rT, { size: 16 }), " ", N("logout")] })] })] })
|
|
}), d.jsxs("main", { className: "flex-1 flex flex-col h-screen overflow-hidden", children: [d.jsxs("header", { className: `h-24 shrink-0 flex items-center justify-between px-8 md:px-12 transition-all border-b border-inherit ${m ? "bg-gray-950/50" : "bg-white/50"} backdrop-blur-xl`, children: [d.jsxs("div", { className: "flex items-center gap-6", children: [d.jsx("button", { onClick: () => K(!j), className: `p-3 rounded-2xl transition-all border ${m ? "bg-gray-800 border-gray-700" : "bg-gray-50 border-gray-200"}`, children: j ? d.jsx(sT, { size: 24 }) : d.jsx(oT, { size: 24 }) }), d.jsxs("h2", { className: "text-3xl font-black tracking-tighter", children: [t === "dashboard" && N("overview"), t === "closet" && N("myCloset"), t === "wishlist" && (N("wishlist") || "Lista de Desejos"), t === "laundry" && N("laundry"), t === "outfits" && N("outfitsAndStyle"), t === "settings" && N("settings"), t === "profile" && N("profileInfo")] })] }), d.jsxs("div", { className: "flex items-center gap-4", children: [d.jsxs("div", { className: "flex bg-gray-100 dark:bg-gray-800 p-1.5 rounded-2xl", children: [d.jsx("button", { onClick: () => oo(!1), className: `p-2 rounded-xl ${m ? "text-gray-500" : "bg-white shadow-md text-primary-600"}`, children: d.jsx(dT, { size: 18 }) }), d.jsx("button", { onClick: () => oo(!0), className: `p-2 rounded-xl ${m ? "bg-gray-900 shadow-md text-primary-400" : "text-gray-500"}`, children: d.jsx(iT, { size: 18 }) })] }), d.jsxs("button", { onClick: () => Ge(!0), className: "relative p-4 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-2xl hover:scale-105 active:scale-95 transition-all", children: [d.jsx(jl, { size: 24 }), Xi.filter(g => !g.read).length > 0 && d.jsx("span", { className: "absolute top-2 right-2 w-3 h-3 bg-red-500 rounded-full border-2 border-white dark:border-gray-800" })] }), d.jsx("button", { onClick: () => { v(null), S(""), e("add"), xe(null), ne([]) }, className: "p-4 bg-primary-600 text-white rounded-2xl shadow-xl shadow-primary-600/30 hover:scale-105 active:scale-95 transition-all", children: d.jsx(Ol, { size: 24 }) })] })] }), d.jsxs("div", { className: "flex-1 overflow-y-auto p-8 md:p-12 space-y-12", children: [t === "dashboard" && d.jsxs("div", { className: "space-y-12 animate-in fade-in duration-700", children: [d.jsx("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-8", children: [{ label: N("readyClothes"), val: dn.length, icon: Fl, col: "primary" }, { label: N("inLaundry"), val: Zi.length, icon: yi, col: "blue" }, { label: N("myLooks"), val: u.length, icon: Cd, col: "purple" }, { label: N("favorites"), val: dn.filter(g => g.favorite).length, icon: Sg, col: "rose" }].map((g, M) => d.jsxs(Qe, { className: "p-8 group hover:-translate-y-2", darkMode: m, children: [d.jsx("div", { className: `w-14 h-14 rounded-2xl flex items-center justify-center mb-6 shadow-inner ${m ? "bg-gray-700 text-primary-400" : "bg-primary-50 text-primary-600"}`, children: d.jsx(g.icon, { size: 28 }) }), d.jsx("p", { className: "text-[10px] font-black uppercase tracking-widest opacity-40 mb-1", children: g.label }), d.jsx("h4", { className: "text-4xl font-black tracking-tight", children: g.val })] }, M)) }), d.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-3 gap-8", children: [d.jsxs("div", { className: "lg:col-span-2 p-10 rounded-[2rem] relative overflow-hidden shadow-2xl", style: { backgroundColor: "hsl(var(--primary-600))", color: "white" }, children: [d.jsxs("div", { className: "relative z-10 flex flex-col justify-between h-full", children: [d.jsxs("div", { children: [d.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [d.jsx(kg, { size: 28, style: { color: "rgba(255,255,255,0.7)" } }), d.jsx(Gl, { variant: "warning", children: un ? un.name : N("todayIn") })] }), d.jsx("h3", { className: "text-5xl font-black tracking-tighter mb-4", style: { color: "white" }, children: un ? `${un.currentTemp}°C Atual • Média ${un.avgTemp}°C` : N("weatherUpdate") }), d.jsx("p", { className: "text-lg font-medium max-w-lg leading-relaxed", style: { color: "rgba(255,255,255,0.8)" }, children: un ? `O dia de hoje tem máximas de ${un.maxTemp}°C e mínimas de ${un.minTemp}°C. ${N("weatherMsg")}` : N("weatherMsg") })] }), d.jsxs("div", { className: "mt-10 flex gap-4 items-center", children: [dn.filter(g => g.category === "Tops").slice(0, 2).map(g => d.jsx("div", { className: "w-16 h-16 rounded-xl overflow-hidden border-2", style: { borderColor: "rgba(255,255,255,0.4)" }, children: d.jsx("img", { src: g.imageUrl, className: "w-full h-full object-cover", alt: "" }) }, g.id)), d.jsxs("button", { onClick: () => e("closet"), className: "flex items-center gap-2 font-black uppercase text-xs tracking-widest hover:translate-x-2 transition-transform", style: { color: "white" }, children: [N("exploreSuggestions"), " ", d.jsx(eT, { size: 18 })] })] })] }), d.jsx(kg, { size: 350, className: "absolute -bottom-20 -right-20", style: { color: "rgba(255,255,255,0.1)" } })] }), d.jsxs(Qe, { className: "p-8", darkMode: m, children: [d.jsxs("h3", { className: "text-lg font-black tracking-tight mb-8 flex items-center gap-2 text-inherit", children: [d.jsx(aT, { size: 20 }), " ", N("topColors")] }), d.jsx("div", { className: "space-y-6", children: gr.length > 0 ? gr.map(g => d.jsxs("div", { className: "space-y-2", children: [d.jsxs("div", { className: "flex justify-between text-[10px] font-black uppercase tracking-widest opacity-50", children: [d.jsx("span", { children: g.color }), d.jsxs("span", { children: [g.percentage, "% (", g.count, ")"] })] }), d.jsx("div", { className: "h-2 w-full bg-gray-100 dark:bg-gray-700 rounded-full overflow-hidden", children: d.jsx("div", { className: "h-full bg-primary-600", style: { width: `${g.percentage}%` } }) })] }, g.color)) : d.jsx("p", { className: "text-xs opacity-50 italic", children: "Adicione cores aos seus itens." }) })] })] })] }), (t === "closet" || t === "wishlist") && d.jsxs("div", { className: "space-y-10 animate-in slide-in-from-bottom-8 duration-700", children: [d.jsxs("div", { className: "flex flex-col xl:flex-row gap-8 items-center justify-between", children: [d.jsxs("div", { className: "relative w-full max-w-2xl", children: [d.jsx(uT, { className: "absolute left-6 top-1/2 -translate-y-1/2 text-gray-400", size: 24 }), d.jsx("input", { placeholder: N("searchPlaceholder"), className: `w-full pl-16 pr-8 py-6 rounded-[2rem] shadow-inner outline-none border-none focus:ring-4 focus:ring-primary-500/10 font-bold text-lg ${m ? "bg-gray-800" : "bg-gray-100"}`, onChange: g => L(g.target.value) })] }), d.jsx("div", { className: "flex gap-3 w-full xl:w-auto", children: d.jsxs("button", { onClick: () => Nt(!0), className: "flex items-center gap-3 px-8 py-4 bg-primary-600 text-white rounded-[2rem] font-black uppercase text-[10px] tracking-widest shadow-xl shadow-primary-600/30 hover:scale-105 transition-all", children: [d.jsx(Sd, { size: 18 }), " ", N("advancedFilters"), (P || ze !== "any" || k !== "Todos" && k !== N("all")) && d.jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" })] }) })] }), (t === "closet" || t === "outfits") && d.jsxs("div", { className: "flex items-center gap-3 overflow-x-auto pb-1 custom-scrollbar", children: [d.jsxs("button", { onClick: () => Gi("all"), className: `shrink-0 flex items-center gap-2 px-5 py-2.5 rounded-2xl font-black text-[10px] uppercase tracking-widest transition-all ${Pt === "all" ? "bg-primary-600 text-white shadow-lg shadow-primary-600/30" : m ? "bg-gray-800 text-gray-400 hover:bg-gray-700" : "bg-gray-100 text-gray-500 hover:bg-gray-200"}`, children: [d.jsx(Tg, { size: 14 }), " ", N("allSections")] }), Ne.map(g => d.jsxs("button", { onClick: () => Gi(g.id), className: `shrink-0 flex items-center gap-2 px-5 py-2.5 rounded-2xl font-black text-[10px] uppercase tracking-widest transition-all ${Pt === g.id ? "bg-primary-600 text-white shadow-lg shadow-primary-600/30 scale-105" : m ? "bg-gray-800 text-gray-400 hover:bg-gray-700" : "bg-gray-100 text-gray-500 hover:bg-gray-200"}`, children: [d.jsx("span", { children: g.emoji }), " ", g.name] }, g.id)), d.jsxs("button", { onClick: () => Xt(!0), className: `shrink-0 flex items-center gap-2 px-4 py-2.5 rounded-2xl font-black text-[10px] uppercase tracking-widest transition-all border-2 border-dashed ${m ? "border-gray-700 text-gray-500 hover:border-primary-500 hover:text-primary-400" : "border-gray-200 text-gray-400 hover:border-primary-400 hover:text-primary-600"}`, children: [d.jsx(Ad, { size: 14 }), " ", N("manageSections")] })] }), d.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-10", children: Un.map(g => d.jsx("div", { className: "group", children: d.jsxs(Qe, { className: "overflow-hidden p-0 h-[480px] relative border-none hover:shadow-2xl transition-all duration-500", darkMode: m, children: [d.jsx("img", { src: g.imageUrl, className: "w-full h-full object-cover transition-transform duration-1000 group-hover:scale-110", alt: g.name }), d.jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-transparent opacity-0 group-hover:opacity-100 transition-all duration-300 flex flex-col justify-end p-6 pb-[136px] text-white z-10 pointer-events-none", children: d.jsxs("div", { className: "grid grid-cols-2 gap-2 pointer-events-auto", children: [d.jsxs("button", { onClick: () => { v(g), S(g.imageUrl || ""), e("edit") }, className: "py-3 px-2 bg-white text-primary-600 rounded-xl font-black text-[9px] uppercase flex items-center justify-center gap-1.5 hover:bg-primary-50", children: [d.jsx(Vl, { size: 14 }), " ", N("edit")] }), d.jsxs("button", { onClick: () => kn("laundry", g), className: "py-3 px-2 bg-blue-600 text-white rounded-xl font-black text-[9px] uppercase flex items-center justify-center gap-1.5 hover:bg-blue-700", children: [d.jsx(yi, { size: 14 }), " ", N("makeDirty")] }), d.jsx("button", { onClick: () => kn("trash", g), className: "py-3 px-2 bg-red-600/20 text-red-100 backdrop-blur-md rounded-xl font-black text-[9px] uppercase hover:bg-red-600 transition-colors col-span-2", children: N("moveToTrash") })] }) }), d.jsx("div", { className: "absolute top-6 left-6 z-20", children: d.jsx(Gl, { children: g.category }) }), d.jsx("div", { className: "absolute top-6 right-6 z-20 pointer-events-auto", children: d.jsx("button", { onClick: () => kn("favorite", g), className: `p-3 rounded-2xl shadow-xl backdrop-blur-md transition-all ${g.favorite ? "bg-rose-500 text-white" : "bg-white/90 text-gray-400"}`, children: d.jsx(Sg, { size: 18, fill: g.favorite ? "currentColor" : "none" }) }) }), d.jsxs("div", { className: "absolute bottom-6 left-6 right-6 p-6 bg-white/95 dark:bg-gray-900/95 backdrop-blur-2xl rounded-3xl shadow-2xl transform transition-transform group-hover:-translate-y-2 z-20 pointer-events-auto", children: [d.jsx("h4", { className: "text-xl font-black tracking-tighter truncate", children: g.name }), d.jsxs("div", { className: "flex items-center gap-3 mt-2", children: [d.jsxs("div", { className: "flex items-center gap-1.5 border-r border-gray-200 dark:border-gray-700 pr-3", children: [d.jsx("div", { className: "w-4 h-4 rounded-full border border-black/10 shrink-0", style: $c(g.color) }), d.jsx("span", { className: "text-[10px] font-black opacity-40 uppercase tracking-widest", children: g.color })] }), g.sections && g.sections.length > 0 && d.jsx("div", { className: "flex items-center gap-1 overflow-x-auto custom-scrollbar no-scrollbar", children: g.sections.map(M => { const U = Ne.find(Q => Q.id === M); return U ? d.jsxs("span", { className: "text-[10px] font-bold px-2 py-0.5 rounded-md bg-gray-100 dark:bg-gray-800 text-gray-500 whitespace-nowrap", children: [U.emoji, " ", U.name] }, U.id) : null }) })] })] })] }) }, g.id)) })] }), t === "laundry" && d.jsxs("div", { className: "space-y-12 animate-in fade-in duration-700", children: [d.jsxs("div", { className: "text-center max-w-2xl mx-auto space-y-4 text-inherit", children: [d.jsx("div", { className: "w-20 h-20 bg-blue-100 dark:bg-blue-900/30 rounded-[2rem] flex items-center justify-center mx-auto text-blue-600 shadow-inner", children: d.jsx(yi, { size: 40 }) }), d.jsx("h3", { className: "text-4xl font-black tracking-tight", children: N("laundryBasket") })] }), d.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8", children: [Zi.map(g => d.jsxs(Qe, { className: "p-4 flex items-center gap-4 border-blue-200 dark:border-blue-900/50", darkMode: m, children: [d.jsx("img", { src: g.imageUrl, className: "w-16 h-16 rounded-2xl object-cover shadow-sm shrink-0", alt: "" }), d.jsxs("div", { className: "flex-1 min-w-0 flex flex-col justify-center items-start", children: [d.jsx("p", { className: "font-black text-sm truncate w-full text-inherit", children: g.name }), d.jsx("div", { className: "mt-1.5", children: d.jsx(Gl, { variant: "warning", children: N("washing") }) })] }), d.jsx("button", { onClick: () => kn("clean", g), className: "p-3 bg-green-500 text-white rounded-xl shadow-md hover:scale-105 transition-all shrink-0", children: d.jsx(Eg, { size: 20 }) })] }, g.id)), Zi.length === 0 && d.jsx("div", { className: "col-span-full py-20 text-center opacity-20 font-black uppercase tracking-[0.5em] text-sm", children: N("emptyBasket") })] })] }), t === "outfits" && d.jsx("div", { className: "space-y-12 animate-in fade-in duration-700 pb-20", children: d.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-3 gap-12", children: [d.jsxs("div", { className: "lg:col-span-1 space-y-8", children: [d.jsxs(Qe, { className: "p-8 border-primary-200", darkMode: m, children: [d.jsxs("h3", { className: "text-2xl font-black tracking-tighter mb-6 flex items-center gap-3 text-inherit", children: [d.jsx(Cd, { className: "text-primary-600" }), " ", ee ? N("editLook") || "Editar Look" : N("createNewLook")] }), d.jsxs("form", { onSubmit: nl, className: "space-y-6", children: [d.jsx("input", { name: "lookName", placeholder: N("lookName"), defaultValue: (ee == null ? void 0 : ee.name) || "", required: !0, className: `w-full p-4 rounded-xl border-none shadow-inner font-bold ${m ? "bg-gray-700" : "bg-gray-100"}` }), d.jsxs("div", { className: "space-y-3", children: [d.jsxs("p", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest", children: [N("selectedPieces"), " (", W.length, ")"] }), d.jsxs("div", { className: "flex flex-wrap gap-2", children: [W.map(g => { const M = o.find(U => U.id === g); return d.jsxs("div", { className: "relative group", children: [d.jsx("img", { src: M == null ? void 0 : M.imageUrl, className: "w-12 h-12 rounded-lg object-cover border-2 border-primary-500", alt: "" }), d.jsx("button", { type: "button", onClick: () => ne(W.filter(U => U !== g)), className: "absolute -top-1 -right-1 bg-red-500 text-white rounded-full p-0.5 opacity-0 group-hover:opacity-100 transition-opacity", children: d.jsx(No, { size: 10 }) })] }, g) }), W.length === 0 && d.jsx("p", { className: "text-xs text-gray-400 italic", children: N("selectPieces") })] })] }), d.jsxs("div", { className: "space-y-3 pt-3 border-t border-inherit", children: [d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("label", { className: "text-[10px] font-black uppercase tracking-widest opacity-50 flex items-center gap-2", children: [d.jsx(Ng, { size: 12 }), " ", N("assignSections")] }), d.jsxs("button", { type: "button", onClick: () => Xt(!0), className: "text-[10px] font-black uppercase tracking-widest text-primary-600 hover:text-primary-700 flex items-center gap-1", children: [d.jsx(Ol, { size: 10 }), " ", N("createSection")] })] }), Ne.length === 0 ? d.jsx("div", { className: "p-4 border-2 border-dashed border-gray-200 dark:border-gray-800 rounded-2xl text-center", children: d.jsx("p", { className: "text-[10px] font-black uppercase tracking-widest opacity-40", children: N("noSectionsCreated") }) }) : d.jsx("div", { className: "flex flex-wrap gap-2", children: Ne.map(g => d.jsxs("button", { type: "button", onClick: () => { On.includes(g.id) ? Yi(On.filter(M => M !== g.id)) : Yi([...On, g.id]) }, className: `flex items-center gap-2 px-3 py-1.5 rounded-xl text-xs font-bold transition-all border-2 ${On.includes(g.id) ? "border-primary-600 bg-primary-600 text-white shadow-md shadow-primary-600/30" : "border-transparent bg-gray-100 dark:bg-gray-800 text-gray-500 hover:bg-gray-200 dark:hover:bg-gray-700"}`, children: [d.jsx("span", { children: g.emoji }), " ", g.name, On.includes(g.id) && d.jsx(Er, { size: 12 })] }, g.id)) })] }), d.jsxs("div", { className: "flex gap-4", children: [ee && d.jsx("button", { type: "button", onClick: () => { xe(null), ne([]) }, className: "flex-1 py-4 font-black uppercase text-[10px] tracking-widest text-gray-500 hover:text-gray-900 transition-colors", children: N("cancel") }), d.jsx("button", { disabled: W.length < 2, className: "flex-[2] py-4 bg-primary-600 text-white rounded-2xl font-black uppercase tracking-widest text-xs shadow-xl shadow-primary-600/30 disabled:opacity-30 transition-all", children: ee ? N("saveChanges") || "Guardar" : N("saveLook") })] })] }, ee ? ee.id : "new")] }), d.jsxs("div", { className: "space-y-4", children: [d.jsx("p", { className: "text-xs font-black uppercase opacity-50 tracking-widest px-2", children: N("closetLabel") }), d.jsx("div", { className: "grid grid-cols-4 gap-3 max-h-96 overflow-y-auto pr-2 custom-scrollbar", children: el.map(g => d.jsxs("button", { onClick: () => !W.includes(g.id) && ne([...W, g.id]), className: `relative rounded-xl overflow-hidden aspect-square border-2 transition-all ${W.includes(g.id) ? "border-primary-600 scale-90" : "border-transparent hover:border-primary-200"}`, children: [d.jsx("img", { src: g.imageUrl, className: "w-full h-full object-cover", alt: "" }), g.status === "wishlist" && d.jsx("div", { className: "absolute top-1 left-1 bg-yellow-500 text-white p-1 rounded-md shadow-md", children: d.jsx(Cg, { size: 10 }) }), W.includes(g.id) && d.jsx("div", { className: "absolute inset-0 bg-primary-600/40 flex items-center justify-center text-white", children: d.jsx(Er, { size: 20 }) })] }, g.id)) })] })] }), d.jsx("div", { className: "lg:col-span-2 space-y-10", children: (() => { const g = u.filter(q => { const te = Pt === "all" || q.sections && q.sections.includes(Pt); let oe = !0; return P && (oe = q.items.some(Z => { const ie = o.find(Re => Re.id === Z); return ie && ie.color && ie.color.includes(P) })), te && oe }), M = g.filter(q => q.items.every(te => { const oe = o.find(Z => Z.id === te); return !oe || oe.status !== "laundry" })), U = g.filter(q => q.items.some(te => { const oe = o.find(Z => Z.id === te); return oe && oe.status === "laundry" })), Q = q => { const te = q.items.some(oe => { const Z = o.find(ie => ie.id === oe); return Z && Z.status === "laundry" }); return d.jsxs(Qe, { className: `p-8 group hover:shadow-2xl transition-all border-none shadow-md ${te ? "opacity-75" : ""}`, darkMode: m, children: [d.jsxs("div", { className: "flex justify-between items-start mb-6", children: [d.jsxs("div", { className: "text-inherit", children: [d.jsx("h4", { className: "text-xl font-black tracking-tight", children: q.name }), d.jsxs("p", { className: "text-[10px] opacity-40 font-bold uppercase tracking-widest", children: [q.items.length, " ", N("pieces"), " • ", new Date(q.createdAt).toLocaleDateString()] })] }), d.jsxs("div", { className: "flex gap-2", children: [d.jsxs("button", { onClick: () => il(q), className: `p-2 transition-colors relative group/share ${Ki === q.id ? "text-green-500" : "text-gray-300 hover:text-green-500"}`, title: "Partilhar look", children: [Ki === q.id ? d.jsx(Er, { size: 18 }) : d.jsx(Ag, { size: 18 }), d.jsx("span", { className: "absolute -top-8 left-1/2 -translate-x-1/2 bg-gray-900 text-white text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg whitespace-nowrap opacity-0 group-hover/share:opacity-100 transition-opacity pointer-events-none", children: Ki === q.id ? N("linkCopied") : N("share") })] }), d.jsx("button", { onClick: () => { xe(q), ne(q.items) }, className: "p-2 text-gray-300 hover:text-primary-500 transition-colors", children: d.jsx(Vl, { size: 18 }) }), d.jsx("button", { onClick: () => fo(q), className: "p-2 text-gray-300 hover:text-blue-500 transition-colors", title: "Lavar look inteiro", children: d.jsx(yi, { size: 18 }) }), d.jsx("button", { onClick: () => rl(q.id), className: "p-2 text-gray-300 hover:text-red-500 transition-colors", children: d.jsx(Nd, { size: 18 }) })] })] }), d.jsx("div", { className: "flex -space-x-4 mb-4", children: q.items.map(oe => { const Z = o.find(Re => Re.id === oe), ie = (Z == null ? void 0 : Z.status) === "laundry"; return d.jsxs("div", { className: `relative w-20 h-20 rounded-2xl border-4 overflow-hidden shadow-lg transform group-hover:rotate-6 transition-transform ${ie ? "border-blue-400" : "border-white dark:border-gray-800"}`, children: [d.jsx("img", { src: Z == null ? void 0 : Z.imageUrl, className: `w-full h-full object-cover ${ie ? "brightness-75" : ""}`, alt: "" }), ie && d.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-blue-500/30 backdrop-blur-[1px]", children: d.jsx(yi, { size: 18, className: "text-white drop-shadow" }) })] }, oe) }) }), te && d.jsxs("div", { className: "flex items-center gap-2 mt-2 px-3 py-2 bg-blue-50 dark:bg-blue-900/20 rounded-xl", children: [d.jsx(yi, { size: 14, className: "text-blue-500 shrink-0" }), d.jsxs("p", { className: "text-[10px] font-black uppercase tracking-widest text-blue-500", children: [q.items.filter(oe => { const Z = o.find(ie => ie.id === oe); return (Z == null ? void 0 : Z.status) === "laundry" }).length, " ", N("piecesInLaundry")] })] }), q.sections && q.sections.length > 0 && d.jsx("div", { className: "flex items-center gap-1 mt-4 overflow-x-auto custom-scrollbar no-scrollbar", children: q.sections.map(oe => { const Z = Ne.find(ie => ie.id === oe); return Z ? d.jsxs("span", { className: "text-[10px] font-bold px-2 py-0.5 rounded-md bg-gray-100 dark:bg-gray-800 text-gray-500 whitespace-nowrap", children: [Z.emoji, " ", Z.name] }, Z.id) : null }) })] }, q.id) }; return d.jsxs(d.Fragment, { children: [d.jsxs("div", { className: "space-y-6", children: [d.jsxs("div", { className: "flex items-center justify-between px-2 flex-wrap gap-4", children: [d.jsxs("div", { className: "flex items-center gap-3", children: [d.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-green-500" }), d.jsxs("h3", { className: "text-2xl font-black tracking-tighter text-inherit", children: [N("lookHistory"), " ", d.jsxs("span", { className: "text-sm font-bold opacity-40", children: ["— ", N("availableLooks"), " (", M.length, ")"] })] })] }), d.jsxs("div", { className: "flex items-center gap-2", children: [d.jsxs("button", { onClick: xn, className: `flex items-center gap-2 px-4 py-2 rounded-xl font-black text-[10px] uppercase tracking-widest transition-colors ${m ? "bg-primary-900/30 text-primary-400 hover:bg-primary-900/50" : "bg-primary-50 text-primary-600 hover:bg-primary-100"}`, title: N("pasteSharedLookLink") || "Colar link de look", children: [d.jsx(nT, { size: 14 }), " ", d.jsx("span", { className: "hidden sm:inline", children: N("pasteLink") || "Colar Link" })] }), d.jsx(Sd, { size: 16, className: "text-gray-400 ml-2" }), d.jsxs("select", { value: P, onChange: q => T(q.target.value), className: `p-2 rounded-xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold text-xs ${m ? "bg-gray-800 text-white" : "bg-gray-100"}`, children: [d.jsx("option", { value: "", children: N("all") || "Todas as cores" }), ["Vermelho", "Azul", "Amarelo", "Verde", "Laranja", "Roxo", "Branco", "Preto", "Cinzento", "Bege"].map(q => d.jsx("option", { value: q, children: q }, q))] })] })] }), M.length > 0 ? d.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-8", children: M.map(Q) }) : d.jsx("div", { className: "py-12 text-center opacity-20 font-black uppercase tracking-[0.3em] text-sm", children: N("noLooksAvailable") })] }), U.length > 0 && d.jsxs("div", { className: "space-y-6", children: [d.jsxs("div", { className: "flex items-center gap-3 px-2", children: [d.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-blue-400" }), d.jsxs("h3", { className: "text-2xl font-black tracking-tighter text-inherit", children: ["A ser lavados ", d.jsxs("span", { className: "text-sm font-bold opacity-40", children: ["— ", N("unavailable"), " (", U.length, ")"] })] })] }), d.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-8", children: U.map(Q) })] })] }) })() })] }) }), (t === "add" || t === "edit") && d.jsx("div", { className: "max-w-4xl mx-auto animate-in zoom-in-95 duration-500", children: d.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-12 items-start", children: [d.jsxs("div", { className: "space-y-8", children: [d.jsx("h3", { className: "text-5xl font-black tracking-tighter text-inherit", children: N(p ? "edit" : "newItem") }), d.jsx(Qe, { className: "aspect-[3/4] overflow-hidden shadow-2xl relative", darkMode: m, children: V ? d.jsx("img", { src: V, className: "w-full h-full object-cover", alt: "" }) : d.jsxs("div", { className: "h-full flex flex-col items-center justify-center opacity-10", children: [d.jsx(Id, { size: 100 }), d.jsx("p", { className: "font-black uppercase tracking-[0.5em] mt-6", children: N("preview") })] }) })] }), d.jsx(Qe, { className: "p-10 shadow-2xl", darkMode: m, children: d.jsxs("form", { onSubmit: Hc, className: "space-y-8", children: [d.jsx(Ro, { label: N("name"), name: "name", defaultValue: p == null ? void 0 : p.name, required: !0 }), d.jsxs("div", { className: "space-y-2", children: [d.jsx("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: N("category") }), d.jsxs("select", { name: "category", defaultValue: (p == null ? void 0 : p.category) || "Tops", className: `w-full p-5 rounded-2xl border-none outline-none focus:ring-4 focus:ring-primary-500/10 font-bold ${m ? "bg-gray-700 text-white" : "bg-gray-100"}`, children: [d.jsx("option", { children: N("tops") }), d.jsx("option", { children: N("bottoms") }), d.jsx("option", { children: N("footwear") }), d.jsx("option", { children: N("coats") }), d.jsx("option", { children: N("accessories") })] })] }), d.jsxs("label", { className: "flex items-center gap-3 p-4 rounded-xl border border-gray-100 dark:border-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors", children: [d.jsx("input", { type: "checkbox", name: "isWishlist", defaultChecked: (p == null ? void 0 : p.status) === "wishlist", className: "w-5 h-5 text-primary-600 focus:ring-primary-500 rounded-lg" }), d.jsxs("div", { children: [d.jsx("span", { className: "font-bold text-sm text-inherit", children: N("wishlist") || N("wishlistDesc") }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50", children: N("addFuturePurchase") })] })] }), d.jsxs("div", { className: "space-y-2", children: [d.jsxs("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: [N("color"), " *"] }), d.jsx("div", { className: "flex flex-wrap gap-2", children: ["Vermelho", "Azul", "Amarelo", "Verde", "Laranja", "Roxo", "Branco", "Preto", "Cinzento", "Bege"].map(g => d.jsx("button", { type: "button", onClick: () => { E.includes(g) ? I(E.filter(M => M !== g)) : I([...E, g]) }, className: `px-4 py-2 rounded-xl text-xs font-bold transition-all border-2 ${E.includes(g) ? "border-primary-600 bg-primary-600 text-white shadow-lg shadow-primary-600/30" : "border-transparent bg-gray-100 dark:bg-gray-800 text-gray-500 hover:bg-gray-200 dark:hover:bg-gray-700"}`, children: g }, g)) }), d.jsx("input", { type: "hidden", name: "color", value: E.join(", ") }), E.length === 0 && d.jsx("p", { className: "text-[10px] text-red-500 uppercase tracking-widest font-black mt-2", children: "Selecione pelo menos uma cor" })] }), d.jsxs("div", { className: "space-y-4", children: [d.jsxs("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit flex items-center gap-2", children: [d.jsx(Id, { size: 12 }), " ", N("imageUrl"), " ou Upload"] }), d.jsxs("div", { className: "flex flex-col gap-3", children: [d.jsx("input", { type: "text", name: "imageUrl", value: V, onChange: g => S(g.target.value), placeholder: "https://...", className: `w-full p-5 rounded-2xl border-none outline-none focus:ring-4 focus:ring-primary-500/10 font-bold transition-all ${m ? "bg-gray-700 text-white" : "bg-gray-100 text-gray-900"}` }), d.jsxs("div", { className: "flex items-center gap-4", children: [d.jsx("div", { className: "h-px bg-gray-200 dark:bg-gray-700 flex-1" }), d.jsx("span", { className: "text-[10px] font-black uppercase tracking-widest opacity-30", children: "OU" }), d.jsx("div", { className: "h-px bg-gray-200 dark:bg-gray-700 flex-1" })] }), d.jsxs("label", { className: `flex items-center justify-center gap-3 p-5 rounded-2xl cursor-pointer transition-all font-black text-[10px] uppercase tracking-widest border-2 border-dashed ${m ? "bg-gray-800 border-gray-700 hover:border-primary-500 hover:text-primary-400" : "bg-gray-50 border-gray-200 hover:border-primary-400 hover:text-primary-600"}`, children: [d.jsx(Id, { size: 16 }), d.jsx("span", { children: "Upload da Galeria / Ficheiros" }), d.jsx("input", { type: "file", accept: "image/*", className: "hidden", onChange: al })] })] })] }), d.jsxs("div", { className: "space-y-3", children: [d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit flex items-center gap-2", children: [d.jsx(Ng, { size: 12 }), " ", N("assignSections")] }), d.jsxs("button", { type: "button", onClick: () => Xt(!0), className: "text-[10px] font-black uppercase tracking-widest text-primary-600 hover:text-primary-700 flex items-center gap-1", children: [d.jsx(Ol, { size: 10 }), " ", N("createSection")] })] }), Ne.length === 0 ? d.jsx("div", { className: "p-4 border-2 border-dashed border-gray-200 dark:border-gray-800 rounded-2xl text-center", children: d.jsx("p", { className: "text-[10px] font-black uppercase tracking-widest opacity-40", children: N("noSectionsCreated") }) }) : d.jsx("div", { className: "flex flex-wrap gap-2", children: Ne.map(g => d.jsxs("button", { type: "button", onClick: () => { fr.includes(g.id) ? ai(fr.filter(M => M !== g.id)) : ai([...fr, g.id]) }, className: `flex items-center gap-2 px-4 py-2 rounded-xl text-xs font-bold transition-all border-2 ${fr.includes(g.id) ? "border-primary-600 bg-primary-600 text-white shadow-lg shadow-primary-600/30" : "border-transparent bg-gray-100 dark:bg-gray-800 text-gray-500 hover:bg-gray-200 dark:hover:bg-gray-700"}`, children: [d.jsx("span", { children: g.emoji }), " ", g.name, fr.includes(g.id) && d.jsx(Er, { size: 12 })] }, g.id)) })] }), d.jsxs("div", { className: "flex gap-4 pt-6", children: [d.jsx("button", { type: "button", onClick: () => { v(null), S(""), e("closet") }, className: "flex-1 font-black uppercase text-[10px] opacity-40 hover:opacity-100 tracking-widest transition-all text-inherit", children: N("cancel") }), d.jsx("button", { type: "submit", className: "flex-1 py-5 bg-primary-600 text-white rounded-[2rem] font-black uppercase tracking-widest text-[10px] shadow-2xl shadow-primary-600/40 hover:scale-[1.02] active:scale-95 transition-all", children: N(p ? "save" : "register") })] })] }) })] }) }), t === "profile" && d.jsxs("div", { className: "max-w-4xl mx-auto space-y-12 animate-in fade-in duration-700 pb-20", children: [d.jsx(Qe, { className: "p-10 border-primary-100 relative overflow-hidden", darkMode: m, children: d.jsxs("div", { className: "flex items-center gap-8 relative z-10 text-inherit", children: [d.jsxs("div", { className: "w-24 h-24 rounded-[2.5rem] bg-primary-600 flex items-center justify-center text-white text-4xl font-black shadow-2xl relative overflow-hidden group cursor-pointer", children: [O != null && O.avatar ? d.jsx("img", { src: O.avatar, className: "w-full h-full object-cover", alt: "Profile" }) : d.jsx("span", { children: (((pi = O == null ? void 0 : O.fullName) == null ? void 0 : pi[0]) || ((po = O == null ? void 0 : O.username) == null ? void 0 : po[0]) || ((ke = n == null ? void 0 : n.email) == null ? void 0 : ke[0]) || "U").toUpperCase() }), d.jsxs("label", { className: "absolute inset-0 bg-black/50 flex flex-col items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer text-white", children: [d.jsx(Vl, { size: 20 }), d.jsx("span", { className: "text-[8px] uppercase font-black mt-1 tracking-widest", children: N("edit") }), d.jsx("input", { type: "file", accept: "image/*", className: "hidden", onChange: Kc })] })] }), d.jsxs("div", { children: [d.jsx("h3", { className: "text-3xl font-black tracking-tighter", children: (O == null ? void 0 : O.fullName) || N("yourAccount") }), d.jsxs("p", { className: "opacity-60 font-bold text-sm", children: ["@", (O == null ? void 0 : O.username) || ((mi = n == null ? void 0 : n.email) == null ? void 0 : mi.split("@")[0]) || N("papMode")] })] })] }) }), d.jsxs(Qe, { className: "p-8", darkMode: m, children: [d.jsxs("h3", { className: "text-xl font-black mb-6 flex items-center gap-3 text-inherit", children: [d.jsx(xg, { className: "text-primary-600" }), " ", N("profileInfo")] }), d.jsxs("form", { onSubmit: ll, className: "space-y-6", children: [d.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [d.jsx(Ro, { label: N("username"), name: "username", defaultValue: (O == null ? void 0 : O.username) || "", placeholder: "Ex: amari" }), d.jsx(Ro, { label: N("fullName"), name: "fullName", defaultValue: (O == null ? void 0 : O.fullName) || "", placeholder: "Ex: Amari Rodriguez" }), d.jsxs("div", { className: "space-y-2", children: [d.jsxs("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: [N("dob"), " ", N("optional")] }), d.jsxs("div", { className: "flex gap-2", children: [d.jsxs("select", { name: "dobDay", defaultValue: ((yr = O == null ? void 0 : O.dob) == null ? void 0 : yr.split("-")[2]) || "", className: `flex-1 p-4 rounded-xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold ${m ? "bg-gray-800 text-white" : "bg-gray-50"}`, children: [d.jsx("option", { value: "", children: "DD" }), Array.from({ length: 31 }, (g, M) => String(M + 1).padStart(2, "0")).map(g => d.jsx("option", { value: g, children: g }, g))] }), d.jsxs("select", { name: "dobMonth", defaultValue: ((vr = O == null ? void 0 : O.dob) == null ? void 0 : vr.split("-")[1]) || "", className: `flex-1 p-4 rounded-xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold ${m ? "bg-gray-800 text-white" : "bg-gray-50"}`, children: [d.jsx("option", { value: "", children: "MM" }), Array.from({ length: 12 }, (g, M) => String(M + 1).padStart(2, "0")).map(g => d.jsx("option", { value: g, children: g }, g))] }), d.jsxs("select", { name: "dobYear", defaultValue: ((cl = O == null ? void 0 : O.dob) == null ? void 0 : cl.split("-")[0]) || "", className: `flex-[1.5] p-4 rounded-xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold ${m ? "bg-gray-800 text-white" : "bg-gray-50"}`, children: [d.jsx("option", { value: "", children: "YYYY" }), Array.from({ length: 100 }, (g, M) => new Date().getFullYear() - M).map(g => d.jsx("option", { value: g, children: g }, g))] })] })] }), d.jsx(Ro, { label: `${N("bio")} ${N("optional")}`, name: "bio", defaultValue: (O == null ? void 0 : O.bio) || "", placeholder: "..." }), d.jsx(Ro, { label: N("location"), name: "location", defaultValue: (O == null ? void 0 : O.location) || "", placeholder: N("locationEx") })] }), d.jsx("button", { disabled: Qt, type: "submit", className: "w-full py-4 bg-primary-600 text-white rounded-xl font-black uppercase text-[10px] tracking-widest shadow-xl shadow-primary-600/30 disabled:opacity-50 hover:scale-[1.01] transition-all", children: N(Qt ? "saving" : "save") })] }, `${O == null ? void 0 : O.username}-${O == null ? void 0 : O.fullName}-${O == null ? void 0 : O.dob}-${O == null ? void 0 : O.bio}-${O == null ? void 0 : O.location}`)] })] }), t === "settings" && d.jsxs("div", { className: "max-w-4xl mx-auto space-y-12 animate-in fade-in duration-700 pb-20", children: [d.jsxs("div", { className: "flex flex-col gap-8", children: [d.jsxs(Qe, { className: "p-8", darkMode: m, children: [d.jsxs("h3", { className: "text-xl font-black mb-6 flex items-center gap-3 text-inherit", children: [d.jsx(Ad, { className: "text-primary-600" }), " ", N("preferences")] }), d.jsxs("div", { className: "space-y-6", children: [d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("div", { children: [d.jsx("p", { className: "font-bold text-inherit", children: N("darkMode") }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50 text-inherit", children: N("interfaceAppearance") })] }), d.jsx("button", { onClick: () => oo(!m), className: `w-14 h-8 rounded-full transition-colors relative ${m ? "bg-primary-600" : "bg-gray-200"}`, children: d.jsx("div", { className: `w-6 h-6 rounded-full bg-white absolute top-1 transition-all ${m ? "left-7" : "left-1"}` }) })] }), d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("div", { children: [d.jsx("p", { className: "font-bold text-inherit", children: N("themeColor") || "Cor do Tema" }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50 text-inherit", children: N("personalizeColor") || "Personalize a cor" })] }), d.jsx("div", { className: "flex gap-2", children: [{ id: "theme-indigo", color: "#4f46e5" }, { id: "theme-rose", color: "#e11d48" }, { id: "theme-emerald", color: "#10b981" }, { id: "theme-amber", color: "#f59e0b" }, { id: "theme-slate", color: "#64748b" }].map(g => d.jsx("button", { onClick: () => Wc(g.id), className: `w-6 h-6 rounded-full transition-all flex items-center justify-center ${Vn === g.id ? "ring-2 ring-offset-2 ring-offset-white dark:ring-offset-gray-900 ring-primary-500 scale-110" : "hover:scale-110"}`, style: { backgroundColor: g.color }, children: Vn === g.id && d.jsx(Er, { size: 12, className: "text-white" }) }, g.id)) })] }), d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("div", { children: [d.jsx("p", { className: "font-bold text-inherit flex items-center gap-2", children: N("notifications") }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50 text-inherit", children: N("lookReminders") })] }), d.jsx("button", { onClick: () => Za(!Vt), className: `w-14 h-8 rounded-full transition-colors relative ${Vt ? "bg-primary-600" : "bg-gray-200"}`, children: d.jsx("div", { className: `w-6 h-6 rounded-full bg-white absolute top-1 transition-all ${Vt ? "left-7" : "left-1"}` }) })] }), d.jsxs("div", { className: "flex items-center justify-between", children: [d.jsxs("div", { children: [d.jsx("p", { className: "font-bold text-inherit flex items-center gap-2", children: N("weatherAlerts") }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50 text-inherit", children: N("weatherSuggestions") })] }), d.jsx("button", { onClick: () => ao(!eo), className: `w-14 h-8 rounded-full transition-colors relative ${eo ? "bg-primary-600" : "bg-gray-200"}`, children: d.jsx("div", { className: `w-6 h-6 rounded-full bg-white absolute top-1 transition-all ${eo ? "left-7" : "left-1"}` }) })] }), d.jsxs("div", { className: "flex items-center justify-between pt-4 border-t border-gray-100 dark:border-gray-800", children: [d.jsxs("div", { children: [d.jsx("p", { className: "font-bold text-inherit", children: N("appLanguage") }), d.jsx("p", { className: "text-[10px] uppercase tracking-widest opacity-50 text-inherit", children: Ft === "PT" ? "🇵🇹 " + N("portuguese") : Ft === "EN" ? "🇬🇧 " + N("english") : Ft === "ES" ? "🇪🇸 " + N("spanish") : Ft === "FR" ? "🇫🇷 " + N("french") : Ft === "DE" ? "🇩🇪 " + N("german") : Ft })] }), d.jsx("button", { onClick: () => cr(!0), className: "px-5 py-2 font-black text-[10px] uppercase tracking-widest bg-primary-50 text-primary-600 rounded-xl hover:bg-primary-100 transition-colors dark:bg-primary-900/40 dark:text-primary-400", children: N("edit") })] })] })] }), d.jsxs(Qe, { className: "p-8", darkMode: m, children: [d.jsxs("h3", { className: "text-xl font-black mb-6 flex items-center gap-3 text-inherit", children: [d.jsx(jl, { className: "text-primary-600" }), " ", N("feedbackTitle") || "Suporte e Feedback"] }), d.jsx("p", { className: "opacity-60 text-sm font-medium mb-6", children: N("feedbackDesc") || "Tem alguma ideia, sugestão ou encontrou algum problema? Envie uma mensagem diretamente para nós!" }), d.jsxs("form", { onSubmit: async g => { g.preventDefault(); const M = new FormData(g.target), U = M.get("type"), Q = M.get("message"), q = "faiker027@gmail.com"; try { if ((await fetch(`https://formsubmit.co/ajax/${q}`, { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify({ Tipo: U, Mensagem: Q, Utilizador: (n == null ? void 0 : n.email) || "Desconhecido", _subject: `MyCloset Feedback: ${U}` }) })).ok) Jt(N("msgSentSuccess")), setTimeout(() => Jt(null), 4e3), g.target.reset(); else throw new Error("Falha no envio") } catch (te) { console.error("Erro ao enviar feedback:", te), Jt(N("msgSendError")), setTimeout(() => Jt(null), 4e3) } }, className: "space-y-4", children: [d.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [d.jsxs("label", { className: "flex items-center gap-3 p-4 rounded-xl border border-gray-100 dark:border-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors", children: [d.jsx("input", { type: "radio", name: "type", value: "Ideia/Sugestão", defaultChecked: !0, className: "text-primary-600 focus:ring-primary-500" }), d.jsx("span", { className: "font-bold text-sm text-inherit", children: "Ideia / Sugestão" })] }), d.jsxs("label", { className: "flex items-center gap-3 p-4 rounded-xl border border-gray-100 dark:border-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors", children: [d.jsx("input", { type: "radio", name: "type", value: "Bug/Erro", className: "text-primary-600 focus:ring-primary-500" }), d.jsx("span", { className: "font-bold text-sm text-inherit", children: "Bug / Erro" })] })] }), d.jsx("textarea", { name: "message", required: !0, placeholder: N("writeMessage"), rows: 4, className: `w-full p-4 rounded-xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold resize-none ${m ? "bg-gray-800 text-white" : "bg-gray-50"}` }), d.jsx("button", { type: "submit", className: "w-full py-4 bg-primary-600 text-white rounded-xl font-black uppercase text-[10px] tracking-widest shadow-xl shadow-primary-600/30 hover:scale-[1.01] transition-all", children: "Enviar Mensagem" })] })] })] }), d.jsxs("div", { className: "space-y-6", children: [d.jsxs("div", { className: "flex items-center justify-between px-2 text-inherit", children: [d.jsxs("h3", { className: "text-xl font-black text-red-500 flex items-center gap-3 tracking-widest uppercase", children: [d.jsx(hT, { size: 24 }), " ", N("recycleBin")] }), di.length > 0 && d.jsx("button", { onClick: ol, className: "text-[10px] font-black text-red-500 uppercase tracking-widest hover:underline", children: N("empty") })] }), d.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: di.map(g => d.jsxs(Qe, { className: "p-4 flex items-center gap-5 border-red-50", darkMode: m, children: [d.jsx("img", { src: g.imageUrl, className: "w-16 h-16 rounded-2xl object-cover grayscale opacity-40", alt: "" }), d.jsxs("div", { className: "flex-1 min-w-0 text-inherit", children: [d.jsx("p", { className: "font-black text-sm truncate", children: g.name }), d.jsx("p", { className: "text-[10px] font-black text-red-400 uppercase tracking-tighter", children: N("deleted") })] }), d.jsxs("div", { className: "flex gap-1", children: [d.jsx("button", { onClick: () => kn("restore", g), className: "p-3 text-primary-600 hover:bg-primary-50 rounded-2xl transition-all", children: d.jsx(lT, { size: 18 }) }), d.jsx("button", { onClick: () => kn("delete", g.id), className: "p-3 text-red-600 hover:bg-red-50 rounded-2xl transition-all", children: d.jsx(Nd, { size: 18 }) })] })] }, g.id)) })] }), d.jsx(Qe, { className: "p-10 border-red-200 bg-red-50/10", darkMode: m, children: d.jsxs("div", { className: "flex flex-col md:flex-row items-center justify-between gap-8", children: [d.jsxs("div", { className: "text-inherit", children: [d.jsxs("h4", { className: "text-xl font-black text-red-700 flex items-center gap-3", children: [d.jsx(cT, {}), " ", N("criticalZone")] }), d.jsx("p", { className: "opacity-60 font-bold text-sm mt-2", children: N("fullCleanActions") })] }), d.jsx("button", { onClick: qc, className: "px-8 py-4 bg-red-600 text-white rounded-2xl font-black uppercase text-[10px] tracking-widest hover:bg-red-700 transition-all", children: N("clearAll") })] }) })] })] })] }), so && d.jsx("div", { className: "fixed bottom-8 left-1/2 transform -translate-x-1/2 z-[300] animate-in slide-in-from-bottom-5", children: d.jsxs("div", { className: "bg-gray-900 text-white px-6 py-3 rounded-full shadow-2xl font-bold text-sm tracking-wide flex items-center gap-3", children: [d.jsx(Eg, { size: 18, className: "text-green-400" }), so] }) }), Ja && d.jsx("div", { className: "fixed inset-0 z-[200] flex items-center justify-center bg-black/60 backdrop-blur-sm p-6", onClick: () => Ge(!1), children: d.jsxs(Qe, { className: "w-full max-w-md p-8 animate-in zoom-in-95 flex flex-col max-h-[80vh]", darkMode: m, onClick: g => g.stopPropagation(), children: [d.jsxs("div", { className: "flex items-center justify-between mb-8", children: [d.jsxs("h3", { className: "text-2xl font-black text-inherit flex items-center gap-3", children: [d.jsx(jl, { size: 24, className: "text-primary-600" }), " ", N("notificationsModal")] }), d.jsx("button", { onClick: () => Ge(!1), className: "p-2 bg-gray-100 dark:bg-gray-800 rounded-full hover:scale-110 transition-all text-inherit", children: d.jsx(No, { size: 20 }) })] }), d.jsx("div", { className: "flex-1 overflow-y-auto space-y-4 custom-scrollbar", children: Xi.length === 0 ? d.jsx("div", { className: "py-12 text-center opacity-30 font-black uppercase tracking-[0.3em] text-sm", children: N("noNotifications") }) : Xi.map(g => d.jsxs("div", { className: `p-4 rounded-2xl flex items-start gap-4 ${g.read ? "bg-gray-50 dark:bg-gray-800" : "bg-primary-50 dark:bg-primary-900/20"}`, children: [d.jsx("div", { className: `p-3 rounded-full ${g.read ? "bg-gray-200 text-gray-500 dark:bg-gray-700" : "bg-primary-100 text-primary-600 dark:bg-primary-900/40 dark:text-primary-400"}`, children: d.jsx(jl, { size: 20 }) }), d.jsxs("div", { className: "flex-1", children: [d.jsx("p", { className: "font-bold text-sm text-inherit", children: g.type === "look_copied" && d.jsxs(d.Fragment, { children: ["O utilizador ", d.jsx("span", { className: "text-primary-600", children: g.copiedByEmail }), ' guardou o seu look "', g.lookName, '" ', N("inTheirCloset")] }) }), d.jsxs("p", { className: "text-[10px] uppercase font-black tracking-widest opacity-40 mt-2", children: [new Date(g.createdAt).toLocaleDateString(), " às ", new Date(g.createdAt).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })] })] }), !g.read && d.jsx("button", { onClick: async () => { const M = Ye(ve, "artifacts", Te, "users", n.uid, "notifications", g.id); await Bn(M, { read: !0 }) }, className: "p-2 text-primary-600 hover:bg-primary-100 dark:hover:bg-primary-900/40 rounded-xl", children: d.jsx(Er, { size: 16 }) })] }, g.id)) })] }) }), zc && d.jsx("div", { className: "fixed inset-0 z-[200] flex items-center justify-center bg-black/60 backdrop-blur-sm p-6", onClick: () => Xt(!1), children: d.jsxs(Qe, { className: "w-full max-w-lg p-8 animate-in zoom-in-95 flex flex-col max-h-[90vh]", darkMode: m, onClick: g => g.stopPropagation(), children: [d.jsxs("div", { className: "flex items-center justify-between mb-8", children: [d.jsxs("h3", { className: "text-2xl font-black text-inherit flex items-center gap-3", children: [d.jsx(Tg, { size: 24, className: "text-primary-600" }), " ", N("manageSections")] }), d.jsx("button", { onClick: () => Xt(!1), className: "p-2 bg-gray-100 dark:bg-gray-800 rounded-full hover:scale-110 transition-all text-inherit", children: d.jsx(No, { size: 20 }) })] }), d.jsxs("div", { className: `flex gap-3 mb-8 p-4 rounded-2xl ${m ? "bg-gray-800" : "bg-gray-50"}`, children: [d.jsx("input", { value: Qi, onChange: g => Xa(g.target.value), placeholder: N("emojiPlaceholder"), maxLength: 2, className: `w-16 p-3 rounded-xl border-none outline-none font-bold text-center text-lg ${m ? "bg-gray-700 text-white" : "bg-white"} shadow-sm` }), d.jsx("input", { value: oi, onChange: g => ro(g.target.value), placeholder: N("sectionPlaceholder"), onKeyDown: g => g.key === "Enter" && tl(), className: `flex-1 p-3 rounded-xl border-none outline-none font-bold ${m ? "bg-gray-700 text-white" : "bg-white"} shadow-sm` }), d.jsx("button", { onClick: tl, disabled: !oi.trim(), className: "px-5 py-3 bg-primary-600 text-white rounded-xl font-black text-[10px] uppercase tracking-widest shadow-lg shadow-primary-600/30 hover:scale-105 active:scale-95 transition-all disabled:opacity-30", children: d.jsx(Ol, { size: 18 }) })] }), d.jsx("div", { className: "flex-1 overflow-y-auto space-y-3 custom-scrollbar", children: Ne.length === 0 ? d.jsx("div", { className: "py-12 text-center opacity-30 font-black uppercase tracking-[0.3em] text-sm", children: N("noSections") }) : Ne.map(g => d.jsx("div", { className: `flex items-center gap-4 p-4 rounded-2xl transition-all ${m ? "bg-gray-800" : "bg-gray-50"}`, children: Fn === g.id ? d.jsxs(d.Fragment, { children: [d.jsx("input", { value: io, onChange: M => mr(M.target.value), maxLength: 2, className: `w-12 p-2 rounded-xl border-none outline-none font-bold text-center text-lg ${m ? "bg-gray-700 text-white" : "bg-white"} shadow-sm` }), d.jsx("input", { value: pr, onChange: M => cn(M.target.value), onKeyDown: M => M.key === "Enter" && uo(), className: `flex-1 p-2 rounded-xl border-none outline-none font-bold text-sm ${m ? "bg-gray-700 text-white" : "bg-white"} shadow-sm` }), d.jsx("button", { onClick: uo, disabled: !pr.trim(), className: "p-2 bg-green-500 text-white rounded-xl shadow-md hover:scale-105 disabled:opacity-30", children: d.jsx(Er, { size: 16 }) }), d.jsx("button", { onClick: () => li(null), className: "p-2 bg-gray-200 dark:bg-gray-700 text-gray-500 dark:text-gray-400 rounded-xl hover:scale-105", children: d.jsx(No, { size: 16 }) })] }) : d.jsxs(d.Fragment, { children: [d.jsx("span", { className: "text-2xl w-10 text-center", children: g.emoji }), d.jsxs("div", { className: "flex-1 min-w-0", children: [d.jsx("p", { className: "font-black text-sm truncate", children: g.name }), d.jsxs("p", { className: "text-[10px] opacity-40 font-bold uppercase tracking-widest", children: [o.filter(M => M.sections && M.sections.includes(g.id)).length, " ", N("pieces"), " • ", u.filter(M => M.sections && M.sections.includes(g.id)).length, " look(s)"] })] }), d.jsx("button", { onClick: () => { li(g.id), cn(g.name), mr(g.emoji) }, className: "p-2 text-gray-400 hover:text-primary-600 hover:bg-primary-50 dark:hover:bg-primary-900/20 rounded-xl transition-all", children: d.jsx(Vl, { size: 16 }) }), d.jsx("button", { onClick: () => es(g.id), className: "p-2 text-red-400 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-xl transition-all", children: d.jsx(Nd, { size: 16 }) })] }) }, g.id)) }), d.jsx("button", { onClick: () => Xt(!1), className: "mt-8 w-full py-4 font-black uppercase text-[10px] tracking-widest text-gray-500 hover:text-gray-900 dark:hover:text-white transition-colors", children: N("cancel") })] }) }), ii && d.jsx("div", { className: "fixed inset-0 z-[200] flex items-center justify-center bg-black/60 backdrop-blur-sm p-6", onClick: () => Nt(!1), children: d.jsxs(Qe, { className: "w-full max-w-lg p-8 animate-in zoom-in-95 flex flex-col max-h-[90vh]", darkMode: m, onClick: g => g.stopPropagation(), children: [d.jsxs("div", { className: "flex items-center justify-between mb-8", children: [d.jsxs("h3", { className: "text-2xl font-black text-inherit flex items-center gap-3", children: [d.jsx(Sd, { size: 24, className: "text-primary-600" }), " ", N("advancedFilters")] }), d.jsx("button", { onClick: () => Nt(!1), className: "p-2 bg-gray-100 dark:bg-gray-800 rounded-full hover:scale-110 transition-all text-inherit", children: d.jsx(No, { size: 20 }) })] }), d.jsxs("div", { className: "flex-1 overflow-y-auto space-y-8 pr-2 custom-scrollbar", children: [d.jsxs("div", { className: "space-y-4", children: [d.jsx("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: N("closet") }), d.jsx("div", { className: "flex flex-wrap gap-2", children: [N("all"), N("tops"), N("bottoms"), N("footwear"), N("coats"), N("accessories")].map(g => d.jsx("button", { onClick: () => A(g), className: `px-5 py-3 rounded-xl font-black text-[10px] uppercase tracking-widest transition-all ${k === g ? "bg-primary-600 text-white shadow-xl shadow-primary-600/30" : m ? "bg-gray-800 text-gray-400" : "bg-gray-50 text-gray-500 shadow-sm border border-gray-100"} hover:scale-[1.02]`, children: g }, g)) })] }), d.jsxs("div", { className: "space-y-4", children: [d.jsx("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: N("filterByColor") }), d.jsxs("select", { value: P, onChange: g => T(g.target.value), className: `w-full p-4 rounded-2xl border-none outline-none focus:ring-2 focus:ring-primary-500 font-bold ${m ? "bg-gray-800 text-white" : "bg-gray-50"}`, children: [d.jsx("option", { value: "", children: N("all") }), co.map(g => d.jsx("option", { value: g, children: g }, g))] })] }), d.jsxs("div", { className: "space-y-4", children: [d.jsx("label", { className: "text-[10px] font-black uppercase opacity-40 tracking-widest ml-1 text-inherit", children: N("filterByAge") }), d.jsx("div", { className: "grid grid-cols-2 gap-2", children: [{ id: "any", label: N("anyAge") }, { id: "month", label: N("lessThanMonth") }, { id: "6months", label: N("lessThan6Months") }, { id: "1year", label: N("lessThanYear") }, { id: "older", label: N("older") }].map(g => d.jsx("button", { onClick: () => ln(g.id), className: `px-4 py-3 rounded-xl font-bold text-xs transition-all ${ze === g.id ? "bg-primary-600 text-white shadow-xl shadow-primary-600/30" : m ? "bg-gray-800 text-gray-400" : "bg-gray-50 text-gray-500"} ${g.id === "any" ? "col-span-2" : ""}`, children: g.label }, g.id)) })] })] }), d.jsxs("div", { className: "pt-8 flex gap-4 border-t mt-8 border-gray-100 dark:border-gray-800", children: [d.jsx("button", { onClick: () => { A("Todos"), T(""), ln("any") }, className: "flex-1 py-4 font-black uppercase text-[10px] tracking-widest text-gray-500 hover:text-gray-900 dark:hover:text-white transition-colors", children: N("clearAll") }), d.jsx("button", { onClick: () => Nt(!1), className: "flex-1 py-4 bg-primary-600 text-white rounded-2xl font-black uppercase text-[10px] tracking-widest shadow-xl shadow-primary-600/30 hover:scale-105 transition-all", children: N("applyFilters") })] })] }) }), no && d.jsx("div", { className: "fixed inset-0 z-[200] flex items-center justify-center bg-black/60 backdrop-blur-sm p-6", onClick: () => cr(!1), children: d.jsxs(Qe, { className: "w-full max-w-lg p-8 animate-in zoom-in-95", darkMode: m, onClick: g => g.stopPropagation(), children: [d.jsx("h3", { className: "text-2xl font-black mb-8 text-center text-inherit", children: N("appLanguage") }), d.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4", children: [{ id: "PT", flag: "🇵🇹", label: N("portuguese") }, { id: "EN", flag: "🇬🇧", label: N("english") }, { id: "ES", flag: "🇪🇸", label: N("spanish") }, { id: "FR", flag: "🇫🇷", label: N("french") }, { id: "DE", flag: "🇩🇪", label: N("german") }].map(g => d.jsxs("button", { onClick: () => Ji(g.id), className: `p-6 rounded-2xl flex flex-col items-center justify-center gap-4 transition-all ${Ft === g.id ? "bg-primary-600 text-white shadow-xl shadow-primary-600/30 scale-105" : "bg-gray-50 text-gray-600 hover:bg-gray-100 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"}`, children: [d.jsx("span", { className: "text-4xl", children: g.flag }), d.jsx("span", { className: "font-black text-[10px] uppercase tracking-widest text-center", children: g.label })] }, g.id)) }), d.jsx("button", { onClick: () => cr(!1), className: "w-full mt-8 py-4 uppercase font-black text-[10px] tracking-widest text-gray-500 hover:text-gray-900 dark:hover:text-white transition-colors", children: N("cancel") })] }) }), Ya && it && d.jsx("div", { className: "fixed inset-0 z-[300] flex items-center justify-center bg-black/70 backdrop-blur-md p-6", onClick: () => { Wi(!1), hr(null) }, children: d.jsxs("div", { className: `w-full max-w-lg rounded-[2rem] shadow-2xl overflow-hidden animate-in zoom-in-95 duration-300 ${m ? "bg-gray-900" : "bg-white"}`, onClick: g => g.stopPropagation(), children: [d.jsxs("div", { className: "relative p-8 pb-6", style: { background: "linear-gradient(135deg, hsl(var(--primary-600)), hsl(var(--primary-400)))" }, children: [d.jsx("div", { className: "absolute inset-0 opacity-20", style: { backgroundImage: "radial-gradient(circle at 80% 20%, white 0%, transparent 60%)" } }), d.jsxs("div", { className: "relative z-10", children: [d.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [d.jsx("div", { className: "p-2 bg-white/20 rounded-xl backdrop-blur-sm", children: d.jsx(Ag, { size: 20, className: "text-white" }) }), d.jsx("span", { className: "text-white/80 font-black uppercase text-[10px] tracking-widest", children: N("sharedLookTitle") })] }), d.jsx("h2", { className: "text-3xl font-black text-white tracking-tight", children: it.lookName }), d.jsxs("p", { className: "text-white/60 text-sm font-bold mt-1", children: [it.items.length, " peça", it.items.length !== 1 ? "s" : "", " • ", N("sharedBy"), " ", ((mo = it.ownerEmail) == null ? void 0 : mo.split("@")[0]) || N("someone")] })] })] }), d.jsxs("div", { className: `p-8 ${m ? "bg-gray-900" : "bg-white"}`, children: [d.jsx("p", { className: "text-[10px] font-black uppercase tracking-widest opacity-40 mb-4", children: N("includedPieces") }), d.jsx("div", { className: "flex flex-wrap gap-3 mb-8", children: it.items.map((g, M) => d.jsxs("div", { className: "relative group/item", children: [d.jsx("div", { className: "w-20 h-20 rounded-2xl overflow-hidden border-2 border-gray-100 dark:border-gray-700 shadow-lg", children: d.jsx("img", { src: g.imageUrl, alt: g.name, className: "w-full h-full object-cover group-hover/item:scale-110 transition-transform duration-500" }) }), d.jsx("div", { className: "absolute -bottom-1 left-1/2 -translate-x-1/2 bg-gray-900/90 text-white text-[8px] font-black uppercase tracking-wide px-2 py-0.5 rounded-full whitespace-nowrap opacity-0 group-hover/item:opacity-100 transition-opacity", children: g.name })] }, M)) }), d.jsx("div", { className: "space-y-2 mb-8 max-h-32 overflow-y-auto custom-scrollbar", children: it.items.map((g, M) => d.jsxs("div", { className: `flex items-center gap-3 px-4 py-2.5 rounded-xl ${m ? "bg-gray-800" : "bg-gray-50"}`, children: [d.jsx("span", { className: "text-xs font-black truncate flex-1", children: g.name }), d.jsx("span", { className: "text-[9px] font-black uppercase tracking-widest opacity-40 shrink-0", children: g.category })] }, M)) }), d.jsxs("div", { className: "flex gap-3", children: [d.jsx("button", { onClick: () => { Wi(!1), hr(null) }, className: `flex-1 py-4 font-black uppercase text-[10px] tracking-widest rounded-2xl transition-all ${m ? "bg-gray-800 text-gray-400 hover:bg-gray-700" : "bg-gray-100 text-gray-500 hover:bg-gray-200"}`, children: "Ignorar" }), d.jsx("button", { onClick: ho, disabled: Hi, className: "flex-[2] py-4 font-black uppercase text-[10px] tracking-widest rounded-2xl text-white shadow-xl transition-all hover:scale-[1.02] active:scale-95 disabled:opacity-60 flex items-center justify-center gap-2", style: { background: "linear-gradient(135deg, hsl(var(--primary-600)), hsl(var(--primary-500)))" }, children: Hi ? d.jsxs(d.Fragment, { children: [d.jsx(Ig, { size: 16, className: "animate-spin" }), " ", N("copying")] }) : d.jsxs(d.Fragment, { children: [d.jsx(Er, { size: 16 }), " ", N("copyToMyCloset")] }) })] })] })] }) })]
|
|
})
|
|
} $d.createRoot(document.getElementById("root")).render(d.jsx(FE.StrictMode, { children: d.jsx(sN, {}) }));
|