{"version":3,"file":"app.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@sentry/types/esm/session.js","../../../node_modules/@sentry/types/esm/severity.js","../../../node_modules/@sentry/types/esm/status.js","../../../node_modules/@sentry/utils/esm/is.js","../../../node_modules/@sentry/utils/esm/browser.js","../../../node_modules/@sentry/utils/esm/polyfill.js","../../../node_modules/@sentry/utils/esm/error.js","../../../node_modules/@sentry/utils/esm/dsn.js","../../../node_modules/@sentry/utils/esm/node.js","../../../node_modules/@sentry/utils/esm/string.js","../../../node_modules/@sentry/utils/esm/misc.js","../../../node_modules/@sentry/utils/esm/logger.js","../../../node_modules/@sentry/utils/esm/memo.js","../../../node_modules/@sentry/utils/esm/stacktrace.js","../../../node_modules/@sentry/utils/esm/object.js","../../../node_modules/@sentry/utils/esm/supports.js","../../../node_modules/@sentry/utils/esm/instrument.js","../../../node_modules/@sentry/utils/esm/syncpromise.js","../../../node_modules/@sentry/utils/esm/promisebuffer.js","../../../node_modules/@sentry/utils/esm/time.js","../../../node_modules/@sentry/hub/esm/scope.js","../../../node_modules/@sentry/hub/esm/hub.js","../../../node_modules/@sentry/hub/esm/session.js","../../../node_modules/@sentry/minimal/esm/index.js","../../../node_modules/@sentry/core/esm/api.js","../../../node_modules/@sentry/core/esm/integration.js","../../../node_modules/@sentry/core/esm/baseclient.js","../../../node_modules/@sentry/core/esm/transports/noop.js","../../../node_modules/@sentry/core/esm/basebackend.js","../../../node_modules/@sentry/core/esm/request.js","../../../node_modules/@sentry/core/esm/sdk.js","../../../node_modules/@sentry/core/esm/version.js","../../../node_modules/@sentry/core/esm/integrations/functiontostring.js","../../../node_modules/@sentry/core/esm/integrations/inboundfilters.js","../../../node_modules/@sentry/browser/esm/tracekit.js","../../../node_modules/@sentry/browser/esm/parsers.js","../../../node_modules/@sentry/browser/esm/eventbuilder.js","../../../node_modules/@sentry/browser/esm/transports/base.js","../../../node_modules/@sentry/browser/esm/transports/fetch.js","../../../node_modules/@sentry/browser/esm/transports/xhr.js","../../../node_modules/@sentry/browser/esm/backend.js","../../../node_modules/@sentry/browser/esm/helpers.js","../../../node_modules/@sentry/browser/esm/integrations/globalhandlers.js","../../../node_modules/@sentry/browser/esm/integrations/trycatch.js","../../../node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","../../../node_modules/@sentry/browser/esm/integrations/linkederrors.js","../../../node_modules/@sentry/browser/esm/integrations/useragent.js","../../../node_modules/@sentry/browser/esm/client.js","../../../node_modules/@sentry/browser/esm/sdk.js","../../../src/common/core/sentry.js","../../../node_modules/js-cookie/dist/js.cookie.mjs","../../../src/common/blocks/cookie-consent/cookie-consent.js","../../../src/common/core/animations.js","../../../src/common/blocks/faq/faq.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/now.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/debounce.js","../../../src/common/blocks/filter-list/filter-list.js","../../../src/common/blocks/lightbox/lightbox.js","../../../node_modules/@maskito/core/index.esm.js","../../../node_modules/@maskito/kit/index.esm.js","../../../src/common/core/phone-mask.ts","../../../src/common/core/masks.js","../../../src/common/blocks/header/header.js","../../../src/common/blocks/modals/modals.js","../../../src/common/blocks/textarea-auto-expand/textarea-auto-expand.js","../../../src/common/core/ozon-delivery.js","../../../src/tele2/clicks.js","../../../src/tele2/blocks/inputs/inputs.js","../../../src/common/blocks/inputreader/inputreader.js","../../../src/tele2/blocks/inputreader/inputreader.js","../../../node_modules/ssr-window/dist/ssr-window.esm.js","../../../node_modules/dom7/dist/dom7.modular.js","../../../node_modules/swiper/dist/js/swiper.esm.bundle.js","../../../src/tele2/blocks/sliders/sliders.js","../../../src/common/blocks/validations/validations.js","../../../src/tele2/blocks/form/validations.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../node_modules/@tanstack/query-core/build/modern/utils.js","../../../node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../../node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../node_modules/@tanstack/query-core/build/modern/retryer.js","../../../node_modules/@tanstack/query-core/build/modern/removable.js","../../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/@tanstack/query-core/build/modern/query.js","../../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../node_modules/@tanstack/query-core/build/modern/mutation.js","../../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../node_modules/@tanstack/react-query/build/modern/useQuery.js","../../../node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../node_modules/scheduler/cjs/scheduler.production.js","../../../node_modules/scheduler/index.js","../../../node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/cjs/react-dom-client.production.js","../../../node_modules/react-dom/client.js","../../../src/common/core/query-client.ts","../../../node_modules/@maskito/react/index.esm.js","../../../src/common/core/api.ts","../../../src/common/core/phone-confirmation-api.ts","../../../src/common/blocks/modal/Modal.tsx","../../../src/common/blocks/ozon-delivery/PhoneCodeModal.tsx","../../../src/common/blocks/ozon-delivery/OzonPhoneSection.tsx","../../../src/common/core/ozon-api.ts","../../../src/common/core/site-config.ts","../../../src/common/core/ozon-point-format.ts","../../../src/common/blocks/toast/ToastProvider.tsx","../../../src/common/core/yandex-maps-react.ts","../../../src/common/blocks/yandex-map/YandexMapsProvider.tsx","../../../src/common/core/dadata-suggest.ts","../../../src/common/core/yandex-geocoder.ts","../../../src/common/core/yandex-suggest.ts","../../../src/common/core/address-service.ts","../../../src/common/core/user-geolocation.ts","../../../src/common/core/use-debounce.ts","../../../src/common/blocks/yandex-map/AddressSearch.tsx","../../../src/common/blocks/yandex-map/MapErrorIcon.tsx","../../../src/common/blocks/ozon-map-modal/OzonPointsPanel.tsx","../../../src/common/blocks/ozon-map-modal/useNearbyOzonPoints.ts","../../../src/common/blocks/ozon-map-modal/OzonPointsList.tsx","../../../src/common/blocks/yandex-map/YandexMap.tsx","../../../src/common/blocks/ozon-map-modal/OzonPointPins.tsx","../../../src/common/blocks/ozon-map-modal/useOzonMapClusters.ts","../../../src/common/blocks/ozon-map-modal/OzonPointsMap.tsx","../../../src/common/blocks/ozon-map-modal/OzonMapModal.tsx","../../../src/common/blocks/ozon-delivery/OzonPointSection.tsx","../../../src/common/blocks/ozon-delivery/OzonRegionSection.tsx","../../../src/common/blocks/ozon-delivery/OzonDelivery.tsx","../../../src/common/blocks/ozon-delivery/index.tsx","../../../src/tele2/blocks/ozon-delivery/index.tsx","../../../src/tele2/app.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/**\n * Session Status\n */\nexport var SessionStatus;\n(function (SessionStatus) {\n    /** JSDoc */\n    SessionStatus[\"Ok\"] = \"ok\";\n    /** JSDoc */\n    SessionStatus[\"Exited\"] = \"exited\";\n    /** JSDoc */\n    SessionStatus[\"Crashed\"] = \"crashed\";\n    /** JSDoc */\n    SessionStatus[\"Abnormal\"] = \"abnormal\";\n})(SessionStatus || (SessionStatus = {}));\nexport var RequestSessionStatus;\n(function (RequestSessionStatus) {\n    /** JSDoc */\n    RequestSessionStatus[\"Ok\"] = \"ok\";\n    /** JSDoc */\n    RequestSessionStatus[\"Errored\"] = \"errored\";\n    /** JSDoc */\n    RequestSessionStatus[\"Crashed\"] = \"crashed\";\n})(RequestSessionStatus || (RequestSessionStatus = {}));\n//# sourceMappingURL=session.js.map","/** JSDoc */\n// eslint-disable-next-line import/export\nexport var Severity;\n(function (Severity) {\n    /** JSDoc */\n    Severity[\"Fatal\"] = \"fatal\";\n    /** JSDoc */\n    Severity[\"Error\"] = \"error\";\n    /** JSDoc */\n    Severity[\"Warning\"] = \"warning\";\n    /** JSDoc */\n    Severity[\"Log\"] = \"log\";\n    /** JSDoc */\n    Severity[\"Info\"] = \"info\";\n    /** JSDoc */\n    Severity[\"Debug\"] = \"debug\";\n    /** JSDoc */\n    Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Severity) {\n    /**\n     * Converts a string-based level into a {@link Severity}.\n     *\n     * @param level string representation of Severity\n     * @returns Severity\n     */\n    function fromString(level) {\n        switch (level) {\n            case 'debug':\n                return Severity.Debug;\n            case 'info':\n                return Severity.Info;\n            case 'warn':\n            case 'warning':\n                return Severity.Warning;\n            case 'error':\n                return Severity.Error;\n            case 'fatal':\n                return Severity.Fatal;\n            case 'critical':\n                return Severity.Critical;\n            case 'log':\n            default:\n                return Severity.Log;\n        }\n    }\n    Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","/** The status of an event. */\n// eslint-disable-next-line import/export\nexport var Status;\n(function (Status) {\n    /** The status could not be determined. */\n    Status[\"Unknown\"] = \"unknown\";\n    /** The event was skipped due to configuration or callbacks. */\n    Status[\"Skipped\"] = \"skipped\";\n    /** The event was sent to Sentry successfully. */\n    Status[\"Success\"] = \"success\";\n    /** The client is currently rate limited and will try again later. */\n    Status[\"RateLimit\"] = \"rate_limit\";\n    /** The event could not be processed. */\n    Status[\"Invalid\"] = \"invalid\";\n    /** A server-side error ocurred during submission. */\n    Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Status) {\n    /**\n     * Converts a HTTP status code into a {@link Status}.\n     *\n     * @param code The HTTP response status code.\n     * @returns The send status or {@link Status.Unknown}.\n     */\n    function fromHttpCode(code) {\n        if (code >= 200 && code < 300) {\n            return Status.Success;\n        }\n        if (code === 429) {\n            return Status.RateLimit;\n        }\n        if (code >= 400 && code < 500) {\n            return Status.Invalid;\n        }\n        if (code >= 500) {\n            return Status.Failed;\n        }\n        return Status.Unknown;\n    }\n    Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n    switch (Object.prototype.toString.call(wat)) {\n        case '[object Error]':\n            return true;\n        case '[object Exception]':\n            return true;\n        case '[object DOMException]':\n            return true;\n        default:\n            return isInstanceOf(wat, Error);\n    }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n    return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n    return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n    return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n    return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n    return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n    return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat) {\n    return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat) {\n    return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n    return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n    return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat, base) {\n    try {\n        return wat instanceof base;\n    }\n    catch (_e) {\n        return false;\n    }\n}\n//# sourceMappingURL=is.js.map","import { isString } from './is';\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem) {\n    // try/catch both:\n    // - accessing event.target (see getsentry/raven-js#838, #768)\n    // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n    // - can throw an exception in some circumstances.\n    try {\n        var currentElem = elem;\n        var MAX_TRAVERSE_HEIGHT = 5;\n        var MAX_OUTPUT_LEN = 80;\n        var out = [];\n        var height = 0;\n        var len = 0;\n        var separator = ' > ';\n        var sepLength = separator.length;\n        var nextStr = void 0;\n        // eslint-disable-next-line no-plusplus\n        while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n            nextStr = _htmlElementAsString(currentElem);\n            // bail out if\n            // - nextStr is the 'html' element\n            // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n            //   (ignore this limit if we are on the first iteration)\n            if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n                break;\n            }\n            out.push(nextStr);\n            len += nextStr.length;\n            currentElem = currentElem.parentNode;\n        }\n        return out.reverse().join(separator);\n    }\n    catch (_oO) {\n        return '<unknown>';\n    }\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el) {\n    var elem = el;\n    var out = [];\n    var className;\n    var classes;\n    var key;\n    var attr;\n    var i;\n    if (!elem || !elem.tagName) {\n        return '';\n    }\n    out.push(elem.tagName.toLowerCase());\n    if (elem.id) {\n        out.push(\"#\" + elem.id);\n    }\n    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n        classes = className.split(/\\s+/);\n        for (i = 0; i < classes.length; i++) {\n            out.push(\".\" + classes[i]);\n        }\n    }\n    var allowedAttrs = ['type', 'name', 'title', 'alt'];\n    for (i = 0; i < allowedAttrs.length; i++) {\n        key = allowedAttrs[i];\n        attr = elem.getAttribute(key);\n        if (attr) {\n            out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n        }\n    }\n    return out.join('');\n}\n//# sourceMappingURL=browser.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n    // @ts-ignore __proto__ does not exist on obj\n    obj.__proto__ = proto;\n    return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n    for (var prop in proto) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (!obj.hasOwnProperty(prop)) {\n            // @ts-ignore typescript complains about indexing so we remove\n            obj[prop] = proto[prop];\n        }\n    }\n    return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n    __extends(SentryError, _super);\n    function SentryError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = _newTarget.prototype.constructor.name;\n        setPrototypeOf(_this, _newTarget.prototype);\n        return _this;\n    }\n    return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import { __read } from \"tslib\";\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n    /** Creates a new Dsn component */\n    function Dsn(from) {\n        if (typeof from === 'string') {\n            this._fromString(from);\n        }\n        else {\n            this._fromComponents(from);\n        }\n        this._validate();\n    }\n    /**\n     * Renders the string representation of this Dsn.\n     *\n     * By default, this will render the public representation without the password\n     * component. To get the deprecated private representation, set `withPassword`\n     * to true.\n     *\n     * @param withPassword When set to true, the password will be included.\n     */\n    Dsn.prototype.toString = function (withPassword) {\n        if (withPassword === void 0) { withPassword = false; }\n        var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, publicKey = _a.publicKey;\n        return (protocol + \"://\" + publicKey + (withPassword && pass ? \":\" + pass : '') +\n            (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n    };\n    /** Parses a string into this Dsn. */\n    Dsn.prototype._fromString = function (str) {\n        var match = DSN_REGEX.exec(str);\n        if (!match) {\n            throw new SentryError(ERROR_MESSAGE);\n        }\n        var _a = __read(match.slice(1), 6), protocol = _a[0], publicKey = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n        var path = '';\n        var projectId = lastPath;\n        var split = projectId.split('/');\n        if (split.length > 1) {\n            path = split.slice(0, -1).join('/');\n            projectId = split.pop();\n        }\n        if (projectId) {\n            var projectMatch = projectId.match(/^\\d+/);\n            if (projectMatch) {\n                projectId = projectMatch[0];\n            }\n        }\n        this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, publicKey: publicKey });\n    };\n    /** Maps Dsn components into this instance. */\n    Dsn.prototype._fromComponents = function (components) {\n        // TODO this is for backwards compatibility, and can be removed in a future version\n        if ('user' in components && !('publicKey' in components)) {\n            components.publicKey = components.user;\n        }\n        this.user = components.publicKey || '';\n        this.protocol = components.protocol;\n        this.publicKey = components.publicKey || '';\n        this.pass = components.pass || '';\n        this.host = components.host;\n        this.port = components.port || '';\n        this.path = components.path || '';\n        this.projectId = components.projectId;\n    };\n    /** Validates this Dsn and throws on error. */\n    Dsn.prototype._validate = function () {\n        var _this = this;\n        ['protocol', 'publicKey', 'host', 'projectId'].forEach(function (component) {\n            if (!_this[component]) {\n                throw new SentryError(ERROR_MESSAGE + \": \" + component + \" missing\");\n            }\n        });\n        if (!this.projectId.match(/^\\d+$/)) {\n            throw new SentryError(ERROR_MESSAGE + \": Invalid projectId \" + this.projectId);\n        }\n        if (this.protocol !== 'http' && this.protocol !== 'https') {\n            throw new SentryError(ERROR_MESSAGE + \": Invalid protocol \" + this.protocol);\n        }\n        if (this.port && isNaN(parseInt(this.port, 10))) {\n            throw new SentryError(ERROR_MESSAGE + \": Invalid port \" + this.port);\n        }\n    };\n    return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n    return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod, request) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return mod.require(request);\n}\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName) {\n    var mod;\n    try {\n        mod = dynamicRequire(module, moduleName);\n    }\n    catch (e) {\n        // no-empty\n    }\n    try {\n        var cwd = dynamicRequire(module, 'process').cwd;\n        mod = dynamicRequire(module, cwd() + \"/node_modules/\" + moduleName);\n    }\n    catch (e) {\n        // no-empty\n    }\n    return mod;\n}\n//# sourceMappingURL=node.js.map","import { isRegExp, isString } from './is';\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str, max) {\n    if (max === void 0) { max = 0; }\n    if (typeof str !== 'string' || max === 0) {\n        return str;\n    }\n    return str.length <= max ? str : str.substr(0, max) + \"...\";\n}\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line, colno) {\n    var newLine = line;\n    var ll = newLine.length;\n    if (ll <= 150) {\n        return newLine;\n    }\n    if (colno > ll) {\n        // eslint-disable-next-line no-param-reassign\n        colno = ll;\n    }\n    var start = Math.max(colno - 60, 0);\n    if (start < 5) {\n        start = 0;\n    }\n    var end = Math.min(start + 140, ll);\n    if (end > ll - 5) {\n        end = ll;\n    }\n    if (end === ll) {\n        start = Math.max(end - 140, 0);\n    }\n    newLine = newLine.slice(start, end);\n    if (start > 0) {\n        newLine = \"'{snip} \" + newLine;\n    }\n    if (end < ll) {\n        newLine += ' {snip}';\n    }\n    return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input, delimiter) {\n    if (!Array.isArray(input)) {\n        return '';\n    }\n    var output = [];\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (var i = 0; i < input.length; i++) {\n        var value = input[i];\n        try {\n            output.push(String(value));\n        }\n        catch (e) {\n            output.push('[value cannot be serialized]');\n        }\n    }\n    return output.join(delimiter);\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n    if (!isString(value)) {\n        return false;\n    }\n    if (isRegExp(pattern)) {\n        return pattern.test(value);\n    }\n    if (typeof pattern === 'string') {\n        return value.indexOf(pattern) !== -1;\n    }\n    return false;\n}\n//# sourceMappingURL=string.js.map","import { isNodeEnv } from './node';\nimport { snipLine } from './string';\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n    return (isNodeEnv()\n        ? global\n        : typeof window !== 'undefined'\n            ? window\n            : typeof self !== 'undefined'\n                ? self\n                : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n    var global = getGlobalObject();\n    var crypto = global.crypto || global.msCrypto;\n    if (!(crypto === void 0) && crypto.getRandomValues) {\n        // Use window.crypto API if available\n        var arr = new Uint16Array(8);\n        crypto.getRandomValues(arr);\n        // set 4 in byte 7\n        // eslint-disable-next-line no-bitwise\n        arr[3] = (arr[3] & 0xfff) | 0x4000;\n        // set 2 most significant bits of byte 9 to '10'\n        // eslint-disable-next-line no-bitwise\n        arr[4] = (arr[4] & 0x3fff) | 0x8000;\n        var pad = function (num) {\n            var v = num.toString(16);\n            while (v.length < 4) {\n                v = \"0\" + v;\n            }\n            return v;\n        };\n        return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n    }\n    // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n    return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        // eslint-disable-next-line no-bitwise\n        var r = (Math.random() * 16) | 0;\n        // eslint-disable-next-line no-bitwise\n        var v = c === 'x' ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n    });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n    if (!url) {\n        return {};\n    }\n    var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n    if (!match) {\n        return {};\n    }\n    // coerce to undefined values to empty string so we don't get 'undefined'\n    var query = match[6] || '';\n    var fragment = match[8] || '';\n    return {\n        host: match[4],\n        path: match[5],\n        protocol: match[2],\n        relative: match[5] + query + fragment,\n    };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n    if (event.message) {\n        return event.message;\n    }\n    if (event.exception && event.exception.values && event.exception.values[0]) {\n        var exception = event.exception.values[0];\n        if (exception.type && exception.value) {\n            return exception.type + \": \" + exception.value;\n        }\n        return exception.type || exception.value || event.event_id || '<unknown>';\n    }\n    return event.event_id || '<unknown>';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n    var global = getGlobalObject();\n    var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n    if (!('console' in global)) {\n        return callback();\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    var originalConsole = global.console;\n    var wrappedLevels = {};\n    // Restore all wrapped console methods\n    levels.forEach(function (level) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        if (level in global.console && originalConsole[level].__sentry_original__) {\n            wrappedLevels[level] = originalConsole[level];\n            originalConsole[level] = originalConsole[level].__sentry_original__;\n        }\n    });\n    // Perform callback manipulations\n    var result = callback();\n    // Revert restoration to wrapped state\n    Object.keys(wrappedLevels).forEach(function (level) {\n        originalConsole[level] = wrappedLevels[level];\n    });\n    return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type) {\n    event.exception = event.exception || {};\n    event.exception.values = event.exception.values || [];\n    event.exception.values[0] = event.exception.values[0] || {};\n    event.exception.values[0].value = event.exception.values[0].value || value || '';\n    event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(event, mechanism) {\n    if (mechanism === void 0) { mechanism = {}; }\n    // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n    try {\n        // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n        Object.keys(mechanism).forEach(function (key) {\n            // @ts-ignore Mechanism has no index signature\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            event.exception.values[0].mechanism[key] = mechanism[key];\n        });\n    }\n    catch (_oO) {\n        // no-empty\n    }\n}\n/**\n * A safe form of location.href\n */\nexport function getLocationHref() {\n    try {\n        return document.location.href;\n    }\n    catch (oO) {\n        return '';\n    }\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input) {\n    var match = input.match(SEMVER_REGEXP) || [];\n    var major = parseInt(match[1], 10);\n    var minor = parseInt(match[2], 10);\n    var patch = parseInt(match[3], 10);\n    return {\n        buildmetadata: match[5],\n        major: isNaN(major) ? undefined : major,\n        minor: isNaN(minor) ? undefined : minor,\n        patch: isNaN(patch) ? undefined : patch,\n        prerelease: match[4],\n    };\n}\nvar defaultRetryAfter = 60 * 1000; // 60 seconds\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now, header) {\n    if (!header) {\n        return defaultRetryAfter;\n    }\n    var headerDelay = parseInt(\"\" + header, 10);\n    if (!isNaN(headerDelay)) {\n        return headerDelay * 1000;\n    }\n    var headerDate = Date.parse(\"\" + header);\n    if (!isNaN(headerDate)) {\n        return headerDate - now;\n    }\n    return defaultRetryAfter;\n}\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n    if (linesOfContext === void 0) { linesOfContext = 5; }\n    var lineno = frame.lineno || 0;\n    var maxLines = lines.length;\n    var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n    frame.pre_context = lines\n        .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n        .map(function (line) { return snipLine(line, 0); });\n    frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n    frame.post_context = lines\n        .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n        .map(function (line) { return snipLine(line, 0); });\n}\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath) {\n    // eslint-disable-next-line no-useless-escape\n    return urlPath.split(/[\\?#]/, 1)[0];\n}\n//# sourceMappingURL=misc.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n    /** JSDoc */\n    function Logger() {\n        this._enabled = false;\n    }\n    /** JSDoc */\n    Logger.prototype.disable = function () {\n        this._enabled = false;\n    };\n    /** JSDoc */\n    Logger.prototype.enable = function () {\n        this._enabled = true;\n    };\n    /** JSDoc */\n    Logger.prototype.log = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (!this._enabled) {\n            return;\n        }\n        consoleSandbox(function () {\n            global.console.log(PREFIX + \"[Log]: \" + args.join(' '));\n        });\n    };\n    /** JSDoc */\n    Logger.prototype.warn = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (!this._enabled) {\n            return;\n        }\n        consoleSandbox(function () {\n            global.console.warn(PREFIX + \"[Warn]: \" + args.join(' '));\n        });\n    };\n    /** JSDoc */\n    Logger.prototype.error = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (!this._enabled) {\n            return;\n        }\n        consoleSandbox(function () {\n            global.console.error(PREFIX + \"[Error]: \" + args.join(' '));\n        });\n    };\n    return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n    function Memo() {\n        this._hasWeakSet = typeof WeakSet === 'function';\n        this._inner = this._hasWeakSet ? new WeakSet() : [];\n    }\n    /**\n     * Sets obj to remember.\n     * @param obj Object to remember\n     */\n    Memo.prototype.memoize = function (obj) {\n        if (this._hasWeakSet) {\n            if (this._inner.has(obj)) {\n                return true;\n            }\n            this._inner.add(obj);\n            return false;\n        }\n        // eslint-disable-next-line @typescript-eslint/prefer-for-of\n        for (var i = 0; i < this._inner.length; i++) {\n            var value = this._inner[i];\n            if (value === obj) {\n                return true;\n            }\n        }\n        this._inner.push(obj);\n        return false;\n    };\n    /**\n     * Removes object from internal storage.\n     * @param obj Object to forget\n     */\n    Memo.prototype.unmemoize = function (obj) {\n        if (this._hasWeakSet) {\n            this._inner.delete(obj);\n        }\n        else {\n            for (var i = 0; i < this._inner.length; i++) {\n                if (this._inner[i] === obj) {\n                    this._inner.splice(i, 1);\n                    break;\n                }\n            }\n        }\n    };\n    return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map","var defaultFunctionName = '<anonymous>';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n    try {\n        if (!fn || typeof fn !== 'function') {\n            return defaultFunctionName;\n        }\n        return fn.name || defaultFunctionName;\n    }\n    catch (e) {\n        // Just accessing custom props in some Selenium environments\n        // can cause a \"Permission denied\" exception (see raven-js#495).\n        return defaultFunctionName;\n    }\n}\n//# sourceMappingURL=stacktrace.js.map","import { __values } from \"tslib\";\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source, name, replacementFactory) {\n    if (!(name in source)) {\n        return;\n    }\n    var original = source[name];\n    var wrapped = replacementFactory(original);\n    // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n    // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n    if (typeof wrapped === 'function') {\n        try {\n            wrapped.prototype = wrapped.prototype || {};\n            Object.defineProperties(wrapped, {\n                __sentry_original__: {\n                    enumerable: false,\n                    value: original,\n                },\n            });\n        }\n        catch (_Oo) {\n            // This can throw if multiple fill happens on a global object like XMLHttpRequest\n            // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n        }\n    }\n    source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n    return Object.keys(object)\n        .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n        .join('&');\n}\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nfunction getWalkSource(value) {\n    if (isError(value)) {\n        var error = value;\n        var err = {\n            message: error.message,\n            name: error.name,\n            stack: error.stack,\n        };\n        for (var i in error) {\n            if (Object.prototype.hasOwnProperty.call(error, i)) {\n                err[i] = error[i];\n            }\n        }\n        return err;\n    }\n    if (isEvent(value)) {\n        var event_1 = value;\n        var source = {};\n        source.type = event_1.type;\n        // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n        try {\n            source.target = isElement(event_1.target)\n                ? htmlTreeAsString(event_1.target)\n                : Object.prototype.toString.call(event_1.target);\n        }\n        catch (_oO) {\n            source.target = '<unknown>';\n        }\n        try {\n            source.currentTarget = isElement(event_1.currentTarget)\n                ? htmlTreeAsString(event_1.currentTarget)\n                : Object.prototype.toString.call(event_1.currentTarget);\n        }\n        catch (_oO) {\n            source.currentTarget = '<unknown>';\n        }\n        if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n            source.detail = event_1.detail;\n        }\n        for (var i in event_1) {\n            if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n                source[i] = event_1;\n            }\n        }\n        return source;\n    }\n    return value;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n    // eslint-disable-next-line no-bitwise\n    return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n    return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n    if (depth === void 0) { depth = 3; }\n    if (maxSize === void 0) { maxSize = 100 * 1024; }\n    var serialized = normalize(object, depth);\n    if (jsonSize(serialized) > maxSize) {\n        return normalizeToSize(object, depth - 1, maxSize);\n    }\n    return serialized;\n}\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n *  type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n *  unchanged.\n */\nfunction serializeValue(value) {\n    var type = Object.prototype.toString.call(value);\n    // Node.js REPL notation\n    if (typeof value === 'string') {\n        return value;\n    }\n    if (type === '[object Object]') {\n        return '[Object]';\n    }\n    if (type === '[object Array]') {\n        return '[Array]';\n    }\n    var normalized = normalizeValue(value);\n    return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value, key) {\n    if (key === 'domain' && value && typeof value === 'object' && value._events) {\n        return '[Domain]';\n    }\n    if (key === 'domainEmitter') {\n        return '[DomainEmitter]';\n    }\n    if (typeof global !== 'undefined' && value === global) {\n        return '[Global]';\n    }\n    if (typeof window !== 'undefined' && value === window) {\n        return '[Window]';\n    }\n    if (typeof document !== 'undefined' && value === document) {\n        return '[Document]';\n    }\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n        return '[SyntheticEvent]';\n    }\n    if (typeof value === 'number' && value !== value) {\n        return '[NaN]';\n    }\n    if (value === void 0) {\n        return '[undefined]';\n    }\n    if (typeof value === 'function') {\n        return \"[Function: \" + getFunctionName(value) + \"]\";\n    }\n    // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n    if (typeof value === 'symbol') {\n        return \"[\" + String(value) + \"]\";\n    }\n    if (typeof value === 'bigint') {\n        return \"[BigInt: \" + String(value) + \"]\";\n    }\n    return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key, value, depth, memo) {\n    if (depth === void 0) { depth = +Infinity; }\n    if (memo === void 0) { memo = new Memo(); }\n    // If we reach the maximum depth, serialize whatever has left\n    if (depth === 0) {\n        return serializeValue(value);\n    }\n    /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n    // If value implements `toJSON` method, call it and return early\n    if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n        return value.toJSON();\n    }\n    /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n    // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n    var normalized = normalizeValue(value, key);\n    if (isPrimitive(normalized)) {\n        return normalized;\n    }\n    // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n    var source = getWalkSource(value);\n    // Create an accumulator that will act as a parent for all future itterations of that branch\n    var acc = Array.isArray(value) ? [] : {};\n    // If we already walked that branch, bail out, as it's circular reference\n    if (memo.memoize(value)) {\n        return '[Circular ~]';\n    }\n    // Walk all keys of the source\n    for (var innerKey in source) {\n        // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n        if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n            continue;\n        }\n        // Recursively walk through all the child nodes\n        acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n    }\n    // Once walked through all the branches, remove the parent from memo storage\n    memo.unmemoize(value);\n    // Return accumulated values\n    return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input, depth) {\n    try {\n        return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n    }\n    catch (_oO) {\n        return '**non-serializable**';\n    }\n}\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n    if (maxLength === void 0) { maxLength = 40; }\n    var keys = Object.keys(getWalkSource(exception));\n    keys.sort();\n    if (!keys.length) {\n        return '[object has no keys]';\n    }\n    if (keys[0].length >= maxLength) {\n        return truncate(keys[0], maxLength);\n    }\n    for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n        var serialized = keys.slice(0, includedKeys).join(', ');\n        if (serialized.length > maxLength) {\n            continue;\n        }\n        if (includedKeys === keys.length) {\n            return serialized;\n        }\n        return truncate(serialized, maxLength);\n    }\n    return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n    var e_1, _a;\n    if (isPlainObject(val)) {\n        var obj = val;\n        var rv = {};\n        try {\n            for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var key = _c.value;\n                if (typeof obj[key] !== 'undefined') {\n                    rv[key] = dropUndefinedKeys(obj[key]);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        return rv;\n    }\n    if (Array.isArray(val)) {\n        return val.map(dropUndefinedKeys);\n    }\n    return val;\n}\n//# sourceMappingURL=object.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n    try {\n        new ErrorEvent('');\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n    try {\n        // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n        // 1 argument required, but only 0 present.\n        // @ts-ignore It really needs 1 argument, not 0.\n        new DOMError('');\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n    try {\n        new DOMException('');\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n    if (!('fetch' in getGlobalObject())) {\n        return false;\n    }\n    try {\n        new Headers();\n        new Request('');\n        new Response();\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func) {\n    return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n    if (!supportsFetch()) {\n        return false;\n    }\n    var global = getGlobalObject();\n    // Fast path to avoid DOM I/O\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    if (isNativeFetch(global.fetch)) {\n        return true;\n    }\n    // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n    // so create a \"pure\" iframe to see if that has native fetch\n    var result = false;\n    var doc = global.document;\n    // eslint-disable-next-line deprecation/deprecation\n    if (doc && typeof doc.createElement === \"function\") {\n        try {\n            var sandbox = doc.createElement('iframe');\n            sandbox.hidden = true;\n            doc.head.appendChild(sandbox);\n            if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n                // eslint-disable-next-line @typescript-eslint/unbound-method\n                result = isNativeFetch(sandbox.contentWindow.fetch);\n            }\n            doc.head.removeChild(sandbox);\n        }\n        catch (err) {\n            logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n        }\n    }\n    return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n    return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n    // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n    // https://caniuse.com/#feat=referrer-policy\n    // It doesn't. And it throw exception instead of ignoring this parameter...\n    // REF: https://github.com/getsentry/raven-js/issues/1233\n    if (!supportsFetch()) {\n        return false;\n    }\n    try {\n        new Request('_', {\n            referrerPolicy: 'origin',\n        });\n        return true;\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n    // NOTE: in Chrome App environment, touching history.pushState, *even inside\n    //       a try/catch block*, will cause Chrome to output an error to console.error\n    // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n    var global = getGlobalObject();\n    /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var chrome = global.chrome;\n    var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n    /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n    var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n    return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","import { __assign, __values } from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n *  - Console API\n *  - Fetch API\n *  - XHR API\n *  - History API\n *  - DOM API (click/typing)\n *  - Error API\n *  - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n    if (instrumented[type]) {\n        return;\n    }\n    instrumented[type] = true;\n    switch (type) {\n        case 'console':\n            instrumentConsole();\n            break;\n        case 'dom':\n            instrumentDOM();\n            break;\n        case 'xhr':\n            instrumentXHR();\n            break;\n        case 'fetch':\n            instrumentFetch();\n            break;\n        case 'history':\n            instrumentHistory();\n            break;\n        case 'error':\n            instrumentError();\n            break;\n        case 'unhandledrejection':\n            instrumentUnhandledRejection();\n            break;\n        default:\n            logger.warn('unknown instrumentation type:', type);\n    }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n    if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n        return;\n    }\n    handlers[handler.type] = handlers[handler.type] || [];\n    handlers[handler.type].push(handler.callback);\n    instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n    var e_1, _a;\n    if (!type || !handlers[type]) {\n        return;\n    }\n    try {\n        for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var handler = _c.value;\n            try {\n                handler(data);\n            }\n            catch (e) {\n                logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n    if (!('console' in global)) {\n        return;\n    }\n    ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n        if (!(level in global.console)) {\n            return;\n        }\n        fill(global.console, level, function (originalConsoleLevel) {\n            return function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                triggerHandlers('console', { args: args, level: level });\n                // this fails for some browsers. :(\n                if (originalConsoleLevel) {\n                    Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n                }\n            };\n        });\n    });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n    if (!supportsNativeFetch()) {\n        return;\n    }\n    fill(global, 'fetch', function (originalFetch) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var handlerData = {\n                args: args,\n                fetchData: {\n                    method: getFetchMethod(args),\n                    url: getFetchUrl(args),\n                },\n                startTimestamp: Date.now(),\n            };\n            triggerHandlers('fetch', __assign({}, handlerData));\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            return originalFetch.apply(global, args).then(function (response) {\n                triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));\n                return response;\n            }, function (error) {\n                triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));\n                // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n                //       it means the sentry.javascript SDK caught an error invoking your application code.\n                //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n                throw error;\n            });\n        };\n    });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n    if (fetchArgs === void 0) { fetchArgs = []; }\n    if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n        return String(fetchArgs[0].method).toUpperCase();\n    }\n    if (fetchArgs[1] && fetchArgs[1].method) {\n        return String(fetchArgs[1].method).toUpperCase();\n    }\n    return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n    if (fetchArgs === void 0) { fetchArgs = []; }\n    if (typeof fetchArgs[0] === 'string') {\n        return fetchArgs[0];\n    }\n    if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n        return fetchArgs[0].url;\n    }\n    return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n    if (!('XMLHttpRequest' in global)) {\n        return;\n    }\n    // Poor man's implementation of ES6 `Map`, tracking and keeping in sync key and value separately.\n    var requestKeys = [];\n    var requestValues = [];\n    var xhrproto = XMLHttpRequest.prototype;\n    fill(xhrproto, 'open', function (originalOpen) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            var xhr = this;\n            var url = args[1];\n            xhr.__sentry_xhr__ = {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n                method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n                url: args[1],\n            };\n            // if Sentry key appears in URL, don't capture it as a request\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n                xhr.__sentry_own_request__ = true;\n            }\n            var onreadystatechangeHandler = function () {\n                if (xhr.readyState === 4) {\n                    try {\n                        // touching statusCode in some platforms throws\n                        // an exception\n                        if (xhr.__sentry_xhr__) {\n                            xhr.__sentry_xhr__.status_code = xhr.status;\n                        }\n                    }\n                    catch (e) {\n                        /* do nothing */\n                    }\n                    try {\n                        var requestPos = requestKeys.indexOf(xhr);\n                        if (requestPos !== -1) {\n                            // Make sure to pop both key and value to keep it in sync.\n                            requestKeys.splice(requestPos);\n                            var args_1 = requestValues.splice(requestPos)[0];\n                            if (xhr.__sentry_xhr__ && args_1[0] !== undefined) {\n                                xhr.__sentry_xhr__.body = args_1[0];\n                            }\n                        }\n                    }\n                    catch (e) {\n                        /* do nothing */\n                    }\n                    triggerHandlers('xhr', {\n                        args: args,\n                        endTimestamp: Date.now(),\n                        startTimestamp: Date.now(),\n                        xhr: xhr,\n                    });\n                }\n            };\n            if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n                fill(xhr, 'onreadystatechange', function (original) {\n                    return function () {\n                        var readyStateArgs = [];\n                        for (var _i = 0; _i < arguments.length; _i++) {\n                            readyStateArgs[_i] = arguments[_i];\n                        }\n                        onreadystatechangeHandler();\n                        return original.apply(xhr, readyStateArgs);\n                    };\n                });\n            }\n            else {\n                xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n            }\n            return originalOpen.apply(xhr, args);\n        };\n    });\n    fill(xhrproto, 'send', function (originalSend) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            requestKeys.push(this);\n            requestValues.push(args);\n            triggerHandlers('xhr', {\n                args: args,\n                startTimestamp: Date.now(),\n                xhr: this,\n            });\n            return originalSend.apply(this, args);\n        };\n    });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n    if (!supportsHistory()) {\n        return;\n    }\n    var oldOnPopState = global.onpopstate;\n    global.onpopstate = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var to = global.location.href;\n        // keep track of the current URL state, as we always receive only the updated state\n        var from = lastHref;\n        lastHref = to;\n        triggerHandlers('history', {\n            from: from,\n            to: to,\n        });\n        if (oldOnPopState) {\n            // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n            // https://github.com/getsentry/sentry-javascript/issues/3344\n            // https://github.com/bugsnag/bugsnag-js/issues/469\n            try {\n                return oldOnPopState.apply(this, args);\n            }\n            catch (_oO) {\n                // no-empty\n            }\n        }\n    };\n    /** @hidden */\n    function historyReplacementFunction(originalHistoryFunction) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var url = args.length > 2 ? args[2] : undefined;\n            if (url) {\n                // coerce to string (this is what pushState does)\n                var from = lastHref;\n                var to = String(url);\n                // keep track of the current URL state, as we always receive only the updated state\n                lastHref = to;\n                triggerHandlers('history', {\n                    from: from,\n                    to: to,\n                });\n            }\n            return originalHistoryFunction.apply(this, args);\n        };\n    }\n    fill(global.history, 'pushState', historyReplacementFunction);\n    fill(global.history, 'replaceState', historyReplacementFunction);\n}\nvar debounceDuration = 1000;\nvar debounceTimerID;\nvar lastCapturedEvent;\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n    // If there was no previous event, it should always be swapped for the new one.\n    if (!previous) {\n        return true;\n    }\n    // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n    if (previous.type !== current.type) {\n        return true;\n    }\n    try {\n        // If both events have the same type, it's still possible that actions were performed on different targets.\n        // e.g. 2 clicks on different buttons.\n        if (previous.target !== current.target) {\n            return true;\n        }\n    }\n    catch (e) {\n        // just accessing `target` property can throw an exception in some rare circumstances\n        // see: https://github.com/getsentry/sentry-javascript/issues/838\n    }\n    // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n    // to which an event listener was attached), we treat them as the same action, as we want to capture\n    // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n    return false;\n}\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n    // We are only interested in filtering `keypress` events for now.\n    if (event.type !== 'keypress') {\n        return false;\n    }\n    try {\n        var target = event.target;\n        if (!target || !target.tagName) {\n            return true;\n        }\n        // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n        // e.g.tabbing through elements, hotkeys, etc.\n        if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n            return false;\n        }\n    }\n    catch (e) {\n        // just accessing `target` property can throw an exception in some rare circumstances\n        // see: https://github.com/getsentry/sentry-javascript/issues/838\n    }\n    return true;\n}\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener) {\n    if (globalListener === void 0) { globalListener = false; }\n    return function (event) {\n        // It's possible this handler might trigger multiple times for the same\n        // event (e.g. event propagation through node ancestors).\n        // Ignore if we've already captured that event.\n        if (!event || lastCapturedEvent === event) {\n            return;\n        }\n        // We always want to skip _some_ events.\n        if (shouldSkipDOMEvent(event)) {\n            return;\n        }\n        var name = event.type === 'keypress' ? 'input' : event.type;\n        // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n        if (debounceTimerID === undefined) {\n            handler({\n                event: event,\n                name: name,\n                global: globalListener,\n            });\n            lastCapturedEvent = event;\n        }\n        // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n        // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n        else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n            handler({\n                event: event,\n                name: name,\n                global: globalListener,\n            });\n            lastCapturedEvent = event;\n        }\n        // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n        clearTimeout(debounceTimerID);\n        debounceTimerID = global.setTimeout(function () {\n            debounceTimerID = undefined;\n        }, debounceDuration);\n    };\n}\n/** JSDoc */\nfunction instrumentDOM() {\n    if (!('document' in global)) {\n        return;\n    }\n    // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n    // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n    // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n    var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n    var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n    global.document.addEventListener('click', globalDOMEventHandler, false);\n    global.document.addEventListener('keypress', globalDOMEventHandler, false);\n    // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n    // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n    // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n    // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n    // guaranteed to fire at least once.)\n    ['EventTarget', 'Node'].forEach(function (target) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        var proto = global[target] && global[target].prototype;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n        if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n            return;\n        }\n        fill(proto, 'addEventListener', function (originalAddEventListener) {\n            return function (type, listener, options) {\n                if (type === 'click' || type == 'keypress') {\n                    try {\n                        var el = this;\n                        var handlers_1 = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n                        var handlerForType = (handlers_1[type] = handlers_1[type] || { refCount: 0 });\n                        if (!handlerForType.handler) {\n                            var handler = makeDOMEventHandler(triggerDOMHandler);\n                            handlerForType.handler = handler;\n                            originalAddEventListener.call(this, type, handler, options);\n                        }\n                        handlerForType.refCount += 1;\n                    }\n                    catch (e) {\n                        // Accessing dom properties is always fragile.\n                        // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n                    }\n                }\n                return originalAddEventListener.call(this, type, listener, options);\n            };\n        });\n        fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n            return function (type, listener, options) {\n                if (type === 'click' || type == 'keypress') {\n                    try {\n                        var el = this;\n                        var handlers_2 = el.__sentry_instrumentation_handlers__ || {};\n                        var handlerForType = handlers_2[type];\n                        if (handlerForType) {\n                            handlerForType.refCount -= 1;\n                            // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                            if (handlerForType.refCount <= 0) {\n                                originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                                handlerForType.handler = undefined;\n                                delete handlers_2[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                            }\n                            // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                            if (Object.keys(handlers_2).length === 0) {\n                                delete el.__sentry_instrumentation_handlers__;\n                            }\n                        }\n                    }\n                    catch (e) {\n                        // Accessing dom properties is always fragile.\n                        // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n                    }\n                }\n                return originalRemoveEventListener.call(this, type, listener, options);\n            };\n        });\n    });\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n    _oldOnErrorHandler = global.onerror;\n    global.onerror = function (msg, url, line, column, error) {\n        triggerHandlers('error', {\n            column: column,\n            error: error,\n            line: line,\n            msg: msg,\n            url: url,\n        });\n        if (_oldOnErrorHandler) {\n            // eslint-disable-next-line prefer-rest-params\n            return _oldOnErrorHandler.apply(this, arguments);\n        }\n        return false;\n    };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n    _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n    global.onunhandledrejection = function (e) {\n        triggerHandlers('unhandledrejection', e);\n        if (_oldOnUnhandledRejectionHandler) {\n            // eslint-disable-next-line prefer-rest-params\n            return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n        }\n        return true;\n    };\n}\n//# sourceMappingURL=instrument.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n/** SyncPromise internal states */\nvar States;\n(function (States) {\n    /** Pending */\n    States[\"PENDING\"] = \"PENDING\";\n    /** Resolved / OK */\n    States[\"RESOLVED\"] = \"RESOLVED\";\n    /** Rejected / Error */\n    States[\"REJECTED\"] = \"REJECTED\";\n})(States || (States = {}));\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n    function SyncPromise(executor) {\n        var _this = this;\n        this._state = States.PENDING;\n        this._handlers = [];\n        /** JSDoc */\n        this._resolve = function (value) {\n            _this._setResult(States.RESOLVED, value);\n        };\n        /** JSDoc */\n        this._reject = function (reason) {\n            _this._setResult(States.REJECTED, reason);\n        };\n        /** JSDoc */\n        this._setResult = function (state, value) {\n            if (_this._state !== States.PENDING) {\n                return;\n            }\n            if (isThenable(value)) {\n                void value.then(_this._resolve, _this._reject);\n                return;\n            }\n            _this._state = state;\n            _this._value = value;\n            _this._executeHandlers();\n        };\n        // TODO: FIXME\n        /** JSDoc */\n        this._attachHandler = function (handler) {\n            _this._handlers = _this._handlers.concat(handler);\n            _this._executeHandlers();\n        };\n        /** JSDoc */\n        this._executeHandlers = function () {\n            if (_this._state === States.PENDING) {\n                return;\n            }\n            var cachedHandlers = _this._handlers.slice();\n            _this._handlers = [];\n            cachedHandlers.forEach(function (handler) {\n                if (handler.done) {\n                    return;\n                }\n                if (_this._state === States.RESOLVED) {\n                    if (handler.onfulfilled) {\n                        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n                        handler.onfulfilled(_this._value);\n                    }\n                }\n                if (_this._state === States.REJECTED) {\n                    if (handler.onrejected) {\n                        handler.onrejected(_this._value);\n                    }\n                }\n                handler.done = true;\n            });\n        };\n        try {\n            executor(this._resolve, this._reject);\n        }\n        catch (e) {\n            this._reject(e);\n        }\n    }\n    /** JSDoc */\n    SyncPromise.resolve = function (value) {\n        return new SyncPromise(function (resolve) {\n            resolve(value);\n        });\n    };\n    /** JSDoc */\n    SyncPromise.reject = function (reason) {\n        return new SyncPromise(function (_, reject) {\n            reject(reason);\n        });\n    };\n    /** JSDoc */\n    SyncPromise.all = function (collection) {\n        return new SyncPromise(function (resolve, reject) {\n            if (!Array.isArray(collection)) {\n                reject(new TypeError(\"Promise.all requires an array as input.\"));\n                return;\n            }\n            if (collection.length === 0) {\n                resolve([]);\n                return;\n            }\n            var counter = collection.length;\n            var resolvedCollection = [];\n            collection.forEach(function (item, index) {\n                void SyncPromise.resolve(item)\n                    .then(function (value) {\n                    resolvedCollection[index] = value;\n                    counter -= 1;\n                    if (counter !== 0) {\n                        return;\n                    }\n                    resolve(resolvedCollection);\n                })\n                    .then(null, reject);\n            });\n        });\n    };\n    /** JSDoc */\n    SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n        var _this = this;\n        return new SyncPromise(function (resolve, reject) {\n            _this._attachHandler({\n                done: false,\n                onfulfilled: function (result) {\n                    if (!onfulfilled) {\n                        // TODO: ¯\\_(ツ)_/¯\n                        // TODO: FIXME\n                        resolve(result);\n                        return;\n                    }\n                    try {\n                        resolve(onfulfilled(result));\n                        return;\n                    }\n                    catch (e) {\n                        reject(e);\n                        return;\n                    }\n                },\n                onrejected: function (reason) {\n                    if (!onrejected) {\n                        reject(reason);\n                        return;\n                    }\n                    try {\n                        resolve(onrejected(reason));\n                        return;\n                    }\n                    catch (e) {\n                        reject(e);\n                        return;\n                    }\n                },\n            });\n        });\n    };\n    /** JSDoc */\n    SyncPromise.prototype.catch = function (onrejected) {\n        return this.then(function (val) { return val; }, onrejected);\n    };\n    /** JSDoc */\n    SyncPromise.prototype.finally = function (onfinally) {\n        var _this = this;\n        return new SyncPromise(function (resolve, reject) {\n            var val;\n            var isRejected;\n            return _this.then(function (value) {\n                isRejected = false;\n                val = value;\n                if (onfinally) {\n                    onfinally();\n                }\n            }, function (reason) {\n                isRejected = true;\n                val = reason;\n                if (onfinally) {\n                    onfinally();\n                }\n            }).then(function () {\n                if (isRejected) {\n                    reject(val);\n                    return;\n                }\n                resolve(val);\n            });\n        });\n    };\n    /** JSDoc */\n    SyncPromise.prototype.toString = function () {\n        return '[object SyncPromise]';\n    };\n    return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n    function PromiseBuffer(_limit) {\n        this._limit = _limit;\n        /** Internal set of queued Promises */\n        this._buffer = [];\n    }\n    /**\n     * Says if the buffer is ready to take more requests\n     */\n    PromiseBuffer.prototype.isReady = function () {\n        return this._limit === undefined || this.length() < this._limit;\n    };\n    /**\n     * Add a promise to the queue.\n     *\n     * @param task Can be any PromiseLike<T>\n     * @returns The original promise.\n     */\n    PromiseBuffer.prototype.add = function (task) {\n        var _this = this;\n        if (!this.isReady()) {\n            return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n        }\n        if (this._buffer.indexOf(task) === -1) {\n            this._buffer.push(task);\n        }\n        void task\n            .then(function () { return _this.remove(task); })\n            .then(null, function () {\n            return _this.remove(task).then(null, function () {\n                // We have to add this catch here otherwise we have an unhandledPromiseRejection\n                // because it's a new Promise chain.\n            });\n        });\n        return task;\n    };\n    /**\n     * Remove a promise to the queue.\n     *\n     * @param task Can be any PromiseLike<T>\n     * @returns Removed promise.\n     */\n    PromiseBuffer.prototype.remove = function (task) {\n        var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n        return removedTask;\n    };\n    /**\n     * This function returns the number of unresolved promises in the queue.\n     */\n    PromiseBuffer.prototype.length = function () {\n        return this._buffer.length;\n    };\n    /**\n     * This will drain the whole queue, returns true if queue is empty or drained.\n     * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n     *\n     * @param timeout Number in ms to wait until it resolves with false.\n     */\n    PromiseBuffer.prototype.drain = function (timeout) {\n        var _this = this;\n        return new SyncPromise(function (resolve) {\n            var capturedSetTimeout = setTimeout(function () {\n                if (timeout && timeout > 0) {\n                    resolve(false);\n                }\n            }, timeout);\n            void SyncPromise.all(_this._buffer)\n                .then(function () {\n                clearTimeout(capturedSetTimeout);\n                resolve(true);\n            })\n                .then(null, function () {\n                resolve(true);\n            });\n        });\n    };\n    return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { getGlobalObject } from './misc';\nimport { dynamicRequire, isNodeEnv } from './node';\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n    nowSeconds: function () { return Date.now() / 1000; },\n};\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n    var performance = getGlobalObject().performance;\n    if (!performance || !performance.now) {\n        return undefined;\n    }\n    // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n    //\n    // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n    // performance.now() gives a date arbitrarily in the past.\n    //\n    // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n    // undefined.\n    //\n    // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n    // interact with data coming out of performance entries.\n    //\n    // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n    // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n    // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n    // observed skews that can be as long as days, weeks or months.\n    //\n    // See https://github.com/getsentry/sentry-javascript/issues/2590.\n    //\n    // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n    // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n    // transactions of long-lived web pages.\n    var timeOrigin = Date.now() - performance.now();\n    return {\n        now: function () { return performance.now(); },\n        timeOrigin: timeOrigin,\n    };\n}\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n    try {\n        var perfHooks = dynamicRequire(module, 'perf_hooks');\n        return perfHooks.performance;\n    }\n    catch (_) {\n        return undefined;\n    }\n}\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\nvar timestampSource = platformPerformance === undefined\n    ? dateTimestampSource\n    : {\n        nowSeconds: function () { return (platformPerformance.timeOrigin + platformPerformance.now()) / 1000; },\n    };\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport var dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport var timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n// Re-exported with an old name for backwards-compatibility.\nexport var timestampWithMs = timestampInSeconds;\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport var usingPerformanceAPI = platformPerformance !== undefined;\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport var _browserPerformanceTimeOriginMode;\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport var browserPerformanceTimeOrigin = (function () {\n    // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n    // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n    // data as reliable if they are within a reasonable threshold of the current time.\n    var performance = getGlobalObject().performance;\n    if (!performance) {\n        _browserPerformanceTimeOriginMode = 'none';\n        return undefined;\n    }\n    var threshold = 3600 * 1000;\n    var performanceNow = performance.now();\n    var dateNow = Date.now();\n    // if timeOrigin isn't available set delta to threshold so it isn't used\n    var timeOriginDelta = performance.timeOrigin\n        ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n        : threshold;\n    var timeOriginIsReliable = timeOriginDelta < threshold;\n    // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n    // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n    // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n    // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n    // Date API.\n    // eslint-disable-next-line deprecation/deprecation\n    var navigationStart = performance.timing && performance.timing.navigationStart;\n    var hasNavigationStart = typeof navigationStart === 'number';\n    // if navigationStart isn't available set delta to threshold so it isn't used\n    var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n    var navigationStartIsReliable = navigationStartDelta < threshold;\n    if (timeOriginIsReliable || navigationStartIsReliable) {\n        // Use the more reliable time origin\n        if (timeOriginDelta <= navigationStartDelta) {\n            _browserPerformanceTimeOriginMode = 'timeOrigin';\n            return performance.timeOrigin;\n        }\n        else {\n            _browserPerformanceTimeOriginMode = 'navigationStart';\n            return navigationStart;\n        }\n    }\n    // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n    _browserPerformanceTimeOriginMode = 'dateNow';\n    return dateNow;\n})();\n//# sourceMappingURL=time.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n    function Scope() {\n        /** Flag if notifiying is happening. */\n        this._notifyingListeners = false;\n        /** Callback for client to receive scope changes. */\n        this._scopeListeners = [];\n        /** Callback list that will be called after {@link applyToEvent}. */\n        this._eventProcessors = [];\n        /** Array of breadcrumbs. */\n        this._breadcrumbs = [];\n        /** User */\n        this._user = {};\n        /** Tags */\n        this._tags = {};\n        /** Extra */\n        this._extra = {};\n        /** Contexts */\n        this._contexts = {};\n    }\n    /**\n     * Inherit values from the parent scope.\n     * @param scope to clone.\n     */\n    Scope.clone = function (scope) {\n        var newScope = new Scope();\n        if (scope) {\n            newScope._breadcrumbs = __spread(scope._breadcrumbs);\n            newScope._tags = __assign({}, scope._tags);\n            newScope._extra = __assign({}, scope._extra);\n            newScope._contexts = __assign({}, scope._contexts);\n            newScope._user = scope._user;\n            newScope._level = scope._level;\n            newScope._span = scope._span;\n            newScope._session = scope._session;\n            newScope._transactionName = scope._transactionName;\n            newScope._fingerprint = scope._fingerprint;\n            newScope._eventProcessors = __spread(scope._eventProcessors);\n            newScope._requestSession = scope._requestSession;\n        }\n        return newScope;\n    };\n    /**\n     * Add internal on change listener. Used for sub SDKs that need to store the scope.\n     * @hidden\n     */\n    Scope.prototype.addScopeListener = function (callback) {\n        this._scopeListeners.push(callback);\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.addEventProcessor = function (callback) {\n        this._eventProcessors.push(callback);\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setUser = function (user) {\n        this._user = user || {};\n        if (this._session) {\n            this._session.update({ user: user });\n        }\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.getUser = function () {\n        return this._user;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.getRequestSession = function () {\n        return this._requestSession;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setRequestSession = function (requestSession) {\n        this._requestSession = requestSession;\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setTags = function (tags) {\n        this._tags = __assign(__assign({}, this._tags), tags);\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setTag = function (key, value) {\n        var _a;\n        this._tags = __assign(__assign({}, this._tags), (_a = {}, _a[key] = value, _a));\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setExtras = function (extras) {\n        this._extra = __assign(__assign({}, this._extra), extras);\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setExtra = function (key, extra) {\n        var _a;\n        this._extra = __assign(__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setFingerprint = function (fingerprint) {\n        this._fingerprint = fingerprint;\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setLevel = function (level) {\n        this._level = level;\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setTransactionName = function (name) {\n        this._transactionName = name;\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * Can be removed in major version.\n     * @deprecated in favor of {@link this.setTransactionName}\n     */\n    Scope.prototype.setTransaction = function (name) {\n        return this.setTransactionName(name);\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setContext = function (key, context) {\n        var _a;\n        if (context === null) {\n            // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n            delete this._contexts[key];\n        }\n        else {\n            this._contexts = __assign(__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));\n        }\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setSpan = function (span) {\n        this._span = span;\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.getSpan = function () {\n        return this._span;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.getTransaction = function () {\n        var _a, _b, _c, _d;\n        // often, this span will be a transaction, but it's not guaranteed to be\n        var span = this.getSpan();\n        // try it the new way first\n        if ((_a = span) === null || _a === void 0 ? void 0 : _a.transaction) {\n            return (_b = span) === null || _b === void 0 ? void 0 : _b.transaction;\n        }\n        // fallback to the old way (known bug: this only finds transactions with sampled = true)\n        if ((_d = (_c = span) === null || _c === void 0 ? void 0 : _c.spanRecorder) === null || _d === void 0 ? void 0 : _d.spans[0]) {\n            return span.spanRecorder.spans[0];\n        }\n        // neither way found a transaction\n        return undefined;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.setSession = function (session) {\n        if (!session) {\n            delete this._session;\n        }\n        else {\n            this._session = session;\n        }\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.getSession = function () {\n        return this._session;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.update = function (captureContext) {\n        if (!captureContext) {\n            return this;\n        }\n        if (typeof captureContext === 'function') {\n            var updatedScope = captureContext(this);\n            return updatedScope instanceof Scope ? updatedScope : this;\n        }\n        if (captureContext instanceof Scope) {\n            this._tags = __assign(__assign({}, this._tags), captureContext._tags);\n            this._extra = __assign(__assign({}, this._extra), captureContext._extra);\n            this._contexts = __assign(__assign({}, this._contexts), captureContext._contexts);\n            if (captureContext._user && Object.keys(captureContext._user).length) {\n                this._user = captureContext._user;\n            }\n            if (captureContext._level) {\n                this._level = captureContext._level;\n            }\n            if (captureContext._fingerprint) {\n                this._fingerprint = captureContext._fingerprint;\n            }\n            if (captureContext._requestSession) {\n                this._requestSession = captureContext._requestSession;\n            }\n        }\n        else if (isPlainObject(captureContext)) {\n            // eslint-disable-next-line no-param-reassign\n            captureContext = captureContext;\n            this._tags = __assign(__assign({}, this._tags), captureContext.tags);\n            this._extra = __assign(__assign({}, this._extra), captureContext.extra);\n            this._contexts = __assign(__assign({}, this._contexts), captureContext.contexts);\n            if (captureContext.user) {\n                this._user = captureContext.user;\n            }\n            if (captureContext.level) {\n                this._level = captureContext.level;\n            }\n            if (captureContext.fingerprint) {\n                this._fingerprint = captureContext.fingerprint;\n            }\n            if (captureContext.requestSession) {\n                this._requestSession = captureContext.requestSession;\n            }\n        }\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.clear = function () {\n        this._breadcrumbs = [];\n        this._tags = {};\n        this._extra = {};\n        this._user = {};\n        this._contexts = {};\n        this._level = undefined;\n        this._transactionName = undefined;\n        this._fingerprint = undefined;\n        this._requestSession = undefined;\n        this._span = undefined;\n        this._session = undefined;\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n        var mergedBreadcrumb = __assign({ timestamp: dateTimestampInSeconds() }, breadcrumb);\n        this._breadcrumbs =\n            maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n                ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n                : __spread(this._breadcrumbs, [mergedBreadcrumb]);\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * @inheritDoc\n     */\n    Scope.prototype.clearBreadcrumbs = function () {\n        this._breadcrumbs = [];\n        this._notifyScopeListeners();\n        return this;\n    };\n    /**\n     * Applies the current context and fingerprint to the event.\n     * Note that breadcrumbs will be added by the client.\n     * Also if the event has already breadcrumbs on it, we do not merge them.\n     * @param event Event\n     * @param hint May contain additional informartion about the original exception.\n     * @hidden\n     */\n    Scope.prototype.applyToEvent = function (event, hint) {\n        var _a;\n        if (this._extra && Object.keys(this._extra).length) {\n            event.extra = __assign(__assign({}, this._extra), event.extra);\n        }\n        if (this._tags && Object.keys(this._tags).length) {\n            event.tags = __assign(__assign({}, this._tags), event.tags);\n        }\n        if (this._user && Object.keys(this._user).length) {\n            event.user = __assign(__assign({}, this._user), event.user);\n        }\n        if (this._contexts && Object.keys(this._contexts).length) {\n            event.contexts = __assign(__assign({}, this._contexts), event.contexts);\n        }\n        if (this._level) {\n            event.level = this._level;\n        }\n        if (this._transactionName) {\n            event.transaction = this._transactionName;\n        }\n        // We want to set the trace context for normal events only if there isn't already\n        // a trace context on the event. There is a product feature in place where we link\n        // errors with transaction and it relys on that.\n        if (this._span) {\n            event.contexts = __assign({ trace: this._span.getTraceContext() }, event.contexts);\n            var transactionName = (_a = this._span.transaction) === null || _a === void 0 ? void 0 : _a.name;\n            if (transactionName) {\n                event.tags = __assign({ transaction: transactionName }, event.tags);\n            }\n        }\n        this._applyFingerprint(event);\n        event.breadcrumbs = __spread((event.breadcrumbs || []), this._breadcrumbs);\n        event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n        return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n    };\n    /**\n     * This will be called after {@link applyToEvent} is finished.\n     */\n    Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n        var _this = this;\n        if (index === void 0) { index = 0; }\n        return new SyncPromise(function (resolve, reject) {\n            var processor = processors[index];\n            if (event === null || typeof processor !== 'function') {\n                resolve(event);\n            }\n            else {\n                var result = processor(__assign({}, event), hint);\n                if (isThenable(result)) {\n                    result\n                        .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n                        .then(null, reject);\n                }\n                else {\n                    _this._notifyEventProcessors(processors, result, hint, index + 1)\n                        .then(resolve)\n                        .then(null, reject);\n                }\n            }\n        });\n    };\n    /**\n     * This will be called on every set call.\n     */\n    Scope.prototype._notifyScopeListeners = function () {\n        var _this = this;\n        // We need this check for this._notifyingListeners to be able to work on scope during updates\n        // If this check is not here we'll produce endless recursion when something is done with the scope\n        // during the callback.\n        if (!this._notifyingListeners) {\n            this._notifyingListeners = true;\n            this._scopeListeners.forEach(function (callback) {\n                callback(_this);\n            });\n            this._notifyingListeners = false;\n        }\n    };\n    /**\n     * Applies fingerprint from the scope to the event if there's one,\n     * uses message if there's one instead or get rid of empty fingerprint\n     */\n    Scope.prototype._applyFingerprint = function (event) {\n        // Make sure it's an array first and we actually have something in place\n        event.fingerprint = event.fingerprint\n            ? Array.isArray(event.fingerprint)\n                ? event.fingerprint\n                : [event.fingerprint]\n            : [];\n        // If we have something on the scope, then merge it with event\n        if (this._fingerprint) {\n            event.fingerprint = event.fingerprint.concat(this._fingerprint);\n        }\n        // If we have no data at all, remove empty array default\n        if (event.fingerprint && !event.fingerprint.length) {\n            delete event.fingerprint;\n        }\n    };\n    return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n    /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access  */\n    var global = getGlobalObject();\n    global.__SENTRY__ = global.__SENTRY__ || {};\n    global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n    return global.__SENTRY__.globalEventProcessors;\n    /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n    getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable max-lines */\nimport { SessionStatus, } from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\nimport { Scope } from './scope';\nimport { Session } from './session';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 4;\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n/**\n * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\n    /**\n     * Creates a new instance of the hub, will push one {@link Layer} into the\n     * internal stack on creation.\n     *\n     * @param client bound to the hub.\n     * @param scope bound to the hub.\n     * @param version number, higher number means higher priority.\n     */\n    function Hub(client, scope, _version) {\n        if (scope === void 0) { scope = new Scope(); }\n        if (_version === void 0) { _version = API_VERSION; }\n        this._version = _version;\n        /** Is a {@link Layer}[] containing the client and scope */\n        this._stack = [{}];\n        this.getStackTop().scope = scope;\n        this.bindClient(client);\n    }\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.isOlderThan = function (version) {\n        return this._version < version;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.bindClient = function (client) {\n        var top = this.getStackTop();\n        top.client = client;\n        if (client && client.setupIntegrations) {\n            client.setupIntegrations();\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.pushScope = function () {\n        // We want to clone the content of prev scope\n        var scope = Scope.clone(this.getScope());\n        this.getStack().push({\n            client: this.getClient(),\n            scope: scope,\n        });\n        return scope;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.popScope = function () {\n        if (this.getStack().length <= 1)\n            return false;\n        return !!this.getStack().pop();\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.withScope = function (callback) {\n        var scope = this.pushScope();\n        try {\n            callback(scope);\n        }\n        finally {\n            this.popScope();\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.getClient = function () {\n        return this.getStackTop().client;\n    };\n    /** Returns the scope of the top stack. */\n    Hub.prototype.getScope = function () {\n        return this.getStackTop().scope;\n    };\n    /** Returns the scope stack for domains or the process. */\n    Hub.prototype.getStack = function () {\n        return this._stack;\n    };\n    /** Returns the topmost scope layer in the order domain > local > process. */\n    Hub.prototype.getStackTop = function () {\n        return this._stack[this._stack.length - 1];\n    };\n    /**\n     * @inheritDoc\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n    Hub.prototype.captureException = function (exception, hint) {\n        var eventId = (this._lastEventId = uuid4());\n        var finalHint = hint;\n        // If there's no explicit hint provided, mimick the same thing that would happen\n        // in the minimal itself to create a consistent behavior.\n        // We don't do this in the client, as it's the lowest level API, and doing this,\n        // would prevent user from having full control over direct calls.\n        if (!hint) {\n            var syntheticException = void 0;\n            try {\n                throw new Error('Sentry syntheticException');\n            }\n            catch (exception) {\n                syntheticException = exception;\n            }\n            finalHint = {\n                originalException: exception,\n                syntheticException: syntheticException,\n            };\n        }\n        this._invokeClient('captureException', exception, __assign(__assign({}, finalHint), { event_id: eventId }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.captureMessage = function (message, level, hint) {\n        var eventId = (this._lastEventId = uuid4());\n        var finalHint = hint;\n        // If there's no explicit hint provided, mimick the same thing that would happen\n        // in the minimal itself to create a consistent behavior.\n        // We don't do this in the client, as it's the lowest level API, and doing this,\n        // would prevent user from having full control over direct calls.\n        if (!hint) {\n            var syntheticException = void 0;\n            try {\n                throw new Error(message);\n            }\n            catch (exception) {\n                syntheticException = exception;\n            }\n            finalHint = {\n                originalException: message,\n                syntheticException: syntheticException,\n            };\n        }\n        this._invokeClient('captureMessage', message, level, __assign(__assign({}, finalHint), { event_id: eventId }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.captureEvent = function (event, hint) {\n        var eventId = (this._lastEventId = uuid4());\n        this._invokeClient('captureEvent', event, __assign(__assign({}, hint), { event_id: eventId }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.lastEventId = function () {\n        return this._lastEventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n        if (!scope || !client)\n            return;\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        var _b = (client.getOptions && client.getOptions()) || {}, _c = _b.beforeBreadcrumb, beforeBreadcrumb = _c === void 0 ? null : _c, _d = _b.maxBreadcrumbs, maxBreadcrumbs = _d === void 0 ? DEFAULT_BREADCRUMBS : _d;\n        if (maxBreadcrumbs <= 0)\n            return;\n        var timestamp = dateTimestampInSeconds();\n        var mergedBreadcrumb = __assign({ timestamp: timestamp }, breadcrumb);\n        var finalBreadcrumb = beforeBreadcrumb\n            ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n            : mergedBreadcrumb;\n        if (finalBreadcrumb === null)\n            return;\n        scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.setUser = function (user) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setUser(user);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.setTags = function (tags) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setTags(tags);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.setExtras = function (extras) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setExtras(extras);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.setTag = function (key, value) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setTag(key, value);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.setExtra = function (key, extra) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setExtra(key, extra);\n    };\n    /**\n     * @inheritDoc\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Hub.prototype.setContext = function (name, context) {\n        var scope = this.getScope();\n        if (scope)\n            scope.setContext(name, context);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.configureScope = function (callback) {\n        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n        if (scope && client) {\n            callback(scope);\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.run = function (callback) {\n        var oldHub = makeMain(this);\n        try {\n            callback(this);\n        }\n        finally {\n            makeMain(oldHub);\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.getIntegration = function (integration) {\n        var client = this.getClient();\n        if (!client)\n            return null;\n        try {\n            return client.getIntegration(integration);\n        }\n        catch (_oO) {\n            logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n            return null;\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.startSpan = function (context) {\n        return this._callExtensionMethod('startSpan', context);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.startTransaction = function (context, customSamplingContext) {\n        return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.traceHeaders = function () {\n        return this._callExtensionMethod('traceHeaders');\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.captureSession = function (endSession) {\n        if (endSession === void 0) { endSession = false; }\n        // both send the update and pull the session from the scope\n        if (endSession) {\n            return this.endSession();\n        }\n        // only send the update\n        this._sendSessionUpdate();\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.endSession = function () {\n        var _a, _b, _c, _d, _e;\n        (_c = (_b = (_a = this.getStackTop()) === null || _a === void 0 ? void 0 : _a.scope) === null || _b === void 0 ? void 0 : _b.getSession()) === null || _c === void 0 ? void 0 : _c.close();\n        this._sendSessionUpdate();\n        // the session is over; take it off of the scope\n        (_e = (_d = this.getStackTop()) === null || _d === void 0 ? void 0 : _d.scope) === null || _e === void 0 ? void 0 : _e.setSession();\n    };\n    /**\n     * @inheritDoc\n     */\n    Hub.prototype.startSession = function (context) {\n        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n        var _b = (client && client.getOptions()) || {}, release = _b.release, environment = _b.environment;\n        var session = new Session(__assign(__assign({ release: release,\n            environment: environment }, (scope && { user: scope.getUser() })), context));\n        if (scope) {\n            // End existing session if there's one\n            var currentSession = scope.getSession && scope.getSession();\n            if (currentSession && currentSession.status === SessionStatus.Ok) {\n                currentSession.update({ status: SessionStatus.Exited });\n            }\n            this.endSession();\n            // Afterwards we set the new session on the scope\n            scope.setSession(session);\n        }\n        return session;\n    };\n    /**\n     * Sends the current Session on the scope\n     */\n    Hub.prototype._sendSessionUpdate = function () {\n        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n        if (!scope)\n            return;\n        var session = scope.getSession && scope.getSession();\n        if (session) {\n            if (client && client.captureSession) {\n                client.captureSession(session);\n            }\n        }\n    };\n    /**\n     * Internal helper function to call a method on the top client if it exists.\n     *\n     * @param method The method to call on the client.\n     * @param args Arguments to pass to the client function.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Hub.prototype._invokeClient = function (method) {\n        var _a;\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        var _b = this.getStackTop(), scope = _b.scope, client = _b.client;\n        if (client && client[method]) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n            (_a = client)[method].apply(_a, __spread(args, [scope]));\n        }\n    };\n    /**\n     * Calls global extension method and binding current instance to the function call\n     */\n    // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Hub.prototype._callExtensionMethod = function (method) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        var carrier = getMainCarrier();\n        var sentry = carrier.__SENTRY__;\n        if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n            return sentry.extensions[method].apply(this, args);\n        }\n        logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n    };\n    return Hub;\n}());\nexport { Hub };\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier() {\n    var carrier = getGlobalObject();\n    carrier.__SENTRY__ = carrier.__SENTRY__ || {\n        extensions: {},\n        hub: undefined,\n    };\n    return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n    var registry = getMainCarrier();\n    var oldHub = getHubFromCarrier(registry);\n    setHubOnCarrier(registry, hub);\n    return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n    // Get main carrier (global for every environment)\n    var registry = getMainCarrier();\n    // If there's no hub, or its an old API, assign a new one\n    if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n        setHubOnCarrier(registry, new Hub());\n    }\n    // Prefer domains over global if they are there (applicable only to Node environment)\n    if (isNodeEnv()) {\n        return getHubFromActiveDomain(registry);\n    }\n    // Return hub that lives on a global object\n    return getHubFromCarrier(registry);\n}\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain() {\n    logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n    var sentry = getMainCarrier().__SENTRY__;\n    return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n    var _a, _b, _c;\n    try {\n        var activeDomain = (_c = (_b = (_a = getMainCarrier().__SENTRY__) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b.domain) === null || _c === void 0 ? void 0 : _c.active;\n        // If there's no active domain, just return global hub\n        if (!activeDomain) {\n            return getHubFromCarrier(registry);\n        }\n        // If there's no hub on current domain, or it's an old API, assign a new one\n        if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n            var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n            setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n        }\n        // Return hub that lives on a domain\n        return getHubFromCarrier(activeDomain);\n    }\n    catch (_Oo) {\n        // Return hub that lives on a global object\n        return getHubFromCarrier(registry);\n    }\n}\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n    return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n    if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub)\n        return carrier.__SENTRY__.hub;\n    carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n    carrier.__SENTRY__.hub = new Hub();\n    return carrier.__SENTRY__.hub;\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier, hub) {\n    if (!carrier)\n        return false;\n    carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n    carrier.__SENTRY__.hub = hub;\n    return true;\n}\n//# sourceMappingURL=hub.js.map","import { RequestSessionStatus, SessionStatus, } from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub';\n/**\n * @inheritdoc\n */\nvar Session = /** @class */ (function () {\n    function Session(context) {\n        this.errors = 0;\n        this.sid = uuid4();\n        this.duration = 0;\n        this.status = SessionStatus.Ok;\n        this.init = true;\n        this.ignoreDuration = false;\n        // Both timestamp and started are in seconds since the UNIX epoch.\n        var startingTime = timestampInSeconds();\n        this.timestamp = startingTime;\n        this.started = startingTime;\n        if (context) {\n            this.update(context);\n        }\n    }\n    /** JSDoc */\n    // eslint-disable-next-line complexity\n    Session.prototype.update = function (context) {\n        if (context === void 0) { context = {}; }\n        if (context.user) {\n            if (context.user.ip_address) {\n                this.ipAddress = context.user.ip_address;\n            }\n            if (!context.did) {\n                this.did = context.user.id || context.user.email || context.user.username;\n            }\n        }\n        this.timestamp = context.timestamp || timestampInSeconds();\n        if (context.ignoreDuration) {\n            this.ignoreDuration = context.ignoreDuration;\n        }\n        if (context.sid) {\n            // Good enough uuid validation. — Kamil\n            this.sid = context.sid.length === 32 ? context.sid : uuid4();\n        }\n        if (context.init !== undefined) {\n            this.init = context.init;\n        }\n        if (context.did) {\n            this.did = \"\" + context.did;\n        }\n        if (typeof context.started === 'number') {\n            this.started = context.started;\n        }\n        if (this.ignoreDuration) {\n            this.duration = undefined;\n        }\n        else if (typeof context.duration === 'number') {\n            this.duration = context.duration;\n        }\n        else {\n            var duration = this.timestamp - this.started;\n            this.duration = duration >= 0 ? duration : 0;\n        }\n        if (context.release) {\n            this.release = context.release;\n        }\n        if (context.environment) {\n            this.environment = context.environment;\n        }\n        if (context.ipAddress) {\n            this.ipAddress = context.ipAddress;\n        }\n        if (context.userAgent) {\n            this.userAgent = context.userAgent;\n        }\n        if (typeof context.errors === 'number') {\n            this.errors = context.errors;\n        }\n        if (context.status) {\n            this.status = context.status;\n        }\n    };\n    /** JSDoc */\n    Session.prototype.close = function (status) {\n        if (status) {\n            this.update({ status: status });\n        }\n        else if (this.status === SessionStatus.Ok) {\n            this.update({ status: SessionStatus.Exited });\n        }\n        else {\n            this.update();\n        }\n    };\n    /** JSDoc */\n    Session.prototype.toJSON = function () {\n        return dropUndefinedKeys({\n            sid: \"\" + this.sid,\n            init: this.init,\n            // Make sure that sec is converted to ms for date constructor\n            started: new Date(this.started * 1000).toISOString(),\n            timestamp: new Date(this.timestamp * 1000).toISOString(),\n            status: this.status,\n            errors: this.errors,\n            did: typeof this.did === 'number' || typeof this.did === 'string' ? \"\" + this.did : undefined,\n            duration: this.duration,\n            attrs: dropUndefinedKeys({\n                release: this.release,\n                environment: this.environment,\n                ip_address: this.ipAddress,\n                user_agent: this.userAgent,\n            }),\n        });\n    };\n    return Session;\n}());\nexport { Session };\n/**\n * @inheritdoc\n */\nvar SessionFlusher = /** @class */ (function () {\n    function SessionFlusher(transport, attrs) {\n        var _this = this;\n        this.flushTimeout = 60;\n        this._pendingAggregates = {};\n        this._isEnabled = true;\n        this._transport = transport;\n        // Call to setInterval, so that flush is called every 60 seconds\n        this._intervalId = setInterval(function () { return _this.flush(); }, this.flushTimeout * 1000);\n        this._sessionAttrs = attrs;\n    }\n    /** Sends session aggregates to Transport */\n    SessionFlusher.prototype.sendSessionAggregates = function (sessionAggregates) {\n        if (!this._transport.sendSession) {\n            logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n            return;\n        }\n        this._transport.sendSession(sessionAggregates).then(null, function (reason) {\n            logger.error(\"Error while sending session: \" + reason);\n        });\n    };\n    /** Checks if `pendingAggregates` has entries, and if it does flushes them by calling `sendSessions` */\n    SessionFlusher.prototype.flush = function () {\n        var sessionAggregates = this.getSessionAggregates();\n        if (sessionAggregates.aggregates.length === 0) {\n            return;\n        }\n        this._pendingAggregates = {};\n        this.sendSessionAggregates(sessionAggregates);\n    };\n    /** Massages the entries in `pendingAggregates` and returns aggregated sessions */\n    SessionFlusher.prototype.getSessionAggregates = function () {\n        var _this = this;\n        var aggregates = Object.keys(this._pendingAggregates).map(function (key) {\n            return _this._pendingAggregates[parseInt(key)];\n        });\n        var sessionAggregates = {\n            attrs: this._sessionAttrs,\n            aggregates: aggregates,\n        };\n        return dropUndefinedKeys(sessionAggregates);\n    };\n    /** JSDoc */\n    SessionFlusher.prototype.close = function () {\n        clearInterval(this._intervalId);\n        this._isEnabled = false;\n        this.flush();\n    };\n    /**\n     * Wrapper function for _incrementSessionStatusCount that checks if the instance of SessionFlusher is enabled then\n     * fetches the session status of the request from `Scope.getRequestSession().status` on the scope and passes them to\n     * `_incrementSessionStatusCount` along with the start date\n     */\n    SessionFlusher.prototype.incrementSessionStatusCount = function () {\n        var _a, _b;\n        if (!this._isEnabled) {\n            return;\n        }\n        var scope = getCurrentHub().getScope();\n        var requestSession = (_a = scope) === null || _a === void 0 ? void 0 : _a.getRequestSession();\n        if (requestSession && requestSession.status) {\n            this._incrementSessionStatusCount(requestSession.status, new Date());\n            // This is not entirely necessarily but is added as a safe guard to indicate the bounds of a request and so in\n            // case captureRequestSession is called more than once to prevent double count\n            (_b = scope) === null || _b === void 0 ? void 0 : _b.setRequestSession(undefined);\n            /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n        }\n    };\n    /**\n     * Increments status bucket in pendingAggregates buffer (internal state) corresponding to status of\n     * the session received\n     */\n    SessionFlusher.prototype._incrementSessionStatusCount = function (status, date) {\n        // Truncate minutes and seconds on Session Started attribute to have one minute bucket keys\n        var sessionStartedTrunc = new Date(date).setSeconds(0, 0);\n        this._pendingAggregates[sessionStartedTrunc] = this._pendingAggregates[sessionStartedTrunc] || {};\n        // corresponds to aggregated sessions in one specific minute bucket\n        // for example, {\"started\":\"2021-03-16T08:00:00.000Z\",\"exited\":4, \"errored\": 1}\n        var aggregationCounts = this._pendingAggregates[sessionStartedTrunc];\n        if (!aggregationCounts.started) {\n            aggregationCounts.started = new Date(sessionStartedTrunc).toISOString();\n        }\n        switch (status) {\n            case RequestSessionStatus.Errored:\n                aggregationCounts.errored = (aggregationCounts.errored || 0) + 1;\n                return aggregationCounts.errored;\n            case RequestSessionStatus.Ok:\n                aggregationCounts.exited = (aggregationCounts.exited || 0) + 1;\n                return aggregationCounts.exited;\n            case RequestSessionStatus.Crashed:\n                aggregationCounts.crashed = (aggregationCounts.crashed || 0) + 1;\n                return aggregationCounts.crashed;\n        }\n    };\n    return SessionFlusher;\n}());\nexport { SessionFlusher };\n//# sourceMappingURL=session.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    var hub = getCurrentHub();\n    if (hub && hub[method]) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return hub[method].apply(hub, __spread(args));\n    }\n    throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception, captureContext) {\n    var syntheticException;\n    try {\n        throw new Error('Sentry syntheticException');\n    }\n    catch (exception) {\n        syntheticException = exception;\n    }\n    return callOnHub('captureException', exception, {\n        captureContext: captureContext,\n        originalException: exception,\n        syntheticException: syntheticException,\n    });\n}\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message, captureContext) {\n    var syntheticException;\n    try {\n        throw new Error(message);\n    }\n    catch (exception) {\n        syntheticException = exception;\n    }\n    // This is necessary to provide explicit scopes upgrade, without changing the original\n    // arity of the `captureMessage(message, level)` method.\n    var level = typeof captureContext === 'string' ? captureContext : undefined;\n    var context = typeof captureContext !== 'string' ? { captureContext: captureContext } : undefined;\n    return callOnHub('captureMessage', message, level, __assign({ originalException: message, syntheticException: syntheticException }, context));\n}\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event) {\n    return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n    callOnHub('configureScope', callback);\n}\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb) {\n    callOnHub('addBreadcrumb', breadcrumb);\n}\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name, context) {\n    callOnHub('setContext', name, context);\n}\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras) {\n    callOnHub('setExtras', extras);\n}\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags) {\n    callOnHub('setTags', tags);\n}\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key, extra) {\n    callOnHub('setExtra', key, extra);\n}\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key, value) {\n    callOnHub('setTag', key, value);\n}\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user) {\n    callOnHub('setUser', user);\n}\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n *     pushScope();\n *     callback();\n *     popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback) {\n    callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    callOnHub.apply(void 0, __spread(['_invokeClient', method], args));\n}\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(context, customSamplingContext) {\n    return callOnHub('startTransaction', __assign({}, context), customSamplingContext);\n}\n//# sourceMappingURL=index.js.map","import { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n **/\nvar API = /** @class */ (function () {\n    /** Create a new instance of API */\n    function API(dsn, metadata) {\n        if (metadata === void 0) { metadata = {}; }\n        this.dsn = dsn;\n        this._dsnObject = new Dsn(dsn);\n        this.metadata = metadata;\n    }\n    /** Returns the Dsn object. */\n    API.prototype.getDsn = function () {\n        return this._dsnObject;\n    };\n    /** Returns the prefix to construct Sentry ingestion API endpoints. */\n    API.prototype.getBaseApiEndpoint = function () {\n        var dsn = this._dsnObject;\n        var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n        var port = dsn.port ? \":\" + dsn.port : '';\n        return protocol + \"//\" + dsn.host + port + (dsn.path ? \"/\" + dsn.path : '') + \"/api/\";\n    };\n    /** Returns the store endpoint URL. */\n    API.prototype.getStoreEndpoint = function () {\n        return this._getIngestEndpoint('store');\n    };\n    /**\n     * Returns the store endpoint URL with auth in the query string.\n     *\n     * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n     */\n    API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n        return this.getStoreEndpoint() + \"?\" + this._encodedAuth();\n    };\n    /**\n     * Returns the envelope endpoint URL with auth in the query string.\n     *\n     * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n     */\n    API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n        return this._getEnvelopeEndpoint() + \"?\" + this._encodedAuth();\n    };\n    /** Returns only the path component for the store endpoint. */\n    API.prototype.getStoreEndpointPath = function () {\n        var dsn = this._dsnObject;\n        return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n    };\n    /**\n     * Returns an object that can be used in request headers.\n     * This is needed for node and the old /store endpoint in sentry\n     */\n    API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n        // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n        var dsn = this._dsnObject;\n        var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n        header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n        header.push(\"sentry_key=\" + dsn.publicKey);\n        if (dsn.pass) {\n            header.push(\"sentry_secret=\" + dsn.pass);\n        }\n        return {\n            'Content-Type': 'application/json',\n            'X-Sentry-Auth': header.join(', '),\n        };\n    };\n    /** Returns the url to the report dialog endpoint. */\n    API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n        if (dialogOptions === void 0) { dialogOptions = {}; }\n        var dsn = this._dsnObject;\n        var endpoint = this.getBaseApiEndpoint() + \"embed/error-page/\";\n        var encodedOptions = [];\n        encodedOptions.push(\"dsn=\" + dsn.toString());\n        for (var key in dialogOptions) {\n            if (key === 'dsn') {\n                continue;\n            }\n            if (key === 'user') {\n                if (!dialogOptions.user) {\n                    continue;\n                }\n                if (dialogOptions.user.name) {\n                    encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n                }\n                if (dialogOptions.user.email) {\n                    encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n                }\n            }\n            else {\n                encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n            }\n        }\n        if (encodedOptions.length) {\n            return endpoint + \"?\" + encodedOptions.join('&');\n        }\n        return endpoint;\n    };\n    /** Returns the envelope endpoint URL. */\n    API.prototype._getEnvelopeEndpoint = function () {\n        return this._getIngestEndpoint('envelope');\n    };\n    /** Returns the ingest API endpoint for target. */\n    API.prototype._getIngestEndpoint = function (target) {\n        var base = this.getBaseApiEndpoint();\n        var dsn = this._dsnObject;\n        return \"\" + base + dsn.projectId + \"/\" + target + \"/\";\n    };\n    /** Returns a URL-encoded string with auth config suitable for a query string. */\n    API.prototype._encodedAuth = function () {\n        var dsn = this._dsnObject;\n        var auth = {\n            // We send only the minimum set of required information. See\n            // https://github.com/getsentry/sentry-javascript/issues/2572.\n            sentry_key: dsn.publicKey,\n            sentry_version: SENTRY_API_VERSION,\n        };\n        return urlEncode(auth);\n    };\n    return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n    return integrations.reduce(function (acc, integrations) {\n        if (acc.every(function (accIntegration) { return integrations.name !== accIntegration.name; })) {\n            acc.push(integrations);\n        }\n        return acc;\n    }, []);\n}\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n    var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n    var userIntegrations = options.integrations;\n    var integrations = __spread(filterDuplicates(defaultIntegrations));\n    if (Array.isArray(userIntegrations)) {\n        // Filter out integrations that are also included in user options\n        integrations = __spread(integrations.filter(function (integrations) {\n            return userIntegrations.every(function (userIntegration) { return userIntegration.name !== integrations.name; });\n        }), filterDuplicates(userIntegrations));\n    }\n    else if (typeof userIntegrations === 'function') {\n        integrations = userIntegrations(integrations);\n        integrations = Array.isArray(integrations) ? integrations : [integrations];\n    }\n    // Make sure that if present, `Debug` integration will always run last\n    var integrationsNames = integrations.map(function (i) { return i.name; });\n    var alwaysLastToRun = 'Debug';\n    if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n        integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n    }\n    return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n    if (installedIntegrations.indexOf(integration.name) !== -1) {\n        return;\n    }\n    integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n    installedIntegrations.push(integration.name);\n    logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n    var integrations = {};\n    getIntegrationsToSetup(options).forEach(function (integration) {\n        integrations[integration.name] = integration;\n        setupIntegration(integration);\n    });\n    return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign, __read, __spread, __values } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { SessionStatus, } from '@sentry/types';\nimport { dateTimestampInSeconds, Dsn, isPrimitive, isThenable, logger, normalize, SentryError, SyncPromise, truncate, uuid4, } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeBackend, NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(NodeBackend, options);\n *   }\n *\n *   // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n    /**\n     * Initializes this client instance.\n     *\n     * @param backendClass A constructor function to create the backend.\n     * @param options Options for the client.\n     */\n    function BaseClient(backendClass, options) {\n        /** Array of used integrations. */\n        this._integrations = {};\n        /** Number of call being processed */\n        this._processing = 0;\n        this._backend = new backendClass(options);\n        this._options = options;\n        if (options.dsn) {\n            this._dsn = new Dsn(options.dsn);\n        }\n    }\n    /**\n     * @inheritDoc\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n    BaseClient.prototype.captureException = function (exception, hint, scope) {\n        var _this = this;\n        var eventId = hint && hint.event_id;\n        this._process(this._getBackend()\n            .eventFromException(exception, hint)\n            .then(function (event) { return _this._captureEvent(event, hint, scope); })\n            .then(function (result) {\n            eventId = result;\n        }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n        var _this = this;\n        var eventId = hint && hint.event_id;\n        var promisedEvent = isPrimitive(message)\n            ? this._getBackend().eventFromMessage(String(message), level, hint)\n            : this._getBackend().eventFromException(message, hint);\n        this._process(promisedEvent\n            .then(function (event) { return _this._captureEvent(event, hint, scope); })\n            .then(function (result) {\n            eventId = result;\n        }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.captureEvent = function (event, hint, scope) {\n        var eventId = hint && hint.event_id;\n        this._process(this._captureEvent(event, hint, scope).then(function (result) {\n            eventId = result;\n        }));\n        return eventId;\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.captureSession = function (session) {\n        if (!(typeof session.release === 'string')) {\n            logger.warn('Discarded session because of missing or non-string release');\n        }\n        else {\n            this._sendSession(session);\n            // After sending, we set init false to indicate it's not the first occurrence\n            session.update({ init: false });\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.getDsn = function () {\n        return this._dsn;\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.getOptions = function () {\n        return this._options;\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.flush = function (timeout) {\n        var _this = this;\n        return this._isClientProcessing(timeout).then(function (ready) {\n            return _this._getBackend()\n                .getTransport()\n                .close(timeout)\n                .then(function (transportFlushed) { return ready && transportFlushed; });\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.close = function (timeout) {\n        var _this = this;\n        return this.flush(timeout).then(function (result) {\n            _this.getOptions().enabled = false;\n            return result;\n        });\n    };\n    /**\n     * Sets up the integrations\n     */\n    BaseClient.prototype.setupIntegrations = function () {\n        if (this._isEnabled()) {\n            this._integrations = setupIntegrations(this._options);\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseClient.prototype.getIntegration = function (integration) {\n        try {\n            return this._integrations[integration.id] || null;\n        }\n        catch (_oO) {\n            logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n            return null;\n        }\n    };\n    /** Updates existing session based on the provided event */\n    BaseClient.prototype._updateSessionFromEvent = function (session, event) {\n        var e_1, _a;\n        var crashed = false;\n        var errored = false;\n        var userAgent;\n        var exceptions = event.exception && event.exception.values;\n        if (exceptions) {\n            errored = true;\n            try {\n                for (var exceptions_1 = __values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {\n                    var ex = exceptions_1_1.value;\n                    var mechanism = ex.mechanism;\n                    if (mechanism && mechanism.handled === false) {\n                        crashed = true;\n                        break;\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (exceptions_1_1 && !exceptions_1_1.done && (_a = exceptions_1.return)) _a.call(exceptions_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        var user = event.user;\n        if (!session.userAgent) {\n            var headers = event.request ? event.request.headers : {};\n            for (var key in headers) {\n                if (key.toLowerCase() === 'user-agent') {\n                    userAgent = headers[key];\n                    break;\n                }\n            }\n        }\n        session.update(__assign(__assign({}, (crashed && { status: SessionStatus.Crashed })), { user: user,\n            userAgent: userAgent, errors: session.errors + Number(errored || crashed) }));\n        this.captureSession(session);\n    };\n    /** Deliver captured session to Sentry */\n    BaseClient.prototype._sendSession = function (session) {\n        this._getBackend().sendSession(session);\n    };\n    /** Waits for the client to be done with processing. */\n    BaseClient.prototype._isClientProcessing = function (timeout) {\n        var _this = this;\n        return new SyncPromise(function (resolve) {\n            var ticked = 0;\n            var tick = 1;\n            var interval = setInterval(function () {\n                if (_this._processing == 0) {\n                    clearInterval(interval);\n                    resolve(true);\n                }\n                else {\n                    ticked += tick;\n                    if (timeout && ticked >= timeout) {\n                        clearInterval(interval);\n                        resolve(false);\n                    }\n                }\n            }, tick);\n        });\n    };\n    /** Returns the current backend. */\n    BaseClient.prototype._getBackend = function () {\n        return this._backend;\n    };\n    /** Determines whether this SDK is enabled and a valid Dsn is present. */\n    BaseClient.prototype._isEnabled = function () {\n        return this.getOptions().enabled !== false && this._dsn !== undefined;\n    };\n    /**\n     * Adds common information to events.\n     *\n     * The information includes release and environment from `options`,\n     * breadcrumbs and context (extra, tags and user) from the scope.\n     *\n     * Information that is already present in the event is never overwritten. For\n     * nested objects, such as the context, keys are merged.\n     *\n     * @param event The original event.\n     * @param hint May contain additional information about the original exception.\n     * @param scope A scope containing event metadata.\n     * @returns A new event with more information.\n     */\n    BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n        var _this = this;\n        var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;\n        var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || dateTimestampInSeconds() });\n        this._applyClientOptions(prepared);\n        this._applyIntegrationsMetadata(prepared);\n        // If we have scope given to us, use it as the base for further modifications.\n        // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n        var finalScope = scope;\n        if (hint && hint.captureContext) {\n            finalScope = Scope.clone(finalScope).update(hint.captureContext);\n        }\n        // We prepare the result here with a resolved Event.\n        var result = SyncPromise.resolve(prepared);\n        // This should be the last thing called, since we want that\n        // {@link Hub.addEventProcessor} gets the finished prepared event.\n        if (finalScope) {\n            // In case we have a hub we reassign it.\n            result = finalScope.applyToEvent(prepared, hint);\n        }\n        return result.then(function (evt) {\n            if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n                return _this._normalizeEvent(evt, normalizeDepth);\n            }\n            return evt;\n        });\n    };\n    /**\n     * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n     * Normalized keys:\n     * - `breadcrumbs.data`\n     * - `user`\n     * - `contexts`\n     * - `extra`\n     * @param event Event\n     * @returns Normalized event\n     */\n    BaseClient.prototype._normalizeEvent = function (event, depth) {\n        if (!event) {\n            return null;\n        }\n        var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n            breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n                data: normalize(b.data, depth),\n            }))); }),\n        })), (event.user && {\n            user: normalize(event.user, depth),\n        })), (event.contexts && {\n            contexts: normalize(event.contexts, depth),\n        })), (event.extra && {\n            extra: normalize(event.extra, depth),\n        }));\n        // event.contexts.trace stores information about a Transaction. Similarly,\n        // event.spans[] stores information about child Spans. Given that a\n        // Transaction is conceptually a Span, normalization should apply to both\n        // Transactions and Spans consistently.\n        // For now the decision is to skip normalization of Transactions and Spans,\n        // so this block overwrites the normalized event to add back the original\n        // Transaction information prior to normalization.\n        if (event.contexts && event.contexts.trace) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            normalized.contexts.trace = event.contexts.trace;\n        }\n        return normalized;\n    };\n    /**\n     *  Enhances event using the client configuration.\n     *  It takes care of all \"static\" values like environment, release and `dist`,\n     *  as well as truncating overly long values.\n     * @param event event instance to be enhanced\n     */\n    BaseClient.prototype._applyClientOptions = function (event) {\n        var options = this.getOptions();\n        var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;\n        if (!('environment' in event)) {\n            event.environment = 'environment' in options ? environment : 'production';\n        }\n        if (event.release === undefined && release !== undefined) {\n            event.release = release;\n        }\n        if (event.dist === undefined && dist !== undefined) {\n            event.dist = dist;\n        }\n        if (event.message) {\n            event.message = truncate(event.message, maxValueLength);\n        }\n        var exception = event.exception && event.exception.values && event.exception.values[0];\n        if (exception && exception.value) {\n            exception.value = truncate(exception.value, maxValueLength);\n        }\n        var request = event.request;\n        if (request && request.url) {\n            request.url = truncate(request.url, maxValueLength);\n        }\n    };\n    /**\n     * This function adds all used integrations to the SDK info in the event.\n     * @param event The event that will be filled with all integrations.\n     */\n    BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n        var integrationsArray = Object.keys(this._integrations);\n        if (integrationsArray.length > 0) {\n            event.sdk = event.sdk || {};\n            event.sdk.integrations = __spread((event.sdk.integrations || []), integrationsArray);\n        }\n    };\n    /**\n     * Tells the backend to send this event\n     * @param event The Sentry event to send\n     */\n    BaseClient.prototype._sendEvent = function (event) {\n        this._getBackend().sendEvent(event);\n    };\n    /**\n     * Processes the event and logs an error in case of rejection\n     * @param event\n     * @param hint\n     * @param scope\n     */\n    BaseClient.prototype._captureEvent = function (event, hint, scope) {\n        return this._processEvent(event, hint, scope).then(function (finalEvent) {\n            return finalEvent.event_id;\n        }, function (reason) {\n            logger.error(reason);\n            return undefined;\n        });\n    };\n    /**\n     * Processes an event (either error or message) and sends it to Sentry.\n     *\n     * This also adds breadcrumbs and context information to the event. However,\n     * platform specific meta data (such as the User's IP address) must be added\n     * by the SDK implementor.\n     *\n     *\n     * @param event The event to send to Sentry.\n     * @param hint May contain additional information about the original exception.\n     * @param scope A scope containing event metadata.\n     * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n     */\n    BaseClient.prototype._processEvent = function (event, hint, scope) {\n        var _this = this;\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n        if (!this._isEnabled()) {\n            return SyncPromise.reject(new SentryError('SDK not enabled, will not send event.'));\n        }\n        var isTransaction = event.type === 'transaction';\n        // 1.0 === 100% events are sent\n        // 0.0 === 0% events are sent\n        // Sampling for transaction happens somewhere else\n        if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n            return SyncPromise.reject(new SentryError(\"Discarding event because it's not included in the random sample (sampling rate = \" + sampleRate + \")\"));\n        }\n        return this._prepareEvent(event, scope, hint)\n            .then(function (prepared) {\n            if (prepared === null) {\n                throw new SentryError('An event processor returned null, will not send event.');\n            }\n            var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n            if (isInternalException || isTransaction || !beforeSend) {\n                return prepared;\n            }\n            var beforeSendResult = beforeSend(prepared, hint);\n            if (typeof beforeSendResult === 'undefined') {\n                throw new SentryError('`beforeSend` method has to return `null` or a valid event.');\n            }\n            else if (isThenable(beforeSendResult)) {\n                return beforeSendResult.then(function (event) { return event; }, function (e) {\n                    throw new SentryError(\"beforeSend rejected with \" + e);\n                });\n            }\n            return beforeSendResult;\n        })\n            .then(function (processedEvent) {\n            if (processedEvent === null) {\n                throw new SentryError('`beforeSend` returned `null`, will not send event.');\n            }\n            var session = scope && scope.getSession && scope.getSession();\n            if (!isTransaction && session) {\n                _this._updateSessionFromEvent(session, processedEvent);\n            }\n            _this._sendEvent(processedEvent);\n            return processedEvent;\n        })\n            .then(null, function (reason) {\n            if (reason instanceof SentryError) {\n                throw reason;\n            }\n            _this.captureException(reason, {\n                data: {\n                    __sentry__: true,\n                },\n                originalException: reason,\n            });\n            throw new SentryError(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n        });\n    };\n    /**\n     * Occupies the client with processing and event\n     */\n    BaseClient.prototype._process = function (promise) {\n        var _this = this;\n        this._processing += 1;\n        void promise.then(function (value) {\n            _this._processing -= 1;\n            return value;\n        }, function (reason) {\n            _this._processing -= 1;\n            return reason;\n        });\n    };\n    return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","import { Status } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n    function NoopTransport() {\n    }\n    /**\n     * @inheritDoc\n     */\n    NoopTransport.prototype.sendEvent = function (_) {\n        return SyncPromise.resolve({\n            reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n            status: Status.Skipped,\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    NoopTransport.prototype.close = function (_) {\n        return SyncPromise.resolve(true);\n    };\n    return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n    /** Creates a new backend instance. */\n    function BaseBackend(options) {\n        this._options = options;\n        if (!this._options.dsn) {\n            logger.warn('No DSN provided, backend will not do anything.');\n        }\n        this._transport = this._setupTransport();\n    }\n    /**\n     * @inheritDoc\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n    BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n        throw new SentryError('Backend has to implement `eventFromException` method');\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n        throw new SentryError('Backend has to implement `eventFromMessage` method');\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseBackend.prototype.sendEvent = function (event) {\n        void this._transport.sendEvent(event).then(null, function (reason) {\n            logger.error(\"Error while sending event: \" + reason);\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseBackend.prototype.sendSession = function (session) {\n        if (!this._transport.sendSession) {\n            logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n            return;\n        }\n        void this._transport.sendSession(session).then(null, function (reason) {\n            logger.error(\"Error while sending session: \" + reason);\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseBackend.prototype.getTransport = function () {\n        return this._transport;\n    };\n    /**\n     * Sets up the transport so it can be used later to send requests.\n     */\n    BaseBackend.prototype._setupTransport = function () {\n        return new NoopTransport();\n    };\n    return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { __assign, __read, __rest, __spread } from \"tslib\";\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api) {\n    if (!api.metadata || !api.metadata.sdk) {\n        return;\n    }\n    var _a = api.metadata.sdk, name = _a.name, version = _a.version;\n    return { name: name, version: version };\n}\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n    if (!sdkInfo) {\n        return event;\n    }\n    event.sdk = event.sdk || {};\n    event.sdk.name = event.sdk.name || sdkInfo.name;\n    event.sdk.version = event.sdk.version || sdkInfo.version;\n    event.sdk.integrations = __spread((event.sdk.integrations || []), (sdkInfo.integrations || []));\n    event.sdk.packages = __spread((event.sdk.packages || []), (sdkInfo.packages || []));\n    return event;\n}\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session, api) {\n    var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n    var envelopeHeaders = JSON.stringify(__assign({ sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })));\n    // I know this is hacky but we don't want to add `session` to request type since it's never rate limited\n    var type = 'aggregates' in session ? 'sessions' : 'session';\n    var itemHeaders = JSON.stringify({\n        type: type,\n    });\n    return {\n        body: envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + JSON.stringify(session),\n        type: type,\n        url: api.getEnvelopeEndpointWithUrlEncodedAuth(),\n    };\n}\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n    var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n    var eventType = event.type || 'event';\n    var useEnvelope = eventType === 'transaction';\n    var _a = event.debug_meta || {}, transactionSampling = _a.transactionSampling, metadata = __rest(_a, [\"transactionSampling\"]);\n    var _b = transactionSampling || {}, samplingMethod = _b.method, sampleRate = _b.rate;\n    if (Object.keys(metadata).length === 0) {\n        delete event.debug_meta;\n    }\n    else {\n        event.debug_meta = metadata;\n    }\n    var req = {\n        body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n        type: eventType,\n        url: useEnvelope ? api.getEnvelopeEndpointWithUrlEncodedAuth() : api.getStoreEndpointWithUrlEncodedAuth(),\n    };\n    // https://develop.sentry.dev/sdk/envelopes/\n    // Since we don't need to manipulate envelopes nor store them, there is no\n    // exported concept of an Envelope with operations including serialization and\n    // deserialization. Instead, we only implement a minimal subset of the spec to\n    // serialize events inline here.\n    if (useEnvelope) {\n        var envelopeHeaders = JSON.stringify(__assign({ event_id: event.event_id, sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })));\n        var itemHeaders = JSON.stringify({\n            type: event.type,\n            // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and\n            // explicitly-set sampling decisions). Are we good with that?\n            sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n        });\n        // The trailing newline is optional. We intentionally don't send it to avoid\n        // sending unnecessary bytes.\n        //\n        // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n        var envelope = envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + req.body;\n        req.body = envelope;\n    }\n    return req;\n}\n//# sourceMappingURL=request.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n    var _a;\n    if (options.debug === true) {\n        logger.enable();\n    }\n    var hub = getCurrentHub();\n    (_a = hub.getScope()) === null || _a === void 0 ? void 0 : _a.update(options.initialScope);\n    var client = new clientClass(options);\n    hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","export var SDK_VERSION = '6.5.1';\n//# sourceMappingURL=version.js.map","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n    function FunctionToString() {\n        /**\n         * @inheritDoc\n         */\n        this.name = FunctionToString.id;\n    }\n    /**\n     * @inheritDoc\n     */\n    FunctionToString.prototype.setupOnce = function () {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        originalFunctionToString = Function.prototype.toString;\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Function.prototype.toString = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var context = this.__sentry_original__ || this;\n            return originalFunctionToString.apply(context, args);\n        };\n    };\n    /**\n     * @inheritDoc\n     */\n    FunctionToString.id = 'FunctionToString';\n    return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n    function InboundFilters(_options) {\n        if (_options === void 0) { _options = {}; }\n        this._options = _options;\n        /**\n         * @inheritDoc\n         */\n        this.name = InboundFilters.id;\n    }\n    /**\n     * @inheritDoc\n     */\n    InboundFilters.prototype.setupOnce = function () {\n        addGlobalEventProcessor(function (event) {\n            var hub = getCurrentHub();\n            if (!hub) {\n                return event;\n            }\n            var self = hub.getIntegration(InboundFilters);\n            if (self) {\n                var client = hub.getClient();\n                var clientOptions = client ? client.getOptions() : {};\n                // This checks prevents most of the occurrences of the bug linked below:\n                // https://github.com/getsentry/sentry-javascript/issues/2622\n                // The bug is caused by multiple SDK instances, where one is minified and one is using non-mangled code.\n                // Unfortunatelly we cannot fix it reliably (thus reserved property in rollup's terser config),\n                // as we cannot force people using multiple instances in their apps to sync SDK versions.\n                var options = typeof self._mergeOptions === 'function' ? self._mergeOptions(clientOptions) : {};\n                if (typeof self._shouldDropEvent !== 'function') {\n                    return event;\n                }\n                return self._shouldDropEvent(event, options) ? null : event;\n            }\n            return event;\n        });\n    };\n    /** JSDoc */\n    InboundFilters.prototype._shouldDropEvent = function (event, options) {\n        if (this._isSentryError(event, options)) {\n            logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n            return true;\n        }\n        if (this._isIgnoredError(event, options)) {\n            logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n            return true;\n        }\n        if (this._isDeniedUrl(event, options)) {\n            logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n            return true;\n        }\n        if (!this._isAllowedUrl(event, options)) {\n            logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n            return true;\n        }\n        return false;\n    };\n    /** JSDoc */\n    InboundFilters.prototype._isSentryError = function (event, options) {\n        if (!options.ignoreInternal) {\n            return false;\n        }\n        try {\n            return ((event &&\n                event.exception &&\n                event.exception.values &&\n                event.exception.values[0] &&\n                event.exception.values[0].type === 'SentryError') ||\n                false);\n        }\n        catch (_oO) {\n            return false;\n        }\n    };\n    /** JSDoc */\n    InboundFilters.prototype._isIgnoredError = function (event, options) {\n        if (!options.ignoreErrors || !options.ignoreErrors.length) {\n            return false;\n        }\n        return this._getPossibleEventMessages(event).some(function (message) {\n            // Not sure why TypeScript complains here...\n            return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n        });\n    };\n    /** JSDoc */\n    InboundFilters.prototype._isDeniedUrl = function (event, options) {\n        // TODO: Use Glob instead?\n        if (!options.denyUrls || !options.denyUrls.length) {\n            return false;\n        }\n        var url = this._getEventFilterUrl(event);\n        return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n    };\n    /** JSDoc */\n    InboundFilters.prototype._isAllowedUrl = function (event, options) {\n        // TODO: Use Glob instead?\n        if (!options.allowUrls || !options.allowUrls.length) {\n            return true;\n        }\n        var url = this._getEventFilterUrl(event);\n        return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n    };\n    /** JSDoc */\n    InboundFilters.prototype._mergeOptions = function (clientOptions) {\n        if (clientOptions === void 0) { clientOptions = {}; }\n        return {\n            allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n            denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n            ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n            ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n        };\n    };\n    /** JSDoc */\n    InboundFilters.prototype._getPossibleEventMessages = function (event) {\n        if (event.message) {\n            return [event.message];\n        }\n        if (event.exception) {\n            try {\n                var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n                return [\"\" + value, type + \": \" + value];\n            }\n            catch (oO) {\n                logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n                return [];\n            }\n        }\n        return [];\n    };\n    /** JSDoc */\n    InboundFilters.prototype._getEventFilterUrl = function (event) {\n        try {\n            if (event.stacktrace) {\n                var frames_1 = event.stacktrace.frames;\n                return (frames_1 && frames_1[frames_1.length - 1].filename) || null;\n            }\n            if (event.exception) {\n                var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n                return (frames_2 && frames_2[frames_2.length - 1].filename) || null;\n            }\n            return null;\n        }\n        catch (oO) {\n            logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n            return null;\n        }\n    };\n    /**\n     * @inheritDoc\n     */\n    InboundFilters.id = 'InboundFilters';\n    return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\nimport { __assign } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex) {\n    var stack = null;\n    var popSize = 0;\n    if (ex) {\n        if (typeof ex.framesToPop === 'number') {\n            popSize = ex.framesToPop;\n        }\n        else if (reactMinifiedRegexp.test(ex.message)) {\n            popSize = 1;\n        }\n    }\n    try {\n        // This must be tried first because Opera 10 *destroys*\n        // its stacktrace property if you try to access the stack\n        // property first!!\n        stack = computeStackTraceFromStacktraceProp(ex);\n        if (stack) {\n            return popFrames(stack, popSize);\n        }\n    }\n    catch (e) {\n        // no-empty\n    }\n    try {\n        stack = computeStackTraceFromStackProp(ex);\n        if (stack) {\n            return popFrames(stack, popSize);\n        }\n    }\n    catch (e) {\n        // no-empty\n    }\n    return {\n        message: extractMessage(ex),\n        name: ex && ex.name,\n        stack: [],\n        failed: true,\n    };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex) {\n    if (!ex || !ex.stack) {\n        return null;\n    }\n    var stack = [];\n    var lines = ex.stack.split('\\n');\n    var isEval;\n    var submatch;\n    var parts;\n    var element;\n    for (var i = 0; i < lines.length; ++i) {\n        if ((parts = chrome.exec(lines[i]))) {\n            var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n            isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n            if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n                // throw out eval line/column and use top-most line/column number\n                parts[2] = submatch[1]; // url\n                parts[3] = submatch[2]; // line\n                parts[4] = submatch[3]; // column\n            }\n            // Arpad: Working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n            // prefix here seems like the quickest solution for now.\n            var url = parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2];\n            // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n            // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n            var func = parts[1] || UNKNOWN_FUNCTION;\n            var isSafariExtension = func.indexOf('safari-extension') !== -1;\n            var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n            if (isSafariExtension || isSafariWebExtension) {\n                func = func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION;\n                url = isSafariExtension ? \"safari-extension:\" + url : \"safari-web-extension:\" + url;\n            }\n            element = {\n                url: url,\n                func: func,\n                args: isNative ? [parts[2]] : [],\n                line: parts[3] ? +parts[3] : null,\n                column: parts[4] ? +parts[4] : null,\n            };\n        }\n        else if ((parts = winjs.exec(lines[i]))) {\n            element = {\n                url: parts[2],\n                func: parts[1] || UNKNOWN_FUNCTION,\n                args: [],\n                line: +parts[3],\n                column: parts[4] ? +parts[4] : null,\n            };\n        }\n        else if ((parts = gecko.exec(lines[i]))) {\n            isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n            if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n                // throw out eval line/column and use top-most line number\n                parts[1] = parts[1] || \"eval\";\n                parts[3] = submatch[1];\n                parts[4] = submatch[2];\n                parts[5] = ''; // no column when eval\n            }\n            else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n                // FireFox uses this awesome columnNumber property for its top frame\n                // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n                // so adding 1\n                // NOTE: this hack doesn't work if top-most frame is eval\n                stack[0].column = ex.columnNumber + 1;\n            }\n            element = {\n                url: parts[3],\n                func: parts[1] || UNKNOWN_FUNCTION,\n                args: parts[2] ? parts[2].split(',') : [],\n                line: parts[4] ? +parts[4] : null,\n                column: parts[5] ? +parts[5] : null,\n            };\n        }\n        else {\n            continue;\n        }\n        if (!element.func && element.line) {\n            element.func = UNKNOWN_FUNCTION;\n        }\n        stack.push(element);\n    }\n    if (!stack.length) {\n        return null;\n    }\n    return {\n        message: extractMessage(ex),\n        name: ex.name,\n        stack: stack,\n    };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex) {\n    if (!ex || !ex.stacktrace) {\n        return null;\n    }\n    // Access and store the stacktrace property before doing ANYTHING\n    // else to it because Opera is not very good at providing it\n    // reliably in other circumstances.\n    var stacktrace = ex.stacktrace;\n    var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n    var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n    var lines = stacktrace.split('\\n');\n    var stack = [];\n    var parts;\n    for (var line = 0; line < lines.length; line += 2) {\n        var element = null;\n        if ((parts = opera10Regex.exec(lines[line]))) {\n            element = {\n                url: parts[2],\n                func: parts[3],\n                args: [],\n                line: +parts[1],\n                column: null,\n            };\n        }\n        else if ((parts = opera11Regex.exec(lines[line]))) {\n            element = {\n                url: parts[6],\n                func: parts[3] || parts[4],\n                args: parts[5] ? parts[5].split(',') : [],\n                line: +parts[1],\n                column: +parts[2],\n            };\n        }\n        if (element) {\n            if (!element.func && element.line) {\n                element.func = UNKNOWN_FUNCTION;\n            }\n            stack.push(element);\n        }\n    }\n    if (!stack.length) {\n        return null;\n    }\n    return {\n        message: extractMessage(ex),\n        name: ex.name,\n        stack: stack,\n    };\n}\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n    try {\n        return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });\n    }\n    catch (e) {\n        return stacktrace;\n    }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex) {\n    var message = ex && ex.message;\n    if (!message) {\n        return 'No error message';\n    }\n    if (message.error && typeof message.error.message === 'string') {\n        return message.error.message;\n    }\n    return message;\n}\n//# sourceMappingURL=tracekit.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n    var frames = prepareFramesForEvent(stacktrace.stack);\n    var exception = {\n        type: stacktrace.name,\n        value: stacktrace.message,\n    };\n    if (frames && frames.length) {\n        exception.stacktrace = { frames: frames };\n    }\n    if (exception.type === undefined && exception.value === '') {\n        exception.value = 'Unrecoverable error caught';\n    }\n    return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n    var event = {\n        exception: {\n            values: [\n                {\n                    type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n                    value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n                },\n            ],\n        },\n        extra: {\n            __serialized__: normalizeToSize(exception),\n        },\n    };\n    if (syntheticException) {\n        var stacktrace = computeStackTrace(syntheticException);\n        var frames_1 = prepareFramesForEvent(stacktrace.stack);\n        event.stacktrace = {\n            frames: frames_1,\n        };\n    }\n    return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n    var exception = exceptionFromStacktrace(stacktrace);\n    return {\n        exception: {\n            values: [exception],\n        },\n    };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n    if (!stack || !stack.length) {\n        return [];\n    }\n    var localStack = stack;\n    var firstFrameFunction = localStack[0].func || '';\n    var lastFrameFunction = localStack[localStack.length - 1].func || '';\n    // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n    if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n        localStack = localStack.slice(1);\n    }\n    // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n    if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n        localStack = localStack.slice(0, -1);\n    }\n    // The frame where the crash happened, should be the last entry in the array\n    return localStack\n        .slice(0, STACKTRACE_LIMIT)\n        .map(function (frame) { return ({\n        colno: frame.column === null ? undefined : frame.column,\n        filename: frame.url || localStack[0].url,\n        function: frame.func || '?',\n        in_app: true,\n        lineno: frame.line === null ? undefined : frame.line,\n    }); })\n        .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { __assign } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, SyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromException(options, exception, hint) {\n    var syntheticException = (hint && hint.syntheticException) || undefined;\n    var event = eventFromUnknownInput(exception, syntheticException, {\n        attachStacktrace: options.attachStacktrace,\n    });\n    addExceptionMechanism(event, {\n        handled: true,\n        type: 'generic',\n    });\n    event.level = Severity.Error;\n    if (hint && hint.event_id) {\n        event.event_id = hint.event_id;\n    }\n    return SyncPromise.resolve(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(options, message, level, hint) {\n    if (level === void 0) { level = Severity.Info; }\n    var syntheticException = (hint && hint.syntheticException) || undefined;\n    var event = eventFromString(message, syntheticException, {\n        attachStacktrace: options.attachStacktrace,\n    });\n    event.level = level;\n    if (hint && hint.event_id) {\n        event.event_id = hint.event_id;\n    }\n    return SyncPromise.resolve(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n    if (options === void 0) { options = {}; }\n    var event;\n    if (isErrorEvent(exception) && exception.error) {\n        // If it is an ErrorEvent with `error` property, extract it to get actual Error\n        var errorEvent = exception;\n        // eslint-disable-next-line no-param-reassign\n        exception = errorEvent.error;\n        event = eventFromStacktrace(computeStackTrace(exception));\n        return event;\n    }\n    if (isDOMError(exception) || isDOMException(exception)) {\n        // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n        // then we just extract the name, code, and message, as they don't provide anything else\n        // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n        // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n        var domException = exception;\n        var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n        var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n        event = eventFromString(message, syntheticException, options);\n        addExceptionTypeValue(event, message);\n        if ('code' in domException) {\n            event.tags = __assign(__assign({}, event.tags), { 'DOMException.code': \"\" + domException.code });\n        }\n        return event;\n    }\n    if (isError(exception)) {\n        // we have a real Error object, do nothing\n        event = eventFromStacktrace(computeStackTrace(exception));\n        return event;\n    }\n    if (isPlainObject(exception) || isEvent(exception)) {\n        // If it is plain Object or Event, serialize it manually and extract options\n        // This will allow us to group events based on top-level keys\n        // which is much better than creating new group when any key/value change\n        var objectException = exception;\n        event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n        addExceptionMechanism(event, {\n            synthetic: true,\n        });\n        return event;\n    }\n    // If none of previous checks were valid, then it means that it's not:\n    // - an instance of DOMError\n    // - an instance of DOMException\n    // - an instance of Event\n    // - an instance of Error\n    // - a valid ErrorEvent (one with an error property)\n    // - a plain Object\n    //\n    // So bail out and capture it as a simple message:\n    event = eventFromString(exception, syntheticException, options);\n    addExceptionTypeValue(event, \"\" + exception, undefined);\n    addExceptionMechanism(event, {\n        synthetic: true,\n    });\n    return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, options) {\n    if (options === void 0) { options = {}; }\n    var event = {\n        message: input,\n    };\n    if (options.attachStacktrace && syntheticException) {\n        var stacktrace = computeStackTrace(syntheticException);\n        var frames_1 = prepareFramesForEvent(stacktrace.stack);\n        event.stacktrace = {\n            frames: frames_1,\n        };\n    }\n    return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","import { __values } from \"tslib\";\nimport { API } from '@sentry/core';\nimport { Status, } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\nvar CATEGORY_MAPPING = {\n    event: 'error',\n    transaction: 'transaction',\n    session: 'session',\n    attachment: 'attachment',\n};\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n    function BaseTransport(options) {\n        this.options = options;\n        /** A simple buffer holding all requests. */\n        this._buffer = new PromiseBuffer(30);\n        /** Locks transport after receiving rate limits in a response */\n        this._rateLimits = {};\n        this._api = new API(options.dsn, options._metadata);\n        // eslint-disable-next-line deprecation/deprecation\n        this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n    }\n    /**\n     * @inheritDoc\n     */\n    BaseTransport.prototype.sendEvent = function (_) {\n        throw new SentryError('Transport Class has to implement `sendEvent` method');\n    };\n    /**\n     * @inheritDoc\n     */\n    BaseTransport.prototype.close = function (timeout) {\n        return this._buffer.drain(timeout);\n    };\n    /**\n     * Handle Sentry repsonse for promise-based transports.\n     */\n    BaseTransport.prototype._handleResponse = function (_a) {\n        var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;\n        var status = Status.fromHttpCode(response.status);\n        /**\n         * \"The name is case-insensitive.\"\n         * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n         */\n        var limited = this._handleRateLimit(headers);\n        if (limited)\n            logger.warn(\"Too many requests, backing off until: \" + this._disabledUntil(requestType));\n        if (status === Status.Success) {\n            resolve({ status: status });\n            return;\n        }\n        reject(response);\n    };\n    /**\n     * Gets the time that given category is disabled until for rate limiting\n     */\n    BaseTransport.prototype._disabledUntil = function (requestType) {\n        var category = CATEGORY_MAPPING[requestType];\n        return this._rateLimits[category] || this._rateLimits.all;\n    };\n    /**\n     * Checks if a category is rate limited\n     */\n    BaseTransport.prototype._isRateLimited = function (requestType) {\n        return this._disabledUntil(requestType) > new Date(Date.now());\n    };\n    /**\n     * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n     */\n    BaseTransport.prototype._handleRateLimit = function (headers) {\n        var e_1, _a, e_2, _b;\n        var now = Date.now();\n        var rlHeader = headers['x-sentry-rate-limits'];\n        var raHeader = headers['retry-after'];\n        if (rlHeader) {\n            try {\n                // rate limit headers are of the form\n                //     <header>,<header>,..\n                // where each <header> is of the form\n                //     <retry_after>: <categories>: <scope>: <reason_code>\n                // where\n                //     <retry_after> is a delay in ms\n                //     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n                //         <category>;<category>;...\n                //     <scope> is what's being limited (org, project, or key) - ignored by SDK\n                //     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n                for (var _c = __values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {\n                    var limit = _d.value;\n                    var parameters = limit.split(':', 2);\n                    var headerDelay = parseInt(parameters[0], 10);\n                    var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n                    try {\n                        for (var _e = (e_2 = void 0, __values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {\n                            var category = _f.value;\n                            this._rateLimits[category || 'all'] = new Date(now + delay);\n                        }\n                    }\n                    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                    finally {\n                        try {\n                            if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return true;\n        }\n        else if (raHeader) {\n            this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n            return true;\n        }\n        return false;\n    };\n    return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { getGlobalObject, isNativeFetch, logger, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n *   const p = f.apply(this, arguments);\n *\n *   p.then(function() {\n *     console.log('hi.');\n *   });\n *\n *   return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome:  Failed to fetch\n * Edge:    Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari:  resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n    /* eslint-disable @typescript-eslint/unbound-method */\n    var _a, _b;\n    // Fast path to avoid DOM I/O\n    var global = getGlobalObject();\n    if (isNativeFetch(global.fetch)) {\n        return global.fetch.bind(global);\n    }\n    var document = global.document;\n    var fetchImpl = global.fetch;\n    // eslint-disable-next-line deprecation/deprecation\n    if (typeof ((_a = document) === null || _a === void 0 ? void 0 : _a.createElement) === \"function\") {\n        try {\n            var sandbox = document.createElement('iframe');\n            sandbox.hidden = true;\n            document.head.appendChild(sandbox);\n            if ((_b = sandbox.contentWindow) === null || _b === void 0 ? void 0 : _b.fetch) {\n                fetchImpl = sandbox.contentWindow.fetch;\n            }\n            document.head.removeChild(sandbox);\n        }\n        catch (e) {\n            logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n        }\n    }\n    return fetchImpl.bind(global);\n    /* eslint-enable @typescript-eslint/unbound-method */\n}\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n    __extends(FetchTransport, _super);\n    function FetchTransport(options, fetchImpl) {\n        if (fetchImpl === void 0) { fetchImpl = getNativeFetchImplementation(); }\n        var _this = _super.call(this, options) || this;\n        _this._fetch = fetchImpl;\n        return _this;\n    }\n    /**\n     * @inheritDoc\n     */\n    FetchTransport.prototype.sendEvent = function (event) {\n        return this._sendRequest(eventToSentryRequest(event, this._api), event);\n    };\n    /**\n     * @inheritDoc\n     */\n    FetchTransport.prototype.sendSession = function (session) {\n        return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n    };\n    /**\n     * @param sentryRequest Prepared SentryRequest to be delivered\n     * @param originalPayload Original payload used to create SentryRequest\n     */\n    FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n        var _this = this;\n        if (this._isRateLimited(sentryRequest.type)) {\n            return Promise.reject({\n                event: originalPayload,\n                type: sentryRequest.type,\n                reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n                status: 429,\n            });\n        }\n        var options = {\n            body: sentryRequest.body,\n            method: 'POST',\n            // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n            // https://caniuse.com/#feat=referrer-policy\n            // It doesn't. And it throw exception instead of ignoring this parameter...\n            // REF: https://github.com/getsentry/raven-js/issues/1233\n            referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n        };\n        if (this.options.fetchParameters !== undefined) {\n            Object.assign(options, this.options.fetchParameters);\n        }\n        if (this.options.headers !== undefined) {\n            options.headers = this.options.headers;\n        }\n        return this._buffer.add(new SyncPromise(function (resolve, reject) {\n            void _this._fetch(sentryRequest.url, options)\n                .then(function (response) {\n                var headers = {\n                    'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n                    'retry-after': response.headers.get('Retry-After'),\n                };\n                _this._handleResponse({\n                    requestType: sentryRequest.type,\n                    response: response,\n                    headers: headers,\n                    resolve: resolve,\n                    reject: reject,\n                });\n            })\n                .catch(reject);\n        }));\n    };\n    return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n    __extends(XHRTransport, _super);\n    function XHRTransport() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @inheritDoc\n     */\n    XHRTransport.prototype.sendEvent = function (event) {\n        return this._sendRequest(eventToSentryRequest(event, this._api), event);\n    };\n    /**\n     * @inheritDoc\n     */\n    XHRTransport.prototype.sendSession = function (session) {\n        return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n    };\n    /**\n     * @param sentryRequest Prepared SentryRequest to be delivered\n     * @param originalPayload Original payload used to create SentryRequest\n     */\n    XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n        var _this = this;\n        if (this._isRateLimited(sentryRequest.type)) {\n            return Promise.reject({\n                event: originalPayload,\n                type: sentryRequest.type,\n                reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n                status: 429,\n            });\n        }\n        return this._buffer.add(new SyncPromise(function (resolve, reject) {\n            var request = new XMLHttpRequest();\n            request.onreadystatechange = function () {\n                if (request.readyState === 4) {\n                    var headers = {\n                        'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n                        'retry-after': request.getResponseHeader('Retry-After'),\n                    };\n                    _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });\n                }\n            };\n            request.open('POST', sentryRequest.url);\n            for (var header in _this.options.headers) {\n                if (_this.options.headers.hasOwnProperty(header)) {\n                    request.setRequestHeader(header, _this.options.headers[header]);\n                }\n            }\n            request.send(sentryRequest.body);\n        }));\n    };\n    return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n    __extends(BrowserBackend, _super);\n    function BrowserBackend() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @inheritDoc\n     */\n    BrowserBackend.prototype.eventFromException = function (exception, hint) {\n        return eventFromException(this._options, exception, hint);\n    };\n    /**\n     * @inheritDoc\n     */\n    BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n        if (level === void 0) { level = Severity.Info; }\n        return eventFromMessage(this._options, message, level, hint);\n    };\n    /**\n     * @inheritDoc\n     */\n    BrowserBackend.prototype._setupTransport = function () {\n        if (!this._options.dsn) {\n            // We return the noop transport here in case there is no Dsn.\n            return _super.prototype._setupTransport.call(this);\n        }\n        var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn, _metadata: this._options._metadata });\n        if (this._options.transport) {\n            return new this._options.transport(transportOptions);\n        }\n        if (supportsFetch()) {\n            return new FetchTransport(transportOptions);\n        }\n        return new XHRTransport(transportOptions);\n    };\n    return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign } from \"tslib\";\nimport { API, captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, logger } from '@sentry/utils';\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n    return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n    // onerror should trigger before setTimeout\n    ignoreOnError += 1;\n    setTimeout(function () {\n        ignoreOnError -= 1;\n    });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n    if (options === void 0) { options = {}; }\n    if (typeof fn !== 'function') {\n        return fn;\n    }\n    try {\n        // We don't wanna wrap it twice\n        if (fn.__sentry__) {\n            return fn;\n        }\n        // If this has already been wrapped in the past, return that wrapped function\n        if (fn.__sentry_wrapped__) {\n            return fn.__sentry_wrapped__;\n        }\n    }\n    catch (e) {\n        // Just accessing custom props in some Selenium environments\n        // can cause a \"Permission denied\" exception (see raven-js#495).\n        // Bail on wrapping and return the function as-is (defers to window.onerror).\n        return fn;\n    }\n    /* eslint-disable prefer-rest-params */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var sentryWrapped = function () {\n        var args = Array.prototype.slice.call(arguments);\n        try {\n            if (before && typeof before === 'function') {\n                before.apply(this, arguments);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n            var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n            if (fn.handleEvent) {\n                // Attempt to invoke user-land function\n                // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n                //       means the sentry.javascript SDK caught an error invoking your application code. This\n                //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n                return fn.handleEvent.apply(this, wrappedArguments);\n            }\n            // Attempt to invoke user-land function\n            // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n            //       means the sentry.javascript SDK caught an error invoking your application code. This\n            //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n            return fn.apply(this, wrappedArguments);\n        }\n        catch (ex) {\n            ignoreNextOnError();\n            withScope(function (scope) {\n                scope.addEventProcessor(function (event) {\n                    var processedEvent = __assign({}, event);\n                    if (options.mechanism) {\n                        addExceptionTypeValue(processedEvent, undefined, undefined);\n                        addExceptionMechanism(processedEvent, options.mechanism);\n                    }\n                    processedEvent.extra = __assign(__assign({}, processedEvent.extra), { arguments: args });\n                    return processedEvent;\n                });\n                captureException(ex);\n            });\n            throw ex;\n        }\n    };\n    /* eslint-enable prefer-rest-params */\n    // Accessing some objects may throw\n    // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n    try {\n        for (var property in fn) {\n            if (Object.prototype.hasOwnProperty.call(fn, property)) {\n                sentryWrapped[property] = fn[property];\n            }\n        }\n    }\n    catch (_oO) { } // eslint-disable-line no-empty\n    fn.prototype = fn.prototype || {};\n    sentryWrapped.prototype = fn.prototype;\n    Object.defineProperty(fn, '__sentry_wrapped__', {\n        enumerable: false,\n        value: sentryWrapped,\n    });\n    // Signal that this function has been wrapped/filled already\n    // for both debugging and to prevent it to being wrapped/filled twice\n    Object.defineProperties(sentryWrapped, {\n        __sentry__: {\n            enumerable: false,\n            value: true,\n        },\n        __sentry_original__: {\n            enumerable: false,\n            value: fn,\n        },\n    });\n    // Restore original function name (not all browsers allow that)\n    try {\n        var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n        if (descriptor.configurable) {\n            Object.defineProperty(sentryWrapped, 'name', {\n                get: function () {\n                    return fn.name;\n                },\n            });\n        }\n        // eslint-disable-next-line no-empty\n    }\n    catch (_oO) { }\n    return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n    if (options === void 0) { options = {}; }\n    if (!options.eventId) {\n        logger.error(\"Missing eventId option in showReportDialog call\");\n        return;\n    }\n    if (!options.dsn) {\n        logger.error(\"Missing dsn option in showReportDialog call\");\n        return;\n    }\n    var script = document.createElement('script');\n    script.async = true;\n    script.src = new API(options.dsn).getReportDialogEndpoint(options);\n    if (options.onLoad) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        script.onload = options.onLoad;\n    }\n    (document.head || document.body).appendChild(script);\n}\n//# sourceMappingURL=helpers.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n    /** JSDoc */\n    function GlobalHandlers(options) {\n        /**\n         * @inheritDoc\n         */\n        this.name = GlobalHandlers.id;\n        /** JSDoc */\n        this._onErrorHandlerInstalled = false;\n        /** JSDoc */\n        this._onUnhandledRejectionHandlerInstalled = false;\n        this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n    }\n    /**\n     * @inheritDoc\n     */\n    GlobalHandlers.prototype.setupOnce = function () {\n        Error.stackTraceLimit = 50;\n        if (this._options.onerror) {\n            logger.log('Global Handler attached: onerror');\n            this._installGlobalOnErrorHandler();\n        }\n        if (this._options.onunhandledrejection) {\n            logger.log('Global Handler attached: onunhandledrejection');\n            this._installGlobalOnUnhandledRejectionHandler();\n        }\n    };\n    /** JSDoc */\n    GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n        var _this = this;\n        if (this._onErrorHandlerInstalled) {\n            return;\n        }\n        addInstrumentationHandler({\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            callback: function (data) {\n                var error = data.error;\n                var currentHub = getCurrentHub();\n                var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n                var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n                if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n                    return;\n                }\n                var client = currentHub.getClient();\n                var event = isPrimitive(error)\n                    ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n                    : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n                        attachStacktrace: client && client.getOptions().attachStacktrace,\n                        rejection: false,\n                    }), data.url, data.line, data.column);\n                addExceptionMechanism(event, {\n                    handled: false,\n                    type: 'onerror',\n                });\n                currentHub.captureEvent(event, {\n                    originalException: error,\n                });\n            },\n            type: 'error',\n        });\n        this._onErrorHandlerInstalled = true;\n    };\n    /** JSDoc */\n    GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n        var _this = this;\n        if (this._onUnhandledRejectionHandlerInstalled) {\n            return;\n        }\n        addInstrumentationHandler({\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            callback: function (e) {\n                var error = e;\n                // dig the object of the rejection out of known event types\n                try {\n                    // PromiseRejectionEvents store the object of the rejection under 'reason'\n                    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n                    if ('reason' in e) {\n                        error = e.reason;\n                    }\n                    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n                    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n                    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n                    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n                    // https://github.com/getsentry/sentry-javascript/issues/2380\n                    else if ('detail' in e && 'reason' in e.detail) {\n                        error = e.detail.reason;\n                    }\n                }\n                catch (_oO) {\n                    // no-empty\n                }\n                var currentHub = getCurrentHub();\n                var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n                var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n                if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n                    return true;\n                }\n                var client = currentHub.getClient();\n                var event = isPrimitive(error)\n                    ? _this._eventFromRejectionWithPrimitive(error)\n                    : eventFromUnknownInput(error, undefined, {\n                        attachStacktrace: client && client.getOptions().attachStacktrace,\n                        rejection: true,\n                    });\n                event.level = Severity.Error;\n                addExceptionMechanism(event, {\n                    handled: false,\n                    type: 'onunhandledrejection',\n                });\n                currentHub.captureEvent(event, {\n                    originalException: error,\n                });\n                return;\n            },\n            type: 'unhandledrejection',\n        });\n        this._onUnhandledRejectionHandlerInstalled = true;\n    };\n    /**\n     * This function creates a stack from an old, error-less onerror handler.\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n        var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n        // If 'message' is ErrorEvent, get real message from inside\n        var message = isErrorEvent(msg) ? msg.message : msg;\n        var name;\n        if (isString(message)) {\n            var groups = message.match(ERROR_TYPES_RE);\n            if (groups) {\n                name = groups[1];\n                message = groups[2];\n            }\n        }\n        var event = {\n            exception: {\n                values: [\n                    {\n                        type: name || 'Error',\n                        value: message,\n                    },\n                ],\n            },\n        };\n        return this._enhanceEventWithInitialFrame(event, url, line, column);\n    };\n    /**\n     * Create an event from a promise rejection where the `reason` is a primitive.\n     *\n     * @param reason: The `reason` property of the promise rejection\n     * @returns An Event object with an appropriate `exception` value\n     */\n    GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {\n        return {\n            exception: {\n                values: [\n                    {\n                        type: 'UnhandledRejection',\n                        // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n                        value: \"Non-Error promise rejection captured with value: \" + String(reason),\n                    },\n                ],\n            },\n        };\n    };\n    /** JSDoc */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n        event.exception = event.exception || {};\n        event.exception.values = event.exception.values || [];\n        event.exception.values[0] = event.exception.values[0] || {};\n        event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n        event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n        var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n        var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n        var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n        if (event.exception.values[0].stacktrace.frames.length === 0) {\n            event.exception.values[0].stacktrace.frames.push({\n                colno: colno,\n                filename: filename,\n                function: '?',\n                in_app: true,\n                lineno: lineno,\n            });\n        }\n        return event;\n    };\n    /**\n     * @inheritDoc\n     */\n    GlobalHandlers.id = 'GlobalHandlers';\n    return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\nvar DEFAULT_EVENT_TARGET = [\n    'EventTarget',\n    'Window',\n    'Node',\n    'ApplicationCache',\n    'AudioTrackList',\n    'ChannelMergerNode',\n    'CryptoOperation',\n    'EventSource',\n    'FileReader',\n    'HTMLUnknownElement',\n    'IDBDatabase',\n    'IDBRequest',\n    'IDBTransaction',\n    'KeyOperation',\n    'MediaController',\n    'MessagePort',\n    'ModalWindow',\n    'Notification',\n    'SVGElementInstance',\n    'Screen',\n    'TextTrack',\n    'TextTrackCue',\n    'TextTrackList',\n    'WebSocket',\n    'WebSocketWorker',\n    'Worker',\n    'XMLHttpRequest',\n    'XMLHttpRequestEventTarget',\n    'XMLHttpRequestUpload',\n];\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n    /**\n     * @inheritDoc\n     */\n    function TryCatch(options) {\n        /**\n         * @inheritDoc\n         */\n        this.name = TryCatch.id;\n        this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n    }\n    /**\n     * Wrap timer functions and event targets to catch errors\n     * and provide better metadata.\n     */\n    TryCatch.prototype.setupOnce = function () {\n        var global = getGlobalObject();\n        if (this._options.setTimeout) {\n            fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n        }\n        if (this._options.setInterval) {\n            fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n        }\n        if (this._options.requestAnimationFrame) {\n            fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n        }\n        if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n            fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n        }\n        if (this._options.eventTarget) {\n            var eventTarget = Array.isArray(this._options.eventTarget) ? this._options.eventTarget : DEFAULT_EVENT_TARGET;\n            eventTarget.forEach(this._wrapEventTarget.bind(this));\n        }\n    };\n    /** JSDoc */\n    TryCatch.prototype._wrapTimeFunction = function (original) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var originalCallback = args[0];\n            args[0] = wrap(originalCallback, {\n                mechanism: {\n                    data: { function: getFunctionName(original) },\n                    handled: true,\n                    type: 'instrument',\n                },\n            });\n            return original.apply(this, args);\n        };\n    };\n    /** JSDoc */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    TryCatch.prototype._wrapRAF = function (original) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return function (callback) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            return original.call(this, wrap(callback, {\n                mechanism: {\n                    data: {\n                        function: 'requestAnimationFrame',\n                        handler: getFunctionName(original),\n                    },\n                    handled: true,\n                    type: 'instrument',\n                },\n            }));\n        };\n    };\n    /** JSDoc */\n    TryCatch.prototype._wrapEventTarget = function (target) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        var global = getGlobalObject();\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        var proto = global[target] && global[target].prototype;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n            return;\n        }\n        fill(proto, 'addEventListener', function (original) {\n            return function (eventName, fn, options) {\n                try {\n                    if (typeof fn.handleEvent === 'function') {\n                        fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n                            mechanism: {\n                                data: {\n                                    function: 'handleEvent',\n                                    handler: getFunctionName(fn),\n                                    target: target,\n                                },\n                                handled: true,\n                                type: 'instrument',\n                            },\n                        });\n                    }\n                }\n                catch (err) {\n                    // can sometimes get 'Permission denied to access property \"handle Event'\n                }\n                return original.call(this, eventName, \n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                wrap(fn, {\n                    mechanism: {\n                        data: {\n                            function: 'addEventListener',\n                            handler: getFunctionName(fn),\n                            target: target,\n                        },\n                        handled: true,\n                        type: 'instrument',\n                    },\n                }), options);\n            };\n        });\n        fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n            return function (eventName, fn, options) {\n                var _a;\n                /**\n                 * There are 2 possible scenarios here:\n                 *\n                 * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n                 * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n                 * as a pass-through, and call original `removeEventListener` with it.\n                 *\n                 * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n                 * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n                 * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n                 * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n                 * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n                 *\n                 * When someone adds a handler prior to initialization, and then do it again, but after,\n                 * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n                 * to get rid of the initial handler and it'd stick there forever.\n                 */\n                var wrappedEventHandler = fn;\n                try {\n                    var originalEventHandler = (_a = wrappedEventHandler) === null || _a === void 0 ? void 0 : _a.__sentry_wrapped__;\n                    if (originalEventHandler) {\n                        originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n                    }\n                }\n                catch (e) {\n                    // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n                }\n                return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n            };\n        });\n    };\n    /** JSDoc */\n    TryCatch.prototype._wrapXHR = function (originalSend) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            var xhr = this;\n            var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n            xmlHttpRequestProps.forEach(function (prop) {\n                if (prop in xhr && typeof xhr[prop] === 'function') {\n                    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                    fill(xhr, prop, function (original) {\n                        var wrapOptions = {\n                            mechanism: {\n                                data: {\n                                    function: prop,\n                                    handler: getFunctionName(original),\n                                },\n                                handled: true,\n                                type: 'instrument',\n                            },\n                        };\n                        // If Instrument integration has been called before TryCatch, get the name of original function\n                        if (original.__sentry_original__) {\n                            wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n                        }\n                        // Otherwise wrap directly\n                        return wrap(original, wrapOptions);\n                    });\n                }\n            });\n            return originalSend.apply(this, args);\n        };\n    };\n    /**\n     * @inheritDoc\n     */\n    TryCatch.id = 'TryCatch';\n    return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n    /**\n     * @inheritDoc\n     */\n    function Breadcrumbs(options) {\n        /**\n         * @inheritDoc\n         */\n        this.name = Breadcrumbs.id;\n        this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n    }\n    /**\n     * Create a breadcrumb of `sentry` from the events themselves\n     */\n    Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n        if (!this._options.sentry) {\n            return;\n        }\n        getCurrentHub().addBreadcrumb({\n            category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n            event_id: event.event_id,\n            level: event.level,\n            message: getEventDescription(event),\n        }, {\n            event: event,\n        });\n    };\n    /**\n     * Instrument browser built-ins w/ breadcrumb capturing\n     *  - Console API\n     *  - DOM API (click/typing)\n     *  - XMLHttpRequest API\n     *  - Fetch API\n     *  - History API\n     */\n    Breadcrumbs.prototype.setupOnce = function () {\n        var _this = this;\n        if (this._options.console) {\n            addInstrumentationHandler({\n                callback: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    _this._consoleBreadcrumb.apply(_this, __spread(args));\n                },\n                type: 'console',\n            });\n        }\n        if (this._options.dom) {\n            addInstrumentationHandler({\n                callback: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    _this._domBreadcrumb.apply(_this, __spread(args));\n                },\n                type: 'dom',\n            });\n        }\n        if (this._options.xhr) {\n            addInstrumentationHandler({\n                callback: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    _this._xhrBreadcrumb.apply(_this, __spread(args));\n                },\n                type: 'xhr',\n            });\n        }\n        if (this._options.fetch) {\n            addInstrumentationHandler({\n                callback: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    _this._fetchBreadcrumb.apply(_this, __spread(args));\n                },\n                type: 'fetch',\n            });\n        }\n        if (this._options.history) {\n            addInstrumentationHandler({\n                callback: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    _this._historyBreadcrumb.apply(_this, __spread(args));\n                },\n                type: 'history',\n            });\n        }\n    };\n    /**\n     * Creates breadcrumbs from console API calls\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n        var breadcrumb = {\n            category: 'console',\n            data: {\n                arguments: handlerData.args,\n                logger: 'console',\n            },\n            level: Severity.fromString(handlerData.level),\n            message: safeJoin(handlerData.args, ' '),\n        };\n        if (handlerData.level === 'assert') {\n            if (handlerData.args[0] === false) {\n                breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n                breadcrumb.data.arguments = handlerData.args.slice(1);\n            }\n            else {\n                // Don't capture a breadcrumb for passed assertions\n                return;\n            }\n        }\n        getCurrentHub().addBreadcrumb(breadcrumb, {\n            input: handlerData.args,\n            level: handlerData.level,\n        });\n    };\n    /**\n     * Creates breadcrumbs from DOM API calls\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n        var target;\n        // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n        try {\n            target = handlerData.event.target\n                ? htmlTreeAsString(handlerData.event.target)\n                : htmlTreeAsString(handlerData.event);\n        }\n        catch (e) {\n            target = '<unknown>';\n        }\n        if (target.length === 0) {\n            return;\n        }\n        getCurrentHub().addBreadcrumb({\n            category: \"ui.\" + handlerData.name,\n            message: target,\n        }, {\n            event: handlerData.event,\n            name: handlerData.name,\n            global: handlerData.global,\n        });\n    };\n    /**\n     * Creates breadcrumbs from XHR API calls\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n        if (handlerData.endTimestamp) {\n            // We only capture complete, non-sentry requests\n            if (handlerData.xhr.__sentry_own_request__) {\n                return;\n            }\n            var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;\n            getCurrentHub().addBreadcrumb({\n                category: 'xhr',\n                data: {\n                    method: method,\n                    url: url,\n                    status_code: status_code,\n                },\n                type: 'http',\n            }, {\n                xhr: handlerData.xhr,\n                input: body,\n            });\n            return;\n        }\n    };\n    /**\n     * Creates breadcrumbs from fetch API calls\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n        // We only capture complete fetch requests\n        if (!handlerData.endTimestamp) {\n            return;\n        }\n        if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n            // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n            return;\n        }\n        if (handlerData.error) {\n            getCurrentHub().addBreadcrumb({\n                category: 'fetch',\n                data: handlerData.fetchData,\n                level: Severity.Error,\n                type: 'http',\n            }, {\n                data: handlerData.error,\n                input: handlerData.args,\n            });\n        }\n        else {\n            getCurrentHub().addBreadcrumb({\n                category: 'fetch',\n                data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n                type: 'http',\n            }, {\n                input: handlerData.args,\n                response: handlerData.response,\n            });\n        }\n    };\n    /**\n     * Creates breadcrumbs from history API calls\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n        var global = getGlobalObject();\n        var from = handlerData.from;\n        var to = handlerData.to;\n        var parsedLoc = parseUrl(global.location.href);\n        var parsedFrom = parseUrl(from);\n        var parsedTo = parseUrl(to);\n        // Initial pushState doesn't provide `from` information\n        if (!parsedFrom.path) {\n            parsedFrom = parsedLoc;\n        }\n        // Use only the path component of the URL if the URL matches the current\n        // document (almost all the time when using pushState)\n        if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n            to = parsedTo.relative;\n        }\n        if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n            from = parsedFrom.relative;\n        }\n        getCurrentHub().addBreadcrumb({\n            category: 'navigation',\n            data: {\n                from: from,\n                to: to,\n            },\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    Breadcrumbs.id = 'Breadcrumbs';\n    return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n    /**\n     * @inheritDoc\n     */\n    function LinkedErrors(options) {\n        if (options === void 0) { options = {}; }\n        /**\n         * @inheritDoc\n         */\n        this.name = LinkedErrors.id;\n        this._key = options.key || DEFAULT_KEY;\n        this._limit = options.limit || DEFAULT_LIMIT;\n    }\n    /**\n     * @inheritDoc\n     */\n    LinkedErrors.prototype.setupOnce = function () {\n        addGlobalEventProcessor(function (event, hint) {\n            var self = getCurrentHub().getIntegration(LinkedErrors);\n            if (self) {\n                return self._handler(event, hint);\n            }\n            return event;\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    LinkedErrors.prototype._handler = function (event, hint) {\n        if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n            return event;\n        }\n        var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n        event.exception.values = __spread(linkedErrors, event.exception.values);\n        return event;\n    };\n    /**\n     * @inheritDoc\n     */\n    LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n        if (stack === void 0) { stack = []; }\n        if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n            return stack;\n        }\n        var stacktrace = computeStackTrace(error[key]);\n        var exception = exceptionFromStacktrace(stacktrace);\n        return this._walkErrorTree(error[key], key, __spread([exception], stack));\n    };\n    /**\n     * @inheritDoc\n     */\n    LinkedErrors.id = 'LinkedErrors';\n    return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n    function UserAgent() {\n        /**\n         * @inheritDoc\n         */\n        this.name = UserAgent.id;\n    }\n    /**\n     * @inheritDoc\n     */\n    UserAgent.prototype.setupOnce = function () {\n        addGlobalEventProcessor(function (event) {\n            var _a, _b, _c;\n            if (getCurrentHub().getIntegration(UserAgent)) {\n                // if none of the information we want exists, don't bother\n                if (!global.navigator && !global.location && !global.document) {\n                    return event;\n                }\n                // grab as much info as exists and add it to the event\n                var url = ((_a = event.request) === null || _a === void 0 ? void 0 : _a.url) || ((_b = global.location) === null || _b === void 0 ? void 0 : _b.href);\n                var referrer = (global.document || {}).referrer;\n                var userAgent = (global.navigator || {}).userAgent;\n                var headers = __assign(__assign(__assign({}, (_c = event.request) === null || _c === void 0 ? void 0 : _c.headers), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));\n                var request = __assign(__assign({}, (url && { url: url })), { headers: headers });\n                return __assign(__assign({}, event), { request: request });\n            }\n            return event;\n        });\n    };\n    /**\n     * @inheritDoc\n     */\n    UserAgent.id = 'UserAgent';\n    return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n    __extends(BrowserClient, _super);\n    /**\n     * Creates a new Browser SDK instance.\n     *\n     * @param options Configuration options for this SDK.\n     */\n    function BrowserClient(options) {\n        if (options === void 0) { options = {}; }\n        var _this = this;\n        options._metadata = options._metadata || {};\n        options._metadata.sdk = options._metadata.sdk || {\n            name: 'sentry.javascript.browser',\n            packages: [\n                {\n                    name: 'npm:@sentry/browser',\n                    version: SDK_VERSION,\n                },\n            ],\n            version: SDK_VERSION,\n        };\n        _this = _super.call(this, BrowserBackend, options) || this;\n        return _this;\n    }\n    /**\n     * Show a report dialog to the user to send feedback to a specific event.\n     *\n     * @param options Set individual options for the dialog\n     */\n    BrowserClient.prototype.showReportDialog = function (options) {\n        if (options === void 0) { options = {}; }\n        // doesn't work without a document (React Native)\n        var document = getGlobalObject().document;\n        if (!document) {\n            return;\n        }\n        if (!this._isEnabled()) {\n            logger.error('Trying to call showReportDialog with Sentry Client disabled');\n            return;\n        }\n        injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n    };\n    /**\n     * @inheritDoc\n     */\n    BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n        event.platform = event.platform || 'javascript';\n        return _super.prototype._prepareEvent.call(this, event, scope, hint);\n    };\n    /**\n     * @inheritDoc\n     */\n    BrowserClient.prototype._sendEvent = function (event) {\n        var integration = this.getIntegration(Breadcrumbs);\n        if (integration) {\n            integration.addSentryBreadcrumb(event);\n        }\n        _super.prototype._sendEvent.call(this, event);\n    };\n    return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { addInstrumentationHandler, getGlobalObject, logger, SyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n    new CoreIntegrations.InboundFilters(),\n    new CoreIntegrations.FunctionToString(),\n    new TryCatch(),\n    new Breadcrumbs(),\n    new GlobalHandlers(),\n    new LinkedErrors(),\n    new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n *   dsn: '__DSN__',\n *   // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n *   scope.setExtra({ battery: 0.7 });\n *   scope.setTag({ user_mode: 'admin' });\n *   scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n *   message: 'My Breadcrumb',\n *   // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n *   message: 'Manual',\n *   stacktrace: [\n *     // ...\n *   ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n    if (options === void 0) { options = {}; }\n    if (options.defaultIntegrations === undefined) {\n        options.defaultIntegrations = defaultIntegrations;\n    }\n    if (options.release === undefined) {\n        var window_1 = getGlobalObject();\n        // This supports the variable that sentry-webpack-plugin injects\n        if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n            options.release = window_1.SENTRY_RELEASE.id;\n        }\n    }\n    if (options.autoSessionTracking === undefined) {\n        options.autoSessionTracking = true;\n    }\n    initAndBind(BrowserClient, options);\n    if (options.autoSessionTracking) {\n        startSessionTracking();\n    }\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n    if (options === void 0) { options = {}; }\n    if (!options.eventId) {\n        options.eventId = getCurrentHub().lastEventId();\n    }\n    var client = getCurrentHub().getClient();\n    if (client) {\n        client.showReportDialog(options);\n    }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n    return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n    // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n    callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n    var client = getCurrentHub().getClient();\n    if (client) {\n        return client.flush(timeout);\n    }\n    return SyncPromise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n    var client = getCurrentHub().getClient();\n    if (client) {\n        return client.close(timeout);\n    }\n    return SyncPromise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n    return internalWrap(fn)();\n}\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n    var window = getGlobalObject();\n    var document = window.document;\n    if (typeof document === 'undefined') {\n        logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n        return;\n    }\n    var hub = getCurrentHub();\n    // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n    // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n    // pinned at the same version in package.json, but there are edge cases where it's possible. See\n    // https://github.com/getsentry/sentry-javascript/issues/3207 and\n    // https://github.com/getsentry/sentry-javascript/issues/3234 and\n    // https://github.com/getsentry/sentry-javascript/issues/3278.\n    if (typeof hub.startSession !== 'function' || typeof hub.captureSession !== 'function') {\n        return;\n    }\n    // The session duration for browser sessions does not track a meaningful\n    // concept that can be used as a metric.\n    // Automatically captured sessions are akin to page views, and thus we\n    // discard their duration.\n    hub.startSession({ ignoreDuration: true });\n    hub.captureSession();\n    // We want to create a session for every navigation as well\n    addInstrumentationHandler({\n        callback: function (_a) {\n            var from = _a.from, to = _a.to;\n            // Don't create an additional session for the initial route or if the location did not change\n            if (from === undefined || from === to) {\n                return;\n            }\n            hub.startSession({ ignoreDuration: true });\n            hub.captureSession();\n        },\n        type: 'history',\n    });\n}\n//# sourceMappingURL=sdk.js.map","import * as Sentry from '@sentry/browser';\n\n(function() {\n  if (window.sentry_dsn !== \"\") {\n    Sentry.init({\n      dsn: window.sentry_dsn,\n      environment: window.sentry_environment,\n      release: window.sentry_release,\n    });\n  }\n\n  var testJSError = document.getElementById(\"test-js-error\");\n  if (testJSError) {\n    testJSError.addEventListener(\"click\", function (ev) {\n      ev.preventDefault()\n      throw new Error(\"Исключение JS вызванное вручную\")\n    })\n  }\n})();\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie';\n\n// Баннер согласия на cookie: «принять» запоминается на год, «отклонить» показывает окно,\n// из которого выхода нет.\n\nconst COOKIE_NAME = 'cookieConsent';\nconst COOKIE_EXPIRY_DAYS = 365;\n// С запасом к переходу в _cookie-consent.sass ($transitionSpeed, .25s): баннер доигрывает уход.\nconst HIDE_ANIMATION_MS = 500;\n\nfunction init() {\n  const consent = document.getElementById('cookie-consent');\n  if (!consent || Cookies.get(COOKIE_NAME)) return;\n\n  consent.classList.add('cookie-consent-is-visible');\n  // В разметке на баннере стоит aria-hidden, чтобы скринридер не начинал страницу с него.\n  consent.setAttribute('aria-hidden', 'false');\n\n  const hide = () => {\n    consent.classList.remove('cookie-consent-is-visible');\n    setTimeout(() => consent.remove(), HIDE_ANIMATION_MS);\n  };\n\n  document.getElementById('cookie-accept')?.addEventListener('click', function() {\n    Cookies.set(COOKIE_NAME, 'accepted', { expires: COOKIE_EXPIRY_DAYS, sameSite: 'Lax' });\n    hide();\n  });\n\n  document.getElementById('cookie-decline')?.addEventListener('click', function() {\n    hide();\n\n    const blocked = document.getElementById('cookie-blocked');\n    if (!blocked) return;\n\n    blocked.classList.add('cookie-blocked-is-visible');\n    const modal = blocked.querySelector('.cookie-blocked__modal');\n    if (modal) {\n      modal.setAttribute('tabindex', '-1');\n      modal.focus();\n    }\n    document.documentElement.style.overflow = 'hidden';\n    document.body.style.overflow = 'hidden';\n  });\n}\n\nif (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\nelse init();\n","//////////////\n// ANIMATIONS\n//////////////\n// Развернуть, свернуть, проявить, убрать — то, что раньше давали slideDown/slideUp и\n// fadeIn/fadeOut. Значения едут в inline-стилях: блоку не нужно своё правило в css,\n// и после анимации от неё не остаётся ничего, кроме display.\n\n// Столько же, сколько анимация jQuery занимала по умолчанию.\nconst DURATION = 400;\n\n// Высота едет вместе с вертикальными отступами: иначе от свёрнутого блока остаётся их полоса.\nconst SLIDE_STYLES = ['height', 'padding-top', 'padding-bottom', 'margin-top', 'margin-bottom'];\nconst FADE_STYLES = ['opacity'];\n\nconst values = (names, value) => Object.fromEntries(names.map(name => [name, value]));\nconst NATURAL = values(SLIDE_STYLES, '');\nconst COLLAPSED = values(SLIDE_STYLES, '0px');\n\n// Блоки, которые сейчас едут: с них анимация начинается не с начала, а с места, где их застали.\nconst timers = new WeakMap();\n\nconst isHidden = element => getComputedStyle(element).display === 'none';\n\n// Переход отсчитывается от уже применённых стилей, а применяет их чтение размера. Кадр\n// (requestAnimationFrame) тут не годится — в фоновой вкладке его можно не дождаться.\nconst applyStyles = element => void element.offsetHeight;\n\nconst apply = (element, styles) =>\n  Object.entries(styles).forEach(([name, value]) => element.style.setProperty(name, value));\n\nfunction measure(element) {\n  const computed = getComputedStyle(element);\n  return Object.fromEntries(SLIDE_STYLES.map(name => [name, computed.getPropertyValue(name)]));\n}\n\n// Пустой display возвращает блок к css; если блок скрыт правилом, а не стилем, — не вернёт.\nfunction show(element) {\n  element.style.display = '';\n  if (isHidden(element)) element.style.display = 'block';\n}\n\n// Прошлая анимация того же блока: её уборка пришла бы поверх новой.\nfunction stop(element) {\n  clearTimeout(timers.get(element));\n  timers.delete(element);\n  element.style.transition = '';\n}\n\nfunction play(element, styles, duration, finish) {\n  element.style.transition = styles.map(name => `${name} ${duration}ms`).join(', ');\n  timers.set(\n    element,\n    setTimeout(function() {\n      stop(element);\n      finish();\n    }, duration)\n  );\n}\n\nexport function slideDown(element, duration = DURATION) {\n  if (!isHidden(element) && !timers.has(element)) return;\n\n  // Мерить надо до stop: тот снимает переход, и высота тут же прыгает к его цели.\n  const from = timers.has(element) ? measure(element) : COLLAPSED;\n  stop(element);\n\n  show(element);\n  // Без overflow отступы детей выходят за блок, и мерить надо ту высоту, в которой они внутри.\n  element.style.overflow = 'hidden';\n  apply(element, NATURAL);\n  const to = measure(element);\n\n  apply(element, from);\n  applyStyles(element);\n\n  apply(element, to);\n  play(element, SLIDE_STYLES, duration, function() {\n    element.style.overflow = '';\n    apply(element, NATURAL);\n  });\n}\n\nexport function slideUp(element, duration = DURATION) {\n  if (isHidden(element) && !timers.has(element)) return;\n\n  const running = timers.has(element) ? measure(element) : null;\n  stop(element);\n\n  element.style.overflow = 'hidden';\n  apply(element, running || measure(element));\n  applyStyles(element);\n\n  apply(element, COLLAPSED);\n  play(element, SLIDE_STYLES, duration, function() {\n    element.style.display = 'none';\n    element.style.overflow = '';\n    apply(element, NATURAL);\n  });\n}\n\nexport function fadeIn(element, duration = DURATION) {\n  // Видимому блоку проявляться неоткуда: без этой проверки он мигнул бы прозрачным.\n  if (!isHidden(element) && !timers.has(element)) return;\n\n  const from = timers.has(element) ? getComputedStyle(element).opacity : '0';\n  stop(element);\n\n  show(element);\n  element.style.opacity = '';\n  const to = getComputedStyle(element).opacity;\n\n  element.style.opacity = from;\n  applyStyles(element);\n\n  element.style.opacity = to;\n  play(element, FADE_STYLES, duration, function() {\n    element.style.opacity = '';\n  });\n}\n\nexport function fadeOut(element, duration = DURATION) {\n  if (isHidden(element) && !timers.has(element)) return;\n\n  const from = getComputedStyle(element).opacity;\n  stop(element);\n\n  element.style.opacity = from;\n  applyStyles(element);\n\n  element.style.opacity = '0';\n  play(element, FADE_STYLES, duration, function() {\n    element.style.display = 'none';\n    element.style.opacity = '';\n  });\n}\n","import { slideDown, slideUp } from '../../core/animations.js';\n\n//////\n// FAQ\n//////\nconst DURATION = 300;\n\nexport function initFAQ() {\n  document.addEventListener('click', function(event) {\n    const toggle = event.target.closest('.js-faq-toggle');\n    if (!toggle) return;\n\n    const item = toggle.closest('.js-faq-item');\n    const answer = item && item.querySelector('.faq__answer');\n    if (!answer) return;\n\n    // Ответ едет за классом вопроса, а не за своей видимостью: на середине сворачивания\n    // он ещё виден, и по второму щелчку его надо разворачивать, а не сворачивать снова.\n    if (item.classList.toggle('is-active')) slideDown(answer, DURATION);\n    else slideUp(answer, DURATION);\n  });\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","import debounce from 'lodash/debounce';\n\nimport { fadeIn, fadeOut } from '../../core/animations.js';\n\n//////////\n// FILTER LIST\n//////////\nconst TYPING_DELAY = 300;\nconst FADE_DURATION = 100;\n// Пустые колонки прячутся, когда строки в них доиграли своё исчезновение.\nconst REGROUP_DELAY = 200;\n\n// Строки этого списка прячет и показывает только фильтр, и делает это стилем самой строки.\nconst isShown = element => element.style.display !== 'none';\n\n// Колонка без единой оставшейся строки не нужна: от неё остался бы один заголовок буквы.\nfunction hideEmptyGroups(list) {\n  list.querySelectorAll('.popup__region').forEach(function(group) {\n    const items = Array.from(group.querySelectorAll('.popup__region-list > li'));\n    // Буква, у которой городов нет и в разметке, фильтру не принадлежит: её видимость не его дело.\n    if (items.length === 0) return;\n\n    group.style.display = items.some(isShown) ? '' : 'none';\n  });\n}\n\nfunction filterList(input) {\n  const list = document.querySelector(input.dataset.list);\n  if (!list) return;\n\n  const items = list.querySelectorAll('li');\n\n  input.addEventListener(\n    'input',\n    debounce(function() {\n      const query = input.value.trim().toLowerCase();\n\n      items.forEach(function(item) {\n        if (item.textContent.trim().toLowerCase().includes(query)) fadeIn(item, FADE_DURATION);\n        else fadeOut(item, FADE_DURATION);\n      });\n\n      setTimeout(() => hideEmptyGroups(list), REGROUP_DELAY);\n    }, TYPING_DELAY)\n  );\n}\n\nexport function initFilterList() {\n  document.querySelectorAll('.js-filter-list').forEach(filterList);\n}\n","//////////\n// LIGHTBOX\n//////////\n// Просмотр картинок галереи: открывает картинку по ссылке и листает соседей того же блока.\n\nconst GALLERY_SELECTOR = '.js-gallery-swiper';\nconst LINK_SELECTOR = '.js-gallery-lightbox';\n// Тот же класс, что у modals.js: фон под открытым окном прокручиваться не должен.\nconst SCROLL_LOCK_CLASS = 'modal-open';\n\nconst MARKUP = `\n  <button type=\"button\" class=\"lightbox__close js-lightbox-close\" title=\"Закрыть\">\n    <svg class=\"ico ico-mono-close\"><use xlink:href=\"#ico-mono-close\"></use></svg>\n  </button>\n  <button type=\"button\" class=\"lightbox__arrow lightbox__arrow--prev js-lightbox-prev\" title=\"Предыдущая\"></button>\n  <button type=\"button\" class=\"lightbox__arrow lightbox__arrow--next js-lightbox-next\" title=\"Следующая\"></button>\n  <figure class=\"lightbox__figure\">\n    <img class=\"lightbox__image\" alt=\"\">\n    <figcaption class=\"lightbox__bar\">\n      <span class=\"lightbox__title\"></span>\n      <span class=\"lightbox__counter\"></span>\n    </figcaption>\n  </figure>\n`;\n\nlet dialog = null;\nlet image = null;\nlet links = [];\nlet current = 0;\n\nfunction show(position) {\n  // По кругу: с последней картинки «вперёд» ведёт на первую.\n  current = (position + links.length) % links.length;\n  const link = links[current];\n  const title = link.getAttribute('title') || '';\n\n  image.src = link.getAttribute('href');\n  image.alt = title;\n  dialog.querySelector('.lightbox__title').textContent = title;\n  dialog.querySelector('.lightbox__counter').textContent =\n    links.length > 1 ? `${current + 1} из ${links.length}` : '';\n}\n\nfunction close() {\n  dialog.close();\n  document.documentElement.classList.remove(SCROLL_LOCK_CLASS);\n  // Без этого при следующем открытии успевает мелькнуть прошлая картинка.\n  image.removeAttribute('src');\n}\n\nfunction build() {\n  dialog = document.createElement('dialog');\n  dialog.className = 'lightbox';\n  dialog.innerHTML = MARKUP;\n  image = dialog.querySelector('.lightbox__image');\n\n  dialog.addEventListener('click', function(event) {\n    if (event.target.closest('.js-lightbox-prev')) show(current - 1);\n    else if (event.target.closest('.js-lightbox-next')) show(current + 1);\n    else if (event.target.closest('.js-lightbox-close')) close();\n    // Клик мимо картинки — это клик по фону окна.\n    else if (!event.target.closest('.lightbox__figure')) close();\n  });\n  dialog.addEventListener('keydown', function(event) {\n    if (event.key === 'ArrowLeft') show(current - 1);\n    else if (event.key === 'ArrowRight') show(current + 1);\n  });\n  // Esc даёт только cancel; закрываем сами, чтобы убрать за собой тем же путём, что и крестик.\n  dialog.addEventListener('cancel', function(event) {\n    event.preventDefault();\n    close();\n  });\n}\n\nexport function initLightbox() {\n  document.addEventListener('click', function(event) {\n    const link = event.target.closest(LINK_SELECTOR);\n    if (!link) return;\n    event.preventDefault();\n\n    if (!dialog) build();\n    // Окно живёт вне разметки страницы, поэтому сами следим, что оно в ней есть.\n    if (!dialog.isConnected) document.body.append(dialog);\n    // Листаем только по картинкам своей галереи, а не по всем на странице.\n    const gallery = link.closest(GALLERY_SELECTOR) || document;\n    links = Array.from(gallery.querySelectorAll(LINK_SELECTOR));\n    dialog.classList.toggle('lightbox--single', links.length < 2);\n    show(links.indexOf(link));\n\n    dialog.showModal();\n    document.documentElement.classList.add(SCROLL_LOCK_CLASS);\n  });\n}\n","function getContentEditableSelection(element) {\n    const { anchorOffset = 0, focusOffset = 0 } = element.ownerDocument.getSelection() || {};\n    const from = Math.min(anchorOffset, focusOffset);\n    const to = Math.max(anchorOffset, focusOffset);\n    return [from, to];\n}\n\nfunction setContentEditableSelection(element, [from, to]) {\n    const document = element.ownerDocument;\n    const range = document.createRange();\n    range.setStart(element.firstChild || element, Math.min(from, element.textContent?.length ?? 0));\n    range.setEnd(element.lastChild || element, Math.min(to, element.textContent?.length ?? 0));\n    const selection = document.getSelection();\n    if (selection) {\n        selection.removeAllRanges();\n        selection.addRange(range);\n    }\n}\n\nclass ContentEditableAdapter {\n    constructor(element) {\n        this.element = element;\n        this.maxLength = Infinity;\n    }\n    get value() {\n        return this.element.innerText.replace(/\\n\\n$/, '\\n');\n    }\n    set value(value) {\n        // Setting into innerHTML of element with `white-space: pre;` style\n        this.element.innerHTML = value.replace(/\\n$/, '\\n\\n');\n    }\n    get selectionStart() {\n        return getContentEditableSelection(this.element)[0];\n    }\n    get selectionEnd() {\n        return getContentEditableSelection(this.element)[1];\n    }\n    setSelectionRange(from, to) {\n        setContentEditableSelection(this.element, [from ?? 0, to ?? 0]);\n    }\n    select() {\n        this.setSelectionRange(0, this.value.length);\n    }\n}\nfunction maskitoAdaptContentEditable(element) {\n    const adapter = new ContentEditableAdapter(element);\n    return new Proxy(element, {\n        get(target, prop) {\n            if (prop in adapter) {\n                return adapter[prop];\n            }\n            const nativeProperty = target[prop];\n            return typeof nativeProperty === 'function'\n                ? nativeProperty.bind(target)\n                : nativeProperty;\n        },\n        set(target, prop, val, receiver) {\n            return Reflect.set(prop in adapter ? adapter : target, prop, val, receiver);\n        },\n    });\n}\n\nconst MASKITO_DEFAULT_ELEMENT_PREDICATE = (e) => e.isContentEditable\n    ? maskitoAdaptContentEditable(e)\n    : e.querySelector('input,textarea') ||\n        e;\n\nconst MASKITO_DEFAULT_OPTIONS = {\n    mask: /^.*$/,\n    preprocessors: [],\n    postprocessors: [],\n    plugins: [],\n    overwriteMode: 'shift',\n};\n\nclass MaskHistory {\n    constructor() {\n        this.now = null;\n        this.past = [];\n        this.future = [];\n    }\n    undo() {\n        const state = this.past.pop();\n        if (state && this.now) {\n            this.future.push(this.now);\n            this.updateElement(state, 'historyUndo');\n        }\n    }\n    redo() {\n        const state = this.future.pop();\n        if (state && this.now) {\n            this.past.push(this.now);\n            this.updateElement(state, 'historyRedo');\n        }\n    }\n    updateHistory(state) {\n        if (!this.now) {\n            this.now = state;\n            return;\n        }\n        const isValueChanged = this.now.value !== state.value;\n        const isSelectionChanged = this.now.selection.some((item, index) => item !== state.selection[index]);\n        if (!isValueChanged && !isSelectionChanged) {\n            return;\n        }\n        if (isValueChanged) {\n            this.past.push(this.now);\n            this.future = [];\n        }\n        this.now = state;\n    }\n    updateElement(state, inputType) {\n        this.now = state;\n        this.updateElementState(state, { inputType, data: null });\n    }\n}\n\nfunction areElementValuesEqual(sampleState, ...states) {\n    return states.every(({ value }) => value === sampleState.value);\n}\nfunction areElementStatesEqual(sampleState, ...states) {\n    return states.every(({ value, selection }) => value === sampleState.value &&\n        selection[0] === sampleState.selection[0] &&\n        selection[1] === sampleState.selection[1]);\n}\n\nfunction applyOverwriteMode({ value, selection }, newCharacters, mode) {\n    const [from, to] = selection;\n    const computedMode = typeof mode === 'function' ? mode({ value, selection }) : mode;\n    return {\n        value,\n        selection: computedMode === 'replace'\n            ? [from, Math.max(from + newCharacters.length, to)]\n            : [from, to],\n    };\n}\n\nfunction isFixedCharacter(char) {\n    return typeof char === 'string';\n}\n\nfunction getLeadingFixedCharacters(mask, validatedValuePart, newCharacter, initialElementState) {\n    let leadingFixedCharacters = '';\n    for (let i = validatedValuePart.length; i < mask.length; i++) {\n        const charConstraint = mask[i] || '';\n        const isInitiallyExisted = initialElementState?.value[i] === charConstraint;\n        if (!isFixedCharacter(charConstraint) ||\n            (charConstraint === newCharacter && !isInitiallyExisted)) {\n            return leadingFixedCharacters;\n        }\n        leadingFixedCharacters += charConstraint;\n    }\n    return leadingFixedCharacters;\n}\n\nfunction validateValueWithMask(value, maskExpression) {\n    return Array.isArray(maskExpression)\n        ? value.length === maskExpression.length &&\n            Array.from(value).every((char, i) => {\n                const charConstraint = maskExpression[i] || '';\n                return isFixedCharacter(charConstraint)\n                    ? char === charConstraint\n                    : char.match(charConstraint);\n            })\n        : maskExpression.test(value);\n}\n\nfunction guessValidValueByPattern(elementState, mask, initialElementState) {\n    let maskedFrom = null;\n    let maskedTo = null;\n    const maskedValue = Array.from(elementState.value).reduce((validatedCharacters, char, charIndex) => {\n        const leadingCharacters = getLeadingFixedCharacters(mask, validatedCharacters, char, initialElementState);\n        const newValidatedChars = `${validatedCharacters}${leadingCharacters}`;\n        const charConstraint = mask[newValidatedChars.length] || '';\n        if (maskedFrom === null && charIndex >= elementState.selection[0]) {\n            maskedFrom = newValidatedChars.length;\n        }\n        if (maskedTo === null && charIndex >= elementState.selection[1]) {\n            maskedTo = newValidatedChars.length;\n        }\n        if (isFixedCharacter(charConstraint)) {\n            return `${newValidatedChars}${charConstraint}`;\n        }\n        if (char.match(charConstraint)) {\n            return `${newValidatedChars}${char}`;\n        }\n        return leadingCharacters.startsWith(char)\n            ? newValidatedChars\n            : validatedCharacters;\n    }, '');\n    const trailingFixedCharacters = getLeadingFixedCharacters(mask, maskedValue, '', initialElementState);\n    return {\n        value: validateValueWithMask(`${maskedValue}${trailingFixedCharacters}`, mask)\n            ? `${maskedValue}${trailingFixedCharacters}`\n            : maskedValue,\n        // issues: https://github.com/typescript-eslint/typescript-eslint/issues/12069\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        selection: [maskedFrom ?? maskedValue.length, maskedTo ?? maskedValue.length],\n    };\n}\n\nfunction guessValidValueByRegExp({ value, selection }, maskRegExp) {\n    const [from, to] = selection;\n    let newFrom = from;\n    let newTo = to;\n    const validatedValue = Array.from(value).reduce((validatedValuePart, char, i) => {\n        const newPossibleValue = `${validatedValuePart}${char}`;\n        if (from === i) {\n            newFrom = validatedValuePart.length;\n        }\n        if (to === i) {\n            newTo = validatedValuePart.length;\n        }\n        return newPossibleValue.match(maskRegExp) ? newPossibleValue : validatedValuePart;\n    }, '');\n    return {\n        value: validatedValue,\n        selection: [\n            Math.min(newFrom, validatedValue.length),\n            Math.min(newTo, validatedValue.length),\n        ],\n    };\n}\n\nfunction calibrateValueByMask(elementState, mask, initialElementState = null) {\n    if (validateValueWithMask(elementState.value, mask)) {\n        return elementState;\n    }\n    const { value, selection } = Array.isArray(mask)\n        ? guessValidValueByPattern(elementState, mask, initialElementState)\n        : guessValidValueByRegExp(elementState, mask);\n    return {\n        selection,\n        value: Array.isArray(mask) ? value.slice(0, mask.length) : value,\n    };\n}\n\nfunction removeFixedMaskCharacters(initialElementState, mask) {\n    if (!Array.isArray(mask)) {\n        return initialElementState;\n    }\n    const [from, to] = initialElementState.selection;\n    const selection = [];\n    const unmaskedValue = Array.from(initialElementState.value).reduce((rawValue, char, i) => {\n        const charConstraint = mask[i] || '';\n        if (i === from) {\n            selection.push(rawValue.length);\n        }\n        if (i === to) {\n            selection.push(rawValue.length);\n        }\n        return isFixedCharacter(charConstraint) && charConstraint === char\n            ? rawValue\n            : `${rawValue}${char}`;\n    }, '');\n    if (selection.length < 2) {\n        selection.push(...Array.from({ length: 2 - selection.length }).fill(unmaskedValue.length));\n    }\n    return {\n        value: unmaskedValue,\n        selection: [selection[0], selection[1]],\n    };\n}\n\nclass MaskModel {\n    constructor(initialElementState, maskOptions) {\n        this.maskOptions = maskOptions;\n        this.unmaskInitialState = { value: '', selection: [0, 0] };\n        this.value = '';\n        this.selection = [0, 0];\n        const expression = this.getMaskExpression(initialElementState);\n        const { value, selection } = calibrateValueByMask(initialElementState, expression);\n        this.unmaskInitialState = removeFixedMaskCharacters({ value, selection }, expression);\n        this.value = value;\n        this.selection = selection;\n    }\n    addCharacters(newCharacters) {\n        const { value, selection, maskOptions } = this;\n        const initialElementState = { value, selection };\n        const { selection: [from, to], } = applyOverwriteMode(initialElementState, newCharacters, maskOptions.overwriteMode);\n        const maskExpression = this.getMaskExpression({\n            value: `${value.slice(0, from)}${newCharacters}${value.slice(to)}`,\n            selection: [from + newCharacters.length, from + newCharacters.length],\n        });\n        const [unmaskedFrom, unmaskedTo] = applyOverwriteMode(this.unmaskInitialState, newCharacters, maskOptions.overwriteMode).selection;\n        const newUnmaskedLeadingValuePart = `${this.unmaskInitialState.value.slice(0, unmaskedFrom)}${newCharacters}`;\n        const newCaretIndex = newUnmaskedLeadingValuePart.length;\n        const maskedElementState = calibrateValueByMask({\n            value: `${newUnmaskedLeadingValuePart}${this.unmaskInitialState.value.slice(unmaskedTo)}`,\n            selection: [newCaretIndex, newCaretIndex],\n        }, maskExpression, initialElementState);\n        const prevLeadingPart = value.slice(0, from);\n        const newLeadingPartState = calibrateValueByMask({\n            value: newUnmaskedLeadingValuePart,\n            selection: [newCaretIndex, newCaretIndex],\n        }, maskExpression, initialElementState);\n        const isInvalidCharsInsertion = newLeadingPartState.value === prevLeadingPart ||\n            (newLeadingPartState.value.length < prevLeadingPart.length &&\n                removeFixedMaskCharacters(newLeadingPartState, maskExpression).value ===\n                    this.unmaskInitialState.value.slice(0, unmaskedFrom));\n        if (isInvalidCharsInsertion ||\n            areElementStatesEqual(this, maskedElementState) // If typing new characters does not change value\n        ) {\n            throw new Error('Invalid mask value');\n        }\n        this.value = maskedElementState.value;\n        this.selection = maskedElementState.selection;\n    }\n    deleteCharacters() {\n        const [from, to] = this.selection;\n        if (from === to || !to) {\n            return;\n        }\n        const { value } = this;\n        const maskExpression = this.getMaskExpression({\n            value: `${value.slice(0, from)}${value.slice(to)}`,\n            selection: [from, from],\n        });\n        const initialElementState = { value};\n        const [unmaskedFrom, unmaskedTo] = this.unmaskInitialState.selection;\n        const newUnmaskedValue = `${this.unmaskInitialState.value.slice(0, unmaskedFrom)}${this.unmaskInitialState.value.slice(unmaskedTo)}`;\n        const maskedElementState = calibrateValueByMask({ value: newUnmaskedValue, selection: [unmaskedFrom, unmaskedFrom] }, maskExpression, initialElementState);\n        this.value = maskedElementState.value;\n        this.selection = maskedElementState.selection;\n    }\n    getMaskExpression(elementState) {\n        const { mask } = this.maskOptions;\n        return typeof mask === 'function' ? mask(elementState) : mask;\n    }\n}\n\nclass EventListener {\n    constructor(element) {\n        this.element = element;\n        this.listeners = [];\n    }\n    listen(eventType, fn, options) {\n        const untypedFn = fn;\n        this.element.addEventListener(eventType, untypedFn, options);\n        this.listeners.push(() => this.element.removeEventListener(eventType, untypedFn, options));\n    }\n    destroy() {\n        this.listeners.forEach((stopListen) => stopListen());\n    }\n}\n\nconst HotkeyModifier = {\n    CTRL: 1 << 0,\n    ALT: 1 << 1,\n    SHIFT: 1 << 2,\n    META: 1 << 3,\n};\n// TODO add variants that can be processed correctly\nconst HotkeyCode = {\n    Y: 89,\n    Z: 90,\n};\n/**\n * Checks if the passed keyboard event match the required hotkey.\n *\n * @example\n * input.addEventListener('keydown', (event) => {\n *     if (isHotkey(event, HotkeyModifier.CTRL | HotkeyModifier.SHIFT, HotkeyCode.Z)) {\n *         // redo hotkey pressed\n *     }\n * })\n *\n * @return will return `true` only if the {@link HotkeyCode} matches and only the necessary\n * {@link HotkeyModifier modifiers} have been pressed\n */\nfunction isHotkey(event, modifiers, hotkeyCode) {\n    return (event.ctrlKey === !!(modifiers & HotkeyModifier.CTRL) &&\n        event.altKey === !!(modifiers & HotkeyModifier.ALT) &&\n        event.shiftKey === !!(modifiers & HotkeyModifier.SHIFT) &&\n        event.metaKey === !!(modifiers & HotkeyModifier.META) &&\n        /**\n         * We intentionally use legacy {@link KeyboardEvent#keyCode `keyCode`} property. It is more\n         * \"keyboard-layout\"-independent than {@link KeyboardEvent#key `key`} or {@link KeyboardEvent#code `code`} properties.\n         * @see {@link https://github.com/taiga-family/maskito/issues/315 `KeyboardEvent#code` issue}\n         */\n        event.keyCode === hotkeyCode);\n}\n\nfunction isRedo(event) {\n    return (isHotkey(event, HotkeyModifier.CTRL, HotkeyCode.Y) || // Windows\n        isHotkey(event, HotkeyModifier.CTRL | HotkeyModifier.SHIFT, HotkeyCode.Z) || // Windows & Android\n        isHotkey(event, HotkeyModifier.META | HotkeyModifier.SHIFT, HotkeyCode.Z) // macOS & iOS\n    );\n}\nfunction isUndo(event) {\n    return (isHotkey(event, HotkeyModifier.CTRL, HotkeyCode.Z) || // Windows & Android\n        isHotkey(event, HotkeyModifier.META, HotkeyCode.Z) // macOS & iOS\n    );\n}\n\n/**\n * Sets value to element, and dispatches input event\n * if you passed ELementState, it also sets selection range\n *\n * @example\n * maskitoUpdateElement(input, newValue);\n * maskitoUpdateElement(input, elementState);\n *\n * @see {@link https://github.com/taiga-family/maskito/issues/804 issue}\n *\n * @return void\n */\nfunction maskitoUpdateElement(element, valueOrElementState) {\n    const initialValue = element.value;\n    if (typeof valueOrElementState === 'string') {\n        element.value = valueOrElementState;\n    }\n    else {\n        const [from, to] = valueOrElementState.selection;\n        element.value = valueOrElementState.value;\n        if (element.matches(':focus')) {\n            element.setSelectionRange(from, to);\n        }\n    }\n    if (element.value !== initialValue) {\n        element.dispatchEvent(new Event('input', \n        /**\n         * React handles this event only on bubbling phase\n         *\n         * here is the list of events that are processed in the capture stage, others are processed in the bubbling stage\n         * https://github.com/facebook/react/blob/cb2439624f43c510007f65aea5c50a8bb97917e4/packages/react-dom-bindings/src/events/DOMPluginEventSystem.js#L222\n         */\n        { bubbles: true }));\n    }\n}\n\nfunction getLineSelection({ value, selection }, isForward) {\n    const [from, to] = selection;\n    if (from !== to) {\n        return [from, to];\n    }\n    const nearestBreak = isForward\n        ? value.slice(from).indexOf('\\n') + 1 || value.length\n        : value.slice(0, to).lastIndexOf('\\n') + 1;\n    const selectFrom = isForward ? from : nearestBreak;\n    const selectTo = isForward ? nearestBreak : to;\n    return [selectFrom, selectTo];\n}\n\nfunction getNotEmptySelection({ value, selection }, isForward) {\n    const [from, to] = selection;\n    if (from !== to) {\n        return [from, to];\n    }\n    const notEmptySelection = isForward ? [from, to + 1] : [from - 1, to];\n    return notEmptySelection.map((x) => Math.min(Math.max(x, 0), value.length));\n}\n\nconst TRAILING_SPACES_REG = /\\s+$/g;\nconst LEADING_SPACES_REG = /^\\s+/g;\nconst SPACE_REG = /\\s/;\nfunction getWordSelection({ value, selection }, isForward) {\n    const [from, to] = selection;\n    if (from !== to) {\n        return [from, to];\n    }\n    if (isForward) {\n        const valueAfterSelectionStart = value.slice(from);\n        const [leadingSpaces] = valueAfterSelectionStart.match(LEADING_SPACES_REG) || [\n            '',\n        ];\n        const nearestWordEndIndex = valueAfterSelectionStart\n            .trimStart()\n            .search(SPACE_REG);\n        return [\n            from,\n            nearestWordEndIndex === -1\n                ? value.length\n                : from + leadingSpaces.length + nearestWordEndIndex,\n        ];\n    }\n    const valueBeforeSelectionEnd = value.slice(0, to);\n    const [trailingSpaces] = valueBeforeSelectionEnd.match(TRAILING_SPACES_REG) || [''];\n    const selectedWordLength = valueBeforeSelectionEnd\n        .trimEnd()\n        .split('')\n        .reverse()\n        .findIndex((char) => SPACE_REG.exec(char));\n    return [\n        selectedWordLength === -1 ? 0 : to - trailingSpaces.length - selectedWordLength,\n        to,\n    ];\n}\n\n/**\n * @internal\n */\nfunction maskitoPipe(processors = []) {\n    return (initialData, ...args) => processors.reduce((data, fn) => ({ ...data, ...fn(data, ...args) }), initialData);\n}\n\nfunction maskitoTransform(valueOrState, maskitoOptions) {\n    const options = {\n        ...MASKITO_DEFAULT_OPTIONS,\n        ...maskitoOptions,\n    };\n    const preprocessor = maskitoPipe(options.preprocessors);\n    const postprocessor = maskitoPipe(options.postprocessors);\n    const initialElementState = typeof valueOrState === 'string'\n        ? { value: valueOrState, selection: [0, 0] }\n        : valueOrState;\n    const { elementState } = preprocessor({ elementState: initialElementState, data: '' }, 'validation');\n    const maskModel = new MaskModel(elementState, options);\n    const { value, selection } = postprocessor(maskModel, initialElementState);\n    return typeof valueOrState === 'string' ? value : { value, selection };\n}\n\n/**\n * All `input` events with `inputType=deleteContentBackward` always follows `beforeinput` event with the same `inputType`.\n * If `beforeinput[inputType=deleteContentBackward]` is prevented, subsequent `input[inputType=deleteContentBackward]` is prevented too.\n * There is an exception – Android devices with Microsoft SwiftKey Keyboard in Mobile Chrome.\n * These devices ignores `preventDefault` for `beforeinput` event if Backspace is pressed.\n * @see https://github.com/taiga-family/maskito/issues/2135#issuecomment-2980729647\n * ___\n * TODO: track Chromium bug report and delete this plugin after bug fix\n * https://issues.chromium.org/issues/40885402\n */\nfunction createBrokenDefaultPlugin() {\n    return (element) => {\n        const eventListener = new EventListener(element);\n        let isVirtualAndroidKeyboard = false;\n        let beforeinputEvent = null;\n        let value = element.value;\n        eventListener.listen('keydown', ({ key }) => {\n            isVirtualAndroidKeyboard = key === 'Unidentified';\n        });\n        eventListener.listen('beforeinput', (event) => {\n            beforeinputEvent = event;\n            value = element.value;\n        });\n        eventListener.listen('input', (event) => {\n            if (isVirtualAndroidKeyboard &&\n                beforeinputEvent?.defaultPrevented &&\n                beforeinputEvent.inputType === 'deleteContentBackward' &&\n                event.inputType === 'deleteContentBackward') {\n                element.value = value;\n                beforeinputEvent = null;\n            }\n        }, { capture: true });\n        return () => eventListener.destroy();\n    };\n}\n\nfunction maskitoChangeEventPlugin() {\n    return (element) => {\n        if (element.isContentEditable) {\n            return;\n        }\n        let value = element.value;\n        const valueListener = () => {\n            value = element.value;\n        };\n        const blurListener = () => {\n            if (element.value !== value) {\n                element.dispatchEvent(new Event('change', { bubbles: true }));\n            }\n        };\n        element.addEventListener('focus', valueListener);\n        element.addEventListener('change', valueListener);\n        element.addEventListener('blur', blurListener);\n        return () => {\n            element.removeEventListener('focus', valueListener);\n            element.removeEventListener('change', valueListener);\n            element.removeEventListener('blur', blurListener);\n        };\n    };\n}\n\nconst SPACE = ' ';\n/**\n * 1. Android user (with G-board keyboard or similar) presses 1st space\n * ```\n * {type: \"beforeinput\", data: \" \", inputType: \"insertText\"}\n * ```\n * 2. User presses 2nd space\n * ```\n * // Android tries to delete previously inserted space\n * {type: \"beforeinput\", inputType: \"deleteContentBackward\"}\n * {type: \"beforeinput\", data: \". \", inputType: \"insertText\"}\n * ```\n * ---------\n * 1. MacOS user presses 1st space\n * ```\n * {type: \"beforeinput\", data: \" \", inputType: \"insertText\"}\n * ```\n * 2. User presses 2nd space\n * ```\n * // MacOS automatically run `element.setSelectionRange(indexBeforeSpace, indexAfterSpace)` and then\n * {type: \"beforeinput\", data: \". \", inputType: \"insertText\"}\n * ```\n * ---------\n * @see https://github.com/taiga-family/maskito/issues/2023\n */\nfunction createDoubleSpacePlugin() {\n    let prevValue = '';\n    let prevCaretIndex = 0;\n    let prevEvent = null;\n    let prevRejectedSpace = false;\n    return (element) => {\n        const eventListener = new EventListener(element);\n        eventListener.listen('beforeinput', (event) => {\n            const { value, selectionStart, selectionEnd } = element;\n            const rejectedSpace = prevEvent?.inputType === 'insertText' &&\n                prevEvent.data === SPACE &&\n                !value.slice(0, Number(selectionEnd)).endsWith(SPACE);\n            if (event.inputType === 'insertText' && event.data === `.${SPACE}`) {\n                if (prevEvent?.inputType === 'deleteContentBackward' &&\n                    prevRejectedSpace) {\n                    // Android\n                    element.value = prevValue;\n                    element.setSelectionRange(prevCaretIndex, prevCaretIndex);\n                }\n                else if (rejectedSpace) {\n                    // Mac OS\n                    element.setSelectionRange(selectionStart, selectionStart);\n                }\n            }\n            prevRejectedSpace = rejectedSpace;\n            prevEvent = event;\n            prevValue = value;\n            prevCaretIndex = Number((rejectedSpace ? prevCaretIndex : selectionEnd) === value.length\n                ? selectionEnd\n                : selectionStart);\n        });\n        return () => eventListener.destroy();\n    };\n}\n\nfunction maskitoInitialCalibrationPlugin(customOptions) {\n    return (element, options) => {\n        const from = element.selectionStart ?? 0;\n        const to = element.selectionEnd ?? 0;\n        maskitoUpdateElement(element, {\n            value: maskitoTransform(element.value, customOptions || options),\n            selection: [from, to],\n        });\n    };\n}\n\nfunction maskitoStrictCompositionPlugin() {\n    return (element, maskitoOptions) => {\n        const listener = (event) => {\n            if (event.inputType !== 'insertCompositionText') {\n                return;\n            }\n            const selection = [\n                element.selectionStart ?? 0,\n                element.selectionEnd ?? 0,\n            ];\n            const elementState = {\n                selection,\n                value: element.value,\n            };\n            const validatedState = maskitoTransform(elementState, maskitoOptions);\n            if (!areElementStatesEqual(elementState, validatedState)) {\n                event.preventDefault();\n                maskitoUpdateElement(element, validatedState);\n            }\n        };\n        element.addEventListener('input', listener);\n        return () => element.removeEventListener('input', listener);\n    };\n}\n\nconst BUILT_IN_PLUGINS = [createDoubleSpacePlugin(), createBrokenDefaultPlugin()];\nclass Maskito extends MaskHistory {\n    constructor(element, maskitoOptions) {\n        super();\n        this.element = element;\n        this.maskitoOptions = maskitoOptions;\n        this.isTextArea = this.element.nodeName === 'TEXTAREA';\n        this.eventListener = new EventListener(this.element);\n        this.options = {\n            ...MASKITO_DEFAULT_OPTIONS,\n            ...this.maskitoOptions,\n        };\n        this.preprocessor = maskitoPipe(this.options.preprocessors);\n        this.postprocessor = maskitoPipe(this.options.postprocessors);\n        this.teardowns = this.options.plugins\n            .concat(BUILT_IN_PLUGINS)\n            .map((plugin) => plugin(this.element, this.options));\n        this.upcomingElementState = null;\n        this.updateHistory(this.elementState);\n        this.eventListener.listen('keydown', (event) => {\n            if (isRedo(event)) {\n                event.preventDefault();\n                return this.redo();\n            }\n            if (isUndo(event)) {\n                event.preventDefault();\n                return this.undo();\n            }\n        });\n        this.eventListener.listen('beforeinput', (event) => {\n            const isForward = event.inputType.includes('Forward');\n            this.updateHistory(this.elementState);\n            switch (event.inputType) {\n                case 'deleteByCut':\n                case 'deleteContentBackward':\n                case 'deleteContentForward':\n                    return this.delete(getNotEmptySelection(this.elementState, isForward), event);\n                case 'deleteHardLineBackward':\n                case 'deleteHardLineForward':\n                case 'deleteSoftLineBackward':\n                case 'deleteSoftLineForward':\n                    return this.delete(getLineSelection(this.elementState, isForward), event);\n                case 'deleteWordBackward':\n                case 'deleteWordForward':\n                    return this.delete(getWordSelection(this.elementState, isForward), event);\n                case 'historyRedo':\n                    event.preventDefault();\n                    return this.redo();\n                // historyUndo/historyRedo will not be triggered if value was modified programmatically\n                case 'historyUndo':\n                    event.preventDefault();\n                    return this.undo();\n                case 'insertCompositionText':\n                    return; // will be handled inside `compositionend` event\n                case 'insertLineBreak':\n                case 'insertParagraph':\n                    return this.handleEnter(event);\n                case 'insertReplacementText':\n                    /**\n                     * According {@link https://www.w3.org/TR/input-events-2 W3C specification}:\n                     * > `insertReplacementText` – insert or replace existing text by means of a spell checker,\n                     * > auto-correct, writing suggestions or similar.\n                     * ___\n                     * Firefox emits `insertReplacementText` event for its suggestion/autofill and for spell checker.\n                     * However, it is impossible to detect which part of the textfield value is going to be replaced\n                     * (`selectionStart` and `selectionEnd` just equal to the last caret position).\n                     * ___\n                     * Chrome does not fire `beforeinput` event for its suggestion/autofill.\n                     * It emits only `input` event with `inputType` and `data` set to `undefined`.\n                     * ___\n                     * All these browser limitations make us to validate the result value later in `input` event.\n                     */\n                    return;\n                case 'insertFromDrop':\n                case 'insertFromPaste':\n                case 'insertText':\n                default:\n                    return this.insert(event.data ??\n                        // `event.data` for `contentEditable` is always `null` for paste/drop events\n                        event.dataTransfer?.getData('text/plain') ??\n                        '', event);\n            }\n        });\n        this.eventListener.listen('input', () => {\n            if (this.upcomingElementState &&\n                !areElementStatesEqual(this.upcomingElementState, this.elementState)) {\n                this.updateElementState(this.upcomingElementState);\n            }\n            this.upcomingElementState = null;\n        }, { capture: true });\n        this.eventListener.listen('input', ({ inputType }) => {\n            if (inputType === 'insertCompositionText') {\n                return; // will be handled inside `compositionend` event\n            }\n            this.ensureValueFitsMask();\n            this.updateHistory(this.elementState);\n        });\n        this.eventListener.listen('compositionend', () => {\n            this.ensureValueFitsMask();\n            this.updateHistory(this.elementState);\n        });\n    }\n    destroy() {\n        this.eventListener.destroy();\n        this.teardowns.forEach((teardown) => teardown?.());\n    }\n    delete(selection, event) {\n        const isForward = event?.inputType.includes('Forward');\n        const initialState = {\n            value: this.elementState.value,\n            selection,\n        };\n        const { elementState } = this.preprocessor({\n            elementState: initialState,\n            data: '',\n        }, isForward ? 'deleteForward' : 'deleteBackward');\n        const maskModel = new MaskModel(elementState, this.options);\n        maskModel.deleteCharacters();\n        const newElementState = this.postprocessor(maskModel, initialState);\n        if (areElementValuesEqual(initialState, elementState, maskModel, newElementState)) {\n            const [from, to] = elementState.selection;\n            event?.preventDefault();\n            // User presses Backspace/Delete for the fixed value\n            return this.updateSelectionRange(isForward ? [to, to] : [from, from]);\n        }\n        this.upcomingElementState = newElementState;\n    }\n    insert(data, event) {\n        const { options, maxLength, elementState: initialElementState } = this;\n        const [from, to] = initialElementState.selection;\n        const { elementState, data: insertedText = data } = this.preprocessor({\n            data,\n            elementState: initialElementState,\n        }, 'insert');\n        const maskModel = new MaskModel(elementState, options);\n        try {\n            maskModel.addCharacters(insertedText);\n        }\n        catch {\n            return event?.preventDefault();\n        }\n        this.upcomingElementState = this.clampState(this.postprocessor(maskModel, initialElementState));\n        /**\n         * When textfield value length is already equal to attribute `maxlength`,\n         * pressing any key (even with valid value) does not emit `input` event\n         * (except to the case when user replaces some characters by selection).\n         */\n        const noInputEventDispatch = initialElementState.value.length >= maxLength && from === to;\n        if (noInputEventDispatch) {\n            if (options.overwriteMode === 'replace' &&\n                !areElementStatesEqual(this.upcomingElementState, initialElementState)) {\n                this.dispatchInputEvent({ inputType: 'insertText', data });\n            }\n            else {\n                /**\n                 * This `beforeinput` event will not be followed by `input` event –\n                 * clear computed state to avoid any possible side effect\n                 * for new possible `input` event without preceding `beforeinput` event\n                 * (e.g. browser autofill, `document.execCommand('delete')` etc.)\n                 */\n                this.upcomingElementState = null;\n            }\n        }\n    }\n    updateElementState({ value, selection }, eventInit) {\n        const initialValue = this.elementState.value;\n        this.updateValue(value);\n        this.updateSelectionRange(selection);\n        if (eventInit && initialValue !== this.element.value) {\n            this.dispatchInputEvent(eventInit);\n        }\n    }\n    get elementState() {\n        const { value, selectionStart, selectionEnd } = this.element;\n        return {\n            value,\n            selection: [selectionStart ?? 0, selectionEnd ?? 0],\n        };\n    }\n    get maxLength() {\n        const { maxLength } = this.element;\n        return maxLength === -1 ? Infinity : maxLength;\n    }\n    updateSelectionRange([from, to]) {\n        const { element } = this;\n        if (element.matches(':focus') &&\n            (element.selectionStart !== from || element.selectionEnd !== to)) {\n            element.setSelectionRange(from, to);\n        }\n    }\n    updateValue(value) {\n        /**\n         * Don't \"disturb\" unnecessarily `value`-setter\n         * (i.e. it breaks React controlled input behavior)\n         */\n        if (this.element.value !== value || this.element.isContentEditable) {\n            this.element.value = value;\n        }\n    }\n    ensureValueFitsMask() {\n        this.updateElementState(maskitoTransform(this.elementState, this.options), {\n            inputType: 'insertText',\n            data: null,\n        });\n    }\n    dispatchInputEvent(eventInit = {\n        inputType: 'insertText',\n        data: null,\n    }) {\n        this.element.dispatchEvent(new InputEvent('input', {\n            ...eventInit,\n            bubbles: true,\n            cancelable: false,\n        }));\n    }\n    handleEnter(event) {\n        if (this.isTextArea || this.element.isContentEditable) {\n            this.insert('\\n', event);\n        }\n    }\n    clampState({ value, selection }) {\n        const [from, to] = selection;\n        const max = this.maxLength;\n        return {\n            value: value.slice(0, max),\n            selection: [Math.min(from, max), Math.min(to, max)],\n        };\n    }\n}\n\nexport { MASKITO_DEFAULT_ELEMENT_PREDICATE, MASKITO_DEFAULT_OPTIONS, Maskito, maskitoAdaptContentEditable, maskitoChangeEventPlugin, maskitoInitialCalibrationPlugin, maskitoPipe, maskitoStrictCompositionPlugin, maskitoTransform, maskitoUpdateElement };\n","import { maskitoUpdateElement, MASKITO_DEFAULT_OPTIONS, maskitoTransform } from '@maskito/core';\n\n/**\n * Clamps a value between two inclusive limits\n */\nfunction clamp(value, minimum, maximum) {\n    const minClamped = max(minimum ?? value, value);\n    return min(maximum ?? minClamped, minClamped);\n}\nfunction min(x, ...values) {\n    return values.reduce((a, b) => (a < b ? a : b), x);\n}\nfunction max(x, ...values) {\n    return values.reduce((a, b) => (a > b ? a : b), x);\n}\n\nfunction countDigits(str) {\n    return str.replaceAll(/\\W/g, '').length;\n}\n\nconst DATE_SEGMENTS_MAX_VALUES = {\n    day: 31,\n    month: 12,\n    year: 9999,\n};\n\nconst DEFAULT_DECIMAL_PSEUDO_SEPARATORS = ['.', ',', 'б', 'ю'];\n\nconst DEFAULT_MIN_DATE = new Date('0001-01-01T00:00');\nconst DEFAULT_MAX_DATE = new Date('9999-12-31T23:59:59.999');\n\n/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nconst CHAR_NO_BREAK_SPACE = '\\u00A0';\n/**\n * {@link https://symbl.cc/en/200B/ Zero width space}.\n */\nconst CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n */\nconst CHAR_EN_DASH = '\\u2013';\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nconst CHAR_EM_DASH = '\\u2014';\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nconst CHAR_HYPHEN = '\\u002D';\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nconst CHAR_MINUS = '\\u2212';\n/**\n * {@link https://symbl.cc/en/30FC/ Katakana-Hiragana Prolonged Sound Mark}\n * is used as prolonged sounds in Japanese.\n */\nconst CHAR_JP_HYPHEN = '\\u30FC';\n/**\n * {@link https://symbl.cc/en/003A/ Colon}\n * is a punctuation mark that connects parts of a text logically.\n * ---\n * is also used as separator in time.\n */\nconst CHAR_COLON = '\\u003A';\n/**\n * {@link https://symbl.cc/en/FF1A/ Full-width colon}\n * is a full-width punctuation mark used to separate parts of a text commonly in Japanese.\n */\nconst CHAR_JP_COLON = '\\uFF1A';\n\nconst DEFAULT_PSEUDO_MINUSES = [\n    CHAR_HYPHEN,\n    CHAR_EN_DASH,\n    CHAR_EM_DASH,\n    CHAR_JP_HYPHEN,\n    CHAR_MINUS,\n];\n\nconst DEFAULT_TIME_SEGMENT_MAX_VALUES = {\n    hours: 23,\n    minutes: 59,\n    seconds: 59,\n    milliseconds: 999,\n};\nconst DEFAULT_TIME_SEGMENT_MIN_VALUES = {\n    hours: 0,\n    minutes: 0,\n    seconds: 0,\n    milliseconds: 0,\n};\n\nconst TIME_FIXED_CHARACTERS = [':', '.'];\n\nconst TIME_SEGMENT_VALUE_LENGTHS = {\n    hours: 2,\n    minutes: 2,\n    seconds: 2,\n    milliseconds: 3,\n};\n\nconst POSSIBLE_DATE_RANGE_SEPARATOR = [\n    CHAR_HYPHEN,\n    CHAR_EN_DASH,\n    CHAR_EM_DASH,\n    CHAR_MINUS,\n    CHAR_JP_HYPHEN,\n];\nconst MIN_DAY = 1;\nconst MONTHS_IN_YEAR = 12;\nconst MonthNumber = {\n    January: 0,\n    February: 1,\n    April: 3,\n    June: 5,\n    September: 8,\n    November: 10,\n    December: 11,\n};\n\nfunction appendDate(date, { day = 0, month = 0, year = 0 } = {}) {\n    if (day === 0 && month === 0 && year === 0) {\n        return date;\n    }\n    const initialYear = date.getFullYear();\n    const initialMonth = date.getMonth();\n    const initialDate = date.getDate();\n    const totalMonths = (initialYear + year) * MONTHS_IN_YEAR + initialMonth + month;\n    let years = Math.floor(totalMonths / MONTHS_IN_YEAR);\n    let months = totalMonths % MONTHS_IN_YEAR;\n    const monthDaysCount = getMonthDaysCount(months, isLeapYear(years));\n    const currentMonthDaysCount = getMonthDaysCount(initialMonth, isLeapYear(years));\n    let days = day;\n    if (initialDate >= monthDaysCount) {\n        days += initialDate - (currentMonthDaysCount - monthDaysCount);\n    }\n    else if (currentMonthDaysCount < monthDaysCount &&\n        initialDate === currentMonthDaysCount) {\n        days += initialDate + (monthDaysCount - currentMonthDaysCount);\n    }\n    else {\n        days += initialDate;\n    }\n    while (days > getMonthDaysCount(months, isLeapYear(years))) {\n        days -= getMonthDaysCount(months, isLeapYear(years));\n        if (months === MonthNumber.December) {\n            years++;\n            months = MonthNumber.January;\n        }\n        else {\n            months++;\n        }\n    }\n    while (days < MIN_DAY) {\n        if (months === MonthNumber.January) {\n            years--;\n            months = MonthNumber.December;\n        }\n        else {\n            months--;\n        }\n        days += getMonthDaysCount(months, isLeapYear(years));\n    }\n    days =\n        day < 0 || month < 0 || year < 0\n            ? days + 1 // add one day when moving days, or months, or years backward\n            : days - 1; // \"from\"-day is included in the range\n    return new Date(years, months, days);\n}\nfunction getMonthDaysCount(month, isLeapYear) {\n    switch (month) {\n        case MonthNumber.April:\n        case MonthNumber.June:\n        case MonthNumber.November:\n        case MonthNumber.September:\n            return 30;\n        case MonthNumber.February:\n            return isLeapYear ? 29 : 28;\n        default:\n            return 31;\n    }\n}\nfunction isLeapYear(year) {\n    return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nconst getDateSegmentValueLength = (dateString) => ({\n    day: dateString.match(/d/g)?.length ?? 0,\n    month: dateString.match(/m/g)?.length ?? 0,\n    year: dateString.match(/y/g)?.length ?? 0,\n});\n\nfunction dateToSegments(date) {\n    return {\n        day: String(date.getDate()).padStart(2, '0'),\n        month: String(date.getMonth() + 1).padStart(2, '0'),\n        year: String(date.getFullYear()).padStart(4, '0'),\n        hours: String(date.getHours()).padStart(2, '0'),\n        minutes: String(date.getMinutes()).padStart(2, '0'),\n        seconds: String(date.getSeconds()).padStart(2, '0'),\n        milliseconds: String(date.getMilliseconds()).padStart(3, '0'),\n    };\n}\n\nconst ALL_POSSIBLE_SEGMENTS = [\n    'day',\n    'month',\n    'year',\n];\nfunction getDateSegmentsOrder(template) {\n    return [...ALL_POSSIBLE_SEGMENTS].sort((a, b) => template.indexOf(a[0]) > template.indexOf(b[0]) ? 1 : -1);\n}\n\nfunction getFirstCompleteDate(dateString, dateModeTemplate) {\n    const digitsInDate = countDigits(dateModeTemplate);\n    const [completeDate = ''] = new RegExp(String.raw `(\\D*\\d){${digitsInDate}}`).exec(dateString) || [];\n    return completeDate;\n}\n\nfunction isDateStringComplete(dateString, dateModeTemplate) {\n    return dateString.length < dateModeTemplate.length\n        ? false\n        : dateString.split(/\\D/).every((segment) => !/^0+$/.exec(segment));\n}\n\nfunction padIncompleteDateSegment({ dateString, dateModeTemplate, dateSeparator, }) {\n    const dateSegments = dateString.split(dateSeparator);\n    const segmentIndex = dateSegments.length - 1;\n    const segment = dateSegments[segmentIndex] ?? '';\n    const templateSegment = dateModeTemplate.split(dateSeparator)[segmentIndex];\n    return templateSegment && !templateSegment.includes('y') && /^[1-9]$/.test(segment)\n        ? `${dateString.slice(0, -segment.length)}${segment.padStart(templateSegment.length, '0')}`\n        : dateString;\n}\n\nfunction parseDateRangeString(dateRange, dateModeTemplate, rangeSeparator) {\n    const digitsInDate = countDigits(dateModeTemplate);\n    return (dateRange\n        .replace(rangeSeparator, '')\n        .match(new RegExp(String.raw `(\\D*\\d[^\\d\\s]*){1,${digitsInDate}}`, 'g')) || []);\n}\n\nfunction parseDateString(dateString, fullMode) {\n    const cleanMode = fullMode.replaceAll(/[^dmy]/g, '');\n    const onlyDigitsDate = dateString.replaceAll(/\\D+/g, '');\n    const dateSegments = {\n        day: onlyDigitsDate.slice(cleanMode.indexOf('d'), cleanMode.lastIndexOf('d') + 1),\n        month: onlyDigitsDate.slice(cleanMode.indexOf('m'), cleanMode.lastIndexOf('m') + 1),\n        year: onlyDigitsDate.slice(cleanMode.indexOf('y'), cleanMode.lastIndexOf('y') + 1),\n    };\n    return Object.fromEntries(Object.entries(dateSegments)\n        .filter(([_, value]) => Boolean(value))\n        .sort(([a], [b]) => fullMode.toLowerCase().indexOf(a.slice(0, 1)) >\n        fullMode.toLowerCase().indexOf(b.slice(0, 1))\n        ? 1\n        : -1));\n}\n\nfunction segmentsToDate(parsedDate, parsedTime) {\n    const year = parsedDate.year?.length === 2 ? `20${parsedDate.year}` : parsedDate.year;\n    const date = new Date(Number(year ?? '0'), Number(parsedDate.month ?? '1') - 1, Number(parsedDate.day ?? '1'), Number(parsedTime?.hours ?? '0'), Number(parsedTime?.minutes ?? '0'), Number(parsedTime?.seconds ?? '0'), Number(parsedTime?.milliseconds ?? '0'));\n    // needed for years less than 1900\n    date.setFullYear(Number(year ?? '0'));\n    return date;\n}\n\nconst DATE_TIME_SEPARATOR = ', ';\n\n/**\n * Replaces canonical time segment separators of the mode with the custom ones.\n * @example createTimeModeTemplate({mode: 'HH:MM:SS', separators: [' h ', ' min ']}) => 'HH h MM min SS'\n */\nfunction createTimeModeTemplate({ mode, separators, }) {\n    let separatorIndex = 0;\n    return mode.replaceAll(/[:.]/g, (char) => separators[separatorIndex++] ?? char);\n}\n\nfunction toTimeString(segments, { mode, separators }) {\n    return createTimeModeTemplate({ mode, separators })\n        .replaceAll(/H+/g, segments.hours ?? '')\n        .replaceAll('MSS', segments.milliseconds ?? '')\n        .replaceAll(/M+/g, segments.minutes ?? '')\n        .replaceAll(/S+/g, segments.seconds ?? '')\n        .replace(/^\\D*/, '')\n        .replace(/\\D*$/, '');\n}\n\nfunction toDateString({ day, month, year, hours, minutes, seconds, milliseconds, }, { dateMode, dateTimeSeparator = DATE_TIME_SEPARATOR, timeMode, timeSeparators = [], }) {\n    const yearLength = dateMode.match(/y/g)?.length ?? 0;\n    const date = dateMode\n        .replaceAll(/d+/g, day ?? '')\n        .replaceAll(/m+/g, month ?? '')\n        .replaceAll(/y+/g, year?.slice(-yearLength) ?? '');\n    const time = timeMode\n        ? `${dateTimeSeparator}${toTimeString({ hours, minutes, seconds, milliseconds }, { mode: timeMode, separators: timeSeparators })}`\n        : '';\n    return `${date}${time}`.replaceAll(/^\\D+/g, '').replaceAll(/\\D+$/g, '');\n}\n\nfunction validateDateString({ dateString, dateModeTemplate, dateSeparator, offset, selection: [from, to], }) {\n    const parsedDate = parseDateString(dateString, dateModeTemplate);\n    const dateSegments = Object.entries(parsedDate);\n    const segmentsOrder = getDateSegmentsOrder(dateModeTemplate);\n    const validatedDateSegments = {};\n    for (let i = 0; i < dateSegments.length; i++) {\n        const [segmentName, segmentValue] = dateSegments[i];\n        const validatedDate = toDateString(validatedDateSegments, {\n            dateMode: dateModeTemplate,\n        });\n        const maxSegmentValue = DATE_SEGMENTS_MAX_VALUES[segmentName];\n        const fantomSeparator = validatedDate.length && dateSeparator.length;\n        const lastSegmentDigitIndex = offset +\n            validatedDate.length +\n            fantomSeparator +\n            getDateSegmentValueLength(dateModeTemplate)[segmentName];\n        const isLastSegmentDigitAdded = lastSegmentDigitIndex >= from && lastSegmentDigitIndex === to;\n        if (isLastSegmentDigitAdded && Number(segmentValue) > Number(maxSegmentValue)) {\n            const nextSegment = segmentsOrder[segmentsOrder.indexOf(segmentName) + 1];\n            if (!nextSegment || nextSegment === 'year') {\n                // 31.1|0.2010 => Type 9 => 31.1|0.2010\n                return { validatedDateString: '', updatedSelection: [from, to] }; // prevent changes\n            }\n            validatedDateSegments[segmentName] = `0${segmentValue.slice(0, -1)}`;\n            dateSegments[i + 1] = [\n                nextSegment,\n                `${segmentValue.slice(-1)}${(dateSegments[i + 1]?.[1] ?? '').slice(1)}`,\n            ];\n            continue;\n        }\n        if (isLastSegmentDigitAdded && Number(segmentValue) < 1) {\n            // 31.0|1.2010 => Type 0 => 31.0|1.2010\n            return { validatedDateString: '', updatedSelection: [from, to] }; // prevent changes\n        }\n        validatedDateSegments[segmentName] = segmentValue;\n    }\n    const validatedDateString = toDateString(validatedDateSegments, {\n        dateMode: dateModeTemplate,\n    });\n    const addedDateSeparators = validatedDateString.length - dateString.length;\n    return {\n        validatedDateString,\n        updatedSelection: [from + addedDateSeparators, to + addedDateSeparators],\n    };\n}\n\nfunction identity(x) {\n    return x;\n}\n// eslint-disable-next-line  @typescript-eslint/no-empty-function\nfunction noop() { }\n\n/**\n * Copy-pasted solution from lodash\n * @see https://lodash.com/docs/4.17.15#escapeRegExp\n */\nconst reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nconst reHasRegExpChar = new RegExp(reRegExpChar.source);\nfunction escapeRegExp(str) {\n    return str && reHasRegExpChar.test(str)\n        ? str.replaceAll(reRegExpChar, String.raw `\\$&`)\n        : str;\n}\n\nfunction findCommonBeginningSubstr(a, b) {\n    let res = '';\n    for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) {\n            return res;\n        }\n        res += a[i];\n    }\n    return res;\n}\n\nfunction isEmpty(entity) {\n    return !entity || (typeof entity === 'object' && Object.keys(entity).length === 0);\n}\n\nconst ALL_ZEROES_RE = /^0+$/;\nfunction padWithZeroesUntilValid(segmentValue, paddedMaxValue, prefixedZeroesCount = 0) {\n    const paddedSegmentValue = segmentValue.padEnd(paddedMaxValue.length, '0');\n    if (Number(paddedSegmentValue) <= Number(paddedMaxValue)) {\n        return { validatedSegmentValue: segmentValue, prefixedZeroesCount };\n    }\n    if (paddedSegmentValue.endsWith('0')) {\n        // 00:|00 => Type 9 => 00:09|\n        return padWithZeroesUntilValid(`0${segmentValue.slice(0, paddedMaxValue.length - 1)}`, paddedMaxValue, prefixedZeroesCount + 1);\n    }\n    const valueWithoutLastChar = segmentValue.slice(0, paddedMaxValue.length - 1);\n    if (ALL_ZEROES_RE.exec(valueWithoutLastChar)) {\n        return { validatedSegmentValue: '', prefixedZeroesCount };\n    }\n    // |19:00 => Type 2 => 2|0:00\n    return padWithZeroesUntilValid(`${valueWithoutLastChar}0`, paddedMaxValue, prefixedZeroesCount);\n}\n\n/**\n * Replace fullwidth colon with half width colon\n * @param fullWidthColon full width colon\n * @returns processed half width colon\n */\nfunction toHalfWidthColon(fullWidthColon) {\n    return fullWidthColon.replaceAll(new RegExp(CHAR_JP_COLON, 'g'), CHAR_COLON);\n}\n\n/**\n * Replace fullwidth numbers with half width number\n * @param fullWidthNumber full width number\n * @returns processed half width number\n */\nfunction toHalfWidthNumber(fullWidthNumber) {\n    return fullWidthNumber.replaceAll(/[０-９]/g, (s) => String.fromCharCode(s.charCodeAt(0) - 0xfee0));\n}\n\n/**\n * Convert full width colon (：) to half width one (:)\n */\nfunction createColonConvertPreprocessor() {\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        return {\n            elementState: {\n                selection,\n                value: toHalfWidthColon(value),\n            },\n            data: toHalfWidthColon(data),\n        };\n    };\n}\n\nfunction createDateSegmentsZeroPaddingPostprocessor({ dateModeTemplate, dateSeparator, splitFn, uniteFn, }) {\n    return ({ value, selection }) => {\n        const [from, to] = selection;\n        const { dateStrings, restPart = '' } = splitFn(value);\n        const validatedDateStrings = [];\n        let caretShift = 0;\n        dateStrings.forEach((dateString) => {\n            const parsedDate = parseDateString(dateString, dateModeTemplate);\n            const dateSegments = Object.entries(parsedDate);\n            const validatedDateSegments = dateSegments.reduce((acc, [segmentName, segmentValue]) => {\n                const { validatedSegmentValue, prefixedZeroesCount } = padWithZeroesUntilValid(segmentValue, `${DATE_SEGMENTS_MAX_VALUES[segmentName]}`);\n                caretShift += prefixedZeroesCount;\n                return { ...acc, [segmentName]: validatedSegmentValue };\n            }, {});\n            validatedDateStrings.push(toDateString(validatedDateSegments, { dateMode: dateModeTemplate }));\n        });\n        const validatedValue = `${uniteFn(validatedDateStrings, value)}${dateStrings[dateStrings.length - 1]?.endsWith(dateSeparator)\n            ? dateSeparator\n            : ''}${restPart}`;\n        if (caretShift &&\n            validatedValue.slice(to + caretShift, to + caretShift + dateSeparator.length) === dateSeparator) {\n            /**\n             * If `caretShift` > 0, it means that time segment was padded with zero.\n             * It is only possible if any character insertion happens.\n             * If caret is before `dateSeparator` => it should be moved after `dateSeparator`.\n             */\n            caretShift += dateSeparator.length;\n        }\n        return {\n            selection: [from + caretShift, to + caretShift],\n            value: validatedValue,\n        };\n    };\n}\n\n/**\n * It replaces pseudo range separators with valid one.\n * @example '01.01.2000_11.11.2000' -> '01.01.2000 - 01.01.2000'\n * @example '01.01.2000_23:59' -> '01.01.2000, 23:59'\n */\nfunction createFirstDateEndSeparatorPreprocessor({ dateModeTemplate, firstDateEndSeparator, dateSeparator, pseudoFirstDateEndSeparators, }) {\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        const [from, to] = selection;\n        const firstCompleteDate = getFirstCompleteDate(value, dateModeTemplate);\n        const pseudoSeparators = pseudoFirstDateEndSeparators.filter((x) => !firstDateEndSeparator.includes(x) && x !== dateSeparator);\n        const pseudoSeparatorsRE = new RegExp(`[${pseudoSeparators.join('')}]`, 'gi');\n        const newValue = firstCompleteDate && value.length > firstCompleteDate.length\n            ? `${firstCompleteDate}${value\n                .slice(firstCompleteDate.length)\n                .replace(/^\\D*/, firstDateEndSeparator)}`\n            : value;\n        const caretShift = newValue.length - value.length;\n        return {\n            elementState: {\n                selection: [from + caretShift, to + caretShift],\n                value: newValue,\n            },\n            data: data.replace(pseudoSeparatorsRE, firstDateEndSeparator),\n        };\n    };\n}\n\n/**\n * Convert full width numbers like １, ２ to half width numbers 1, 2\n */\nfunction createFullWidthToHalfWidthPreprocessor() {\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        return {\n            elementState: {\n                selection,\n                value: toHalfWidthNumber(value),\n            },\n            data: toHalfWidthNumber(data),\n        };\n    };\n}\n\nfunction hasDayPeriod(dayPeriod) {\n    return dayPeriod.every(Boolean);\n}\nfunction createDayPeriodMatchers(dayPeriod) {\n    const [am, pm] = dayPeriod;\n    const uniqueChars = [...new Set([...am, ...pm])].map(escapeRegExp).join('');\n    return {\n        anyDayPeriodCharRE: new RegExp(`[${CHAR_NO_BREAK_SPACE}${uniqueChars}]+$`, 'gi'),\n        fullDayPeriodRE: new RegExp(`${CHAR_NO_BREAK_SPACE}(?:${escapeRegExp(am)}|${escapeRegExp(pm)})$`, 'gi'),\n        initialCharRE: new RegExp(`^[${escapeRegExp(am[0])}${escapeRegExp(pm[0])}]$`, 'i'),\n    };\n}\n\nfunction createTimeMaskExpression({ mode, separators, dayPeriod, }) {\n    let separatorIndex = 0;\n    return Array.from(mode.replace(' AA', ''))\n        .flatMap((char) => TIME_FIXED_CHARACTERS.includes(char)\n        ? Array.from(separators[separatorIndex++])\n        : [/\\d/])\n        .concat(hasDayPeriod(dayPeriod)\n        ? [\n            CHAR_NO_BREAK_SPACE,\n            ...dayPeriod[0]\n                .split('')\n                .map(escapeRegExp)\n                .map((am, i) => new RegExp(`[${am}${escapeRegExp(dayPeriod[1][i])}]`, 'i')),\n        ]\n        : []);\n}\n\nfunction padTimeSegments(timeSegments, pad) {\n    return Object.fromEntries(Object.entries(timeSegments).map(([segmentName, segmentValue]) => [\n        segmentName,\n        pad(String(segmentValue), TIME_SEGMENT_VALUE_LENGTHS[segmentName]),\n    ]));\n}\n\nfunction padStartTimeSegments(timeSegments) {\n    return padTimeSegments(timeSegments, (value, length) => value.padStart(length, '0'));\n}\n\nconst SEGMENT_FULL_NAME = {\n    HH: 'hours',\n    MM: 'minutes',\n    SS: 'seconds',\n    MSS: 'milliseconds',\n};\n/**\n * @param timeString can be with/without fixed characters\n */\nfunction parseTimeString(timeString, timeMode) {\n    const onlyDigits = timeString.replaceAll(/\\D+/g, '');\n    let offset = 0;\n    return Object.fromEntries(timeMode\n        .split(/\\W/)\n        .filter((segmentAbbr) => SEGMENT_FULL_NAME[segmentAbbr])\n        .map((segmentAbbr) => {\n        const segmentValue = onlyDigits.slice(offset, offset + segmentAbbr.length);\n        offset += segmentAbbr.length;\n        return [SEGMENT_FULL_NAME[segmentAbbr], segmentValue];\n    }));\n}\n\n/**\n * Pads invalid time segment with zero to make it valid.\n * @example 00:|00 => Type 9 (too much for the first digit of minutes) => 00:09|\n * @example |19:00 => Type 2 (29 - invalid value for hours) => 2|0:00\n */\nfunction enrichTimeSegmentsWithZeroes({ value, selection }, { mode, separators, timeSegmentMaxValues = DEFAULT_TIME_SEGMENT_MAX_VALUES, }) {\n    const [from, to] = selection;\n    const parsedTime = parseTimeString(value, mode);\n    const possibleTimeSegments = Object.entries(parsedTime);\n    const paddedMaxValues = padStartTimeSegments(timeSegmentMaxValues);\n    const validatedTimeSegments = {};\n    let paddedZeroes = 0;\n    for (const [segmentName, segmentValue] of possibleTimeSegments) {\n        const maxSegmentValue = paddedMaxValues[segmentName];\n        const { validatedSegmentValue, prefixedZeroesCount } = padWithZeroesUntilValid(segmentValue, String(maxSegmentValue));\n        paddedZeroes += prefixedZeroesCount;\n        validatedTimeSegments[segmentName] = validatedSegmentValue;\n    }\n    const [leadingNonDigitCharacters = ''] = value.match(/^\\D+(?=\\d)/g) || []; // prefix\n    const [trailingNonDigitCharacters = ''] = value.match(/\\D+$/g) || []; // trailing segment separators / meridiem characters / postfix\n    const time = toTimeString(validatedTimeSegments, { mode, separators });\n    const validatedTime = `${leadingNonDigitCharacters}${time}${trailingNonDigitCharacters}`;\n    const innerPart = validatedTime.slice(leadingNonDigitCharacters.length, validatedTime.length - trailingNonDigitCharacters.length);\n    const uniqueSeparatorChars = [\n        ...new Set(Array.from(innerPart).filter((char) => !/\\d/.test(char))),\n    ].map(escapeRegExp);\n    const addedTimeSeparators = Math.max(validatedTime.length - value.length - paddedZeroes, 0);\n    let newFrom = from + paddedZeroes + addedTimeSeparators;\n    let newTo = to + paddedZeroes + addedTimeSeparators;\n    const caretWasShiftedByZeroPadding = newFrom === newTo && paddedZeroes > 0 && uniqueSeparatorChars.length > 0;\n    if (caretWasShiftedByZeroPadding) {\n        const trailingTimeSegmentSeparatorReg = new RegExp(`[${uniqueSeparatorChars.join('')}]$`);\n        const cursorIsRightBeforeSeparator = validatedTime\n            .slice(0, newTo + 1)\n            .match(trailingTimeSegmentSeparatorReg);\n        if (cursorIsRightBeforeSeparator) {\n            newFrom++;\n            newTo++;\n        }\n    }\n    return {\n        value: validatedTime,\n        selection: [newFrom, newTo],\n    };\n}\n\n/**\n * Prevent insertion if any time segment will become invalid\n * (and even zero padding won't help with it).\n * @example 2|0:00 => Type 9 => 2|0:00\n */\nfunction createInvalidTimeSegmentInsertionPreprocessor({ mode, separators, timeSegmentMinValues, timeSegmentMaxValues, parseValue = (x) => ({ timeString: x }), }) {\n    const invalidCharsRegExp = new RegExp(String.raw `[^\\d${TIME_FIXED_CHARACTERS.map(escapeRegExp).join('')}]+`);\n    return ({ elementState, data }, actionType) => {\n        if (actionType !== 'insert') {\n            return { elementState, data };\n        }\n        const { value, selection } = elementState;\n        const [from, rawTo] = selection;\n        const newCharacters = data.replace(invalidCharsRegExp, '');\n        const to = rawTo + newCharacters.length; // to be conformed with `overwriteMode: replace`\n        const newPossibleValue = `${value.slice(0, from)}${newCharacters}${value.slice(to)}`;\n        const { timeString, restValue = '' } = parseValue(newPossibleValue);\n        const timeSegments = Object.entries(parseTimeString(timeString, mode));\n        let offset = restValue.length;\n        for (const [index, [segmentName, stringifiedSegmentValue],] of timeSegments.entries()) {\n            const minSegmentValue = timeSegmentMinValues[segmentName];\n            const maxSegmentValue = timeSegmentMaxValues[segmentName];\n            const segmentValue = Number(stringifiedSegmentValue);\n            const lastSegmentDigitIndex = offset + TIME_SEGMENT_VALUE_LENGTHS[segmentName];\n            if (lastSegmentDigitIndex >= from &&\n                lastSegmentDigitIndex <= to &&\n                segmentValue !== clamp(segmentValue, minSegmentValue, maxSegmentValue)) {\n                return { elementState, data: '' }; // prevent insertion\n            }\n            offset += stringifiedSegmentValue.length + (separators[index]?.length ?? 0);\n        }\n        return { elementState, data };\n    };\n}\n\nfunction createMeridiemPreprocessor(dayPeriod) {\n    if (!hasDayPeriod(dayPeriod)) {\n        return identity;\n    }\n    const { fullDayPeriodRE, initialCharRE } = createDayPeriodMatchers(dayPeriod);\n    const [am, pm] = dayPeriod;\n    return ({ elementState, data }) => {\n        const { selection, value } = elementState;\n        return value.match(fullDayPeriodRE) && data.match(initialCharRE)\n            ? {\n                elementState: {\n                    value: value.replaceAll(fullDayPeriodRE, ''),\n                    selection,\n                },\n                data: pickMeridiem(data, am, pm),\n            }\n            : { elementState, data };\n    };\n}\nfunction createMeridiemPostprocessor(dayPeriod) {\n    if (!hasDayPeriod(dayPeriod)) {\n        return identity;\n    }\n    const { anyDayPeriodCharRE, fullDayPeriodRE } = createDayPeriodMatchers(dayPeriod);\n    const [am, pm] = dayPeriod;\n    return ({ value, selection }, initialElementState) => {\n        if (!value.match(anyDayPeriodCharRE) ||\n            dayPeriod.some((x) => value.includes(x))) {\n            return { value, selection };\n        }\n        const [from, to] = selection;\n        // any meridiem character was deleted\n        if (initialElementState.value.match(fullDayPeriodRE)) {\n            const newValue = value.replace(anyDayPeriodCharRE, '');\n            return {\n                value: newValue,\n                selection: [\n                    Math.min(from, newValue.length),\n                    Math.min(to, newValue.length),\n                ],\n            };\n        }\n        const fullMeridiem = `${CHAR_NO_BREAK_SPACE}${pickMeridiem(value, am, pm)}`;\n        const newValue = value.replace(anyDayPeriodCharRE, (x) => x === CHAR_NO_BREAK_SPACE ? x : fullMeridiem);\n        return {\n            value: newValue,\n            selection: to >= newValue.indexOf(fullMeridiem)\n                ? [newValue.length, newValue.length]\n                : selection,\n        };\n    };\n}\nfunction pickMeridiem(value, am, pm) {\n    const valueLc = value.toLowerCase();\n    for (let i = 0; i < Math.min(am.length, pm.length); i++) {\n        const amCharLc = am[i].toLowerCase();\n        const pmCharLc = pm[i].toLowerCase();\n        if (amCharLc === pmCharLc) {\n            continue;\n        }\n        return valueLc.includes(pmCharLc) ? pm : am;\n    }\n    return am;\n}\n\nfunction raiseSegmentValueToMin(segments, fullMode) {\n    const segmentsLength = getDateSegmentValueLength(fullMode);\n    return Object.fromEntries(Object.entries(segments).map(([key, value]) => {\n        const segmentLength = segmentsLength[key];\n        return [\n            key,\n            value.length === segmentLength && /^0+$/.exec(value)\n                ? '1'.padStart(segmentLength, '0')\n                : value,\n        ];\n    }));\n}\n\nconst LEAP_YEAR = '1972';\nfunction createMinMaxDatePostprocessor({ dateModeTemplate, min, max, dateSeparator, rangeSeparator = '', }) {\n    return ({ value, selection }) => {\n        const endsWithRangeSeparator = rangeSeparator && value.endsWith(rangeSeparator);\n        const dateStrings = parseDateRangeString(value, dateModeTemplate, rangeSeparator);\n        let validatedValue = '';\n        for (const dateString of dateStrings) {\n            validatedValue += validatedValue ? rangeSeparator : '';\n            const parsedDate = parseDateString(dateString, dateModeTemplate);\n            if (!isDateStringComplete(dateString, dateModeTemplate)) {\n                const fixedDate = raiseSegmentValueToMin(parsedDate, dateModeTemplate);\n                const fixedValue = toDateString(fixedDate, { dateMode: dateModeTemplate });\n                const tail = dateString.endsWith(dateSeparator) ? dateSeparator : '';\n                validatedValue += `${fixedValue}${tail}`;\n                continue;\n            }\n            const date = segmentsToDate({ year: LEAP_YEAR, ...parsedDate });\n            const clampedDate = clamp(date, min, max);\n            validatedValue += toDateString(dateToSegments(clampedDate), {\n                dateMode: dateModeTemplate,\n            });\n        }\n        return {\n            selection,\n            value: `${validatedValue}${endsWithRangeSeparator ? rangeSeparator : ''}`,\n        };\n    };\n}\n\nfunction normalizeDatePreprocessor({ dateModeTemplate, dateSeparator, rangeSeparator = '', dateTimeSeparator = DATE_TIME_SEPARATOR, }) {\n    return ({ elementState, data }) => {\n        const templateSegments = dateModeTemplate.split(dateSeparator);\n        const includesTime = data.includes(dateTimeSeparator);\n        const dateSegments = data\n            .slice(0, includesTime ? data.indexOf(dateTimeSeparator) : Infinity)\n            .split(/\\D/)\n            .filter(Boolean);\n        if (!dateSegments.length || dateSegments.length % templateSegments.length !== 0) {\n            return { elementState, data };\n        }\n        const dates = dateSegments.reduce((dates, segment, index) => {\n            const template = templateSegments[index % templateSegments.length] ?? '';\n            const dateIndex = Math.trunc(index / templateSegments.length);\n            const isLastDateSegment = index % templateSegments.length === templateSegments.length - 1;\n            if (!dates[dateIndex]) {\n                dates[dateIndex] = '';\n            }\n            dates[dateIndex] += isLastDateSegment\n                ? segment\n                : `${segment.padStart(template.length, '0')}${dateSeparator}`;\n            return dates;\n        }, []);\n        return {\n            elementState,\n            data: includesTime\n                ? `${dates[0]}${data.slice(data.indexOf(dateTimeSeparator))}`\n                : dates.join(rangeSeparator),\n        };\n    };\n}\n\nfunction maskitoPostfixPostprocessorGenerator(postfix) {\n    const completedPostfixRE = new RegExp(`${escapeRegExp(postfix)}$`);\n    const incompletePostfixRE = new RegExp(postfix &&\n        `(${postfix\n            .split('')\n            .map(escapeRegExp)\n            // eslint-disable-next-line\n            .reduce((acc, _, i, arr) => `${acc}|${arr.slice(0, i + 1).join('')}`)})$`);\n    return postfix\n        ? ({ value, selection }, initialElementState) => {\n            if (!value && !initialElementState.value.endsWith(postfix)) {\n                // cases when developer wants input to be empty (programmatically)\n                return { value, selection };\n            }\n            if (!value.match(incompletePostfixRE) &&\n                !initialElementState.value.endsWith(postfix)) {\n                return { selection, value: `${value}${postfix}` };\n            }\n            const initialValueBeforePostfix = initialElementState.value.replace(completedPostfixRE, '');\n            const postfixWasModified = initialElementState.selection[1] > initialValueBeforePostfix.length;\n            const alreadyExistedValueBeforePostfix = findCommonBeginningSubstr(initialValueBeforePostfix, value);\n            return {\n                selection,\n                value: Array.from(postfix)\n                    .reverse()\n                    .reduce((newValue, char, index) => {\n                    const i = newValue.length - 1 - index;\n                    const isInitiallyMirroredChar = alreadyExistedValueBeforePostfix[i] === char &&\n                        postfixWasModified;\n                    return newValue[i] !== char || isInitiallyMirroredChar\n                        ? `${newValue.slice(0, i + 1)}${char}${newValue.slice(i + 1)}`\n                        : newValue;\n                }, value),\n            };\n        }\n        : identity;\n}\n\nfunction maskitoPrefixPostprocessorGenerator(prefix) {\n    return prefix\n        ? ({ value, selection }, initialElementState) => {\n            if (value.startsWith(prefix) || // already valid\n                (!value && !initialElementState.value.startsWith(prefix)) // cases when developer wants input to be empty\n            ) {\n                return { value, selection };\n            }\n            const [from, to] = selection;\n            const prefixedValue = Array.from(prefix).reduce((modifiedValue, char, i) => modifiedValue[i] === char\n                ? modifiedValue\n                : `${modifiedValue.slice(0, i)}${char}${modifiedValue.slice(i)}`, value);\n            const addedCharsCount = prefixedValue.length - value.length;\n            return {\n                selection: [from + addedCharsCount, to + addedCharsCount],\n                value: prefixedValue,\n            };\n        }\n        : identity;\n}\n\nconst DIGIT_REGEXP = /\\d/;\nconst NON_DIGIT_REGEXP = /\\D/;\nfunction skipNonDigitCharacters(value, [from, to]) {\n    if (from !== to || from <= 0 || !DIGIT_REGEXP.test(value.charAt(from - 1))) {\n        return [from, to];\n    }\n    let shifted = from;\n    while (shifted < value.length && NON_DIGIT_REGEXP.test(value.charAt(shifted))) {\n        shifted++;\n    }\n    return [shifted, shifted];\n}\n\nfunction createValidDatePreprocessor({ dateModeTemplate, dateSeparator, rangeSeparator = '', }) {\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        if (data === dateSeparator) {\n            if (selection[0] !== value.length) {\n                return { elementState, data: '' };\n            }\n            const dateStrings = parseDateRangeString(value, dateModeTemplate, rangeSeparator);\n            const dateString = dateStrings[dateStrings.length - 1] ?? '';\n            const paddedDateString = padIncompleteDateSegment({\n                dateString,\n                dateModeTemplate,\n                dateSeparator,\n            });\n            const caretShift = paddedDateString.length - dateString.length;\n            return {\n                elementState: caretShift\n                    ? {\n                        value: `${value.slice(0, -dateString.length)}${paddedDateString}`,\n                        selection: [\n                            selection[0] + caretShift,\n                            selection[1] + caretShift,\n                        ],\n                    }\n                    : elementState,\n                data,\n            };\n        }\n        if (!data.replaceAll(/\\D/g, '')) {\n            return { elementState, data };\n        }\n        const newCharacters = data.replaceAll(new RegExp(String.raw `[^\\d${escapeRegExp(dateSeparator)}${rangeSeparator}]`, 'g'), '');\n        const [from, rawTo] = skipNonDigitCharacters(value, selection);\n        let to = rawTo + data.length;\n        const newPossibleValue = `${value.slice(0, from)}${newCharacters}${value.slice(to)}`;\n        const dateStrings = parseDateRangeString(newPossibleValue, dateModeTemplate, rangeSeparator);\n        let validatedValue = '';\n        const hasRangeSeparator = Boolean(rangeSeparator) && newPossibleValue.includes(rangeSeparator);\n        for (const dateString of dateStrings) {\n            const { validatedDateString, updatedSelection } = validateDateString({\n                dateString,\n                dateModeTemplate,\n                dateSeparator,\n                offset: validatedValue.length,\n                selection: [from, to],\n            });\n            if (dateString && !validatedDateString) {\n                return { elementState, data: '' }; // prevent changes\n            }\n            to = updatedSelection[1];\n            validatedValue +=\n                hasRangeSeparator && !validatedValue\n                    ? `${validatedDateString}${rangeSeparator}`\n                    : validatedDateString;\n        }\n        const newData = validatedValue.slice(from, to);\n        return {\n            elementState: {\n                selection: [from, rawTo],\n                value: `${validatedValue.slice(0, from)}${newData\n                    .split(dateSeparator)\n                    .map((segment) => '0'.repeat(segment.length))\n                    .join(dateSeparator)}${validatedValue.slice(to)}`,\n            },\n            data: newData,\n        };\n    };\n}\n\nfunction maskitoEventHandler(name, handler, eventListenerOptions) {\n    return (element, maskitoOptions) => {\n        const listener = () => handler(element, maskitoOptions);\n        element.addEventListener(name, listener, eventListenerOptions);\n        return () => element.removeEventListener(name, listener, eventListenerOptions);\n    };\n}\n\nfunction maskitoAddOnFocusPlugin(value) {\n    return maskitoEventHandler('focus', (element) => {\n        if (!element.value) {\n            maskitoUpdateElement(element, value);\n        }\n    });\n}\n\nfunction maskitoSelectionChangeHandler(handler) {\n    return (element, options) => {\n        const document = element.ownerDocument;\n        let isPointerDown = 0;\n        const onPointerDown = () => isPointerDown++;\n        const onPointerUp = () => {\n            isPointerDown = Math.max(--isPointerDown, 0);\n        };\n        const listener = () => {\n            if (!element.matches(':focus')) {\n                return;\n            }\n            if (isPointerDown) {\n                return document.addEventListener('mouseup', listener, {\n                    once: true,\n                    passive: true,\n                });\n            }\n            handler(element, options);\n        };\n        document.addEventListener('selectionchange', listener, { passive: true });\n        // Safari does not fire `selectionchange` on focus after programmatic update of textfield value\n        element.addEventListener('focus', listener, { passive: true });\n        element.addEventListener('mousedown', onPointerDown, { passive: true });\n        document.addEventListener('mouseup', onPointerUp, { passive: true });\n        return () => {\n            document.removeEventListener('selectionchange', listener);\n            element.removeEventListener('focus', listener);\n            element.removeEventListener('mousedown', onPointerDown);\n            document.removeEventListener('mouseup', onPointerUp);\n        };\n    };\n}\n\nfunction maskitoCaretGuard(guard) {\n    return maskitoSelectionChangeHandler((element) => {\n        const start = element.selectionStart ?? 0;\n        const end = element.selectionEnd ?? 0;\n        const [fromLimit, toLimit] = guard(element.value, [start, end]);\n        if (fromLimit > start || toLimit < end) {\n            element.setSelectionRange(clamp(start, fromLimit, toLimit), clamp(end, fromLimit, toLimit));\n        }\n    });\n}\n\nconst maskitoRejectEvent = (element) => {\n    const listener = () => {\n        const value = element.value;\n        element.addEventListener('beforeinput', (event) => {\n            if (event.defaultPrevented && value === element.value) {\n                element.dispatchEvent(new CustomEvent('maskitoReject', { bubbles: true }));\n            }\n        }, { once: true });\n    };\n    element.addEventListener('beforeinput', listener, true);\n    return () => element.removeEventListener('beforeinput', listener, true);\n};\n\nfunction maskitoRemoveOnBlurPlugin(value) {\n    return maskitoEventHandler('blur', (element) => {\n        if (element.value === value) {\n            maskitoUpdateElement(element, '');\n        }\n    });\n}\n\nfunction createMeridiemSteppingPlugin({ dayPeriod, meridiemStartIndex, }) {\n    if (meridiemStartIndex < 0 || !hasDayPeriod(dayPeriod)) {\n        return noop;\n    }\n    const { anyDayPeriodCharRE } = createDayPeriodMatchers(dayPeriod);\n    const [am, pm] = dayPeriod;\n    return (element) => {\n        const listener = (event) => {\n            const caretIndex = Number(element.selectionStart);\n            const { value } = element;\n            if ((event.key !== 'ArrowUp' && event.key !== 'ArrowDown') ||\n                caretIndex < meridiemStartIndex) {\n                return;\n            }\n            event.preventDefault();\n            // eslint-disable-next-line no-nested-ternary\n            const nextMeridiem = value.toLowerCase().includes(am.toLowerCase())\n                ? pm\n                : value.toLowerCase().includes(pm.toLowerCase()) ||\n                    event.key === 'ArrowUp'\n                    ? am\n                    : pm;\n            const newMeridiem = `${CHAR_NO_BREAK_SPACE}${nextMeridiem}`;\n            maskitoUpdateElement(element, {\n                value: value.length === meridiemStartIndex\n                    ? `${value}${newMeridiem}`\n                    : value.replace(anyDayPeriodCharRE, newMeridiem),\n                selection: [caretIndex, caretIndex],\n            });\n        };\n        element.addEventListener('keydown', listener);\n        return () => element.removeEventListener('keydown', listener);\n    };\n}\n\nfunction createTimeSegmentsSteppingPlugin({ step, fullMode, timeSegmentMinValues, timeSegmentMaxValues, dayPeriod, }) {\n    const segmentsIndexes = createTimeSegmentsIndexes(fullMode);\n    return step <= 0\n        ? noop\n        : (element) => {\n            const listener = (event) => {\n                if (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n                    return;\n                }\n                event.preventDefault();\n                const selectionStart = element.selectionStart ?? 0;\n                const activeSegment = getActiveSegment({\n                    segmentsIndexes,\n                    selectionStart,\n                });\n                if (!activeSegment) {\n                    return;\n                }\n                const toAdd = event.key === 'ArrowUp' ? step : -step;\n                const selection = segmentsIndexes.get(activeSegment);\n                const meridiem = hasDayPeriod(dayPeriod) ? dayPeriod : null;\n                const previousValue = element.value;\n                const updatedValue = updateSegmentValue({\n                    selection,\n                    value: previousValue,\n                    toAdd,\n                    min: timeSegmentMinValues[activeSegment],\n                    max: timeSegmentMaxValues[activeSegment],\n                });\n                maskitoUpdateElement(element, {\n                    value: meridiem &&\n                        shouldToggleMeridiem({\n                            activeSegment,\n                            previousValue,\n                            selection,\n                            toAdd,\n                        })\n                        ? toggleMeridiem(updatedValue, meridiem)\n                        : updatedValue,\n                    selection: [selectionStart, selectionStart],\n                });\n            };\n            element.addEventListener('keydown', listener);\n            return () => element.removeEventListener('keydown', listener);\n        };\n}\nfunction createTimeSegmentsIndexes(fullMode) {\n    return new Map([\n        ['hours', getSegmentRange(fullMode, 'HH')],\n        ['milliseconds', getSegmentRange(fullMode, 'MSS')],\n        ['minutes', getSegmentRange(fullMode, 'MM')],\n        ['seconds', getSegmentRange(fullMode, 'SS')],\n    ]);\n}\nfunction getSegmentRange(mode, segment) {\n    const index = mode.indexOf(segment);\n    return index === -1 ? [-1, -1] : [index, index + segment.length];\n}\nfunction getActiveSegment({ segmentsIndexes, selectionStart, }) {\n    for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n        const [from, to] = segmentRange;\n        if (from <= selectionStart && selectionStart <= to) {\n            return segmentName;\n        }\n    }\n    return null;\n}\nfunction updateSegmentValue({ selection, value, toAdd, min, max, }) {\n    const [from, to] = selection;\n    const segmentValue = Number(value.slice(from, to).padEnd(to - from, '0'));\n    const newSegmentValue = mod(segmentValue + toAdd, min, max + 1);\n    return `${value.slice(0, from)}${String(newSegmentValue).padStart(to - from, '0')}${value.slice(to)}`;\n}\nfunction mod(value, min, max) {\n    const range = max - min;\n    return ((((value - min) % range) + range) % range) + min;\n}\nfunction shouldToggleMeridiem({ activeSegment, previousValue, selection, toAdd, }) {\n    if (activeSegment !== 'hours') {\n        return false;\n    }\n    const [segmentStart, segmentEnd] = selection;\n    const segmentLength = segmentEnd - segmentStart;\n    const previousHour = Number(previousValue.slice(segmentStart, segmentEnd).padEnd(segmentLength, '0'));\n    const dialIndex = previousHour % 12;\n    const wraps = Math.floor((dialIndex + toAdd) / 12);\n    return Math.abs(wraps) % 2 === 1;\n}\nfunction toggleMeridiem(value, dayPeriod) {\n    const [am, pm] = dayPeriod;\n    const lowerValue = value.toLowerCase();\n    const containsAm = lowerValue.includes(am.toLowerCase());\n    const containsPm = lowerValue.includes(pm.toLowerCase());\n    if (!containsAm && !containsPm) {\n        return value;\n    }\n    const nextMeridiem = containsAm ? pm : am;\n    const { anyDayPeriodCharRE } = createDayPeriodMatchers(dayPeriod);\n    return value.replace(anyDayPeriodCharRE, `${CHAR_NO_BREAK_SPACE}${nextMeridiem}`);\n}\n\nfunction maskitoWithPlaceholder(placeholder, focusedOnly = false) {\n    let lastClearValue = '';\n    let action = 'validation';\n    const removePlaceholder = (value) => {\n        for (let i = value.length - 1; i >= lastClearValue.length; i--) {\n            if (value[i] !== placeholder[i]) {\n                return value.slice(0, i + 1);\n            }\n        }\n        return value.slice(0, lastClearValue.length);\n    };\n    const plugins = [maskitoCaretGuard((value) => [0, removePlaceholder(value).length])];\n    let focused = false;\n    if (focusedOnly) {\n        const focus = maskitoEventHandler('focus', (element) => {\n            focused = true;\n            maskitoUpdateElement(element, `${element.value}${placeholder.slice(element.value.length)}`);\n        }, { capture: true });\n        const blur = maskitoEventHandler('blur', (element) => {\n            focused = false;\n            maskitoUpdateElement(element, removePlaceholder(element.value));\n        }, { capture: true });\n        plugins.push(focus, blur);\n    }\n    return {\n        plugins,\n        removePlaceholder,\n        preprocessors: [\n            ({ elementState, data }, actionType) => {\n                action = actionType;\n                const { value, selection } = elementState;\n                return {\n                    elementState: {\n                        selection,\n                        value: removePlaceholder(value),\n                    },\n                    data,\n                };\n            },\n        ],\n        postprocessors: [\n            ({ value, selection }, initialElementState) => {\n                lastClearValue = value;\n                const justPlaceholderRemoval = `${value}${placeholder.slice(value.length, initialElementState.value.length)}` === initialElementState.value;\n                if (action === 'validation' && justPlaceholderRemoval) {\n                    /**\n                     * If `value` still equals to `initialElementState.value`,\n                     * then it means that value is patched programmatically (from Maskito's plugin or externally).\n                     * In this case, we don't want to mutate value and automatically add/remove placeholder.\n                     * ___\n                     * For example, developer wants to remove manually placeholder (+ do something else with value) on blur.\n                     * Without this condition, placeholder will be unexpectedly added again.\n                     */\n                    return { selection, value: initialElementState.value };\n                }\n                const newValue = focused || !focusedOnly\n                    ? `${value}${placeholder.slice(value.length)}`\n                    : value;\n                if (newValue === initialElementState.value &&\n                    action === 'deleteBackward') {\n                    const [caretIndex] = initialElementState.selection;\n                    return {\n                        value: newValue,\n                        selection: [caretIndex, caretIndex],\n                    };\n                }\n                return { value: newValue, selection };\n            },\n        ],\n    };\n}\n\nfunction createZeroPlaceholdersPreprocessor(postfix = '') {\n    const isLastChar = (value, [_, to]) => to >= value.length - postfix.length;\n    return ({ elementState }, actionType) => {\n        const { value, selection } = elementState;\n        if (!value || isLastChar(value, selection)) {\n            return { elementState };\n        }\n        const [from, to] = selection;\n        const zeroes = value.slice(from, to).replaceAll(/\\d/g, '0');\n        const newValue = `${value.slice(0, from)}${zeroes}${value.slice(to)}`;\n        if (!zeroes.replaceAll(/\\D/g, '')) {\n            return { elementState };\n        }\n        return actionType === 'validation' || (actionType === 'insert' && from === to)\n            ? { elementState: { selection, value: newValue } }\n            : {\n                elementState: {\n                    selection: actionType === 'deleteBackward' || actionType === 'insert'\n                        ? [from, from]\n                        : [to, to],\n                    value: newValue,\n                },\n            };\n    };\n}\n\nfunction getLocaleDateParams(locale) {\n    const referenceDate = new Date(1970, 0, 2);\n    const parts = new Intl.DateTimeFormat(locale, {\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit',\n    }).formatToParts(referenceDate);\n    const separator = parts.find((part) => part.type === 'literal')?.value ?? '.';\n    const segmentLabel = { day: 'dd', month: 'mm', year: 'yyyy' };\n    const mode = parts\n        .filter((part) => part.type === 'year' || part.type === 'month' || part.type === 'day')\n        .map((part) => segmentLabel[part.type])\n        .join('/');\n    return { mode, separator };\n}\n\nfunction maskitoWithDateDefaults({ locale = '', mode, separator, min = DEFAULT_MIN_DATE, max = DEFAULT_MAX_DATE, }) {\n    const localeParams = locale ? getLocaleDateParams(locale) : null;\n    return {\n        locale,\n        mode: mode ?? localeParams?.mode ?? 'dd/mm/yyyy',\n        separator: separator ?? localeParams?.separator ?? '.',\n        min,\n        max,\n    };\n}\n\nfunction maskitoDate(params) {\n    const { mode, min, max, separator: dateSeparator } = maskitoWithDateDefaults(params);\n    const dateModeTemplate = mode.split('/').join(dateSeparator);\n    return {\n        ...MASKITO_DEFAULT_OPTIONS,\n        mask: [...dateModeTemplate].map((char) => dateSeparator.includes(char) ? char : /\\d/),\n        overwriteMode: 'replace',\n        preprocessors: [\n            createFullWidthToHalfWidthPreprocessor(),\n            createZeroPlaceholdersPreprocessor(),\n            normalizeDatePreprocessor({\n                dateModeTemplate,\n                dateSeparator,\n            }),\n            createValidDatePreprocessor({\n                dateModeTemplate,\n                dateSeparator,\n            }),\n        ],\n        postprocessors: [\n            createDateSegmentsZeroPaddingPostprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                splitFn: (value) => ({ dateStrings: [value] }),\n                uniteFn: ([dateString = '']) => dateString,\n            }),\n            createMinMaxDatePostprocessor({\n                min,\n                max,\n                dateModeTemplate,\n                dateSeparator,\n            }),\n        ],\n    };\n}\n\nfunction maskitoParseDate(value, params) {\n    const { mode, min, max } = maskitoWithDateDefaults(params);\n    const digitsPattern = mode.replaceAll(/[^dmy]/g, '');\n    const digits = value.replaceAll(/\\D+/g, '');\n    if (digits.length !== digitsPattern.length) {\n        return null;\n    }\n    const dateSegments = parseDateString(value, mode);\n    const parsedDate = segmentsToDate(dateSegments);\n    return mode.includes('y') ? clamp(parsedDate, min, max) : parsedDate;\n}\n\nconst formatter = Intl.DateTimeFormat('en-US', {\n    month: '2-digit',\n    day: '2-digit',\n    year: 'numeric',\n});\nfunction toDateSegments(date) {\n    return formatter\n        .formatToParts(date)\n        .reduce((acc, part) => ({ ...acc, [part.type]: part.value }), {});\n}\n\nfunction maskitoStringifyDate(date, params) {\n    const { mode, separator, min, max } = maskitoWithDateDefaults(params);\n    const { year, ...segments } = toDateSegments(clamp(date, min, max));\n    return toDateString({ ...segments, year: year.padStart(mode.match(/y/g)?.length ?? 0, '0') }, { dateMode: mode.replaceAll('/', separator) });\n}\n\nfunction createMinMaxRangeLengthPostprocessor({ dateModeTemplate, rangeSeparator, minLength, maxLength, max = DEFAULT_MAX_DATE, }) {\n    return isEmpty(minLength) && isEmpty(maxLength)\n        ? identity\n        : ({ value, selection }) => {\n            const dateStrings = parseDateRangeString(value, dateModeTemplate, rangeSeparator);\n            if (dateStrings.length !== 2 ||\n                dateStrings.some((date) => !isDateStringComplete(date, dateModeTemplate))) {\n                return { value, selection };\n            }\n            const [fromDate, toDate] = dateStrings.map((dateString) => segmentsToDate(parseDateString(dateString, dateModeTemplate)));\n            if (!fromDate || !toDate) {\n                return { value, selection };\n            }\n            const minDistantToDate = appendDate(fromDate, minLength);\n            const maxDistantToDate = isEmpty(maxLength)\n                ? max\n                : appendDate(fromDate, maxLength);\n            const minLengthClampedToDate = clamp(toDate, minDistantToDate, max);\n            const minMaxLengthClampedToDate = minLengthClampedToDate > maxDistantToDate\n                ? maxDistantToDate\n                : minLengthClampedToDate;\n            return {\n                selection,\n                value: dateStrings[0] +\n                    rangeSeparator +\n                    toDateString(dateToSegments(minMaxLengthClampedToDate), {\n                        dateMode: dateModeTemplate,\n                    }),\n            };\n        };\n}\n\nfunction createSwapDatesPostprocessor({ dateModeTemplate, rangeSeparator, }) {\n    return ({ value, selection }) => {\n        const dateStrings = parseDateRangeString(value, dateModeTemplate, rangeSeparator);\n        const isDateRangeComplete = dateStrings.length === 2 &&\n            dateStrings.every((date) => isDateStringComplete(date, dateModeTemplate));\n        const [from, to] = selection;\n        const caretAtTheEnd = from >= value.length;\n        const allValueSelected = from === 0 && to >= value.length; // dropping text inside with a pointer\n        if (!(caretAtTheEnd || allValueSelected) || !isDateRangeComplete) {\n            return { value, selection };\n        }\n        const [fromDate, toDate] = dateStrings.map((dateString) => segmentsToDate(parseDateString(dateString, dateModeTemplate)));\n        return {\n            selection,\n            value: fromDate && toDate && fromDate > toDate\n                ? dateStrings.reverse().join(rangeSeparator)\n                : value,\n        };\n    };\n}\n\nfunction maskitoDateRange(params) {\n    const { mode, separator: dateSeparator, min, max, } = maskitoWithDateDefaults({\n        ...params,\n        separator: params.dateSeparator,\n    });\n    const rangeSeparator = params.rangeSeparator ??\n        `${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}`;\n    const dateModeTemplate = mode.split('/').join(dateSeparator);\n    const dateMask = Array.from(dateModeTemplate).map((char) => dateSeparator.includes(char) ? char : /\\d/);\n    return {\n        ...MASKITO_DEFAULT_OPTIONS,\n        mask: [...dateMask, ...Array.from(rangeSeparator), ...dateMask],\n        overwriteMode: 'replace',\n        preprocessors: [\n            createFullWidthToHalfWidthPreprocessor(),\n            createFirstDateEndSeparatorPreprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                firstDateEndSeparator: rangeSeparator,\n                pseudoFirstDateEndSeparators: POSSIBLE_DATE_RANGE_SEPARATOR,\n            }),\n            createZeroPlaceholdersPreprocessor(),\n            normalizeDatePreprocessor({\n                dateModeTemplate,\n                rangeSeparator,\n                dateSeparator,\n            }),\n            createValidDatePreprocessor({\n                dateModeTemplate,\n                rangeSeparator,\n                dateSeparator,\n            }),\n        ],\n        postprocessors: [\n            createDateSegmentsZeroPaddingPostprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                splitFn: (value) => ({\n                    dateStrings: parseDateRangeString(value, dateModeTemplate, rangeSeparator),\n                }),\n                uniteFn: (validatedDateStrings, initialValue) => validatedDateStrings.reduce((acc, dateString, dateIndex) => `${acc}${dateString}${!dateIndex && initialValue.includes(rangeSeparator)\n                    ? rangeSeparator\n                    : ''}`, ''),\n            }),\n            createMinMaxDatePostprocessor({\n                min,\n                max,\n                dateModeTemplate,\n                rangeSeparator,\n                dateSeparator,\n            }),\n            createMinMaxRangeLengthPostprocessor({\n                ...params,\n                max,\n                dateModeTemplate,\n                rangeSeparator,\n            }),\n            createSwapDatesPostprocessor({\n                dateModeTemplate,\n                rangeSeparator,\n            }),\n        ],\n    };\n}\n\nconst AM = new Date(1970, 0, 1, 1, 45, 30, 123);\nconst PM = new Date(1970, 0, 1, 13, 45, 30, 123);\nfunction getLocaleTimeParams(locale) {\n    const formatter = new Intl.DateTimeFormat(locale, {\n        hour: '2-digit',\n        minute: '2-digit',\n        second: '2-digit',\n        fractionalSecondDigits: 3,\n    });\n    const amParts = formatter.formatToParts(AM);\n    const pmParts = formatter.formatToParts(PM);\n    return {\n        dayPeriod: [amParts, pmParts].map((x) => x.find((part) => part.type === 'dayPeriod')?.value ?? ''),\n        separators: amParts\n            .slice(amParts.findIndex((x) => x.type === 'hour'), amParts.findIndex((x) => x.type === 'fractionalSecond'))\n            .filter((x) => x.type === 'literal')\n            .map((x) => x.value),\n    };\n}\n\nfunction maskitoWithTimeDefaults({ mode, separators, timeSegmentMaxValues = {}, timeSegmentMinValues = {}, locale = '', ...params }) {\n    const localeParams = locale ? getLocaleTimeParams(locale) : null;\n    const dayPeriod = mode.includes('AA') // TODO(v6): drop backward-compat for `'... AA'` modes and require explicit `dayPeriod` for 12-hour format\n        ? ['AM', 'PM']\n        : (params.dayPeriod ?? localeParams?.dayPeriod ?? ['', '']);\n    const hasMeridiem = hasDayPeriod(dayPeriod);\n    const defaultSeparators = Array.from(mode.replace(' AA', '')).filter((char) => TIME_FIXED_CHARACTERS.includes(char));\n    return {\n        mode,\n        locale,\n        step: 0,\n        prefix: '',\n        postfix: '',\n        ...params,\n        dayPeriod,\n        separators: defaultSeparators.map((fallback, i) => separators?.[i] ?? localeParams?.separators[i] ?? fallback),\n        timeSegmentMinValues: {\n            ...DEFAULT_TIME_SEGMENT_MIN_VALUES,\n            ...(hasMeridiem ? { hours: 1 } : {}),\n            ...timeSegmentMinValues,\n        },\n        timeSegmentMaxValues: {\n            ...DEFAULT_TIME_SEGMENT_MAX_VALUES,\n            ...(hasMeridiem ? { hours: 12 } : {}),\n            ...timeSegmentMaxValues,\n        },\n    };\n}\n\nfunction isDateTimeStringComplete(dateTimeString, { dateMode, timeMode, timeSeparators, dateTimeSeparator, }) {\n    const timeModeTemplate = createTimeModeTemplate({\n        mode: timeMode,\n        separators: timeSeparators,\n    });\n    return (dateTimeString.length >=\n        dateMode.length + timeModeTemplate.length + dateTimeSeparator.length &&\n        (dateTimeString.split(dateTimeSeparator)[0] ?? '')\n            .split(/\\D/)\n            .every((segment) => !/^0+$/.exec(segment)));\n}\n\nfunction maskitoTime(params) {\n    const { mode, separators, dayPeriod, prefix, postfix, timeSegmentMinValues, timeSegmentMaxValues, step, } = maskitoWithTimeDefaults(params);\n    const maskExpression = [\n        ...prefix,\n        ...createTimeMaskExpression({ mode, separators, dayPeriod }),\n    ];\n    return {\n        mask: postfix\n            ? ({ value }) => cutExpression(maskExpression, value).concat(...postfix)\n            : maskExpression,\n        preprocessors: [\n            createFullWidthToHalfWidthPreprocessor(),\n            createColonConvertPreprocessor(),\n            createZeroPlaceholdersPreprocessor(postfix),\n            createMeridiemPreprocessor(dayPeriod),\n            createInvalidTimeSegmentInsertionPreprocessor({\n                mode,\n                separators,\n                timeSegmentMinValues,\n                timeSegmentMaxValues,\n            }),\n        ],\n        postprocessors: [\n            createMeridiemPostprocessor(dayPeriod),\n            (elementState) => enrichTimeSegmentsWithZeroes(elementState, {\n                mode,\n                timeSegmentMaxValues,\n                separators,\n            }),\n            maskitoPrefixPostprocessorGenerator(prefix),\n            maskitoPostfixPostprocessorGenerator(postfix),\n        ],\n        plugins: [\n            createTimeSegmentsSteppingPlugin({\n                fullMode: createTimeModeTemplate({ mode, separators }),\n                step,\n                timeSegmentMinValues,\n                timeSegmentMaxValues,\n                dayPeriod,\n            }),\n            createMeridiemSteppingPlugin({\n                dayPeriod,\n                meridiemStartIndex: hasDayPeriod(dayPeriod)\n                    ? maskExpression.length - dayPeriod[0].length\n                    : -1,\n            }),\n        ],\n        overwriteMode: 'replace',\n    };\n}\n/**\n * Without cutting, the mask expression removes postfix on the last digit deletion\n * ___\n * Case 1 (static pattern mask expression)\n * Mask expression is [/\\d/, /\\d/, ':', /\\d/, /\\d/, ' left']\n * 12:34| left => Press Backspace => 12:3|\n * Mask correctly removes postfix because it's fixed characters after not yet inserted 4th digit.\n * ___\n * Case 2 (dynamic pattern mask expression)\n * Mask expression is [/\\d/, /\\d/, ':', /\\d/, /\\d/, ' left'] & textfield contains `12:34 left`\n * 12:34| left => Press Backspace => Mask expression becomes [/\\d/, /\\d/, ':', /\\d/, ' left']  => 12:3| left\n * Mask correctly does not remove postfix because it's trailing fixed characters\n * and all non-fixed characters were already inserted.\n */\nfunction cutExpression(expression, value) {\n    let digitsCount = Math.min(value.replaceAll(/\\D/g, '').length, expression.filter((x) => typeof x !== 'string').length) || 1;\n    const afterLastDigit = expression.findIndex((x) => typeof x !== 'string' && !--digitsCount) + 1;\n    return expression.slice(0, afterLastDigit);\n}\n\n/**\n * Converts a formatted time string to milliseconds based on the given `options.mode`.\n *\n * @param maskedTime a formatted time string by {@link maskitoTime} or {@link maskitoStringifyTime}\n * @param params\n */\nfunction maskitoParseTime(maskedTime, params) {\n    const { mode, dayPeriod, timeSegmentMaxValues } = maskitoWithTimeDefaults(params);\n    const msInSecond = timeSegmentMaxValues.milliseconds + 1;\n    const msInMinute = (timeSegmentMaxValues.seconds + 1) * msInSecond;\n    const msInHour = (timeSegmentMaxValues.minutes + 1) * msInMinute;\n    const parsedTime = padStartTimeSegments(parseTimeString(maskedTime, mode));\n    let hours = Number(parsedTime.hours ?? '');\n    if (hasDayPeriod(dayPeriod) && Number.isFinite(hours)) {\n        if (maskedTime.includes(dayPeriod[1])) {\n            hours = hours < 12 ? hours + 12 : hours;\n        }\n        else {\n            hours = hours === 12 ? 0 : hours;\n        }\n    }\n    return (hours * msInHour +\n        Number(parsedTime.minutes ?? '') * msInMinute +\n        Number(parsedTime.seconds ?? '') * msInSecond +\n        Number(parsedTime.milliseconds ?? ''));\n}\n\n/**\n * Converts milliseconds to a formatted time string based on the given `options.mode`.\n *\n * @param milliseconds unsigned integer milliseconds\n * @param params\n */\nfunction maskitoStringifyTime(milliseconds, params) {\n    const { mode, separators, dayPeriod, timeSegmentMaxValues } = maskitoWithTimeDefaults(params);\n    const hasMeridiem = hasDayPeriod(dayPeriod);\n    const msInSecond = timeSegmentMaxValues.milliseconds + 1;\n    const msInMinute = (timeSegmentMaxValues.seconds + 1) * msInSecond;\n    const msInHour = (timeSegmentMaxValues.minutes + 1) * msInMinute;\n    const hours = Math.trunc(milliseconds / msInHour);\n    milliseconds -= hours * msInHour;\n    const minutes = Math.trunc(milliseconds / msInMinute);\n    milliseconds -= minutes * msInMinute;\n    const seconds = Math.trunc(milliseconds / msInSecond);\n    milliseconds -= seconds * msInSecond;\n    const result = padStartTimeSegments({\n        hours: hasMeridiem ? hours % 12 || 12 : hours,\n        minutes,\n        seconds,\n        milliseconds,\n    });\n    const time = toTimeString(result, { mode, separators });\n    return hasMeridiem\n        ? `${time}${CHAR_NO_BREAK_SPACE}${dayPeriod[hours >= 12 ? 1 : 0]}`\n        : time;\n}\n\nfunction maskitoParseDateTime(value, { locale, dateMode, timeMode = 'HH:MM', dateSeparator, timeSeparators, dateTimeSeparator = DATE_TIME_SEPARATOR, ...params }) {\n    const dateParams = maskitoWithDateDefaults(locale\n        ? { ...params, separator: dateSeparator, mode: dateMode, locale }\n        : { ...params, separator: dateSeparator, mode: dateMode });\n    const timeParams = maskitoWithTimeDefaults({\n        ...params,\n        locale,\n        mode: timeMode,\n        separators: timeSeparators,\n    });\n    const [dateSegment = '', ...timeSegments] = value.split(dateTimeSeparator);\n    const timeSegment = timeSegments.join(dateTimeSeparator);\n    const digitsPattern = timeParams.mode.replaceAll(/[^HMS]/g, '');\n    const digits = timeSegment.replaceAll(/\\D+/g, '');\n    if (digits.length !== digitsPattern.length) {\n        return null;\n    }\n    const date = maskitoParseDate(dateSegment, {\n        ...dateParams,\n        // Skip bounds here — clamp the whole date + time once at the end instead\n        min: undefined,\n        max: undefined,\n    });\n    const time = maskitoParseTime(timeSegment, timeParams);\n    if (!date) {\n        return null;\n    }\n    const dateTime = new Date(Number(date) + time);\n    return dateParams.mode.includes('y')\n        ? clamp(dateTime, dateParams.min, dateParams.max)\n        : dateTime;\n}\n\nconst NON_DIGIT_PLACEHOLDER_RE = /[^dmy]/g;\nconst LEADING_NON_DIGIT_RE = /^\\D*/;\nfunction splitDateTimeString(dateTime, dateModeTemplate) {\n    const dateDigitsCount = dateModeTemplate.replaceAll(NON_DIGIT_PLACEHOLDER_RE, '').length;\n    const [date = ''] = new RegExp(String.raw `(\\d[^\\d]*){0,${dateDigitsCount - 1}}\\d?`).exec(dateTime) ||\n        [];\n    const [dateTimeSeparator = ''] = LEADING_NON_DIGIT_RE.exec(dateTime.slice(date.length)) || [];\n    return [date, dateTime.slice(date.length + dateTimeSeparator.length)];\n}\n\nfunction maskitoStringifyDateTime(date, { locale, dateMode, timeMode = 'HH:MM', dateSeparator, timeSeparators, dateTimeSeparator = DATE_TIME_SEPARATOR, ...params }) {\n    const dateParams = maskitoWithDateDefaults(locale\n        ? { ...params, locale, mode: dateMode, separator: dateSeparator }\n        : { ...params, mode: dateMode, separator: dateSeparator });\n    const timeParams = maskitoWithTimeDefaults({\n        ...params,\n        locale,\n        mode: timeMode,\n        separators: timeSeparators,\n    });\n    const validatedDate = clamp(date, dateParams.min, dateParams.max);\n    const dateString = maskitoStringifyDate(validatedDate, dateParams);\n    const extractedTime = Number(validatedDate) -\n        Number(new Date(validatedDate.getFullYear(), validatedDate.getMonth(), validatedDate.getDate()));\n    const timeString = maskitoStringifyTime(extractedTime, timeParams);\n    return `${dateString}${dateTimeSeparator}${timeString}`;\n}\n\nfunction createMinMaxDateTimePostprocessor({ dateModeTemplate, mode: timeMode, separators: timeSeparators, min = DEFAULT_MIN_DATE, max = DEFAULT_MAX_DATE, dateTimeSeparator, }) {\n    return ({ value, selection }) => {\n        const [dateString, timeString] = splitDateTimeString(value, dateModeTemplate);\n        const parsedDate = parseDateString(dateString, dateModeTemplate);\n        const parsedTime = parseTimeString(timeString, timeMode);\n        if (!isDateTimeStringComplete(value, {\n            dateMode: dateModeTemplate,\n            timeMode,\n            timeSeparators,\n            dateTimeSeparator,\n        })) {\n            const fixedDate = raiseSegmentValueToMin(parsedDate, dateModeTemplate);\n            const { year, month, day } = isDateStringComplete(dateString, dateModeTemplate)\n                ? dateToSegments(clamp(segmentsToDate(fixedDate), min, max))\n                : fixedDate;\n            const fixedValue = toDateString({\n                year,\n                month,\n                day,\n                ...parsedTime,\n            }, { dateMode: dateModeTemplate, dateTimeSeparator, timeMode, timeSeparators });\n            const tail = value.slice(fixedValue.length);\n            return {\n                selection,\n                value: `${fixedValue}${tail}`,\n            };\n        }\n        const date = segmentsToDate(parsedDate, parsedTime);\n        const clampedDate = clamp(date, min, max);\n        // trailing segment separators or meridiem characters\n        const [trailingNonDigitCharacters = ''] = value.match(/\\D+$/g) || [];\n        const validatedValue = `${toDateString(dateToSegments(clampedDate), {\n            dateMode: dateModeTemplate,\n            dateTimeSeparator,\n            timeMode,\n            timeSeparators,\n        })}${trailingNonDigitCharacters}`;\n        return {\n            selection,\n            value: validatedValue,\n        };\n    };\n}\n\nfunction createValidDateTimePreprocessor({ dateModeTemplate, dateSeparator, dateTimeSeparator, mode: timeMode, timeSegmentMaxValues, separators, }) {\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        if (data === dateSeparator) {\n            if (selection[0] !== value.length) {\n                return { elementState, data: '' };\n            }\n            const [dateString] = splitDateTimeString(value, dateModeTemplate);\n            const paddedDateString = value.includes(dateTimeSeparator)\n                ? dateString\n                : padIncompleteDateSegment({\n                    dateString,\n                    dateModeTemplate,\n                    dateSeparator,\n                });\n            const caretShift = paddedDateString.length - dateString.length;\n            return {\n                elementState: caretShift\n                    ? {\n                        value: `${value.slice(0, -dateString.length)}${paddedDateString}`,\n                        selection: [\n                            selection[0] + caretShift,\n                            selection[1] + caretShift,\n                        ],\n                    }\n                    : elementState,\n                data,\n            };\n        }\n        const newCharacters = data.replaceAll(/\\D/g, '');\n        if (!newCharacters) {\n            return { elementState, data };\n        }\n        const [from, rawTo] = skipNonDigitCharacters(value, selection);\n        let to = rawTo + data.length;\n        const newPossibleValue = `${value.slice(0, from)}${newCharacters}${value.slice(to)}`;\n        const [dateString, timeString] = splitDateTimeString(newPossibleValue, dateModeTemplate);\n        let validatedValue = '';\n        const hasDateTimeSeparator = newPossibleValue.includes(dateTimeSeparator);\n        const { validatedDateString, updatedSelection } = validateDateString({\n            dateString,\n            dateSeparator,\n            dateModeTemplate,\n            offset: 0,\n            selection: [from, to],\n        });\n        if (dateString && !validatedDateString) {\n            return { elementState, data: '' }; // prevent changes\n        }\n        to = updatedSelection[1];\n        validatedValue += validatedDateString;\n        const updatedTimeState = enrichTimeSegmentsWithZeroes({ value: timeString, selection: [from, to] }, { mode: timeMode, separators, timeSegmentMaxValues });\n        to = updatedTimeState.selection[1];\n        validatedValue += hasDateTimeSeparator\n            ? `${dateTimeSeparator}${updatedTimeState.value}`\n            : updatedTimeState.value;\n        const newData = validatedValue.slice(from, to);\n        return {\n            elementState: {\n                selection: [from, rawTo],\n                value: `${validatedValue.slice(0, from)}${newData\n                    .split(dateSeparator)\n                    .map((segment) => '0'.repeat(segment.length))\n                    .join(dateSeparator)}${validatedValue.slice(to)}`,\n            },\n            data: newData,\n        };\n    };\n}\n\nfunction maskitoDateTime({ locale, dateMode, timeMode = 'HH:MM', timeStep, timeSeparators, dateTimeSeparator = DATE_TIME_SEPARATOR, ...params }) {\n    const dateParams = maskitoWithDateDefaults(locale\n        ? { ...params, locale, mode: dateMode, separator: params.dateSeparator }\n        : { ...params, mode: dateMode, separator: params.dateSeparator });\n    const timeParams = maskitoWithTimeDefaults({\n        ...params,\n        locale,\n        mode: timeMode,\n        step: timeStep,\n        separators: timeSeparators,\n    });\n    const dateSeparator = dateParams.separator;\n    const dateModeTemplate = dateParams.mode.split('/').join(dateSeparator);\n    const fullMode = `${dateModeTemplate}${dateTimeSeparator}${createTimeModeTemplate(timeParams)}`;\n    const mask = [\n        ...Array.from(dateModeTemplate).map((char) => dateSeparator.includes(char) ? char : /\\d/),\n        ...dateTimeSeparator.split(''),\n        ...createTimeMaskExpression(timeParams),\n    ];\n    return {\n        ...MASKITO_DEFAULT_OPTIONS,\n        mask,\n        overwriteMode: 'replace',\n        preprocessors: [\n            createFullWidthToHalfWidthPreprocessor(),\n            createColonConvertPreprocessor(),\n            createFirstDateEndSeparatorPreprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                firstDateEndSeparator: dateTimeSeparator,\n                pseudoFirstDateEndSeparators: dateTimeSeparator.split(''),\n            }),\n            createZeroPlaceholdersPreprocessor(),\n            createMeridiemPreprocessor(timeParams.dayPeriod),\n            normalizeDatePreprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                dateTimeSeparator,\n            }),\n            createInvalidTimeSegmentInsertionPreprocessor({\n                ...timeParams,\n                parseValue: (x) => {\n                    const [dateString, timeString] = splitDateTimeString(x, dateModeTemplate);\n                    return { timeString, restValue: `${dateString}${dateTimeSeparator}` };\n                },\n            }),\n            createValidDateTimePreprocessor({\n                ...timeParams,\n                dateModeTemplate,\n                dateSeparator,\n                dateTimeSeparator,\n            }),\n        ],\n        postprocessors: [\n            createMeridiemPostprocessor(timeParams.dayPeriod),\n            createDateSegmentsZeroPaddingPostprocessor({\n                dateModeTemplate,\n                dateSeparator,\n                splitFn: (value) => {\n                    const [dateString, timeString] = splitDateTimeString(value, dateModeTemplate);\n                    return { dateStrings: [dateString], restPart: timeString };\n                },\n                uniteFn: ([validatedDateString], initialValue) => validatedDateString +\n                    (initialValue.includes(dateTimeSeparator) ? dateTimeSeparator : ''),\n            }),\n            createMinMaxDateTimePostprocessor({\n                ...dateParams,\n                ...timeParams,\n                dateModeTemplate,\n                dateTimeSeparator,\n            }),\n        ],\n        plugins: [\n            createTimeSegmentsSteppingPlugin({ ...timeParams, fullMode }),\n            createMeridiemSteppingPlugin({\n                ...timeParams,\n                meridiemStartIndex: hasDayPeriod(timeParams.dayPeriod)\n                    ? mask.length - timeParams.dayPeriod[0].length\n                    : -1,\n            }),\n        ],\n    };\n}\n\nconst DEFAULT_THOUSAND_SEPARATOR_PATTERN = (digits) => digits.match(/\\d{1,3}(?=(?:\\d{3})*$)/g) ?? [];\n\nfunction extractAffixes(value, { prefix, postfix, decimalSeparator, decimalPseudoSeparators, minusSign, minusPseudoSigns, maximumFractionDigits, }) {\n    const decimalSeparators = [...decimalPseudoSeparators, decimalSeparator]\n        .map((x) => `\\\\${x}`)\n        .join('');\n    const minuses = [...minusPseudoSigns, minusSign].map((x) => `\\\\${x}`).join('');\n    const prefixRegExp = prefix &&\n        new RegExp(`^([${minuses}])?(${prefix.split('').map(escapeRegExp).join('?')}?)`);\n    const postfixRegExp = postfix && new RegExp(`${postfix.split('').map(escapeRegExp).join('?')}?$`);\n    const [, , extractedPrefix = ''] = value.match(prefixRegExp) ?? [];\n    const [extractedPostfix = ''] = value.match(postfixRegExp) ?? [];\n    const cleanValue = value\n        .replace(prefixRegExp, prefix && '$1')\n        .replace(postfixRegExp, '');\n    const leadingDecimalSeparatorRE = new RegExp(decimalSeparator && maximumFractionDigits > 0 ? `^[${decimalSeparators}]` : '');\n    const leadingDigitsRE = new RegExp(value.endsWith(postfix) ? '' : String.raw `^\\d+`);\n    const trailingDecimalSeparatorRE = new RegExp(decimalSeparator && maximumFractionDigits > 0 ? `[${decimalSeparators}]$` : '');\n    const trailingDigitsRE = new RegExp(value.startsWith(prefix) ? '' : String.raw `\\d+$`);\n    return {\n        extractedPrefix: extractedPrefix\n            .replace(trailingDecimalSeparatorRE, '')\n            .replace(trailingDigitsRE, ''),\n        extractedPostfix: extractedPostfix\n            .replace(leadingDecimalSeparatorRE, '')\n            .replace(leadingDigitsRE, ''),\n        cleanValue: `${trailingDigitsRE.exec(extractedPrefix)?.[0] ?? ''}${trailingDecimalSeparatorRE.exec(extractedPrefix)?.[0] ?? ''}${cleanValue}${leadingDigitsRE.exec(extractedPostfix)?.[0] ?? ''}${leadingDecimalSeparatorRE.exec(extractedPostfix)?.[0] ?? ''}`,\n    };\n}\n\nfunction generateMaskExpression({ decimalPseudoSeparators, decimalSeparator, maximumFractionDigits, min, minusSign, minusPseudoSigns, postfix, prefix, thousandSeparator, }) {\n    const computedPrefix = min < 0 && [minusSign, ...minusPseudoSigns].includes(prefix)\n        ? ''\n        : computeAllOptionalCharsRegExp(prefix);\n    const digit = String.raw `\\d`;\n    const optionalMinus = min < 0 ? `[${minusSign}${minusPseudoSigns.map((x) => `\\\\${x}`).join('')}]?` : '';\n    const integerPart = thousandSeparator\n        ? `[${digit}${escapeRegExp(thousandSeparator).replaceAll(/\\s/g, String.raw `\\s`)}]*`\n        : `[${digit}]*`;\n    const precisionPart = Number.isFinite(maximumFractionDigits)\n        ? maximumFractionDigits\n        : '';\n    const decimalPart = maximumFractionDigits > 0\n        ? `([${escapeRegExp(decimalSeparator)}${decimalPseudoSeparators\n            .map(escapeRegExp)\n            .join('')}]${digit}{0,${precisionPart}})?`\n        : '';\n    const computedPostfix = computeAllOptionalCharsRegExp(postfix);\n    const beginning = `(${optionalMinus}${computedPrefix}|${computedPrefix}${optionalMinus})`;\n    return new RegExp(`^${beginning}${integerPart}${decimalPart}${computedPostfix}$`);\n}\nfunction computeAllOptionalCharsRegExp(str) {\n    return str\n        ? str\n            .split('')\n            .map((char) => `${escapeRegExp(char)}?`)\n            .join('')\n        : '';\n}\n\nfunction getLocaleNumberParams(locale) {\n    const separatorParts = new Intl.NumberFormat(locale, {\n        minimumFractionDigits: 1,\n        useGrouping: true,\n    }).formatToParts(1234.5);\n    const thousandSeparator = separatorParts.find((part) => part.type === 'group')?.value ?? '';\n    const decimalSeparator = separatorParts.find((part) => part.type === 'decimal')?.value ?? '.';\n    if (!thousandSeparator) {\n        return {\n            thousandSeparator,\n            decimalSeparator,\n            thousandSeparatorPattern: DEFAULT_THOUSAND_SEPARATOR_PATTERN,\n        };\n    }\n    const groupingFormatter = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 });\n    return {\n        thousandSeparator,\n        decimalSeparator,\n        thousandSeparatorPattern: (digits) => {\n            if (!digits) {\n                return [];\n            }\n            let pos = 0;\n            return groupingFormatter\n                .formatToParts(BigInt(`1${'0'.repeat(digits.length - 1)}`))\n                .filter((part) => part.type === 'integer')\n                .map((part) => {\n                const group = digits.slice(pos, pos + part.value.length);\n                pos += part.value.length;\n                return group;\n            });\n        },\n    };\n}\n\nfunction toNumberParts(value, params) {\n    const { extractedPrefix, cleanValue, extractedPostfix } = extractAffixes(value, params);\n    const { decimalSeparator, minusSign, minusPseudoSigns, decimalPseudoSeparators, maximumFractionDigits, } = params;\n    const [integerWithMinus = '', decimalPart = ''] = decimalSeparator\n        ? cleanValue.split(decimalSeparator)\n        : [cleanValue];\n    const minuses = [minusSign, ...minusPseudoSigns].map((x) => `\\\\${x}`).join('');\n    const [, minus = '', integerPart = ''] = new RegExp(`^([${minuses}])?(.*)`).exec(integerWithMinus) || [];\n    return {\n        prefix: extractedPrefix,\n        minus,\n        integerPart,\n        decimalPart,\n        decimalSeparator: decimalSeparator && maximumFractionDigits > 0\n            ? (new RegExp(`[${[decimalSeparator, ...decimalPseudoSeparators].map(escapeRegExp).join('')}]`, 'i').exec(cleanValue)?.[0] ?? '')\n            : '',\n        postfix: extractedPostfix,\n    };\n}\nfunction fromNumberParts({ minus = '', integerPart = '', decimalPart = '', prefix = '', postfix = '', decimalSeparator = '', }, params) {\n    const separator = decimalPart ? params.decimalSeparator : decimalSeparator;\n    const beginning = params.negativePattern === 'minusFirst'\n        ? `${minus}${prefix}`\n        : `${prefix}${minus}`;\n    return `${beginning}${integerPart}${separator}${decimalPart}${postfix}`;\n}\n\nfunction validateDecimalPseudoSeparators({ decimalSeparator, thousandSeparator, decimalPseudoSeparators = DEFAULT_DECIMAL_PSEUDO_SEPARATORS, }) {\n    return decimalPseudoSeparators.filter((char) => char !== thousandSeparator && char !== decimalSeparator);\n}\n\nfunction maskitoWithNumberDefaults({ locale = '', ...params } = {}) {\n    const { max = Infinity, min = -Infinity, thousandSeparator = CHAR_NO_BREAK_SPACE, thousandSeparatorPattern = DEFAULT_THOUSAND_SEPARATOR_PATTERN, decimalSeparator = '.', decimalPseudoSeparators: unsafeDecimalPseudoSeparators, prefix = '', postfix = '', minusSign = CHAR_MINUS, minusPseudoSigns = DEFAULT_PSEUDO_MINUSES.filter((char) => char !== thousandSeparator &&\n        char !== decimalSeparator &&\n        char !== minusSign), maximumFractionDigits = 0, minimumFractionDigits = 0, negativePattern = 'prefixFirst', } = locale ? { ...getLocaleNumberParams(locale), ...params } : params;\n    const decimalPseudoSeparators = validateDecimalPseudoSeparators({\n        decimalSeparator,\n        thousandSeparator,\n        decimalPseudoSeparators: unsafeDecimalPseudoSeparators,\n    });\n    return {\n        max,\n        min,\n        locale,\n        thousandSeparator,\n        thousandSeparatorPattern,\n        postfix,\n        minusSign,\n        minusPseudoSigns,\n        maximumFractionDigits,\n        decimalPseudoSeparators,\n        negativePattern,\n        decimalSeparator: maximumFractionDigits <= 0 && decimalSeparator === thousandSeparator\n            ? ''\n            : decimalSeparator,\n        prefix: prefix.endsWith(decimalSeparator) && maximumFractionDigits > 0\n            ? `${prefix}${CHAR_ZERO_WIDTH_SPACE}`\n            : prefix,\n        minimumFractionDigits: Math.min(minimumFractionDigits, maximumFractionDigits),\n    };\n}\n\nfunction maskitoParseNumber(maskedNumber, { bigint = false, ...optionalParams } = {}) {\n    const params = maskitoWithNumberDefaults(optionalParams);\n    const { minus, integerPart, decimalSeparator, ...numberParts } = toNumberParts(maskedNumber, params);\n    const unmaskedNumber = fromNumberParts({\n        ...numberParts,\n        integerPart: integerPart.replaceAll(/\\D/g, ''),\n        decimalSeparator: decimalSeparator && '.',\n        prefix: '',\n        postfix: '',\n        minus: '',\n    }, { ...params, decimalSeparator: '.' });\n    if (unmaskedNumber) {\n        const sign = minus ? CHAR_HYPHEN : '';\n        return bigint\n            ? BigInt(`${sign}${unmaskedNumber}`)\n            : Number(`${sign}${unmaskedNumber}`);\n    }\n    return bigint ? null : Number.NaN;\n}\n\nconst LOCALE = [];\nconst DEFAULT = {\n    minusSign: CHAR_HYPHEN,\n    minusPseudoSigns: [],\n    prefix: '',\n    postfix: '',\n    decimalSeparator: '.',\n    decimalPseudoSeparators: [],\n    maximumFractionDigits: Infinity,\n};\n/**\n * Converts a number to a decimal string without using exponential notation.\n *\n * - Numbers without exponent are returned as-is.\n * - Numbers with a positive exponent (`e+N`) are expanded using locale formatting.\n * - Numbers with a negative exponent (`e-N`) are expanded manually to avoid\n *   precision limits of `Number#toFixed` and locale rounding.\n *\n * The sign of the number and the sign of the exponent are handled independently.\n * This guarantees correct formatting for cases like `-1.23e-8`.\n *\n * @param value Number or bigint to convert.\n * @returns Full decimal string representation without exponent notation.\n *\n * @example\n * stringifyNumberWithoutExp(1e25)\n * // \"10000000000000000000000000\"\n *\n * @example\n * stringifyNumberWithoutExp(1.23e-8)\n * // \"0.0000000123\"\n *\n * @example\n * stringifyNumberWithoutExp(-1.23e-8)\n * // \"-0.0000000123\"\n */\nfunction stringifyNumberWithoutExp(value) {\n    const valueAsString = String(value);\n    const [numberPart = '', exponent] = valueAsString.split('e');\n    if (!exponent) {\n        return valueAsString;\n    }\n    if (!exponent.startsWith(CHAR_HYPHEN)) {\n        return value.toLocaleString(LOCALE, { useGrouping: false });\n    }\n    const { minus, integerPart, decimalPart } = toNumberParts(numberPart, DEFAULT);\n    const digits = `${integerPart}${decimalPart}`;\n    const shift = Math.abs(Number(exponent));\n    const totalZeros = shift - integerPart.length;\n    let result;\n    if (totalZeros >= 0) {\n        result = `0.${'0'.repeat(totalZeros)}${digits}`;\n    }\n    else {\n        const index = integerPart.length - shift;\n        result = `${digits.slice(0, index)}.${digits.slice(index)}`;\n    }\n    return `${minus}${result}`;\n}\n\n/**\n * It drops prefix and postfix from data\n * Needed for case, when prefix or postfix contain decimalSeparator, to ignore it in resulting number\n * @example User pastes '{prefix}123.45{postfix}' => 123.45\n */\nfunction createAffixesFilterPreprocessor(params) {\n    return ({ elementState, data }) => {\n        const { value } = elementState;\n        const { prefix, postfix, ...numberParts } = toNumberParts(data, params);\n        return {\n            elementState,\n            data: fromNumberParts({\n                ...numberParts,\n                prefix: value.startsWith(prefix) ? '' : prefix,\n                postfix: value.endsWith(postfix) ? '' : postfix,\n            }, params),\n        };\n    };\n}\n\n/**\n * If `minimumFractionDigits` is `>0`, it pads decimal part with zeroes\n * (until number of digits after decimalSeparator is equal to the `minimumFractionDigits`).\n * @example 1,42 => (`minimumFractionDigits` is equal to 4) => 1,4200.\n */\nfunction createDecimalZeroPaddingPostprocessor(params) {\n    const { minimumFractionDigits } = params;\n    return minimumFractionDigits\n        ? ({ value, selection }) => {\n            if (Number.isNaN(maskitoParseNumber(value, params))) {\n                return { value, selection };\n            }\n            const { decimalPart, ...numberParts } = toNumberParts(value, params);\n            return {\n                value: fromNumberParts({\n                    ...numberParts,\n                    decimalPart: decimalPart.padEnd(minimumFractionDigits, '0'),\n                }, params),\n                selection,\n            };\n        }\n        : identity;\n}\n\n/**\n * Make textfield empty if there is no integer part and all decimal digits are zeroes.\n * @example 0|,00 => Backspace => Empty.\n * @example -0|,00 => Backspace => -.\n * @example ,42| => Backspace x2 => ,|00 => Backspace => Empty\n */\nfunction emptyPostprocessor(params) {\n    return ({ value, selection }) => {\n        const [caretIndex] = selection;\n        const { prefix, minus, integerPart, decimalSeparator, decimalPart, postfix } = toNumberParts(value, params);\n        const aloneDecimalSeparator = !integerPart && !decimalPart && decimalSeparator;\n        return (!integerPart &&\n            !Number(decimalPart) &&\n            caretIndex === `${minus}${prefix}`.length) ||\n            aloneDecimalSeparator\n            ? {\n                selection,\n                value: fromNumberParts({ prefix, minus, postfix }, params),\n            }\n            : { value, selection };\n    };\n}\n\n/**\n * This preprocessor works only once at initialization phase (when `new Maskito(...)` is executed).\n * This preprocessor helps to avoid conflicts during transition from one mask to another (for the same input).\n * For example, the developer changes postfix (or other mask's props) during run-time.\n * ```\n * let maskitoOptions = maskitoNumber({postfix: ' year'});\n * // [3 seconds later]\n * maskitoOptions = maskitoNumber({postfix: ' years'});\n * ```\n */\nfunction createInitializationOnlyPreprocessor(params) {\n    let isInitializationPhase = true;\n    const cleanNumberMask = generateMaskExpression({\n        ...params,\n        prefix: '',\n        postfix: '',\n        thousandSeparator: '',\n        maximumFractionDigits: Infinity,\n        min: -Infinity,\n    });\n    return ({ elementState, data }) => {\n        if (!isInitializationPhase) {\n            return { elementState, data };\n        }\n        isInitializationPhase = false;\n        const { value, selection } = elementState;\n        const [from, to] = selection;\n        const { prefix, postfix, ...numberParts } = toNumberParts(value, params);\n        const onlyNumber = fromNumberParts(numberParts, params);\n        const cleanState = maskitoTransform({\n            selection: [\n                Math.max(from - prefix.length, 0),\n                Math.max(to - prefix.length, 0),\n            ],\n            value: onlyNumber,\n        }, { mask: cleanNumberMask });\n        return {\n            elementState: {\n                selection: selection.map((position, i) => {\n                    const deleted = onlyNumber.slice(0, Math.max(position - prefix.length, 0))\n                        .length -\n                        cleanState.value.slice(0, cleanState.selection[i]).length;\n                    return Math.max(position - deleted, 0);\n                }),\n                value: fromNumberParts({\n                    ...toNumberParts(cleanState.value, params),\n                    prefix: prefix && params.prefix,\n                    postfix: postfix && params.postfix,\n                }, params),\n            },\n            data,\n        };\n    };\n}\n\n/**\n * If minus sign is positioned before prefix,\n * any attempt to erase prefix deletes minus (without deletion of non-removable prefix)\n * @example -$|42 => Backspace => $|42\n */\nfunction createLeadingMinusDeletionPreprocessor(params) {\n    return ({ elementState }, inputType) => {\n        const { value, selection } = elementState;\n        const [from, to] = selection;\n        const { prefix, minusSign, negativePattern } = params;\n        const beginning = negativePattern === 'prefixFirst' ? prefix : `${minusSign}${prefix}`;\n        const newValue = fromNumberParts({ ...toNumberParts(value, params), minus: '' }, params);\n        const diff = value.length - newValue.length;\n        return {\n            elementState: inputType.includes('delete') &&\n                value.includes(minusSign) &&\n                from < beginning.length\n                ? {\n                    value: newValue,\n                    selection: [\n                        Math.max(from - diff, beginning.length - 1),\n                        Math.max(to - diff, beginning.length - 1),\n                    ],\n                }\n                : elementState,\n        };\n    };\n}\n\n/**\n * It removes repeated leading zeroes for integer part.\n * @example 0,|00005 => Backspace => |5\n * @example -0,|00005 => Backspace => -|5\n * @example User types \"000000\" => 0|\n * @example 0| => User types \"5\" => 5|\n */\nfunction createLeadingZeroesValidationPostprocessor(params) {\n    const { thousandSeparator } = params;\n    const trimLeadingZeroes = (value) => {\n        const escapedThousandSeparator = escapeRegExp(thousandSeparator);\n        return value\n            .replace(\n        // all leading zeroes followed by another zero\n        new RegExp(String.raw `^(\\D+)?[0${escapedThousandSeparator}]+(?=0)`), '$1')\n            .replace(\n        // zero followed by not-zero digit\n        new RegExp(String.raw `^(\\D+)?[0${escapedThousandSeparator}]+(?=[1-9])`), '$1');\n    };\n    const countTrimmedZeroesBefore = (value, index) => {\n        const valueBefore = value.slice(0, index);\n        const followedByZero = value.slice(index).startsWith('0');\n        return (valueBefore.length -\n            trimLeadingZeroes(valueBefore).length +\n            (followedByZero ? 1 : 0));\n    };\n    return ({ value, selection }) => {\n        const [from, to] = selection;\n        const { integerPart, ...numberParts } = toNumberParts(value, params);\n        const zeroTrimmedIntegerPart = trimLeadingZeroes(integerPart);\n        if (integerPart === zeroTrimmedIntegerPart) {\n            return { value, selection };\n        }\n        const newFrom = from - countTrimmedZeroesBefore(value, from);\n        const newTo = to - countTrimmedZeroesBefore(value, to);\n        return {\n            value: fromNumberParts({ ...numberParts, integerPart: zeroTrimmedIntegerPart }, params),\n            selection: [Math.max(newFrom, 0), Math.max(newTo, 0)],\n        };\n    };\n}\n\n/**\n * This postprocessor is connected with {@link createMinMaxPlugin}:\n * both validate `min`/`max` bounds of entered value (but at the different point of time).\n */\nfunction createMinMaxPostprocessor(params) {\n    const { decimalSeparator, maximumFractionDigits, min, max, minusSign } = params;\n    return ({ value, selection }) => {\n        const parsedNumber = maskitoParseNumber(value, {\n            ...params,\n            bigint: !maximumFractionDigits && !value.includes(decimalSeparator),\n        }) ?? Number.NaN;\n        const limitedValue = \n        /**\n         * We cannot limit lower bound if user enters positive number.\n         * The same for upper bound and negative number.\n         * ___\n         * @example (min = 5)\n         * Empty input => Without this condition user cannot type 42 (the first digit will be rejected)\n         * ___\n         * @example (max = -10)\n         * Value is -10 => Without this condition user cannot delete 0 to enter another digit\n         */\n        parsedNumber > 0 ? clamp(parsedNumber, null, max) : clamp(parsedNumber, min);\n        if (parsedNumber && limitedValue !== parsedNumber) {\n            const newValue = `${limitedValue}`\n                .replace('.', decimalSeparator)\n                .replace(CHAR_HYPHEN, minusSign);\n            return {\n                value: newValue,\n                selection: [newValue.length, newValue.length],\n            };\n        }\n        return {\n            value,\n            selection,\n        };\n    };\n}\n\n/**\n * Manage caret-navigation when user \"deletes\" non-removable digits or separators\n * @example 1,|42 => Backspace => 1|,42 (only if `minimumFractionDigits` is `>0`)\n * @example 1|,42 => Delete => 1,|42 (only if `minimumFractionDigits` is `>0`)\n * @example 0,|00 => Delete => 0,0|0 (only if `minimumFractionDigits` is `>0`)\n * @example 1 |000 => Backspace => 1| 000 (always)\n */\nfunction createNonRemovableCharsDeletionPreprocessor({ decimalSeparator, thousandSeparator, minimumFractionDigits, }) {\n    return ({ elementState, data }, actionType) => {\n        const { value, selection } = elementState;\n        const [from, to] = selection;\n        const selectedCharacters = value.slice(from, to);\n        const nonRemovableSeparators = minimumFractionDigits\n            ? [decimalSeparator, thousandSeparator]\n            : [thousandSeparator];\n        const areNonRemovableZeroesSelected = Boolean(minimumFractionDigits) &&\n            from > value.indexOf(decimalSeparator) &&\n            Boolean(selectedCharacters.match(/^0+$/g));\n        return (actionType !== 'deleteBackward' && actionType !== 'deleteForward') ||\n            (!nonRemovableSeparators.includes(selectedCharacters) &&\n                !areNonRemovableZeroesSelected)\n            ? {\n                elementState,\n                data,\n            }\n            : {\n                elementState: {\n                    value,\n                    selection: actionType === 'deleteForward' ? [to, to] : [from, from],\n                },\n                data,\n            };\n    };\n}\n\n/**\n * It pads integer part with zero if user types decimal separator (for empty input).\n * @example Empty input => User types \",\" (decimal separator) => 0,|\n */\nfunction createNotEmptyIntegerPartPreprocessor(params) {\n    const { maximumFractionDigits, decimalSeparator } = params;\n    const startWithDecimalSepRegExp = new RegExp(String.raw `^\\D*${escapeRegExp(decimalSeparator)}`);\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { prefix, postfix, ...numberParts } = toNumberParts(value, params);\n        const onlyNumber = fromNumberParts(numberParts, params);\n        const [from, to] = selection;\n        const cleanFrom = clamp(from - prefix.length, 0, onlyNumber.length);\n        const cleanTo = clamp(to - prefix.length, 0, onlyNumber.length);\n        if (maximumFractionDigits <= 0 ||\n            onlyNumber.slice(0, cleanFrom).includes(decimalSeparator) ||\n            onlyNumber.slice(cleanTo).includes(decimalSeparator) ||\n            !data.match(startWithDecimalSepRegExp)) {\n            return { elementState, data };\n        }\n        const digitsBeforeCursor = /\\d+/.exec(onlyNumber.slice(0, cleanFrom));\n        return {\n            elementState,\n            data: digitsBeforeCursor ? data : `0${data}`,\n        };\n    };\n}\n\nfunction createNumberPrefixPostprocessor({ prefix, minusSign, negativePattern, }) {\n    return ({ value, selection }, initialElementState) => maskitoPrefixPostprocessorGenerator(value.includes(minusSign) && negativePattern === 'minusFirst'\n        ? `${minusSign}${prefix}`\n        : prefix)({\n        value: negativePattern === 'minusFirst' &&\n            value.startsWith(`${prefix}${minusSign}`) // $-100 => -$100\n            ? value.replace(`${prefix}${minusSign}`, `${minusSign}${prefix}`)\n            : value,\n        selection,\n    }, initialElementState);\n}\n\n/**\n * It replaces pseudo characters with valid one.\n * @example User types '.' (but separator is equal to comma) => dot is replaced with comma.\n * @example User types hyphen / en-dash / em-dash => it is replaced with minus.\n */\nfunction createPseudoCharactersPreprocessor({ validCharacter, pseudoCharacters, ...params }) {\n    const pseudoCharactersRegExp = new RegExp(`[${pseudoCharacters.join('')}]`, 'gi');\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        const { prefix, postfix, ...numberParts } = toNumberParts(value, params);\n        const onlyNumber = fromNumberParts(numberParts, params).replace(pseudoCharactersRegExp, validCharacter);\n        return {\n            elementState: {\n                selection,\n                value: fromNumberParts({\n                    ...toNumberParts(onlyNumber, params),\n                    prefix,\n                    postfix,\n                }, params),\n            },\n            data: data.replace(pseudoCharactersRegExp, validCharacter),\n        };\n    };\n}\n\n/**\n * It rejects new typed decimal separator if it already exists in text field.\n * Behaviour is similar to native <input type=\"number\"> (Chrome).\n * @example 1|23,45 => Press comma (decimal separator) => 1|23,45 (do nothing).\n */\nfunction createRepeatedDecimalSeparatorPreprocessor(params) {\n    const { decimalSeparator } = params;\n    return decimalSeparator\n        ? ({ elementState, data }) => {\n            const { value, selection } = elementState;\n            const [from, to] = selection;\n            return {\n                elementState,\n                data: !toNumberParts(value, params).decimalSeparator ||\n                    value.slice(from, to + 1).includes(decimalSeparator)\n                    ? data\n                    : data.replaceAll(new RegExp(escapeRegExp(decimalSeparator), 'gi'), ''),\n            };\n        }\n        : identity;\n}\n\nconst SPACE_REG = /\\s/;\nconst SPACE_GLOBAL_REG = /\\s/g;\n/**\n * It adds symbol for separating thousands.\n * @example 1000000 => (thousandSeparator is equal to space) => 1 000 000.\n */\nfunction createThousandSeparatorPostprocessor(params) {\n    const { thousandSeparator, thousandSeparatorPattern } = params;\n    if (!thousandSeparator) {\n        return identity;\n    }\n    const isSeparatorWhitespace = SPACE_REG.test(thousandSeparator);\n    const isSeparator = isSeparatorWhitespace\n        ? (char) => SPACE_REG.test(char)\n        : (char) => char === thousandSeparator;\n    const stripSeparators = isSeparatorWhitespace\n        ? (str) => str.replaceAll(SPACE_GLOBAL_REG, '')\n        : (str) => str.replaceAll(thousandSeparator, '');\n    return ({ value, selection }) => {\n        const [initialFrom, initialTo] = selection;\n        let [from, to] = selection;\n        const { prefix, minus, integerPart, decimalSeparator, decimalPart, postfix } = toNumberParts(value, params);\n        const rawLength = `${minus}${integerPart}${decimalSeparator ? `${decimalSeparator}${decimalPart}` : ''}`\n            .length;\n        const normalizedLength = fromNumberParts({ minus, integerPart, decimalSeparator, decimalPart }, params).length;\n        const deletedChars = normalizedLength - rawLength;\n        if (deletedChars > 0 && initialFrom && initialFrom <= deletedChars) {\n            from -= deletedChars;\n        }\n        if (deletedChars > 0 && initialTo && initialTo <= deletedChars) {\n            to -= deletedChars;\n        }\n        const integerStart = prefix.length + minus.length;\n        const groups = thousandSeparatorPattern(stripSeparators(integerPart));\n        const digitAt = [];\n        let pos = 0;\n        for (const [i, group] of groups.entries()) {\n            if (i > 0) {\n                pos += thousandSeparator.length;\n            }\n            for (let j = 0; j < group.length; j++) {\n                digitAt.push(pos + j);\n            }\n            pos += group.length;\n        }\n        const formatted = groups.join(thousandSeparator);\n        const mapCursor = (cursor) => {\n            const offset = cursor - integerStart;\n            if (offset <= 0) {\n                return cursor;\n            }\n            if (offset >= integerPart.length) {\n                return cursor + formatted.length - integerPart.length;\n            }\n            const digitCount = stripSeparators(integerPart.slice(0, offset)).length;\n            const prevWasSep = isSeparator(integerPart.charAt(offset - 1));\n            return prevWasSep\n                ? integerStart + (digitAt[digitCount] ?? formatted.length)\n                : integerStart + (digitAt[digitCount - 1] ?? -1) + 1;\n        };\n        return {\n            value: fromNumberParts({\n                prefix,\n                minus,\n                integerPart: formatted,\n                decimalSeparator,\n                decimalPart,\n                postfix,\n            }, params),\n            selection: [mapCursor(from), mapCursor(to)],\n        };\n    };\n}\n\n/**\n * It drops decimal part if `maximumFractionDigits` is zero.\n * @example User pastes '123.45' (but `maximumFractionDigits` is zero) => 123\n */\nfunction createZeroPrecisionPreprocessor(params) {\n    const { maximumFractionDigits, decimalSeparator } = params;\n    if (maximumFractionDigits > 0 ||\n        !decimalSeparator // all separators should be treated only as thousand separators\n    ) {\n        return identity;\n    }\n    const decimalPartRegExp = new RegExp(`${escapeRegExp(decimalSeparator)}.*$`, 'g');\n    return ({ elementState, data }) => {\n        const { value, selection } = elementState;\n        const { prefix, postfix, ...numberParts } = toNumberParts(value, params);\n        const [from, to] = selection;\n        const onlyNumber = fromNumberParts(numberParts, params).replace(decimalPartRegExp, '');\n        const newValue = fromNumberParts({ ...toNumberParts(onlyNumber, params), prefix, postfix }, params);\n        return {\n            elementState: {\n                selection: [\n                    Math.min(from, newValue.length),\n                    Math.min(to, newValue.length),\n                ],\n                value: newValue,\n            },\n            data: data.replace(decimalPartRegExp, ''),\n        };\n    };\n}\n\nconst DUMMY_SELECTION = [0, 0];\n/**\n * It removes repeated leading zeroes for integer part on blur-event.\n * @example 000000 => blur => 0\n * @example 00005 => blur => 5\n */\nfunction createLeadingZeroesValidationPlugin(params) {\n    const dropRepeatedLeadingZeroes = createLeadingZeroesValidationPostprocessor(params);\n    return maskitoEventHandler('blur', (element) => {\n        const newValue = dropRepeatedLeadingZeroes({\n            value: element.value,\n            selection: DUMMY_SELECTION,\n        }, { value: '', selection: DUMMY_SELECTION }).value;\n        maskitoUpdateElement(element, newValue);\n    }, { capture: true });\n}\n\n/**\n * This plugin is connected with {@link createMinMaxPostprocessor}:\n * both validate `min`/`max` bounds of entered value (but at the different point of time).\n */\nfunction createMinMaxPlugin(params) {\n    const { decimalSeparator, maximumFractionDigits, min, max } = params;\n    return maskitoEventHandler('blur', (element, options) => {\n        const parsedNumber = maskitoParseNumber(element.value, {\n            ...params,\n            bigint: !maximumFractionDigits &&\n                !element.value.includes(decimalSeparator),\n        }) ?? Number.NaN;\n        const clampedNumber = clamp(parsedNumber, min, max);\n        if (!Number.isNaN(parsedNumber) && parsedNumber !== clampedNumber) {\n            maskitoUpdateElement(element, maskitoTransform(stringifyNumberWithoutExp(clampedNumber), options));\n        }\n    }, { capture: true });\n}\n\n/**\n * It pads EMPTY integer part with zero if decimal parts exists.\n * It works on blur event only!\n * @example 1|,23 => Backspace => Blur => 0,23\n */\nfunction createNotEmptyIntegerPlugin(params) {\n    const { decimalSeparator } = params;\n    return decimalSeparator\n        ? maskitoEventHandler('blur', (element) => {\n            const { prefix, postfix, ...numberParts } = toNumberParts(element.value, params);\n            const onlyNumber = fromNumberParts(numberParts, params).replace(new RegExp(String.raw `^(\\D+)?${escapeRegExp(decimalSeparator)}`), `$10${decimalSeparator}`);\n            const newValue = fromNumberParts({\n                ...toNumberParts(onlyNumber, params),\n                prefix,\n                postfix,\n            }, params);\n            maskitoUpdateElement(element, newValue);\n        }, { capture: true })\n        : noop;\n}\n\nfunction maskitoNumber(options) {\n    const params = maskitoWithNumberDefaults(options);\n    return {\n        mask: generateMaskExpression(params),\n        preprocessors: [\n            createFullWidthToHalfWidthPreprocessor(),\n            createInitializationOnlyPreprocessor(params),\n            createAffixesFilterPreprocessor(params),\n            createPseudoCharactersPreprocessor({\n                ...params,\n                validCharacter: params.minusSign,\n                pseudoCharacters: params.minusPseudoSigns,\n            }),\n            createPseudoCharactersPreprocessor({\n                ...params,\n                validCharacter: params.decimalSeparator,\n                pseudoCharacters: params.decimalPseudoSeparators,\n            }),\n            createNotEmptyIntegerPartPreprocessor(params),\n            createNonRemovableCharsDeletionPreprocessor(params),\n            createZeroPrecisionPreprocessor(params),\n            createRepeatedDecimalSeparatorPreprocessor(params),\n            createLeadingMinusDeletionPreprocessor(params),\n        ],\n        postprocessors: [\n            createMinMaxPostprocessor(params),\n            createNumberPrefixPostprocessor(params),\n            maskitoPostfixPostprocessorGenerator(params.postfix),\n            createThousandSeparatorPostprocessor(params),\n            createDecimalZeroPaddingPostprocessor(params),\n            emptyPostprocessor(params),\n        ],\n        plugins: [\n            createLeadingZeroesValidationPlugin(params),\n            createNotEmptyIntegerPlugin(params),\n            createMinMaxPlugin(params),\n        ],\n        overwriteMode: params.minimumFractionDigits > 0\n            ? ({ value, selection: [from] }) => from <= value.indexOf(params.decimalSeparator) ? 'shift' : 'replace'\n            : 'shift',\n    };\n}\n\nfunction maskitoStringifyNumber(number, optionalParams) {\n    if (Number.isNaN(number) || number === null) {\n        return '';\n    }\n    const params = maskitoWithNumberDefaults(optionalParams);\n    const value = stringifyNumberWithoutExp(clamp(number, params.min, params.max)).replace('.', params.decimalSeparator);\n    return maskitoTransform(value, maskitoNumber(params));\n}\n\nexport { maskitoAddOnFocusPlugin, maskitoCaretGuard, maskitoDate, maskitoDate as maskitoDateOptionsGenerator, maskitoDateRange, maskitoDateRange as maskitoDateRangeOptionsGenerator, maskitoDateTime, maskitoDateTime as maskitoDateTimeOptionsGenerator, maskitoEventHandler, maskitoNumber, maskitoNumber as maskitoNumberOptionsGenerator, maskitoParseDate, maskitoParseDateTime, maskitoParseNumber, maskitoParseTime, maskitoPostfixPostprocessorGenerator, maskitoPrefixPostprocessorGenerator, maskitoRejectEvent, maskitoRemoveOnBlurPlugin, maskitoSelectionChangeHandler, maskitoStringifyDate, maskitoStringifyDateTime, maskitoStringifyNumber, maskitoStringifyTime, maskitoTime, maskitoTime as maskitoTimeOptionsGenerator, maskitoWithDateDefaults, maskitoWithNumberDefaults, maskitoWithPlaceholder, maskitoWithTimeDefaults };\n","/** Маска номера телефона в поле ввода: та же, что у остальных телефонов формы, — «+7 (999) 123-4567». */\n\nimport type { MaskitoOptions, MaskitoPreprocessor } from '@maskito/core';\nimport { maskitoPrefixPostprocessorGenerator } from '@maskito/kit';\n\nconst PREFIX = '+7 (';\nconst DIGIT = /\\d/;\nconst COUNTRY_CODE = /^(\\+?7|8)/;\n\n// Код страны в начале номера: «8 999…», «+7 999…» и «999…» — один и тот же номер, а «+7» в поле\n// своё, из маски. Дальше по номеру 7 и 8 — обычные цифры, поэтому смотрим только на его начало.\n//\n// Набор руками приходит по символу в data, а автозаполнение ставит значение целиком, минуя data, —\n// маска разбирает его как 'validation'. Снять там надо только восьмёрку: «+7» и «7» ложатся на\n// литерал маски сами, а её собственное значение всегда начинается с «+» и под замену не попадает.\nconst dropCountryCode: MaskitoPreprocessor = ({ elementState, data }, actionType) => {\n  if (actionType === 'validation') {\n    return { elementState: { ...elementState, value: elementState.value.replace(/^8/, '') }, data };\n  }\n  const typed = elementState.value.replace(/\\D/g, '');\n  if (actionType !== 'insert' || typed.length > 1) return { elementState, data };\n  return { elementState, data: data.replace(COUNTRY_CODE, '') };\n};\n\nexport const PHONE_MASK: MaskitoOptions = {\n  mask: [...PREFIX, DIGIT, DIGIT, DIGIT, ')', ' ', DIGIT, DIGIT, DIGIT, '-', DIGIT, DIGIT, DIGIT, DIGIT],\n  preprocessors: [dropCountryCode],\n  postprocessors: [maskitoPrefixPostprocessorGenerator(PREFIX)],\n};\n","import { Maskito } from '@maskito/core';\n\nimport { PHONE_MASK } from '#common/core/phone-mask';\n\nconst PHONE_SELECTOR = \"input[type='tel']\";\n\nexport function initMasks() {\n  // Маска живёт столько же, сколько страница, поэтому снимать её (`destroy`) не за что.\n  document.querySelectorAll(PHONE_SELECTOR).forEach(function(input) {\n    new Maskito(input, PHONE_MASK);\n  });\n}\n","//////////\n// HEADER\n//////////\nconst REGION_MODAL_SELECTOR = '.js-region-modal';\nconst VISIBLE_CLASS = 'is-visible';\n\n// Столько посетитель смотрит на страницу, прежде чем его спрашивают про регион.\nconst REGION_MODAL_DELAY = 3000;\n\nconst regionModals = () => document.querySelectorAll(REGION_MODAL_SELECTOR);\n\nexport const Header = {\n  init: function() {\n    setTimeout(function() {\n      Header.showRegionModal();\n    }, REGION_MODAL_DELAY);\n\n    this.hamburgerClickListener();\n  },\n  hamburgerClickListener: function() {\n    document.addEventListener('click', function(event) {\n      const hamburger = event.target.closest('[js-hamburger]');\n      if (hamburger) hamburger.classList.toggle('is-active');\n      else if (event.target.closest('.js-close-region-modal')) Header.hideRegionModal();\n    });\n  },\n  showRegionModal: function() {\n    if (document.cookie.includes('location')) return;\n    regionModals().forEach(modal => modal.classList.add(VISIBLE_CLASS));\n  },\n  hideRegionModal: function() {\n    regionModals().forEach(modal => modal.classList.remove(VISIBLE_CLASS));\n  },\n};\n","import { Header } from '../header/header.js';\n\n//////////\n// MODALS\n//////////\n\n// Тот же класс, что у react-компонента Modal: фон под открытым окном прокручиваться не должен.\nconst SCROLL_LOCK_CLASS = 'modal-open';\n// Совпадает с длительностью перехода в elements/_modal.sass: окно должно доиграть уход.\nconst CLOSE_ANIMATION_MS = 300;\n\nlet openDialog = null;\n\n// Слушатели живут на самом окне, поэтому ставим их один раз за жизнь страницы.\nfunction prepare(dialog) {\n  if (dialog.dataset.popupReady) return;\n  dialog.dataset.popupReady = '1';\n\n  // Esc даёт только cancel; закрываем сами, иначе окно исчезнет без анимации ухода.\n  dialog.addEventListener('cancel', function(event) {\n    event.preventDefault();\n    Modals.closeModal();\n  });\n  // Клик по фону приходит в сам <dialog>, клики по содержимому — в его детей.\n  dialog.addEventListener('click', function(event) {\n    if (event.target === dialog) Modals.closeModal();\n  });\n}\n\nexport const Modals = {\n  init: function() {\n    document.addEventListener('click', function(event) {\n      const link = event.target.closest('.js-popup');\n      if (link) {\n        event.preventDefault();\n        Modals.openModal(link.getAttribute('href'));\n      } else if (event.target.closest('.js-close-popup')) {\n        event.preventDefault();\n        Modals.closeModal();\n      }\n    });\n  },\n  openModal: function(selector) {\n    const dialog = document.querySelector(selector);\n    if (!dialog || dialog === openDialog) return;\n\n    // Именно closeModal: прямой close() оставил бы на прошлом окне класс `is-open`,\n    // и следующее его открытие прошло бы без перехода.\n    if (openDialog) Modals.closeModal();\n    Header.hideRegionModal();\n    prepare(dialog);\n\n    // Именно showModal(), а не атрибут open: он поднимает окно в top layer и рисует фон.\n    dialog.showModal();\n    openDialog = dialog;\n    document.documentElement.classList.add(SCROLL_LOCK_CLASS);\n    // Чтение размера вынуждает применить стартовые стили: иначе переход не с чего начинать.\n    // Кадр (`requestAnimationFrame`) тут не годится — в фоновой вкладке его можно не дождаться.\n    void dialog.offsetWidth;\n    dialog.classList.add('is-open');\n  },\n  closeModal: function() {\n    const dialog = openDialog;\n    if (!dialog) return;\n\n    openDialog = null;\n    dialog.classList.remove('is-open');\n    document.documentElement.classList.remove(SCROLL_LOCK_CLASS);\n    setTimeout(function() {\n      // За время ухода окно могли открыть заново — тогда закрывать уже нечего.\n      if (dialog !== openDialog) dialog.close();\n    }, CLOSE_ANIMATION_MS);\n  },\n};\n","// Высота одной строки: на столько растёт textarea за каждую переполнившую его строку.\nconst LINE_HEIGHT = 17;\n\n// Высота пустого поля: её меряют один раз, до того как в поле что-то напечатали.\nconst baseHeights = new WeakMap();\n\nfunction baseHeight(textarea) {\n  if (!baseHeights.has(textarea)) {\n    const value = textarea.value;\n    textarea.value = '';\n    baseHeights.set(textarea, textarea.scrollHeight);\n    textarea.value = value;\n  }\n  return baseHeights.get(textarea);\n}\n\nexport function initTextareaAutoExpand() {\n  // Замер переписывает значение поля, а это сбивает курсор — поэтому он до первого ввода.\n  document.addEventListener('focusin', function(event) {\n    if (event.target.matches('.ui-group textarea')) baseHeight(event.target);\n  });\n\n  document.addEventListener('input', function(event) {\n    const textarea = event.target;\n    if (!textarea.matches('.ui-group textarea')) return;\n\n    const minRows = textarea.getAttribute('data-min-rows') | 0;\n    const base = baseHeight(textarea);\n\n    textarea.rows = minRows;\n    textarea.rows = minRows + Math.ceil((textarea.scrollHeight - base) / LINE_HEIGHT);\n  });\n}\n","//////////\n// OZON DELIVERY\n// Стык формы с React-островом доставки Ozon. Остров держит своё состояние сам, форме отдаёт\n// свои поля, а разговаривает с ней этими событиями.\n//////////\n\nconst OZON_DELIVERY_FIELDS = [\n  { name: 'ozon_region_confirmed', message: 'Подтвердите регион SIM-карты.' },\n  { name: 'ozon_map_point_id', message: 'Выберите пункт выдачи.' },\n  { name: 'ozon_confirmation_token', message: 'Подтвердите телефон аккаунта Ozon.' },\n];\n\nconst isFilled = input => (input.type === 'checkbox' ? input.checked : Boolean(input.value));\n\nconst ozonDeliveryMount = form => form.querySelector('[data-ozon-delivery]');\n\nexport const isOzonDeliveryField = fieldName =>\n  OZON_DELIVERY_FIELDS.some(field => field.name === fieldName);\n\n// Подписи своих полей рисует сам остров (к скрытому полю её и не поставить), поэтому их\n// ошибки отдаём ему.\nexport const showOzonDeliveryErrors = (form, errors) => {\n  const mount = ozonDeliveryMount(form);\n  if (mount) mount.dispatchEvent(new CustomEvent('ozon-delivery:errors', { detail: errors }));\n};\n\n// Заказ ушёл: пункт, телефон и подтверждение следующий заказ набирает заново.\nexport const resetOzonDelivery = form => {\n  const mount = ozonDeliveryMount(form);\n  if (mount) mount.dispatchEvent(new CustomEvent('ozon-delivery:reset'));\n};\n\n// Подписывает незаполненные поля острова и отвечает, нашлись ли они. Такие поля держат\n// сабмит, как невыбранный тариф: браузер их не проверяет (обязательны они только при доставке\n// Ozon), а сервер отказал бы уже после отправки всей формы.\nexport const showOzonDeliveryGaps = form => {\n  const mount = ozonDeliveryMount(form);\n  // Остров скрыт, пока выбран другой способ доставки: его поля тогда никого не держат.\n  if (!mount || mount.hidden) return false;\n\n  const errors = {};\n  OZON_DELIVERY_FIELDS.forEach(field => {\n    const input = form.querySelector(`[name=\"${field.name}\"]`);\n    if (!input || !isFilled(input)) errors[field.name] = field.message;\n  });\n\n  showOzonDeliveryErrors(form, errors);\n  return Object.keys(errors).length > 0;\n};\n","import Cookies from 'js-cookie';\n\nimport { Header } from '#common/blocks/header/header.js';\nimport { Modals } from '#common/blocks/modals/modals.js';\nimport { showOzonDeliveryGaps } from '#common/core/ozon-delivery.js';\nimport { slideDown, slideUp } from '#common/core/animations.js';\n\n//////////\n// CLICKS\n//////////\n// Столько держится выбранный регион.\nconst REGION_COOKIE_DAYS = 7;\n\nconst setRegion = id => Cookies.set('location', id, { expires: REGION_COOKIE_DAYS });\n\nconst TARIFF_BUTTON_DEFAULT_TEXT = 'Выбрать тариф';\nconst TARIFF_BUTTON_SELECTED_TEXT = 'Тариф выбран';\n\nconst normalizeTariffId = value => String(value || '').replace(/^tariff_/, '').replace(/^tarif_/, '');\n\nexport const setTariffSelectionState = tariffId => {\n  const normalizedId = normalizeTariffId(tariffId);\n  document.querySelectorAll('.js-select-tarif-label').forEach(function(button) {\n    const isSelected = normalizeTariffId(button.dataset.id) === normalizedId;\n\n    button.textContent = isSelected ? TARIFF_BUTTON_SELECTED_TEXT : TARIFF_BUTTON_DEFAULT_TEXT;\n    const card = button.closest('.tarif-card');\n    if (card) card.classList.toggle('is-selected', isSelected);\n  });\n};\n\nexport const toggleTariffWarnings = isVisible => {\n  document.querySelectorAll('.js-tariff-warning').forEach(function(warning) {\n    warning.style.display = isVisible ? '' : 'none';\n  });\n};\n\nconst syncTariffSelectionState = field => {\n  if (field.type === 'radio' && !field.checked) return;\n\n  setTariffSelectionState(field.value);\n  toggleTariffWarnings(!field.value);\n};\n\n// Прокрутка к форме после выбора тарифа: карточки лежат выше неё по странице.\nconst scrollToForm = () => {\n  const form = document.querySelector('.form');\n  if (!form) return;\n\n  window.scrollTo({ top: form.getBoundingClientRect().top + window.scrollY, behavior: 'smooth' });\n};\n\n// Заслон висит на щелчке по кнопке, а не на сабмите формы: до сабмита дело может и не\n// дойти. Отправка с клавиатуры сюда тоже приходит — по спецификации она щёлкает кнопкой.\nfunction blockOrderWithoutTariff(form, event) {\n  if (showOzonDeliveryGaps(form)) {\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    return;\n  }\n\n  const hiddenTariff = form.querySelector(\"input[type='hidden'][name='tariff']\");\n  if (!hiddenTariff || hiddenTariff.value) return;\n\n  event.preventDefault();\n  event.stopImmediatePropagation();\n  toggleTariffWarnings(true);\n}\n\nfunction onClick(event) {\n  const target = event.target;\n\n  if (target.closest('[href=\"#\"]')) event.preventDefault();\n\n  const toggler = target.closest('.js-accardeon .accardeon__toggler');\n  const element = toggler && toggler.parentElement;\n  const content = element && element.querySelector('.accardeon__content');\n  if (content) {\n    if (element.classList.toggle('is-active')) slideDown(content);\n    else slideUp(content);\n  }\n\n  const defaultRegion = target.closest('.js-regions-default');\n  if (defaultRegion) setRegion(defaultRegion.dataset.defaultRegionId || 1);\n\n  const tariffButton = target.closest('.js-select-tarif');\n  if (tariffButton) {\n    event.preventDefault();\n    const id = tariffButton.dataset.id;\n    const tariffId = normalizeTariffId(id);\n    const hiddenTariff = document.querySelector(\".form input[type='hidden'][name='tariff']\");\n\n    if (hiddenTariff) {\n      hiddenTariff.value = tariffId;\n      hiddenTariff.dispatchEvent(new Event('change', { bubbles: true }));\n    } else {\n      document.querySelectorAll('.form select').forEach(function(select) {\n        select.value = id;\n        select.dispatchEvent(new Event('change', { bubbles: true }));\n      });\n    }\n\n    setTariffSelectionState(tariffId);\n    toggleTariffWarnings(false);\n    scrollToForm();\n    return;\n  }\n\n  const regionLink = target.closest('.js-regions a');\n  if (regionLink) {\n    const text = regionLink.textContent;\n\n    // Название региона в шапке и в заголовке окна меняется до перезагрузки: она не мгновенна.\n    document.querySelectorAll('.header__region-text a').forEach(link => (link.textContent = text));\n    document\n      .querySelectorAll('#REGION .popup__title span')\n      .forEach(title => (title.textContent = text));\n    const region = document.querySelector('.form #id_region');\n    if (region) region.setAttribute('value', regionLink.dataset.id);\n\n    Modals.closeModal();\n    Header.hideRegionModal();\n\n    setRegion(regionLink.dataset.id);\n    window.location.reload();\n    return;\n  }\n\n  const submitButton = target.closest('.form.js-validate-form button[type=\"submit\"]');\n  if (submitButton) blockOrderWithoutTariff(submitButton.closest('.form.js-validate-form'), event);\n}\n\nexport function initClicks() {\n  document.addEventListener('click', onClick);\n\n  document.addEventListener('change', function(event) {\n    if (event.target.closest('.form') && event.target.name === 'tariff') {\n      syncTariffSelectionState(event.target);\n    }\n  });\n}\n","//////////\n// INPUT FOCUSES\n//////////\nconst FOCUSED_CLASS = 'is-focused';\n\n// Подпись поля уезжает наверх, пока в поле что-то есть или в нём стоит курсор.\nfunction focuses(container) {\n  const inputs = container.querySelectorAll('input, textarea');\n  if (inputs.length === 0) return;\n\n  const toggle = () => {\n    const filled = Array.from(inputs).some(input => input.value.trim() !== '');\n    container.classList.toggle(FOCUSED_CLASS, filled);\n  };\n\n  inputs.forEach(function(input) {\n    input.addEventListener('focus', () => container.classList.add(FOCUSED_CLASS));\n    input.addEventListener('blur', toggle);\n    input.addEventListener('change', toggle);\n  });\n\n  toggle();\n}\n\nexport function initInputFocuses() {\n  document.querySelectorAll('.js-input-focus').forEach(focuses);\n}\n","//////////\n// INPUT READER\n//////////\n// Список вложений: подписывает выбранный файл его именем и размером и дорисовывает следующую\n// пустую строку. Саму строку рисует домен — её разметка повторяет разметку формы в его\n// Django-шаблоне, и меняться должна вместе с ней.\n\nconst MAX_FILES = 5;\n\n// Номер следующей строки берётся из последней: строки нумеруются подряд, file_1 … file_5.\nfunction nextUploaderId() {\n  const inputs = document.querySelectorAll('.js-file-upload input');\n  const last = inputs[inputs.length - 1];\n\n  return parseInt(last.id.split('_')[1]) + 1;\n}\n\nfunction readURL(input, addUploader) {\n  const parent = input.parentElement;\n\n  if (!input.files || !input.files[0]) {\n    parent.classList.remove('has-file');\n    // Пустых строк больше одной быть не должно: прикладывают по одному файлу за раз.\n    document.querySelectorAll('.js-file-upload').forEach(function(upload) {\n      if (upload !== parent && !upload.classList.contains('has-file')) upload.remove();\n    });\n    return;\n  }\n\n  const file = input.files[0];\n  const size = (file.size / 1024 / 1024).toFixed(2) + ' Мб';\n\n  parent.querySelector('.ui-file__upload-stats').textContent = `${file.name} (${size})`;\n  parent.classList.add('has-file');\n\n  const nextId = nextUploaderId();\n  if (nextId <= MAX_FILES) addUploader(document.querySelector('.ui-files'), nextId);\n}\n\n/**\n * Список вложений: возвращает init домена.\n *\n * `addUploader(files, nextId)` дорисовывает пустую строку в список: и разметка строки, и\n * место вставки у доменов свои.\n */\nexport function createInputReader(addUploader) {\n  return function init() {\n    document.addEventListener('change', function(event) {\n      if (event.target.matches('.js-file-upload input')) readURL(event.target, addUploader);\n    });\n\n    document.addEventListener('click', function(event) {\n      const remove = event.target.closest('.js-remove-file');\n      if (!remove) return;\n\n      const input = remove.closest('.ui-file').querySelector('input');\n      input.value = '';\n      input.dispatchEvent(new Event('change', { bubbles: true }));\n    });\n  };\n}\n","import { createInputReader } from '#common/blocks/inputreader/inputreader.js';\n\n// Повторяет разметку строки вложения из Django-шаблона формы.\nconst uploader = id => `\n  <div class=\"ui-file js-file-upload\">\n    <div class=\"ui-file__upload\">\n      <div class=\"ui-file__upload-icon\">\n        <svg class=\"ico ico-mono-attached-file\">\n          <use xlink:href=\"#ico-mono-attached-file\"></use>\n        </svg>\n      </div>\n      <div class=\"ui-file__upload-info\">\n        <div class=\"ui-file__upload-stats\"></div>\n        <div class=\"ui-file__upload-remove js-remove-file\">удалить</div>\n      </div>\n    </div>\n    <input type=\"file\" name=\"file[]\" id=\"${id}\" accept=\"image/x-png,image/gif,image/jpeg,application/pdf\">\n    <label for=\"${id}\"><span>Прикрепить файл</span></label>\n  </div>\n`;\n\nexport const initInputReader = createInputReader((files, nextId) =>\n  files.insertAdjacentHTML('beforeend', uploader(`file_${nextId}`))\n);\n","/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n  body: {},\n  addEventListener: function addEventListener() {},\n  removeEventListener: function removeEventListener() {},\n  activeElement: {\n    blur: function blur() {},\n    nodeName: '',\n  },\n  querySelector: function querySelector() {\n    return null;\n  },\n  querySelectorAll: function querySelectorAll() {\n    return [];\n  },\n  getElementById: function getElementById() {\n    return null;\n  },\n  createEvent: function createEvent() {\n    return {\n      initEvent: function initEvent() {},\n    };\n  },\n  createElement: function createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute: function setAttribute() {},\n      getElementsByTagName: function getElementsByTagName() {\n        return [];\n      },\n    };\n  },\n  location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n  document: doc,\n  navigator: {\n    userAgent: '',\n  },\n  location: {},\n  history: {},\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener: function addEventListener() {},\n  removeEventListener: function removeEventListener() {},\n  getComputedStyle: function getComputedStyle() {\n    return {\n      getPropertyValue: function getPropertyValue() {\n        return '';\n      },\n    };\n  },\n  Image: function Image() {},\n  Date: function Date() {},\n  screen: {},\n  setTimeout: function setTimeout() {},\n  clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n  constructor(arr) {\n    const self = this;\n    // Create array-like object\n    for (let i = 0; i < arr.length; i += 1) {\n      self[i] = arr[i];\n    }\n    self.length = arr.length;\n    // Return collection with methods\n    return this;\n  }\n}\n\nfunction $(selector, context) {\n  const arr = [];\n  let i = 0;\n  if (selector && !context) {\n    if (selector instanceof Dom7) {\n      return selector;\n    }\n  }\n  if (selector) {\n      // String\n    if (typeof selector === 'string') {\n      let els;\n      let tempParent;\n      const html = selector.trim();\n      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n        let toCreate = 'div';\n        if (html.indexOf('<li') === 0) toCreate = 'ul';\n        if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n        if (html.indexOf('<tbody') === 0) toCreate = 'table';\n        if (html.indexOf('<option') === 0) toCreate = 'select';\n        tempParent = document.createElement(toCreate);\n        tempParent.innerHTML = html;\n        for (i = 0; i < tempParent.childNodes.length; i += 1) {\n          arr.push(tempParent.childNodes[i]);\n        }\n      } else {\n        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n          // Pure ID selector\n          els = [document.getElementById(selector.trim().split('#')[1])];\n        } else {\n          // Other selectors\n          els = (context || document).querySelectorAll(selector.trim());\n        }\n        for (i = 0; i < els.length; i += 1) {\n          if (els[i]) arr.push(els[i]);\n        }\n      }\n    } else if (selector.nodeType || selector === window || selector === document) {\n      // Node/element\n      arr.push(selector);\n    } else if (selector.length > 0 && selector[0].nodeType) {\n      // Array of elements or instance of Dom\n      for (i = 0; i < selector.length; i += 1) {\n        arr.push(selector[i]);\n      }\n    }\n  }\n  return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n  const uniqueArray = [];\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n  if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n  else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n  return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n  if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n  else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n  return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n  if (typeof className === 'undefined') {\n    return this;\n  }\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n    }\n  }\n  return this;\n}\nfunction removeClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n    }\n  }\n  return this;\n}\nfunction hasClass(className) {\n  if (!this[0]) return false;\n  return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n    }\n  }\n  return this;\n}\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  }\n\n  // Set attrs\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      // eslint-disable-next-line\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        // eslint-disable-next-line\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n    return this;\n  }\n}\nfunction data(key, value) {\n  let el;\n  if (typeof value === 'undefined') {\n    el = this[0];\n    // Get value\n    if (el) {\n      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n        return el.dom7ElementDataStorage[key];\n      }\n\n      const dataKey = el.getAttribute(`data-${key}`);\n      if (dataKey) {\n        return dataKey;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  // Set value\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n  return this;\n}\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n  if (el.dataset) {\n    // eslint-disable-next-line\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      // eslint-disable-next-line\n      const attr = el.attributes[i];\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n  // eslint-disable-next-line\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;\n    else if (dataset[key] === 'true') dataset[key] = true;\n    else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n  return dataset;\n}\nfunction val(value) {\n  const dom = this;\n  if (typeof value === 'undefined') {\n    if (dom[0]) {\n      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n        const values = [];\n        for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n          values.push(dom[0].selectedOptions[i].value);\n        }\n        return values;\n      }\n      return dom[0].value;\n    }\n    return undefined;\n  }\n\n  for (let i = 0; i < dom.length; i += 1) {\n    const el = dom[i];\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n  return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransform = transform;\n    elStyle.transform = transform;\n  }\n  return this;\n}\nfunction transition(duration) {\n  if (typeof duration !== 'string') {\n    duration = `${duration}ms`; // eslint-disable-line\n  }\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransitionDuration = duration;\n    elStyle.transitionDuration = duration;\n  }\n  return this;\n}\n// Events\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);\n    else {\n      const parents = $(target).parents(); // eslint-disable-line\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    listener.apply(this, eventData);\n  }\n  const events = eventType.split(' ');\n  let j;\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent,\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent,\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n  return this;\n}\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  const events = eventType.split(' ');\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n  return this;\n}\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n  const events = args[0].split(' ');\n  const eventData = args[1];\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let evt;\n      try {\n        evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true,\n        });\n      } catch (e) {\n        evt = document.createEvent('Event');\n        evt.initEvent(event, true, true);\n        evt.detail = eventData;\n      }\n      // eslint-disable-next-line\n      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n      el.dispatchEvent(evt);\n      el.dom7EventData = [];\n      delete el.dom7EventData;\n    }\n  }\n  return this;\n}\nfunction transitionEnd(callback) {\n  const events = ['webkitTransitionEnd', 'transitionend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    /* jshint validthis:true */\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\nfunction animationEnd(callback) {\n  const events = ['webkitAnimationEnd', 'animationend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\n// Sizing/Styles\nfunction width() {\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n    return this[0].offsetWidth;\n  }\n  return null;\n}\nfunction height() {\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n    return this[0].offsetHeight;\n  }\n  return null;\n}\nfunction offset() {\n  if (this.length > 0) {\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: (box.top + scrollTop) - clientTop,\n      left: (box.left + scrollLeft) - clientLeft,\n    };\n  }\n\n  return null;\n}\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n  return this;\n}\nfunction show() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n  return this;\n}\nfunction styles() {\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\nfunction css(props, value) {\n  let i;\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      for (i = 0; i < this.length; i += 1) {\n        // eslint-disable-next-line\n        for (let prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n      return this;\n    }\n  }\n  if (arguments.length === 2 && typeof props === 'string') {\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n    return this;\n  }\n  return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n  const arr = [];\n  for (let i = 0; i < this.length; i += 1) {\n    arr.push(this[i]);\n  }\n  return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], i, this[i]) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction forEach(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], this[i], i) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction filter(callback) {\n  const matchedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n  }\n  return new Dom7(matchedItems);\n}\nfunction map(callback) {\n  const modifiedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    modifiedItems.push(callback.call(dom[i], i, dom[i]));\n  }\n  return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : undefined;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    if (this[0]) {\n      return this[0].textContent.trim();\n    }\n    return null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n  return this;\n}\nfunction is(selector) {\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n    compareWith = $(selector);\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  } else if (selector === document) return el === document;\n  else if (selector === window) return el === window;\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  }\n  return false;\n}\nfunction indexOf(el) {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i] === el) return i;\n  }\n  return -1;\n}\nfunction index() {\n  let child = this[0];\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n  let returnIndex;\n  if (index > length - 1) {\n    return new Dom7([]);\n  }\n  if (index < 0) {\n    returnIndex = length + index;\n    if (returnIndex < 0) return new Dom7([]);\n    return new Dom7([this[returnIndex]]);\n  }\n  return new Dom7([this[index]]);\n}\nfunction append(...args) {\n  let newChild;\n\n  for (let k = 0; k < args.length; k += 1) {\n    newChild = args[k];\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\nfunction prepend(newChild) {\n  let i;\n  let j;\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\nfunction insertBefore(selector) {\n  const before = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\nfunction insertAfter(selector) {\n  const after = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return new Dom7([this[0].nextElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return new Dom7(nextEls);\n}\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return new Dom7([el.previousElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n  return $(unique(parents));\n}\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n      parent = parent.parentNode;\n    }\n  }\n  return $(unique(parents));\n}\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n  if (typeof selector === 'undefined') {\n    return new Dom7([]);\n  }\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n  return closest;\n}\nfunction find(selector) {\n  const foundElements = [];\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n  return new Dom7(foundElements);\n}\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].childNodes;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector) {\n        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n  return new Dom7(unique(children));\n}\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n  return this;\n}\nfunction detach() {\n  return this.remove();\n}\nfunction add(...args) {\n  const dom = this;\n  let i;\n  let j;\n  for (i = 0; i < args.length; i += 1) {\n    const toAdd = $(args[i]);\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom[dom.length] = toAdd[j];\n      dom.length += 1;\n    }\n  }\n  return dom;\n}\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n      el.textContent = '';\n    }\n  }\n  return this;\n}\n\nfunction scrollTo(...args) {\n  let [left, top, duration, easing, callback] = args;\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n  if (typeof easing === 'undefined') easing = 'swing';\n\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n    let scrollLeft; // eslint-disable-line\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n    if (animateTop) {\n      currentTop = el.scrollTop;\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n    if (!duration) return;\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n      let done;\n      if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n      if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      requestAnimationFrame(render);\n    }\n    requestAnimationFrame(render);\n  });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing', // or 'linear'\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n    }, initialParams),\n\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - (Math.cos(progress * Math.PI) / 2);\n      }\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n      return progress;\n    },\n    stop() {\n      if (a.frameId) {\n        cancelAnimationFrame(a.frameId);\n      }\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done(complete) {\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n      const elements = [];\n\n      // Define & Cache Initials & Units\n      a.elements.each((index, el) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n        elements[index] = {\n          container: el,\n        };\n        Object.keys(props).forEach((prop) => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue,\n          };\n        });\n      });\n\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress;\n        // let el;\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n        if (startTime === null) {\n          startTime = time;\n        }\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n        }\n\n        elements.forEach((element) => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach((prop) => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const { initialValue, finalValue, unit } = el[prop];\n            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n            const currentValue = el[prop].currentValue;\n\n            if (\n              (finalValue > initialValue && currentValue >= finalValue) ||\n              (finalValue < initialValue && currentValue <= finalValue)) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return;\n        // Then call\n        a.frameId = requestAnimationFrame(render);\n      }\n      a.frameId = requestAnimationFrame(render);\n      return a;\n    },\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n  if (typeof args[0] === 'undefined') {\n    for (let i = 0; i < this.length; i += 1) {\n      if (noTrigger.indexOf(name) < 0) {\n        if (name in this[i]) this[i][name]();\n        else {\n          $(this[i]).trigger(name);\n        }\n      }\n    }\n    return this;\n  }\n  return this.on(name, ...args);\n}\n\nfunction click(...args) {\n  return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n  return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n  return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n  return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n  return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n  return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n  return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n  return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n  return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n  return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n  return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n  return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n  return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n  return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n  return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n  return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n  return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n  return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n  return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n  return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n  return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n  return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * Swiper 4.5.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 22, 2019\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document } from 'ssr-window';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition: transition$1,\n  on,\n  off,\n  trigger,\n  transitionEnd: transitionEnd$1,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = Methods[methodName];\n});\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\n\nconst Support = (function Support() {\n  const testDiv = document.createElement('div');\n  return {\n    touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n      return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n    }()),\n\n    pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent || ('maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0)),\n    prefixedPointerEvents: !!window.navigator.msPointerEnabled,\n\n    transition: (function checkTransition() {\n      const style = testDiv.style;\n      return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n    }()),\n    transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n      const style = testDiv.style;\n      return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n    }()),\n\n    flexbox: (function checkFlexbox() {\n      const style = testDiv.style;\n      const styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n      for (let i = 0; i < styles.length; i += 1) {\n        if (styles[i] in style) return true;\n      }\n      return false;\n    }()),\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g),\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      handler.apply(self, args);\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach(m => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nfunction updateSize () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n\nfunction updateSlides () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide\n        .css(\n          `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n          (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n        )\n        .attr('data-swiper-column', column)\n        .attr('data-swiper-row', row);\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (!Support.flexbox || params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.css({ marginLeft: `${spaceBetween}px` });\n      else slides.css({ marginRight: `${spaceBetween}px` });\n    } else slides.css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n\nfunction updateAutoHeight (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n      const index = swiper.activeIndex + i;\n      if (index > swiper.slides.length) break;\n      activeSlides.push(swiper.slides.eq(index)[0]);\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size)\n                || (slideAfter > 0 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  swiper.emit('slideChange');\n}\n\nfunction updateClickedSlide (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (!params.virtualTranslate) {\n    if (Support.transforms3d) $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n    else $wrapperEl.transform(`translate(${x}px, ${y}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n  return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nvar translate = {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n};\n\nfunction setTransition (duration, byController) {\n  const swiper = this;\n\n  swiper.$wrapperEl.transition(duration);\n\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex } = swiper;\n  swiper.animating = false;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n\n  if (speed === 0 || !Support.transition) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n    return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map(val => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  const prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n  if (snapIndex < swiper.snapGrid.length - 1) {\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n    if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n      index = swiper.params.slidesPerGroup;\n    }\n  }\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n\nfunction loopCreate () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n\nfunction loopFix () {\n  const swiper = this;\n  const {\n    params, activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n}\n\nfunction loopDestroy () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n  swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n\nconst Device = (function Device() {\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    windows: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    cordova: window.cordova || window.phonegap,\n    phonegap: window.cordova || window.phonegap,\n  };\n\n  const windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  const ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n  // Windows\n  if (windows) {\n    device.os = 'windows';\n    device.osVersion = windows[2];\n    device.windows = true;\n  }\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.iphone = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Desktop\n  device.desktop = !(device.os || device.android || device.webView);\n\n  // Webview\n  device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n  // Minimal UI\n  if (device.os && device.os === 'ios') {\n    const osVersionArr = device.osVersion.split('.');\n    const metaViewport = document.querySelector('meta[name=\"viewport\"]');\n    device.minimalUi = !device.webView\n      && (ipod || iphone)\n      && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n      && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nfunction onTouchStart (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$(e).closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($(e.target).is(data.formElements)) preventDefault = false;\n    if (\n      document.activeElement\n      && $(document.activeElement).is(data.formElements)\n      && document.activeElement !== e.target\n    ) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type === 'mousemove') return;\n  const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  e.preventDefault();\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n      if (data.clickTimeout) clearTimeout(data.clickTimeout);\n      data.clickTimeout = Utils.nextTick(() => {\n        if (!swiper || swiper.destroyed) return;\n        swiper.emit('click', e);\n      }, 300);\n    }\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      if (data.clickTimeout) clearTimeout(data.clickTimeout);\n      swiper.emit('doubleTap', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n\n          swiper.setTransition(params.speed);\n          swiper.setTranslate(afterBouncePosition);\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n    if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + params.slidesPerGroup);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      swiper.slideTo(stopIndex + params.slidesPerGroup);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  if (params.freeMode) {\n    const newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n    swiper.setTranslate(newTranslate);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n  } else {\n    swiper.updateSlidesClasses();\n    if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n      swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  {\n    swiper.onTouchStart = onTouchStart.bind(swiper);\n    swiper.onTouchMove = onTouchMove.bind(swiper);\n    swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n  const capture = !!params.nested;\n\n  // Touch Events\n  {\n    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n      target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n      document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n    } else {\n      if (Support.touch) {\n        const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n        target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n        target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      }\n      if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n        target.addEventListener('mousedown', swiper.onTouchStart, false);\n        document.addEventListener('mousemove', swiper.onTouchMove, capture);\n        document.addEventListener('mouseup', swiper.onTouchEnd, false);\n      }\n    }\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) {\n      target.addEventListener('click', swiper.onClick, true);\n    }\n  }\n\n  // Resize handler\n  swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n  const capture = !!params.nested;\n\n  // Touch Events\n  {\n    if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n      target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n      document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n    } else {\n      if (Support.touch) {\n        const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n        target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n        target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n        target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      }\n      if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n        target.removeEventListener('mousedown', swiper.onTouchStart, false);\n        document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n        document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n      }\n    }\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) {\n      target.removeEventListener('click', swiper.onClick, true);\n    }\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n  attachEvents,\n  detachEvents,\n};\n\nfunction setBreakpoint () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Set breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n\nfunction getBreakpoint (breakpoints) {\n  const swiper = this;\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n  const points = [];\n  Object.keys(breakpoints).forEach((point) => {\n    points.push(point);\n  });\n  points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const point = points[i];\n    if (swiper.params.breakpointsInverse) {\n      if (point <= window.innerWidth) {\n        breakpoint = point;\n      }\n    } else if (point >= window.innerWidth && !breakpoint) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (!Support.flexbox) {\n    suffixes.push('no-flexbox');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n  // WP8 Touch Events Fix\n  if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n    suffixes.push(`wp8-${params.direction}`);\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  if (!imageEl.complete || !checkForComplete) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n\nfunction preloadImages () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n\nvar images = {\n  loadImage,\n  preloadImages,\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const wasLocked = swiper.isLocked;\n\n  swiper.isLocked = swiper.snapGrid.length === 1;\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    swiper.navigation.update();\n  }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsInverse: false,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  centeredSlides: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: true,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    const $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        } else if (Support.prefixedPointerEvents) {\n          desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    if (currentDirection === 'vertical') {\n      swiper.$el\n        .removeClass(`${swiper.params.containerModifierClass}vertical wp8-vertical`)\n        .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n      if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n        swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n      }\n    }\n    if (currentDirection === 'horizontal') {\n      swiper.$el\n        .removeClass(`${swiper.params.containerModifierClass}horizontal wp8-horizontal`)\n        .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n      if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n        swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n      }\n    }\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index')\n          .removeAttr('data-swiper-column')\n          .removeAttr('data-swiper-row');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nvar Device$1 = {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n\nvar Support$1 = {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n\nvar Browser$1 = {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n\nvar Resize = {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nvar Observer$1 = {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nvar Virtual$1 = {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (kc === 37 || kc === 39) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if ((kc === 39 && !rtl) || (kc === 37 && rtl)) swiper.slideNext();\n      if ((kc === 37 && !rtl) || (kc === 39 && rtl)) swiper.slidePrev();\n    } else {\n      if (kc === 38 || kc === 40) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (kc === 40) swiper.slideNext();\n      if (kc === 38) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nvar Keyboard$1 = {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document;\n\n  if (!isSupported) {\n    const element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document.implementation\n    && document.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  event: (function getEvent() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  }()),\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (!swiper.mouseEntered && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n        if (delta < 0) {\n          if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n            swiper.slideNext();\n            swiper.emit('scroll', e);\n          } else if (params.releaseOnEdges) return true;\n        } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n          swiper.slidePrev();\n          swiper.emit('scroll', e);\n        } else if (params.releaseOnEdges) return true;\n      }\n      swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    } else {\n      // Freemode or scrollContainer:\n      if (swiper.params.loop) {\n        swiper.loopFix();\n      }\n      let position = swiper.getTranslate() + (delta * params.sensitivity);\n      const wasBeginning = swiper.isBeginning;\n      const wasEnd = swiper.isEnd;\n\n      if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n      if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n      swiper.setTransition(0);\n      swiper.setTranslate(position);\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n\n      if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n        swiper.updateSlidesClasses();\n      }\n\n      if (swiper.params.freeModeSticky) {\n        clearTimeout(swiper.mousewheel.timeout);\n        swiper.mousewheel.timeout = Utils.nextTick(() => {\n          swiper.slideToClosest();\n        }, 300);\n      }\n      // Emit event\n      swiper.emit('scroll', e);\n\n      // Stop autoplay\n      if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n      // Return page scroll on edge positions\n      if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    if (!Mousewheel.event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(Mousewheel.event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    if (!Mousewheel.event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(Mousewheel.event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nvar Mousewheel$1 = {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        lastScrollTime: Utils.now(),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nvar Navigation$1 = {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          $firstDisplayedBullet\n            .prev()\n            .addClass(`${params.bulletActiveClass}-prev`)\n            .prev()\n            .addClass(`${params.bulletActiveClass}-prev-prev`);\n          $lastDisplayedBullet\n            .next()\n            .addClass(`${params.bulletActiveClass}-next`)\n            .next()\n            .addClass(`${params.bulletActiveClass}-next-next`);\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n      && swiper.$el.find(params.el).length === 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nvar Pagination$1 = {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      if (Support.transforms3d) {\n        $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      } else {\n        $dragEl.transform(`translateX(${newPos}px)`);\n      }\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      if (Support.transforms3d) {\n        $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      } else {\n        $dragEl.transform(`translateY(${newPos}px)`);\n      }\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const { $el, dragSize, trackSize } = scrollbar;\n\n    let pointerPosition;\n    if (swiper.isHorizontal()) {\n      pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n    } else {\n      pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n    }\n    let positionRatio;\n    positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nvar Scrollbar$1 = {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nvar Parallax$1 = {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest('.swiper-slide');\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    gesture.$imageEl.transition(0);\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    e.preventDefault();\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n  },\n};\n\nvar Zoom$1 = {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nvar Lazy$1 = {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nvar Controller$1 = {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nvar A11y = {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nvar History$1 = {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nvar HashNavigation$1 = {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nvar Autoplay$1 = {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n    },\n  },\n};\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFade = {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nvar EffectCube = {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFlip = {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nvar EffectCoverflow = {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n      } else {\n        newThumbsIndex = swiper.realIndex;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nvar Thumbs$1 = {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n\n// Swiper Class\n\nconst components = [\n  Device$1,\n  Support$1,\n  Browser$1,\n  Resize,\n  Observer$1,\n  Virtual$1,\n  Keyboard$1,\n  Mousewheel$1,\n  Navigation$1,\n  Pagination$1,\n  Scrollbar$1,\n  Parallax$1,\n  Zoom$1,\n  Lazy$1,\n  Controller$1,\n  A11y,\n  History$1,\n  HashNavigation$1,\n  Autoplay$1,\n  EffectFade,\n  EffectCube,\n  EffectFlip,\n  EffectCoverflow,\n  Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n","import Swiper from 'swiper';\n\n//////////\n// SLIDERS\n//////////\nexport function initSliders() {\n  const tarifSwiper = '.js-tarif-swiper';\n  if (document.querySelector(tarifSwiper)) {\n    new Swiper(tarifSwiper, {\n      watchOverflow: true,\n      setWrapperSize: false,\n      spaceBetween: 0,\n      slidesPerView: 'auto',\n      normalizeSlideIndex: true,\n      centeredSlides: false,\n      grabCursor: true,\n      pagination: {\n        el: '.swiper-pagination',\n        type: 'bullets',\n        clickable: true,\n      },\n      breakpoints: {\n        // window width <= 992\n        992: {\n          centeredSlides: true,\n        },\n      },\n    });\n  }\n\n  const gallerySwiper = '.js-gallery-swiper';\n  if (document.querySelector(gallerySwiper)) {\n    new Swiper(gallerySwiper, {\n      watchOverflow: true,\n      setWrapperSize: false,\n      spaceBetween: 0,\n      slidesPerView: 'auto',\n      normalizeSlideIndex: true,\n      grabCursor: true,\n      pagination: {\n        el: '.swiper-pagination',\n        type: 'bullets',\n        clickable: true,\n      },\n      breakpoints: {\n        992: {\n          centeredSlides: true,\n        },\n      },\n    });\n  }\n}\n","import {\n  isOzonDeliveryField,\n  resetOzonDelivery,\n  showOzonDeliveryErrors,\n} from '../../core/ozon-delivery.js';\n\n////////////////\n// FORM VALIDATIONS\n// Условия полей живут в разметке (required, minlength, type) и проверяет их браузер; здесь —\n// свои тексты вместо браузерных, размещение подписей и отправка заказа.\n////////////////\n\nconst FORM_SELECTOR = '.js-validate-form';\nconst ATTACHED_CLASS = 'is-validation-attached';\n// Заказ в полёте: второй раз ту же форму не отправляем.\nconst SENDING_CLASS = 'loading';\nconst INVALID_CLASS = 'has-error';\nconst ERROR_CLASS = 'ui-input__validation';\nconst FIELD_ERROR_CLASS = 'js-field-error';\n// Ошибки, которым не нашлось своего поля: одной строкой над кнопкой.\nconst COMMON_ERRORS_CLASS = 'js-common-errors';\n\n// Телефон приходит вместе с маской, поэтому длину считаем по цифрам, а не по символам.\nconst PHONE_DIGITS = 11;\nconst PHONE_MESSAGE = 'Введите корректный телефон';\nconst SEND_FAILED_MESSAGE = 'Не удалось отправить форму, попробуйте еще раз позже.';\n\n// Порядок важен: показываем текст первой подошедшей причины.\nconst VALIDITY_MESSAGES = {\n  valueMissing: () => 'Это поле необходимо заполнить.',\n  typeMismatch: () => 'Пожалуйста, введите правильное значение.',\n  tooShort: input => `Пожалуйста, введите не меньше ${input.minLength} символов.`,\n  tooLong: input => `Пожалуйста, введите не больше ${input.maxLength} символов.`,\n};\n\nconst FIELD_MESSAGES = {\n  tariff: { valueMissing: 'Выберите тариф' },\n  last_name: { valueMissing: 'Укажите фамилию' },\n  first_name: { valueMissing: 'Укажите имя' },\n  phone: { valueMissing: 'Укажите номер' },\n  email: { valueMissing: 'Укажите email', typeMismatch: 'Формат email неверен' },\n};\n\n// Лимиты на файлы заявки зеркалят серверные (`apps/forms/fields.py`, они же в bill — US-149):\n// вне их сервер отклоняет заявку целиком, и 20 МБ пришлось бы сперва зря выгрузить.\nconst FILE_INPUT_NAME = 'file[]';\nconst FILE_MAX_SIZE = 20 * 1024 * 1024;\nconst FILES_MAX_COUNT = 10;\nconst FILE_EXTENSIONS = [\n  'jpg', 'jpeg', 'jpe', 'jfif', 'pjpeg', 'pjp', 'png', 'gif',\n  'webp', 'heic', 'heif', 'bmp', 'tif', 'tiff', 'pdf',\n];\nconst FILE_SIZE_MESSAGE = `Файл не может превышать ${FILE_MAX_SIZE / 1024 / 1024} МБ.`;\nconst FILE_TYPE_MESSAGE = 'Принимаются только изображения и PDF.';\nconst FILES_COUNT_MESSAGE = `Не больше ${FILES_MAX_COUNT} файлов.`;\n\n// Формы, которые посетитель уже пробовал отправить: до этого пустые поля не подписываем.\nconst submitted = new WeakSet();\n\nconst digits = value => value.replace(/\\D/g, '');\n\n// Первое поле группы: у радиокнопок причина одна на всех, и подпись к ним тоже одна.\nconst leader = (form, name) => form.querySelector(`[name=\"${name}\"]`);\n\nconst errorLabel = (form, name) => form.querySelector(`[data-error-for=\"${name}\"]`);\n\nfunction messageFor(input, flag) {\n  const own = FIELD_MESSAGES[input.name];\n  return (own && own[flag]) || VALIDITY_MESSAGES[flag](input);\n}\n\nfunction fieldError(input) {\n  // Скрытое поле тарифа заполняют карточки тарифов, а скрытые поля браузер не проверяет вовсе.\n  if (input.type === 'hidden') {\n    const missing = input.name === 'tariff' && !input.value;\n    return missing ? messageFor(input, 'valueMissing') : '';\n  }\n  if (!input.willValidate) return '';\n  if (input.name === 'phone' && !input.validity.valueMissing) {\n    return digits(input.value).length === PHONE_DIGITS ? '' : PHONE_MESSAGE;\n  }\n  if (input.validity.valid) return '';\n\n  const flag = Object.keys(VALIDITY_MESSAGES).find(name => input.validity[name]);\n  return flag ? messageFor(input, flag) : input.validationMessage;\n}\n\n// Расширение — по правилам сервера (`Path.suffix`): у имени вида «.jpg» его нет, точка в начале\n// делает файл скрытым, а не задаёт тип.\nfunction extension(name) {\n  const dot = name.lastIndexOf('.');\n  return dot > 0 ? name.slice(dot + 1).toLowerCase() : '';\n}\n\n// Файлы лежат в нескольких инпутах `file[]` сразу, поэтому и проверяются все вместе: счёт идёт\n// по заявке, а не по инпуту. Порядок причин — как у сервера, показываем первую подошедшую.\nfunction filesError(form) {\n  const files = [];\n  form.querySelectorAll(`input[name=\"${FILE_INPUT_NAME}\"]`).forEach(input => {\n    files.push(...Array.from(input.files));\n  });\n\n  if (files.length > FILES_MAX_COUNT) return FILES_COUNT_MESSAGE;\n  if (files.some(file => file.size > FILE_MAX_SIZE)) return FILE_SIZE_MESSAGE;\n  if (files.some(file => !FILE_EXTENSIONS.includes(extension(file.name)))) return FILE_TYPE_MESSAGE;\n  return '';\n}\n\nfunction showFieldError(input, text, placeError) {\n  input.classList.add(INVALID_CLASS);\n  const group = input.closest('.ui-group');\n  if (group) group.classList.add(INVALID_CLASS);\n\n  // Именно <span>: подпись ложится и внутрь чужих <label> (флажок, карточка тарифа),\n  // а правила вида `.ui-file label` достались бы тогда и ей.\n  const label = document.createElement('span');\n  label.className = `${ERROR_CLASS} ${FIELD_ERROR_CLASS}`;\n  label.dataset.errorFor = input.name;\n  label.textContent = text;\n  placeError(input, label);\n}\n\nfunction clearFieldError(form, name) {\n  const label = errorLabel(form, name);\n  if (label) label.remove();\n\n  form.querySelectorAll(`[name=\"${name}\"]`).forEach(input => {\n    input.classList.remove(INVALID_CLASS);\n    const group = input.closest('.ui-group');\n    if (group) group.classList.remove(INVALID_CLASS);\n  });\n}\n\nfunction clearFieldErrors(form) {\n  form.querySelectorAll(`.${FIELD_ERROR_CLASS}`).forEach(label => label.remove());\n  form.querySelectorAll(`.${INVALID_CLASS}`).forEach(el => el.classList.remove(INVALID_CLASS));\n}\n\nfunction clearCommonErrors(form) {\n  form.querySelectorAll(`.${COMMON_ERRORS_CLASS}`).forEach(box => box.remove());\n}\n\nfunction showCommonErrors(form, texts) {\n  const box = document.createElement('div');\n  box.className = `${ERROR_CLASS} ${COMMON_ERRORS_CLASS}`;\n  box.textContent = texts.join(' ');\n  (form.querySelector('.form__cta') || form).prepend(box);\n}\n\n// Подпись ставится к полю, которое посетитель видит. У скрытого поля её ставить не к чему —\n// такой текст уходит в общую строку, иначе он лёг бы куда-нибудь мимо формы.\nfunction place(input, text, placeError, common) {\n  if (input.type === 'hidden') common.push(text);\n  else showFieldError(input, text, placeError);\n}\n\nfunction validate(form, options) {\n  clearFieldErrors(form);\n  clearCommonErrors(form);\n\n  const seen = new Set();\n  const common = [];\n  let firstInvalid = null;\n\n  Array.from(form.elements).forEach(input => {\n    if (!input.name || seen.has(input.name)) return;\n    seen.add(input.name);\n\n    const text = fieldError(input);\n    if (!text) return;\n\n    place(input, text, options.placeError, common);\n    firstInvalid = firstInvalid || input;\n  });\n\n  // Отдельно от цикла: у файлов условие групповое, а `form.elements` дало бы только первый\n  // инпут `file[]` — остальные отсеялись бы как повтор имени.\n  const filesInput = form.querySelector(`input[name=\"${FILE_INPUT_NAME}\"]`);\n  const filesText = filesInput && filesError(form);\n  if (filesText) {\n    showFieldError(filesInput, filesText, options.placeError);\n    firstInvalid = firstInvalid || filesInput;\n  }\n\n  if (common.length > 0) showCommonErrors(form, common);\n  if (firstInvalid) firstInvalid.focus();\n  return !firstInvalid;\n}\n\nfunction recheck(form, name, options) {\n  clearFieldError(form, name);\n\n  const input = leader(form, name);\n  const text = input && (name === FILE_INPUT_NAME ? filesError(form) : fieldError(input));\n  if (text) showFieldError(input, text, options.placeError);\n}\n\n// Сервер ждёт файлы под именем `files`, а в разметке они `file[]`.\nfunction orderData(form) {\n  const data = new FormData(form);\n  data.delete('file[]');\n\n  form.querySelectorAll('input[name=\"file[]\"]').forEach(input => {\n    Array.from(input.files).forEach(file => data.append('files', file));\n  });\n  return data;\n}\n\nfunction parseErrors(body) {\n  try {\n    const errors = JSON.parse(body);\n    return errors && typeof errors === 'object' ? errors : null;\n  } catch {\n    return null;\n  }\n}\n\nfunction showBackendErrors(form, errors, options) {\n  const ozonErrors = {};\n  const common = [];\n\n  Object.entries(errors).forEach(([name, raw]) => {\n    const texts = (Array.isArray(raw) ? raw : [raw]).filter(Boolean);\n    if (texts.length === 0) return;\n\n    if (name === '__all__' || name === 'non_field_errors') {\n      common.push(...texts);\n      return;\n    }\n    // Скрытые поля острова доставки Ozon: подпись к ним ставит он сам.\n    if (isOzonDeliveryField(name)) {\n      ozonErrors[name] = texts[0];\n      return;\n    }\n\n    const input =\n      leader(form, name) ||\n      (name === 'files' ? form.querySelector('input[name=\"file[]\"], input[name=\"files\"]') : null);\n\n    // У поля помещается одно сообщение; остальные уходят в общий список.\n    if (input) place(input, texts[0], options.placeError, common);\n    else common.push(...texts);\n  });\n\n  showOzonDeliveryErrors(form, ozonErrors);\n  if (common.length > 0) showCommonErrors(form, common);\n}\n\nfunction accept(form, options) {\n  form.classList.remove(SENDING_CLASS);\n  form.reset();\n  // Плашки выбранных файлов дорисовывает inputreader.js — про новый заказ он сам не узнает.\n  form.querySelectorAll('.ui-file.has-file').forEach(uploaded => uploaded.remove());\n  resetOzonDelivery(form);\n  options.onAccepted(form);\n}\n\nfunction reject(form, options, body, status) {\n  form.classList.remove(SENDING_CLASS);\n  options.onRejected(form);\n\n  // 429 — лимит отправок заказа: его текст лежит там же, где ошибки формы, в `__all__`.\n  const errors = status === 400 || status === 429 ? parseErrors(body) : null;\n  if (errors) {\n    showBackendErrors(form, errors, options);\n    return;\n  }\n\n  console.log(`${status}: ${body}`);\n  alert(SEND_FAILED_MESSAGE);\n}\n\nfunction send(form, options) {\n  form.classList.add(SENDING_CLASS);\n  clearCommonErrors(form);\n  showOzonDeliveryErrors(form, {});\n\n  fetch(form.dataset.urlAction || form.getAttribute('action'), {\n    method: 'POST',\n    body: orderData(form),\n    // Без заголовка сервер отвечает редиректом вместо json: так он отличает отправку из js.\n    headers: { 'X-Requested-With': 'XMLHttpRequest' },\n  })\n    .then(response =>\n      response.ok\n        ? accept(form, options)\n        : response.text().then(body => reject(form, options, body, response.status))\n    )\n    .catch(() => reject(form, options, '', 0));\n}\n\nfunction attach(form, options) {\n  // Браузерные подсказки выключены: подписи к полям рисуем и размещаем сами.\n  form.setAttribute('novalidate', 'novalidate');\n\n  form.addEventListener('submit', function(event) {\n    event.preventDefault();\n    if (form.classList.contains(SENDING_CLASS)) return;\n\n    submitted.add(form);\n    if (validate(form, options)) send(form, options);\n    else options.onRejected(form);\n  });\n\n  form.addEventListener('focusout', function(event) {\n    const input = event.target;\n    const checkable = input.type === 'radio' || input.type === 'checkbox';\n    // Пустое поле подписывать рано: посетитель идёт по форме сверху вниз, а не бросает её.\n    if (!input.name || checkable || (!input.value && !submitted.has(form))) return;\n    recheck(form, input.name, options);\n  });\n\n  // Подпись висит, пока поле не исправят.\n  ['input', 'change'].forEach(function(type) {\n    form.addEventListener(type, function(event) {\n      const name = event.target.name;\n      if (name && errorLabel(form, name)) recheck(form, name, options);\n    });\n  });\n}\n\n/**\n * Проверка и отправка форм заказа: возвращает init домена.\n *\n * Домены отличаются тремя вещами: `placeError` кладёт подпись к полю, `onAccepted` отвечает\n * на принятый заказ, `onRejected` — на непринятый.\n */\nexport function createValidations(options) {\n  const settings = {\n    placeError: options.placeError,\n    onAccepted: options.onAccepted,\n    onRejected: options.onRejected || function() {},\n  };\n\n  return function init() {\n    document.querySelectorAll(`${FORM_SELECTOR}:not(.${ATTACHED_CLASS})`).forEach(function(form) {\n      attach(form, settings);\n      form.classList.add(ATTACHED_CLASS);\n    });\n  };\n}\n","import { createValidations } from '#common/blocks/validations/validations.js';\nimport { Modals } from '#common/blocks/modals/modals.js';\nimport { setTariffSelectionState, toggleTariffWarnings } from '../../clicks.js';\n\nexport const initValidations = createValidations({\n  placeError: function(input, label) {\n    if (input.type === 'checkbox') {\n      const own = input.parentElement.querySelector('label');\n      if (own) own.append(label);\n      return;\n    }\n    // Ряд радиокнопок и список файлов подписываются под собой: на нижнем отступе ряда лежит\n    // пояснение к выбранному варианту, а список файлов кончается вместе со своей секцией.\n    const block = input.closest('.form__radio-select, .ui-files');\n    if (block) {\n      block.after(label);\n      return;\n    }\n    input.parentElement.append(label);\n  },\n  onAccepted: function() {\n    setTariffSelectionState(null);\n    toggleTariffWarnings(false);\n    Modals.openModal('#THANKS');\n  },\n});\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n  var refProp = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== refProp ? refProp : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop, noop)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n    \"function\" === typeof reportError\n      ? reportError\n      : function (error) {\n          if (\n            \"object\" === typeof window &&\n            \"function\" === typeof window.ErrorEvent\n          ) {\n            var event = new window.ErrorEvent(\"error\", {\n              bubbles: !0,\n              cancelable: !0,\n              message:\n                \"object\" === typeof error &&\n                null !== error &&\n                \"string\" === typeof error.message\n                  ? String(error.message)\n                  : String(error),\n              error: error\n            });\n            if (!window.dispatchEvent(event)) return;\n          } else if (\n            \"object\" === typeof process &&\n            \"function\" === typeof process.emit\n          ) {\n            process.emit(\"uncaughtException\", error);\n            return;\n          }\n          console.error(error);\n        },\n  Children = {\n    map: mapChildren,\n    forEach: function (children, forEachFunc, forEachContext) {\n      mapChildren(\n        children,\n        function () {\n          forEachFunc.apply(this, arguments);\n        },\n        forEachContext\n      );\n    },\n    count: function (children) {\n      var n = 0;\n      mapChildren(children, function () {\n        n++;\n      });\n      return n;\n    },\n    toArray: function (children) {\n      return (\n        mapChildren(children, function (child) {\n          return child;\n        }) || []\n      );\n    },\n    only: function (children) {\n      if (!isValidElement(children))\n        throw Error(\n          \"React.Children.only expected to receive a single React element child.\"\n        );\n      return children;\n    }\n  };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cacheSignal = function () {\n  return null;\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    null !== prevTransition &&\n      null !== currentTransition.types &&\n      (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n  return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n  return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.8\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryClientProvider.tsx\nconst QueryClientContext = React.createContext(void 0);\nconst useQueryClient = (queryClient) => {\n\tconst client = React.useContext(QueryClientContext);\n\tif (queryClient) return queryClient;\n\tif (!client) throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n\treturn client;\n};\nconst QueryClientProvider = ({ client, children }) => {\n\tReact.useEffect(() => {\n\t\tclient.mount();\n\t\treturn () => {\n\t\t\tclient.unmount();\n\t\t};\n\t}, [client]);\n\treturn /* @__PURE__ */ jsx(QueryClientContext.Provider, {\n\t\tvalue: client,\n\t\tchildren\n\t});\n};\n//#endregion\nexport { QueryClientContext, QueryClientProvider, useQueryClient };\n\n//# sourceMappingURL=QueryClientProvider.js.map","//#region src/timeoutManager.ts\nconst defaultTimeoutProvider = {\n\tsetTimeout: (callback, delay) => setTimeout(callback, delay),\n\tclearTimeout: (timeoutId) => clearTimeout(timeoutId),\n\tsetInterval: (callback, delay) => setInterval(callback, delay),\n\tclearInterval: (intervalId) => clearInterval(intervalId)\n};\n/**\n* Allows customization of how timeouts are created.\n*\n* @tanstack/query-core makes liberal use of timeouts to implement `staleTime`\n* and `gcTime`. The default TimeoutManager provider uses the platform's global\n* `setTimeout` implementation, which is known to have scalability issues with\n* thousands of timeouts on the event loop.\n*\n* If you hit this limitation, consider providing a custom TimeoutProvider that\n* coalesces timeouts.\n*/\nvar TimeoutManager = class {\n\t#provider = defaultTimeoutProvider;\n\t#providerCalled = false;\n\tsetTimeoutProvider(provider) {\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (this.#providerCalled && provider !== this.#provider) console.error(`[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`, {\n\t\t\t\tprevious: this.#provider,\n\t\t\t\tprovider\n\t\t\t});\n\t\t}\n\t\tthis.#provider = provider;\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = false;\n\t}\n\tsetTimeout(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setTimeout(callback, delay);\n\t}\n\tclearTimeout(timeoutId) {\n\t\tthis.#provider.clearTimeout(timeoutId);\n\t}\n\tsetInterval(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setInterval(callback, delay);\n\t}\n\tclearInterval(intervalId) {\n\t\tthis.#provider.clearInterval(intervalId);\n\t}\n};\nconst timeoutManager = new TimeoutManager();\n/**\n* In many cases code wants to delay to the next event loop tick; this is not\n* mediated by {@link timeoutManager}.\n*\n* This function is provided to make auditing the `tanstack/query-core` for\n* incorrect use of system `setTimeout` easier.\n*/\nfunction systemSetTimeoutZero(callback) {\n\tsetTimeout(callback, 0);\n}\n//#endregion\nexport { TimeoutManager, defaultTimeoutProvider, systemSetTimeoutZero, timeoutManager };\n\n//# sourceMappingURL=timeoutManager.js.map","import { timeoutManager } from \"./timeoutManager.js\";\n//#region src/utils.ts\n/** @deprecated\n* use `environmentManager.isServer()` instead.\n*/\nconst isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {}\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n\treturn typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n\treturn Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveQueryValue(value, query) {\n\treturn typeof value === \"function\" ? value(query) : value;\n}\nfunction matchQuery(filters, query) {\n\tconst { type = \"all\", exact, fetchStatus, predicate, queryKey, stale } = filters;\n\tif (queryKey) {\n\t\tif (exact) {\n\t\t\tif (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) return false;\n\t\t} else if (!partialMatchKey(query.queryKey, queryKey)) return false;\n\t}\n\tif (type !== \"all\") {\n\t\tconst isActive = query.isActive();\n\t\tif (type === \"active\" && !isActive) return false;\n\t\tif (type === \"inactive\" && isActive) return false;\n\t}\n\tif (typeof stale === \"boolean\" && query.isStale() !== stale) return false;\n\tif (fetchStatus && fetchStatus !== query.state.fetchStatus) return false;\n\tif (predicate && !predicate(query)) return false;\n\treturn true;\n}\nfunction matchMutation(filters, mutation) {\n\tconst { exact, status, predicate, mutationKey } = filters;\n\tif (mutationKey) {\n\t\tif (!mutation.options.mutationKey) return false;\n\t\tif (exact) {\n\t\t\tif (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) return false;\n\t\t} else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) return false;\n\t}\n\tif (status && mutation.state.status !== status) return false;\n\tif (predicate && !predicate(mutation)) return false;\n\treturn true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n\treturn (options?.queryKeyHashFn || hashKey)(queryKey);\n}\n/**\n* Default query & mutation keys hash function.\n* Hashes the value into a stable hash.\n*/\nfunction hashKey(queryKey) {\n\treturn JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n\t\tresult[key] = val[key];\n\t\treturn result;\n\t}, {}) : val);\n}\nfunction partialMatchKey(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (a && b && typeof a === \"object\" && typeof b === \"object\") {\n\t\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\t\tfor (let i = 0; i < b.length; i++) if (!partialMatchKey(a[i], b[i])) return false;\n\t\t\treturn true;\n\t\t}\n\t\tconst bKeys = Object.keys(b);\n\t\tfor (const key of bKeys) if (!partialMatchKey(a[key], b[key])) return false;\n\t\treturn true;\n\t}\n\treturn false;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n\tif (a === b) return a;\n\tif (depth > 500) return b;\n\tconst array = isPlainArray(a) && isPlainArray(b);\n\tif (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n\tconst aSize = (array ? a : Object.keys(a)).length;\n\tconst bItems = array ? b : Object.keys(b);\n\tconst bSize = bItems.length;\n\tconst copy = array ? new Array(bSize) : {};\n\tlet equalItems = 0;\n\tfor (let i = 0; i < bSize; i++) {\n\t\tconst key = array ? i : bItems[i];\n\t\tconst aItem = a[key];\n\t\tconst bItem = b[key];\n\t\tif (aItem === bItem) {\n\t\t\tcopy[key] = aItem;\n\t\t\tif (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n\t\t\tcopy[key] = bItem;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(aItem, bItem, depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === aItem) equalItems++;\n\t}\n\treturn aSize === bSize && equalItems === aSize ? a : copy;\n}\n/**\n* Shallow compare objects.\n*/\nfunction shallowEqualObjects(a, b) {\n\tif (!b || Object.keys(a).length !== Object.keys(b).length) return false;\n\tfor (const key in a) if (a[key] !== b[key]) return false;\n\treturn true;\n}\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst ctor = o.constructor;\n\tif (ctor === void 0) return true;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\tif (Object.getPrototypeOf(o) !== Object.prototype) return false;\n\treturn true;\n}\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n\treturn new Promise((resolve) => {\n\t\ttimeoutManager.setTimeout(resolve, timeout);\n\t});\n}\nfunction replaceData(prevData, data, options) {\n\tif (typeof options.structuralSharing === \"function\") return options.structuralSharing(prevData, data);\n\telse if (options.structuralSharing !== false) {\n\t\tif (process.env.NODE_ENV !== \"production\") try {\n\t\t\treturn replaceEqualDeep(prevData, data);\n\t\t} catch (error) {\n\t\t\tconsole.error(`Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`);\n\t\t\tthrow error;\n\t\t}\n\t\treturn replaceEqualDeep(prevData, data);\n\t}\n\treturn data;\n}\nfunction keepPreviousData(previousData) {\n\treturn previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n\tconst newItems = [...items, item];\n\treturn max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n\tconst newItems = [item, ...items];\n\treturn max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nconst skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (options.queryFn === skipToken) console.error(`Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`);\n\t}\n\tif (!options.queryFn && fetchOptions?.initialPromise) return () => fetchOptions.initialPromise;\n\tif (!options.queryFn || options.queryFn === skipToken) return () => Promise.reject(/* @__PURE__ */ new Error(`Missing queryFn: '${options.queryHash}'`));\n\treturn options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n\tif (typeof throwOnError === \"function\") return throwOnError(...params);\n\treturn !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n\tlet consumed = false;\n\tlet signal;\n\tObject.defineProperty(object, \"signal\", {\n\t\tenumerable: true,\n\t\tget: () => {\n\t\t\tsignal ??= getSignal();\n\t\t\tif (consumed) return signal;\n\t\t\tconsumed = true;\n\t\t\tif (signal.aborted) onCancelled();\n\t\t\telse signal.addEventListener(\"abort\", onCancelled, { once: true });\n\t\t\treturn signal;\n\t\t}\n\t});\n\treturn object;\n}\n//#endregion\nexport { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn, functionalUpdate, hashKey, hashQueryKeyByOptions, isPlainArray, isPlainObject, isServer, isValidTimeout, keepPreviousData, matchMutation, matchQuery, noop, partialMatchKey, replaceData, replaceEqualDeep, resolveQueryValue, shallowEqualObjects, shouldThrowError, skipToken, sleep, timeUntilStale };\n\n//# sourceMappingURL=utils.js.map","import { isServer as isServer$1 } from \"./utils.js\";\n//#region src/environmentManager.ts\nlet isServerFn = () => isServer$1;\n/**\n* Returns whether the current runtime should be treated as a server environment.\n*/\nconst isServer = () => isServerFn();\n/**\n* Manages environment detection used by TanStack Query internals.\n*/\nconst environmentManager = {\n\tisServer,\n\t/**\n\t* Overrides the server check globally.\n\t*/\n\tsetIsServer(isServerValue) {\n\t\tisServerFn = isServerValue;\n\t}\n};\n//#endregion\nexport { environmentManager, isServer };\n\n//# sourceMappingURL=environmentManager.js.map","//#region src/subscribable.ts\nvar Subscribable = class {\n\tconstructor() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t}\n\tsubscribe(listener) {\n\t\tthis.listeners.add(listener);\n\t\tthis.onSubscribe();\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t\tthis.onUnsubscribe();\n\t\t};\n\t}\n\thasListeners() {\n\t\treturn this.listeners.size > 0;\n\t}\n\tonSubscribe() {}\n\tonUnsubscribe() {}\n};\n//#endregion\nexport { Subscribable };\n\n//# sourceMappingURL=subscribable.js.map","import { Subscribable } from \"./subscribable.js\";\n//#region src/focusManager.ts\nvar FocusManager = class extends Subscribable {\n\t#focused;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onFocus) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst listener = () => onFocus();\n\t\t\t\twindow.addEventListener(\"visibilitychange\", listener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"visibilitychange\", listener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup((focused) => {\n\t\t\tif (typeof focused === \"boolean\") this.setFocused(focused);\n\t\t\telse this.onFocus();\n\t\t});\n\t}\n\tsetFocused(focused) {\n\t\tif (this.#focused !== focused) {\n\t\t\tthis.#focused = focused;\n\t\t\tthis.onFocus();\n\t\t}\n\t}\n\tonFocus() {\n\t\tconst isFocused = this.isFocused();\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistener(isFocused);\n\t\t});\n\t}\n\tisFocused() {\n\t\tif (typeof this.#focused === \"boolean\") return this.#focused;\n\t\treturn globalThis.document?.visibilityState !== \"hidden\";\n\t}\n};\nconst focusManager = new FocusManager();\n//#endregion\nexport { FocusManager, focusManager };\n\n//# sourceMappingURL=focusManager.js.map","import { systemSetTimeoutZero } from \"./timeoutManager.js\";\n//#region src/notifyManager.ts\nconst defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n\tlet queue = [];\n\tlet transactions = 0;\n\tlet notifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet batchNotifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet scheduleFn = defaultScheduler;\n\tconst schedule = (callback) => {\n\t\tif (transactions) queue.push(callback);\n\t\telse scheduleFn(() => {\n\t\t\tnotifyFn(callback);\n\t\t});\n\t};\n\tconst flush = () => {\n\t\tconst originalQueue = queue;\n\t\tqueue = [];\n\t\tif (originalQueue.length) scheduleFn(() => {\n\t\t\tbatchNotifyFn(() => {\n\t\t\t\toriginalQueue.forEach((callback) => {\n\t\t\t\t\tnotifyFn(callback);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\tbatch: (callback) => {\n\t\t\tlet result;\n\t\t\ttransactions++;\n\t\t\ttry {\n\t\t\t\tresult = callback();\n\t\t\t} finally {\n\t\t\t\ttransactions--;\n\t\t\t\tif (!transactions) flush();\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t/**\n\t\t* All calls to the wrapped function will be batched.\n\t\t*/\n\t\tbatchCalls: (callback) => {\n\t\t\treturn (...args) => {\n\t\t\t\tschedule(() => {\n\t\t\t\t\tcallback(...args);\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t\tschedule,\n\t\t/**\n\t\t* Use this method to set a custom notify function.\n\t\t* This can be used to for example wrap notifications with `React.act` while running tests.\n\t\t*/\n\t\tsetNotifyFunction: (fn) => {\n\t\t\tnotifyFn = fn;\n\t\t},\n\t\t/**\n\t\t* Use this method to set a custom function to batch notifications together into a single tick.\n\t\t* By default React Query will use the batch function provided by ReactDOM or React Native.\n\t\t*/\n\t\tsetBatchNotifyFunction: (fn) => {\n\t\t\tbatchNotifyFn = fn;\n\t\t},\n\t\tsetScheduler: (fn) => {\n\t\t\tscheduleFn = fn;\n\t\t}\n\t};\n}\nconst notifyManager = createNotifyManager();\n//#endregion\nexport { createNotifyManager, defaultScheduler, notifyManager };\n\n//# sourceMappingURL=notifyManager.js.map","import { Subscribable } from \"./subscribable.js\";\n//#region src/onlineManager.ts\nvar OnlineManager = class extends Subscribable {\n\t#online = true;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onOnline) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst onlineListener = () => onOnline(true);\n\t\t\t\tconst offlineListener = () => onOnline(false);\n\t\t\t\twindow.addEventListener(\"online\", onlineListener, false);\n\t\t\t\twindow.addEventListener(\"offline\", offlineListener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"online\", onlineListener);\n\t\t\t\t\twindow.removeEventListener(\"offline\", offlineListener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup(this.setOnline.bind(this));\n\t}\n\tsetOnline(online) {\n\t\tif (this.#online !== online) {\n\t\t\tthis.#online = online;\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(online);\n\t\t\t});\n\t\t}\n\t}\n\tisOnline() {\n\t\treturn this.#online;\n\t}\n};\nconst onlineManager = new OnlineManager();\n//#endregion\nexport { OnlineManager, onlineManager };\n\n//# sourceMappingURL=onlineManager.js.map","import { noop, sleep } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\n//#region src/retryer.ts\nfunction defaultRetryDelay(failureCount) {\n\treturn Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n\treturn (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n\tconstructor(options) {\n\t\tsuper(\"CancelledError\");\n\t\tthis.revert = options?.revert;\n\t\tthis.silent = options?.silent;\n\t}\n};\n/**\n* @deprecated Use instanceof `CancelledError` instead.\n*/\nfunction isCancelledError(value) {\n\treturn value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n\tlet isRetryCancelled = false;\n\tlet failureCount = 0;\n\tlet continueFn;\n\tlet status = \"pending\";\n\tlet promiseResolve;\n\tlet promiseReject;\n\tconst promise = new Promise((resolve, reject) => {\n\t\tpromiseResolve = resolve;\n\t\tpromiseReject = reject;\n\t});\n\tpromise.catch(noop);\n\tconst isResolved = () => status !== \"pending\";\n\tconst cancel = (cancelOptions) => {\n\t\tif (!isResolved()) {\n\t\t\tconst error = new CancelledError(cancelOptions);\n\t\t\treject(error);\n\t\t\tconfig.onCancel?.(error);\n\t\t}\n\t};\n\tconst cancelRetry = () => {\n\t\tisRetryCancelled = true;\n\t};\n\tconst continueRetry = () => {\n\t\tisRetryCancelled = false;\n\t};\n\tconst canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n\tconst canStart = () => canFetch(config.networkMode) && config.canRun();\n\tconst resolve = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"resolved\";\n\t\t\tpromiseResolve(value);\n\t\t}\n\t};\n\tconst reject = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"rejected\";\n\t\t\tpromiseReject(value);\n\t\t}\n\t};\n\tconst pause = () => {\n\t\treturn new Promise((continueResolve) => {\n\t\t\tcontinueFn = (value) => {\n\t\t\t\tif (isResolved() || canContinue()) continueResolve(value);\n\t\t\t};\n\t\t\tconfig.onPause?.();\n\t\t}).then(() => {\n\t\t\tcontinueFn = void 0;\n\t\t\tif (!isResolved()) config.onContinue?.();\n\t\t});\n\t};\n\tconst run = () => {\n\t\tif (isResolved()) return;\n\t\tlet promiseOrValue;\n\t\tconst initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n\t\ttry {\n\t\t\tpromiseOrValue = initialPromise ?? config.fn();\n\t\t} catch (error) {\n\t\t\tpromiseOrValue = Promise.reject(error);\n\t\t}\n\t\tPromise.resolve(promiseOrValue).then(resolve).catch((error) => {\n\t\t\tif (isResolved()) return;\n\t\t\tconst retry = config.retry ?? (isServer() ? 0 : 3);\n\t\t\tconst retryDelay = config.retryDelay ?? defaultRetryDelay;\n\t\t\tconst delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n\t\t\tconst shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n\t\t\tif (isRetryCancelled || !shouldRetry) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailureCount++;\n\t\t\tconfig.onFail?.(failureCount, error);\n\t\t\tsleep(delay).then(() => {\n\t\t\t\treturn canContinue() ? void 0 : pause();\n\t\t\t}).then(() => {\n\t\t\t\tif (isRetryCancelled) reject(error);\n\t\t\t\telse run();\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\tpromise,\n\t\tstatus: () => status,\n\t\tcancel,\n\t\tcontinue: () => {\n\t\t\tcontinueFn?.();\n\t\t\treturn promise;\n\t\t},\n\t\tcancelRetry,\n\t\tcontinueRetry,\n\t\tcanStart,\n\t\tstart: () => {\n\t\t\tif (canStart()) run();\n\t\t\telse pause().then(run);\n\t\t\treturn promise;\n\t\t}\n\t};\n}\n//#endregion\nexport { CancelledError, canFetch, createRetryer, isCancelledError };\n\n//# sourceMappingURL=retryer.js.map","import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\n//#region src/removable.ts\nvar Removable = class {\n\t#gcTimeout;\n\tdestroy() {\n\t\tthis.clearGcTimeout();\n\t}\n\tscheduleGc() {\n\t\tthis.clearGcTimeout();\n\t\tif (isValidTimeout(this.gcTime)) this.#gcTimeout = timeoutManager.setTimeout(() => {\n\t\t\tthis.optionalRemove();\n\t\t}, this.gcTime);\n\t}\n\tupdateGcTime(newGcTime) {\n\t\tthis.gcTime = Math.max(this.gcTime || 0, newGcTime ?? (isServer() ? Infinity : 3e5));\n\t}\n\tclearGcTimeout() {\n\t\tif (this.#gcTimeout !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#gcTimeout);\n\t\t\tthis.#gcTimeout = void 0;\n\t\t}\n\t}\n};\n//#endregion\nexport { Removable };\n\n//# sourceMappingURL=removable.js.map","import { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\n//#region src/infiniteQueryBehavior.ts\nfunction infiniteQueryBehavior(pages) {\n\treturn { onFetch: (context, query) => {\n\t\tconst options = context.options;\n\t\tconst direction = context.fetchOptions?.meta?.fetchMore?.direction;\n\t\tconst oldPages = context.state.data?.pages || [];\n\t\tconst oldPageParams = context.state.data?.pageParams || [];\n\t\tlet result = {\n\t\t\tpages: [],\n\t\t\tpageParams: []\n\t\t};\n\t\tlet currentPage = 0;\n\t\tconst fetchFn = async () => {\n\t\t\tlet cancelled = false;\n\t\t\tconst addSignalProperty = (object) => {\n\t\t\t\taddConsumeAwareSignal(object, () => context.signal, () => cancelled = true);\n\t\t\t};\n\t\t\tconst queryFn = ensureQueryFn(context.options, context.fetchOptions);\n\t\t\tconst fetchPage = async (data, param, previous) => {\n\t\t\t\tif (cancelled) return Promise.reject(context.signal.reason);\n\t\t\t\tif (param == null && data.pages.length) return Promise.resolve(data);\n\t\t\t\tconst createQueryFnContext = () => {\n\t\t\t\t\tconst queryFnContext = {\n\t\t\t\t\t\tclient: context.client,\n\t\t\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\t\t\tpageParam: param,\n\t\t\t\t\t\tdirection: previous ? \"backward\" : \"forward\",\n\t\t\t\t\t\tmeta: context.options.meta\n\t\t\t\t\t};\n\t\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\t\treturn queryFnContext;\n\t\t\t\t};\n\t\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\t\tconst page = await queryFn(queryFnContext);\n\t\t\t\tconst { maxPages } = context.options;\n\t\t\t\tconst addTo = previous ? addToStart : addToEnd;\n\t\t\t\treturn {\n\t\t\t\t\tpages: addTo(data.pages, page, maxPages),\n\t\t\t\t\tpageParams: addTo(data.pageParams, param, maxPages)\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (direction && oldPages.length) {\n\t\t\t\tconst previous = direction === \"backward\";\n\t\t\t\tconst pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n\t\t\t\tconst oldData = {\n\t\t\t\t\tpages: oldPages,\n\t\t\t\t\tpageParams: oldPageParams\n\t\t\t\t};\n\t\t\t\tresult = await fetchPage(oldData, pageParamFn(options, oldData), previous);\n\t\t\t} else {\n\t\t\t\tconst remainingPages = pages ?? oldPages.length;\n\t\t\t\tdo {\n\t\t\t\t\tconst param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n\t\t\t\t\tif (currentPage > 0 && param == null) break;\n\t\t\t\t\tresult = await fetchPage(result, param);\n\t\t\t\t\tcurrentPage++;\n\t\t\t\t} while (currentPage < remainingPages);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (context.options.persister) context.fetchFn = () => {\n\t\t\treturn context.options.persister?.(fetchFn, {\n\t\t\t\tclient: context.client,\n\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\tmeta: context.options.meta,\n\t\t\t\tsignal: context.signal\n\t\t\t}, query);\n\t\t};\n\t\telse context.fetchFn = fetchFn;\n\t} };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n\tconst lastIndex = pages.length - 1;\n\treturn pages.length > 0 ? options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n\treturn pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\n/**\n* Checks if there is a next page.\n*/\nfunction hasNextPage(options, data) {\n\tif (!data) return false;\n\treturn getNextPageParam(options, data) != null;\n}\n/**\n* Checks if there is a previous page.\n*/\nfunction hasPreviousPage(options, data) {\n\tif (!data || !options.getPreviousPageParam) return false;\n\treturn getPreviousPageParam(options, data) != null;\n}\n//#endregion\nexport { hasNextPage, hasPreviousPage, infiniteQueryBehavior };\n\n//# sourceMappingURL=infiniteQueryBehavior.js.map","import { ensureQueryFn, noop, replaceData, resolveQueryValue, skipToken, timeUntilStale } from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\n//#region src/query.ts\nvar Query = class extends Removable {\n\t#queryType;\n\t#initialState;\n\t#revertState;\n\t#cache;\n\t#client;\n\t#retryer;\n\t#defaultOptions;\n\t#abortSignalConsumed;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#abortSignalConsumed = false;\n\t\tthis.#defaultOptions = config.defaultOptions;\n\t\tthis.setOptions(config.options);\n\t\tthis.observers = [];\n\t\tthis.#client = config.client;\n\t\tthis.#cache = this.#client.getQueryCache();\n\t\tthis.queryKey = config.queryKey;\n\t\tthis.queryHash = config.queryHash;\n\t\tthis.#initialState = getDefaultState(this.options);\n\t\tthis.state = config.state ?? this.#initialState;\n\t\tthis.scheduleGc();\n\t}\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\tget queryType() {\n\t\treturn this.#queryType;\n\t}\n\tget promise() {\n\t\treturn this.#retryer?.promise;\n\t}\n\tsetOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.#defaultOptions,\n\t\t\t...options\n\t\t};\n\t\tif (options?._type) this.#queryType = options._type;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t\tif (this.state && this.state.data === void 0) {\n\t\t\tconst defaultState = getDefaultState(this.options);\n\t\t\tif (defaultState.data !== void 0) {\n\t\t\t\tthis.setState(successState(defaultState.data, defaultState.dataUpdatedAt));\n\t\t\t\tthis.#initialState = defaultState;\n\t\t\t}\n\t\t}\n\t}\n\toptionalRemove() {\n\t\tif (!this.observers.length && this.state.fetchStatus === \"idle\") this.#cache.remove(this);\n\t}\n\tsetData(newData, options) {\n\t\tconst data = replaceData(this.state.data, newData, this.options);\n\t\tthis.#dispatch({\n\t\t\tdata,\n\t\t\ttype: \"success\",\n\t\t\tdataUpdatedAt: options?.updatedAt,\n\t\t\tmanual: options?.manual\n\t\t});\n\t\treturn data;\n\t}\n\tsetState(state) {\n\t\tthis.#dispatch({\n\t\t\ttype: \"setState\",\n\t\t\tstate\n\t\t});\n\t}\n\tcancel(options) {\n\t\tconst promise = this.#retryer?.promise;\n\t\tthis.#retryer?.cancel(options);\n\t\treturn promise ? promise.then(noop).catch(noop) : Promise.resolve();\n\t}\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.cancel({ silent: true });\n\t}\n\tget resetState() {\n\t\treturn this.#initialState;\n\t}\n\treset() {\n\t\tthis.destroy();\n\t\tthis.setState(this.resetState);\n\t}\n\tisActive() {\n\t\treturn this.observers.some((observer) => resolveQueryValue(observer.options.enabled, this) !== false);\n\t}\n\tisDisabled() {\n\t\tif (this.getObserversCount() > 0) return !this.isActive();\n\t\treturn this.options.queryFn === skipToken || !this.isFetched();\n\t}\n\tisFetched() {\n\t\treturn this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n\t}\n\tisStatic() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => resolveQueryValue(observer.options.staleTime, this) === \"static\");\n\t\treturn false;\n\t}\n\tisStale() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => observer.getCurrentResult().isStale);\n\t\treturn this.state.data === void 0 || this.state.isInvalidated;\n\t}\n\tisStaleByTime(staleTime = 0) {\n\t\tif (this.state.data === void 0) return true;\n\t\tif (staleTime === \"static\") return false;\n\t\tif (this.state.isInvalidated) return true;\n\t\treturn !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n\t}\n\tonFocus() {\n\t\tthis.observers.find((x) => x.shouldFetchOnWindowFocus())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\tonOnline() {\n\t\tthis.observers.find((x) => x.shouldFetchOnReconnect())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\taddObserver(observer) {\n\t\tif (!this.observers.includes(observer)) {\n\t\t\tthis.observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\tremoveObserver(observer) {\n\t\tconst index = this.observers.indexOf(observer);\n\t\tif (index !== -1) {\n\t\t\tthis.observers.splice(index, 1);\n\t\t\tif (!this.observers.length) {\n\t\t\t\tif (this.#retryer) {\n\t\t\t\t\tif (this.#abortSignalConsumed || this.state.fetchStatus === \"paused\" && this.state.status === \"pending\") this.#retryer.cancel({ revert: true });\n\t\t\t\t\telse this.#retryer.cancelRetry();\n\t\t\t\t}\n\t\t\t\tthis.scheduleGc();\n\t\t\t}\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerRemoved\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\tgetObserversCount() {\n\t\treturn this.observers.length;\n\t}\n\tinvalidate() {\n\t\tif (!this.state.isInvalidated) this.#dispatch({ type: \"invalidate\" });\n\t}\n\tasync fetch(options, fetchOptions) {\n\t\tif (this.state.fetchStatus !== \"idle\" && this.#retryer?.status() !== \"rejected\") {\n\t\t\tif (this.state.data !== void 0 && fetchOptions?.cancelRefetch) this.cancel({ silent: true });\n\t\t\telse if (this.#retryer) {\n\t\t\t\tthis.#retryer.continueRetry();\n\t\t\t\treturn this.#retryer.promise;\n\t\t\t}\n\t\t}\n\t\tif (options) this.setOptions(options);\n\t\tif (!this.options.queryFn) {\n\t\t\tconst observer = this.observers.find((x) => x.options.queryFn);\n\t\t\tif (observer) this.setOptions(observer.options);\n\t\t}\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!Array.isArray(this.options.queryKey)) console.error(`As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`);\n\t\t}\n\t\tconst abortController = new AbortController();\n\t\tconst addSignalProperty = (object) => {\n\t\t\tObject.defineProperty(object, \"signal\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => {\n\t\t\t\t\tthis.#abortSignalConsumed = true;\n\t\t\t\t\treturn abortController.signal;\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tconst fetchFn = () => {\n\t\t\tconst queryFn = ensureQueryFn(this.options, fetchOptions);\n\t\t\tconst createQueryFnContext = () => {\n\t\t\t\tconst queryFnContext = {\n\t\t\t\t\tclient: this.#client,\n\t\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\t\tmeta: this.meta\n\t\t\t\t};\n\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\treturn queryFnContext;\n\t\t\t};\n\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\tthis.#abortSignalConsumed = false;\n\t\t\tif (this.options.persister) return this.options.persister(queryFn, queryFnContext, this);\n\t\t\treturn queryFn(queryFnContext);\n\t\t};\n\t\tconst createFetchContext = () => {\n\t\t\tconst context = {\n\t\t\t\tfetchOptions,\n\t\t\t\toptions: this.options,\n\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\tclient: this.#client,\n\t\t\t\tstate: this.state,\n\t\t\t\tfetchFn\n\t\t\t};\n\t\t\taddSignalProperty(context);\n\t\t\treturn context;\n\t\t};\n\t\tconst context = createFetchContext();\n\t\t(this.#queryType === \"infinite\" ? infiniteQueryBehavior(this.options.pages) : this.options.behavior)?.onFetch(context, this);\n\t\tthis.#revertState = this.state;\n\t\tif (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) this.#dispatch({\n\t\t\ttype: \"fetch\",\n\t\t\tmeta: context.fetchOptions?.meta\n\t\t});\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tinitialPromise: fetchOptions?.initialPromise,\n\t\t\tfn: context.fetchFn,\n\t\t\tonCancel: (error) => {\n\t\t\t\tif (error instanceof CancelledError && error.revert) this.setState({\n\t\t\t\t\t...this.#revertState,\n\t\t\t\t\tfetchStatus: \"idle\"\n\t\t\t\t});\n\t\t\t\tabortController.abort();\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue: () => {\n\t\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t\t},\n\t\t\tretry: context.options.retry,\n\t\t\tretryDelay: context.options.retryDelay,\n\t\t\tnetworkMode: context.options.networkMode,\n\t\t\tcanRun: () => true\n\t\t});\n\t\ttry {\n\t\t\tconst data = await retryer.start();\n\t\t\tif (data === void 0) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.error(`Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`);\n\t\t\t\tthrow new Error(`${this.queryHash} data is undefined`);\n\t\t\t}\n\t\t\tthis.setData(data);\n\t\t\tthis.#cache.config.onSuccess?.(data, this);\n\t\t\tthis.#cache.config.onSettled?.(data, this.state.error, this);\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\tif (error instanceof CancelledError) {\n\t\t\t\tif (error.silent) return this.#retryer.promise;\n\t\t\t\telse if (error.revert) {\n\t\t\t\t\tif (this.state.data === void 0) throw error;\n\t\t\t\t\treturn this.state.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthis.#cache.config.onError?.(error, this);\n\t\t\tthis.#cache.config.onSettled?.(this.state.data, error, this);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.scheduleGc();\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchFailureCount: action.failureCount,\n\t\t\t\t\tfetchFailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"paused\"\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"fetching\"\n\t\t\t\t};\n\t\t\t\tcase \"fetch\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...fetchState(state.data, this.options),\n\t\t\t\t\tfetchMeta: action.meta ?? null\n\t\t\t\t};\n\t\t\t\tcase \"success\":\n\t\t\t\t\tconst newState = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...successState(action.data, action.dataUpdatedAt),\n\t\t\t\t\t\tdataUpdateCount: state.dataUpdateCount + 1,\n\t\t\t\t\t\t...!action.manual && {\n\t\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\t\tfetchFailureCount: 0,\n\t\t\t\t\t\t\tfetchFailureReason: null\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tthis.#revertState = action.manual ? newState : void 0;\n\t\t\t\t\treturn newState;\n\t\t\t\tcase \"error\":\n\t\t\t\t\tconst error = action.error;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\terror,\n\t\t\t\t\t\terrorUpdateCount: state.errorUpdateCount + 1,\n\t\t\t\t\t\terrorUpdatedAt: Date.now(),\n\t\t\t\t\t\tfetchFailureCount: state.fetchFailureCount + 1,\n\t\t\t\t\t\tfetchFailureReason: error,\n\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tisInvalidated: true\n\t\t\t\t\t};\n\t\t\t\tcase \"invalidate\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisInvalidated: true\n\t\t\t\t};\n\t\t\t\tcase \"setState\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...action.state\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.observers.slice().forEach((observer) => {\n\t\t\t\tobserver.onQueryUpdate();\n\t\t\t});\n\t\t\tthis.#cache.notify({\n\t\t\t\tquery: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\nfunction fetchState(data, options) {\n\treturn {\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n\t\t...data === void 0 && {\n\t\t\terror: null,\n\t\t\tstatus: \"pending\"\n\t\t}\n\t};\n}\nfunction successState(data, dataUpdatedAt) {\n\treturn {\n\t\tdata,\n\t\tdataUpdatedAt: dataUpdatedAt ?? Date.now(),\n\t\terror: null,\n\t\tisInvalidated: false,\n\t\tstatus: \"success\"\n\t};\n}\nfunction getDefaultState(options) {\n\tconst data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n\tconst hasData = data !== void 0;\n\tconst initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n\treturn {\n\t\tdata,\n\t\tdataUpdateCount: 0,\n\t\tdataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n\t\terror: null,\n\t\terrorUpdateCount: 0,\n\t\terrorUpdatedAt: 0,\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchMeta: null,\n\t\tisInvalidated: false,\n\t\tstatus: hasData ? \"success\" : \"pending\",\n\t\tfetchStatus: \"idle\"\n\t};\n}\n//#endregion\nexport { Query, fetchState };\n\n//# sourceMappingURL=query.js.map","import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout, noop, replaceData, resolveQueryValue, shallowEqualObjects, timeUntilStale } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\n//#region src/queryObserver.ts\nvar QueryObserver = class extends Subscribable {\n\t#client;\n\t#currentQuery = void 0;\n\t#currentQueryInitialState = void 0;\n\t#currentResult = void 0;\n\t#currentResultState;\n\t#currentResultOptions;\n\t#selectError;\n\t#selectFn;\n\t#selectResult;\n\t#lastQueryWithDefinedData;\n\t#staleTimeoutId;\n\t#refetchIntervalId;\n\t#currentRefetchInterval;\n\t#trackedProps = /* @__PURE__ */ new Set();\n\tconstructor(client, options) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.#client = client;\n\t\tthis.#selectError = null;\n\t\tthis.bindMethods();\n\t\tthis.setOptions(options);\n\t}\n\tbindMethods() {\n\t\tthis.refetch = this.refetch.bind(this);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1) {\n\t\t\tthis.#currentQuery.addObserver(this);\n\t\t\tif (shouldFetchOnMount(this.#currentQuery, this.options)) this.#executeFetch();\n\t\t\telse this.updateResult();\n\t\t\tthis.#updateTimers();\n\t\t}\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) this.destroy();\n\t}\n\tshouldFetchOnReconnect() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnReconnect);\n\t}\n\tshouldFetchOnWindowFocus() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnWindowFocus);\n\t}\n\tdestroy() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.#clearStaleTimeout();\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentQuery.removeObserver(this);\n\t}\n\tsetOptions(options) {\n\t\tconst prevOptions = this.options;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.options = this.#client.defaultQueryOptions(options);\n\t\tif (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryValue(this.options.enabled, this.#currentQuery) !== \"boolean\") throw new Error(\"Expected enabled to be a boolean or a callback that returns a boolean\");\n\t\tthis.#updateQuery();\n\t\tthis.#currentQuery.setOptions(this.options);\n\t\tif (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) this.#client.getQueryCache().notify({\n\t\t\ttype: \"observerOptionsUpdated\",\n\t\t\tquery: this.#currentQuery,\n\t\t\tobserver: this\n\t\t});\n\t\tconst mounted = this.hasListeners();\n\t\tif (mounted && shouldFetchOptionally(this.#currentQuery, prevQuery, this.options, prevOptions)) this.#executeFetch();\n\t\tthis.updateResult();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || resolveQueryValue(this.options.staleTime, this.#currentQuery) !== resolveQueryValue(prevOptions.staleTime, this.#currentQuery))) this.#updateStaleTimeout();\n\t\tconst nextRefetchInterval = this.#computeRefetchInterval();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) this.#updateRefetchInterval(nextRefetchInterval);\n\t}\n\tgetOptimisticResult(options) {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, options);\n\t\tconst result = this.createResult(query, options);\n\t\tif (!shallowEqualObjects(this.getCurrentResult(), result)) {\n\t\t\tthis.#currentResult = result;\n\t\t\tthis.#currentResultOptions = this.options;\n\t\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\t}\n\t\treturn result;\n\t}\n\tgetCurrentResult() {\n\t\treturn this.#currentResult;\n\t}\n\ttrackResult(result, onPropTracked) {\n\t\treturn new Proxy(result, { get: (target, key) => {\n\t\t\tthis.trackProp(key);\n\t\t\tonPropTracked?.(key);\n\t\t\treturn Reflect.get(target, key);\n\t\t} });\n\t}\n\ttrackProp(key) {\n\t\tthis.#trackedProps.add(key);\n\t}\n\tgetCurrentQuery() {\n\t\treturn this.#currentQuery;\n\t}\n\trefetch({ ...options } = {}) {\n\t\treturn this.fetch({ ...options });\n\t}\n\tfetchOptimistic(options) {\n\t\tconst defaultedOptions = this.#client.defaultQueryOptions(options);\n\t\tconst query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n\t\tlet unsubscribe = () => {};\n\t\tlet resolveEarly;\n\t\tconst cachePromise = new Promise((resolve) => {\n\t\t\tresolveEarly = resolve;\n\t\t\tunsubscribe = this.#client.getQueryCache().subscribe((event) => {\n\t\t\t\tif (event.type === \"updated\" && event.query.queryHash === query.queryHash && query.state.data !== void 0) {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t\tresolve(this.createResult(query, defaultedOptions));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn Promise.race([query.fetch().then(() => {\n\t\t\tconst result = this.createResult(query, defaultedOptions);\n\t\t\tresolveEarly?.(result);\n\t\t\treturn result;\n\t\t}).finally(() => {\n\t\t\tunsubscribe();\n\t\t}), cachePromise]);\n\t}\n\tfetch(fetchOptions) {\n\t\treturn this.#executeFetch({\n\t\t\t...fetchOptions,\n\t\t\tcancelRefetch: fetchOptions.cancelRefetch ?? true\n\t\t}).then(() => {\n\t\t\tthis.updateResult();\n\t\t\treturn this.#currentResult;\n\t\t});\n\t}\n\t#executeFetch(fetchOptions) {\n\t\tthis.#updateQuery();\n\t\tlet promise = this.#currentQuery.fetch(this.options, fetchOptions);\n\t\tif (!fetchOptions?.throwOnError) promise = promise.catch(noop);\n\t\treturn promise;\n\t}\n\t#shouldScheduleTimer(timeout) {\n\t\treturn !isServer() && resolveQueryValue(this.options.enabled, this.#currentQuery) !== false && isValidTimeout(timeout);\n\t}\n\t#updateStaleTimeout() {\n\t\tthis.#clearStaleTimeout();\n\t\tconst staleTime = resolveQueryValue(this.options.staleTime, this.#currentQuery);\n\t\tif (this.#currentResult.isStale || !this.#shouldScheduleTimer(staleTime)) return;\n\t\tconst timeout = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime) + 1;\n\t\tthis.#staleTimeoutId = timeoutManager.setTimeout(() => {\n\t\t\tif (!this.#currentResult.isStale) this.updateResult();\n\t\t}, timeout);\n\t}\n\t#computeRefetchInterval() {\n\t\treturn (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n\t}\n\t#updateRefetchInterval(nextInterval) {\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentRefetchInterval = nextInterval;\n\t\tif (this.#currentRefetchInterval === 0 || !this.#shouldScheduleTimer(this.#currentRefetchInterval)) return;\n\t\tthis.#refetchIntervalId = timeoutManager.setInterval(() => {\n\t\t\tif (this.options.refetchIntervalInBackground || focusManager.isFocused()) this.#executeFetch();\n\t\t}, this.#currentRefetchInterval);\n\t}\n\t#updateTimers() {\n\t\tthis.#updateStaleTimeout();\n\t\tthis.#updateRefetchInterval(this.#computeRefetchInterval());\n\t}\n\t#clearStaleTimeout() {\n\t\tif (this.#staleTimeoutId !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#staleTimeoutId);\n\t\t\tthis.#staleTimeoutId = void 0;\n\t\t}\n\t}\n\t#clearRefetchInterval() {\n\t\tif (this.#refetchIntervalId !== void 0) {\n\t\t\ttimeoutManager.clearInterval(this.#refetchIntervalId);\n\t\t\tthis.#refetchIntervalId = void 0;\n\t\t}\n\t}\n\tcreateResult(query, options) {\n\t\tconst prevQuery = this.#currentQuery;\n\t\tconst prevOptions = this.options;\n\t\tconst prevResult = this.#currentResult;\n\t\tconst prevResultState = this.#currentResultState;\n\t\tconst prevResultOptions = this.#currentResultOptions;\n\t\tconst queryInitialState = query !== prevQuery ? query.state : this.#currentQueryInitialState;\n\t\tconst { state } = query;\n\t\tlet newState = { ...state };\n\t\tlet isPlaceholderData = false;\n\t\tlet data;\n\t\tif (options._optimisticResults) {\n\t\t\tconst mounted = this.hasListeners();\n\t\t\tconst fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n\t\t\tconst fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\t\t\tif (fetchOnMount || fetchOptionally) newState = {\n\t\t\t\t...newState,\n\t\t\t\t...fetchState(state.data, query.options)\n\t\t\t};\n\t\t\tif (options._optimisticResults === \"isRestoring\") newState.fetchStatus = \"idle\";\n\t\t}\n\t\tlet { error, errorUpdatedAt, status } = newState;\n\t\tdata = newState.data;\n\t\tlet skipSelect = false;\n\t\tif (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n\t\t\tlet placeholderData;\n\t\t\tif (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n\t\t\t\tplaceholderData = prevResult.data;\n\t\t\t\tskipSelect = true;\n\t\t\t} else placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(this.#lastQueryWithDefinedData?.state.data, this.#lastQueryWithDefinedData) : options.placeholderData;\n\t\t\tif (placeholderData !== void 0) {\n\t\t\t\tstatus = \"success\";\n\t\t\t\tdata = replaceData(prevResult?.data, placeholderData, options);\n\t\t\t\tisPlaceholderData = true;\n\t\t\t}\n\t\t}\n\t\tif (options.select && data !== void 0 && !skipSelect) {\n\t\t\tif (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;\n\t\t\telse try {\n\t\t\t\tthis.#selectFn = options.select;\n\t\t\t\tdata = options.select(data);\n\t\t\t\tdata = replaceData(prevResult?.data, data, options);\n\t\t\t\tthis.#selectResult = data;\n\t\t\t\tthis.#selectError = null;\n\t\t\t} catch (selectError) {\n\t\t\t\tthis.#selectError = selectError;\n\t\t\t}\n\t\t} else if (data === void 0) this.#selectError = null;\n\t\tif (this.#selectError) {\n\t\t\terror = this.#selectError;\n\t\t\tdata = this.#selectResult;\n\t\t\terrorUpdatedAt = Date.now();\n\t\t\tstatus = \"error\";\n\t\t\tisPlaceholderData = false;\n\t\t}\n\t\tconst isFetching = newState.fetchStatus === \"fetching\";\n\t\tconst isPending = status === \"pending\";\n\t\tconst isError = status === \"error\";\n\t\tconst isLoading = isPending && isFetching;\n\t\tconst hasData = data !== void 0;\n\t\treturn {\n\t\t\tstatus,\n\t\t\tfetchStatus: newState.fetchStatus,\n\t\t\tisPending,\n\t\t\tisSuccess: status === \"success\",\n\t\t\tisError,\n\t\t\tisInitialLoading: isLoading,\n\t\t\tisLoading,\n\t\t\tdata,\n\t\t\tdataUpdatedAt: newState.dataUpdatedAt,\n\t\t\terror,\n\t\t\terrorUpdatedAt,\n\t\t\tfailureCount: newState.fetchFailureCount,\n\t\t\tfailureReason: newState.fetchFailureReason,\n\t\t\terrorUpdateCount: newState.errorUpdateCount,\n\t\t\tisFetched: query.isFetched(),\n\t\t\tisFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n\t\t\tisFetching,\n\t\t\tisRefetching: isFetching && !isPending,\n\t\t\tisLoadingError: isError && !hasData,\n\t\t\tisPaused: newState.fetchStatus === \"paused\",\n\t\t\tisPlaceholderData,\n\t\t\tisRefetchError: isError && hasData,\n\t\t\tisStale: isStale(query, options),\n\t\t\trefetch: this.refetch,\n\t\t\tisEnabled: resolveQueryValue(options.enabled, query) !== false\n\t\t};\n\t}\n\tupdateResult() {\n\t\tconst prevResult = this.#currentResult;\n\t\tconst nextResult = this.createResult(this.#currentQuery, this.options);\n\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\tthis.#currentResultOptions = this.options;\n\t\tif (this.#currentResultState.data !== void 0) this.#lastQueryWithDefinedData = this.#currentQuery;\n\t\tif (shallowEqualObjects(nextResult, prevResult)) return;\n\t\tthis.#currentResult = nextResult;\n\t\tconst shouldNotifyListeners = () => {\n\t\t\tif (!prevResult) return true;\n\t\t\tconst { notifyOnChangeProps } = this.options;\n\t\t\tconst notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n\t\t\tif (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) return true;\n\t\t\tconst includedProps = new Set(notifyOnChangePropsValue ?? this.#trackedProps);\n\t\t\tif (this.options.throwOnError) includedProps.add(\"error\");\n\t\t\treturn Object.keys(this.#currentResult).some((key) => {\n\t\t\t\tconst typedKey = key;\n\t\t\t\treturn this.#currentResult[typedKey] !== prevResult[typedKey] && includedProps.has(typedKey);\n\t\t\t});\n\t\t};\n\t\tconst notifyListeners = shouldNotifyListeners();\n\t\tnotifyManager.batch(() => {\n\t\t\tif (notifyListeners) this.listeners.forEach((listener) => {\n\t\t\t\tlistener(this.#currentResult);\n\t\t\t});\n\t\t\tthis.#client.getQueryCache().notify({\n\t\t\t\tquery: this.#currentQuery,\n\t\t\t\ttype: \"observerResultsUpdated\"\n\t\t\t});\n\t\t});\n\t}\n\t#updateQuery() {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, this.options);\n\t\tif (query === this.#currentQuery) return;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.#currentQuery = query;\n\t\tthis.#currentQueryInitialState = query.state;\n\t\tif (this.hasListeners()) {\n\t\t\tprevQuery?.removeObserver(this);\n\t\t\tquery.addObserver(this);\n\t\t}\n\t}\n\tonQueryUpdate() {\n\t\tthis.updateResult();\n\t\tif (this.hasListeners()) this.#updateTimers();\n\t}\n};\nfunction shouldLoadOnMount(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryValue(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n\treturn shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n\tif (resolveQueryValue(options.enabled, query) !== false && resolveQueryValue(options.staleTime, query) !== \"static\") {\n\t\tconst value = typeof field === \"function\" ? field(query) : field;\n\t\treturn value === \"always\" || value !== false && isStale(query, options);\n\t}\n\treturn false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n\treturn (query !== prevQuery || resolveQueryValue(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.isStaleByTime(resolveQueryValue(options.staleTime, query));\n}\n//#endregion\nexport { QueryObserver };\n\n//# sourceMappingURL=queryObserver.js.map","import { notifyManager } from \"./notifyManager.js\";\nimport { createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\n//#region src/mutation.ts\nvar Mutation = class extends Removable {\n\t#client;\n\t#observers;\n\t#mutationCache;\n\t#retryer;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#client = config.client;\n\t\tthis.mutationId = config.mutationId;\n\t\tthis.#mutationCache = config.mutationCache;\n\t\tthis.#observers = [];\n\t\tthis.state = config.state || getDefaultState();\n\t\tthis.setOptions(config.options);\n\t\tthis.scheduleGc();\n\t}\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t}\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\taddObserver(observer) {\n\t\tif (!this.#observers.includes(observer)) {\n\t\t\tthis.#observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tmutation: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\tremoveObserver(observer) {\n\t\tthis.#observers = this.#observers.filter((x) => x !== observer);\n\t\tthis.scheduleGc();\n\t\tthis.#mutationCache.notify({\n\t\t\ttype: \"observerRemoved\",\n\t\t\tmutation: this,\n\t\t\tobserver\n\t\t});\n\t}\n\toptionalRemove() {\n\t\tif (!this.#observers.length) {\n\t\t\tif (this.state.status === \"pending\") this.scheduleGc();\n\t\t\telse this.#mutationCache.remove(this);\n\t\t}\n\t}\n\tcontinue() {\n\t\treturn this.#retryer?.continue() ?? (this.state.status === \"pending\" ? this.execute(this.state.variables) : Promise.resolve());\n\t}\n\tasync execute(variables) {\n\t\tconst onContinue = () => {\n\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t};\n\t\tconst mutationFnContext = {\n\t\t\tclient: this.#client,\n\t\t\tmeta: this.options.meta,\n\t\t\tmutationKey: this.options.mutationKey\n\t\t};\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tfn: () => {\n\t\t\t\tif (!this.options.mutationFn) return Promise.reject(/* @__PURE__ */ new Error(\"No mutationFn found\"));\n\t\t\t\treturn this.options.mutationFn(variables, mutationFnContext);\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue,\n\t\t\tretry: this.options.retry ?? 0,\n\t\t\tretryDelay: this.options.retryDelay,\n\t\t\tnetworkMode: this.options.networkMode,\n\t\t\tcanRun: () => this.#mutationCache.canRun(this)\n\t\t});\n\t\tconst restored = this.state.status === \"pending\";\n\t\tconst isPaused = !retryer.canStart();\n\t\ttry {\n\t\t\tif (restored) onContinue();\n\t\t\telse {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t\tif (this.#mutationCache.config.onMutate) await this.#mutationCache.config.onMutate(variables, this, mutationFnContext);\n\t\t\t\tconst context = await this.options.onMutate?.(variables, mutationFnContext);\n\t\t\t\tif (context !== this.state.context) this.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tcontext,\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst data = await retryer.start();\n\t\t\tawait this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSuccess?.(data, variables, this.state.context, mutationFnContext);\n\t\t\tawait this.#mutationCache.config.onSettled?.(data, null, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSettled?.(data, null, variables, this.state.context, mutationFnContext);\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"success\",\n\t\t\t\tdata\n\t\t\t});\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onError?.(error, variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onError?.(error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onSettled?.(void 0, error, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onSettled?.(void 0, error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.#mutationCache.runNext(this);\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfailureCount: action.failureCount,\n\t\t\t\t\tfailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: true\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"pending\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tcontext: action.context,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tisPaused: action.isPaused,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tvariables: action.variables,\n\t\t\t\t\tsubmittedAt: Date.now()\n\t\t\t\t};\n\t\t\t\tcase \"success\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: action.data,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"error\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\terror: action.error,\n\t\t\t\t\tfailureCount: state.failureCount + 1,\n\t\t\t\t\tfailureReason: action.error,\n\t\t\t\t\tisPaused: false,\n\t\t\t\t\tstatus: \"error\"\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#observers.forEach((observer) => {\n\t\t\t\tobserver.onMutationUpdate(action);\n\t\t\t});\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\tmutation: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\nfunction getDefaultState() {\n\treturn {\n\t\tcontext: void 0,\n\t\tdata: void 0,\n\t\terror: null,\n\t\tfailureCount: 0,\n\t\tfailureReason: null,\n\t\tisPaused: false,\n\t\tstatus: \"idle\",\n\t\tvariables: void 0,\n\t\tsubmittedAt: 0\n\t};\n}\n//#endregion\nexport { Mutation, getDefaultState };\n\n//# sourceMappingURL=mutation.js.map","import { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\n//#region src/mutationCache.ts\nvar MutationCache = class extends Subscribable {\n\t#mutations;\n\t#scopes;\n\t#mutationId;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#mutations = /* @__PURE__ */ new Set();\n\t\tthis.#scopes = /* @__PURE__ */ new Map();\n\t\tthis.#mutationId = 0;\n\t}\n\tbuild(client, options, state) {\n\t\tconst mutation = new Mutation({\n\t\t\tclient,\n\t\t\tmutationCache: this,\n\t\t\tmutationId: ++this.#mutationId,\n\t\t\toptions: client.defaultMutationOptions(options),\n\t\t\tstate\n\t\t});\n\t\tthis.add(mutation);\n\t\treturn mutation;\n\t}\n\tadd(mutation) {\n\t\tthis.#mutations.add(mutation);\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\tif (scopedMutations) scopedMutations.push(mutation);\n\t\t\telse this.#scopes.set(scope, [mutation]);\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"added\",\n\t\t\tmutation\n\t\t});\n\t}\n\tremove(mutation) {\n\t\tif (this.#mutations.delete(mutation)) {\n\t\t\tconst scope = scopeFor(mutation);\n\t\t\tif (typeof scope === \"string\") {\n\t\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\t\tif (scopedMutations) {\n\t\t\t\t\tif (scopedMutations.length > 1) {\n\t\t\t\t\t\tconst index = scopedMutations.indexOf(mutation);\n\t\t\t\t\t\tif (index !== -1) scopedMutations.splice(index, 1);\n\t\t\t\t\t} else if (scopedMutations[0] === mutation) this.#scopes.delete(scope);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"removed\",\n\t\t\tmutation\n\t\t});\n\t}\n\tcanRun(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst firstPendingMutation = this.#scopes.get(scope)?.find((m) => m.state.status === \"pending\");\n\t\t\treturn !firstPendingMutation || firstPendingMutation === mutation;\n\t\t} else return true;\n\t}\n\trunNext(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") return (this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused))?.continue() ?? Promise.resolve();\n\t\telse return Promise.resolve();\n\t}\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#mutations.forEach((mutation) => {\n\t\t\t\tthis.notify({\n\t\t\t\t\ttype: \"removed\",\n\t\t\t\t\tmutation\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.#mutations.clear();\n\t\t\tthis.#scopes.clear();\n\t\t});\n\t}\n\tgetAll() {\n\t\treturn Array.from(this.#mutations);\n\t}\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((mutation) => matchMutation(defaultedFilters, mutation));\n\t}\n\tfindAll(filters = {}) {\n\t\treturn this.getAll().filter((mutation) => matchMutation(filters, mutation));\n\t}\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\tresumePausedMutations() {\n\t\tconst pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n\t\treturn notifyManager.batch(() => Promise.all(pausedMutations.map((mutation) => mutation.continue().catch(noop))));\n\t}\n};\nfunction scopeFor(mutation) {\n\treturn mutation.options.scope?.id;\n}\n//#endregion\nexport { MutationCache };\n\n//# sourceMappingURL=mutationCache.js.map","import { hashKey, shallowEqualObjects } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { getDefaultState } from \"./mutation.js\";\n//#region src/mutationObserver.ts\nvar MutationObserver = class extends Subscribable {\n\t#client;\n\t#currentResult = void 0;\n\t#currentMutation;\n\t#mutateOptions;\n\tconstructor(client, options) {\n\t\tsuper();\n\t\tthis.#client = client;\n\t\tthis.setOptions(options);\n\t\tthis.bindMethods();\n\t\tthis.#updateResult();\n\t}\n\tbindMethods() {\n\t\tthis.mutate = this.mutate.bind(this);\n\t\tthis.reset = this.reset.bind(this);\n\t}\n\tsetOptions(options) {\n\t\tconst prevOptions = this.options;\n\t\tthis.options = this.#client.defaultMutationOptions(options);\n\t\tif (!shallowEqualObjects(this.options, prevOptions)) this.#client.getMutationCache().notify({\n\t\t\ttype: \"observerOptionsUpdated\",\n\t\t\tmutation: this.#currentMutation,\n\t\t\tobserver: this\n\t\t});\n\t\tif (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) this.reset();\n\t\telse if (this.#currentMutation?.state.status === \"pending\") this.#currentMutation.setOptions(this.options);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1 && this.#currentMutation) {\n\t\t\tthis.#currentMutation.addObserver(this);\n\t\t\tthis.#updateResult();\n\t\t}\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) this.#currentMutation?.removeObserver(this);\n\t}\n\tonMutationUpdate(action) {\n\t\tthis.#updateResult();\n\t\tthis.#notify(action);\n\t}\n\tgetCurrentResult() {\n\t\treturn this.#currentResult;\n\t}\n\treset() {\n\t\tthis.#currentMutation?.removeObserver(this);\n\t\tthis.#currentMutation = void 0;\n\t\tthis.#updateResult();\n\t\tthis.#notify();\n\t}\n\tmutate(variables, options) {\n\t\tthis.#mutateOptions = options;\n\t\tthis.#currentMutation?.removeObserver(this);\n\t\tthis.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n\t\tthis.#currentMutation.addObserver(this);\n\t\treturn this.#currentMutation.execute(variables);\n\t}\n\t#updateResult() {\n\t\tconst state = this.#currentMutation?.state ?? getDefaultState();\n\t\tthis.#currentResult = {\n\t\t\t...state,\n\t\t\tisPending: state.status === \"pending\",\n\t\t\tisSuccess: state.status === \"success\",\n\t\t\tisError: state.status === \"error\",\n\t\t\tisIdle: state.status === \"idle\",\n\t\t\tmutate: this.mutate,\n\t\t\treset: this.reset\n\t\t};\n\t}\n\t#notify(action) {\n\t\tnotifyManager.batch(() => {\n\t\t\tif (this.#mutateOptions && this.hasListeners()) {\n\t\t\t\tconst variables = this.#currentResult.variables;\n\t\t\t\tconst onMutateResult = this.#currentResult.context;\n\t\t\t\tconst context = {\n\t\t\t\t\tclient: this.#client,\n\t\t\t\t\tmeta: this.options.meta,\n\t\t\t\t\tmutationKey: this.options.mutationKey\n\t\t\t\t};\n\t\t\t\tif (action?.type === \"success\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.#mutateOptions.onSuccess?.(action.data, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.#mutateOptions.onSettled?.(action.data, null, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t} else if (action?.type === \"error\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.#mutateOptions.onError?.(action.error, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.#mutateOptions.onSettled?.(void 0, action.error, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(this.#currentResult);\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\nexport { MutationObserver };\n\n//# sourceMappingURL=mutationObserver.js.map","import { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Query } from \"./query.js\";\n//#region src/queryCache.ts\nvar QueryCache = class extends Subscribable {\n\t#queries;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#queries = /* @__PURE__ */ new Map();\n\t}\n\tbuild(client, options, state) {\n\t\tconst queryKey = options.queryKey;\n\t\tconst queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n\t\tlet query = this.get(queryHash);\n\t\tif (!query) {\n\t\t\tquery = new Query({\n\t\t\t\tclient,\n\t\t\t\tqueryKey,\n\t\t\t\tqueryHash,\n\t\t\t\toptions: client.defaultQueryOptions(options),\n\t\t\t\tstate,\n\t\t\t\tdefaultOptions: client.getQueryDefaults(queryKey)\n\t\t\t});\n\t\t\tthis.add(query);\n\t\t}\n\t\treturn query;\n\t}\n\tadd(query) {\n\t\tif (!this.#queries.has(query.queryHash)) {\n\t\t\tthis.#queries.set(query.queryHash, query);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"added\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\tremove(query) {\n\t\tconst queryInMap = this.#queries.get(query.queryHash);\n\t\tif (queryInMap) {\n\t\t\tquery.destroy();\n\t\t\tif (queryInMap === query) this.#queries.delete(query.queryHash);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"removed\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tthis.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\tget(queryHash) {\n\t\treturn this.#queries.get(queryHash);\n\t}\n\tgetAll() {\n\t\treturn [...this.#queries.values()];\n\t}\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((query) => matchQuery(defaultedFilters, query));\n\t}\n\tfindAll(filters = {}) {\n\t\tconst queries = this.getAll();\n\t\treturn Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n\t}\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\tonFocus() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onFocus();\n\t\t\t});\n\t\t});\n\t}\n\tonOnline() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onOnline();\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\nexport { QueryCache };\n\n//# sourceMappingURL=queryCache.js.map","import { functionalUpdate, hashKey, hashQueryKeyByOptions, noop, partialMatchKey, resolveQueryValue, skipToken } from \"./utils.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { QueryCache } from \"./queryCache.js\";\n//#region src/queryClient.ts\nvar QueryClient = class {\n\t#queryCache;\n\t#mutationCache;\n\t#defaultOptions;\n\t#queryDefaults;\n\t#mutationDefaults;\n\t#mountCount;\n\t#unsubscribeFocus;\n\t#unsubscribeOnline;\n\tconstructor(config = {}) {\n\t\tthis.#queryCache = config.queryCache || new QueryCache();\n\t\tthis.#mutationCache = config.mutationCache || new MutationCache();\n\t\tthis.#defaultOptions = config.defaultOptions || {};\n\t\tthis.#queryDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mutationDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mountCount = 0;\n\t}\n\tmount() {\n\t\tthis.#mountCount++;\n\t\tif (this.#mountCount !== 1) return;\n\t\tthis.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n\t\t\tif (focused) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onFocus();\n\t\t\t}\n\t\t});\n\t\tthis.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n\t\t\tif (online) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onOnline();\n\t\t\t}\n\t\t});\n\t}\n\tunmount() {\n\t\tthis.#mountCount--;\n\t\tif (this.#mountCount !== 0) return;\n\t\tthis.#unsubscribeFocus?.();\n\t\tthis.#unsubscribeFocus = void 0;\n\t\tthis.#unsubscribeOnline?.();\n\t\tthis.#unsubscribeOnline = void 0;\n\t}\n\tisFetching(filters) {\n\t\treturn this.#queryCache.findAll({\n\t\t\t...filters,\n\t\t\tfetchStatus: \"fetching\"\n\t\t}).length;\n\t}\n\tisMutating(filters) {\n\t\treturn this.#mutationCache.findAll({\n\t\t\t...filters,\n\t\t\tstatus: \"pending\"\n\t\t}).length;\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve data for a QueryKey.\n\t* Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n\t*\n\t* Hint: Do not use this function inside a component, because it won't receive updates.\n\t* Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n\t*/\n\tgetQueryData(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state.data;\n\t}\n\t/**\n\t* @deprecated Use queryClient.query({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureQueryData(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst cachedData = query.state.data;\n\t\tif (cachedData === void 0) return this.fetchQuery(options);\n\t\tif (options.revalidateIfStale && query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query))) this.prefetchQuery(defaultedOptions);\n\t\treturn Promise.resolve(cachedData);\n\t}\n\tgetQueriesData(filters) {\n\t\treturn this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n\t\t\treturn [queryKey, state.data];\n\t\t});\n\t}\n\tsetQueryData(queryKey, updater, options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions({ queryKey });\n\t\tconst prevData = this.#queryCache.get(defaultedOptions.queryHash)?.state.data;\n\t\tconst data = functionalUpdate(updater, prevData);\n\t\tif (data === void 0) return;\n\t\treturn this.#queryCache.build(this, defaultedOptions).setData(data, {\n\t\t\t...options,\n\t\t\tmanual: true\n\t\t});\n\t}\n\tsetQueriesData(filters, updater, options) {\n\t\treturn notifyManager.batch(() => this.#queryCache.findAll(filters).map(({ queryKey }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n\t}\n\tgetQueryState(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state;\n\t}\n\tremoveQueries(filters) {\n\t\tconst queryCache = this.#queryCache;\n\t\tnotifyManager.batch(() => {\n\t\t\tqueryCache.findAll(filters).forEach((query) => {\n\t\t\t\tqueryCache.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\tresetQueries(filters, options) {\n\t\tconst queryCache = this.#queryCache;\n\t\treturn notifyManager.batch(() => {\n\t\t\tconst matched = queryCache.findAll(filters);\n\t\t\tconst queriesToRefetch = new Set(matched);\n\t\t\tmatched.forEach((query) => {\n\t\t\t\tquery.reset();\n\t\t\t});\n\t\t\treturn this.refetchQueries({\n\t\t\t\ttype: \"active\",\n\t\t\t\tpredicate: (query) => queriesToRefetch.has(query)\n\t\t\t}, options);\n\t\t});\n\t}\n\tcancelQueries(filters, cancelOptions = {}) {\n\t\tconst defaultedCancelOptions = {\n\t\t\trevert: true,\n\t\t\t...cancelOptions\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions)));\n\t\treturn Promise.all(promises).then(noop).catch(noop);\n\t}\n\tinvalidateQueries(filters, options = {}) {\n\t\treturn notifyManager.batch(() => {\n\t\t\tthis.#queryCache.findAll(filters).forEach((query) => {\n\t\t\t\tquery.invalidate();\n\t\t\t});\n\t\t\tif (filters?.refetchType === \"none\") return Promise.resolve();\n\t\t\treturn this.refetchQueries({\n\t\t\t\t...filters,\n\t\t\t\ttype: filters?.refetchType ?? filters?.type ?? \"active\"\n\t\t\t}, options);\n\t\t});\n\t}\n\trefetchQueries(filters, options = {}) {\n\t\tconst fetchOptions = {\n\t\t\t...options,\n\t\t\tcancelRefetch: options.cancelRefetch ?? true\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n\t\t\tlet promise = query.fetch(void 0, fetchOptions);\n\t\t\tif (!fetchOptions.throwOnError) promise = promise.catch(noop);\n\t\t\treturn query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n\t\t}));\n\t\treturn Promise.all(promises).then(noop);\n\t}\n\tasync query(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst queryData = query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? await query.fetch(defaultedOptions) : query.state.data;\n\t\tconst select = defaultedOptions.select;\n\t\tif (select) return select(queryData);\n\t\treturn queryData;\n\t}\n\t/**\n\t* @deprecated Use queryClient.query(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchQuery(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\treturn query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n\t}\n\t/**\n\t* @deprecated Use queryClient.query(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchQuery(options) {\n\t\treturn this.fetchQuery(options).then(noop).catch(noop);\n\t}\n\tinfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.query(options);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchInfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.fetchQuery(options);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchInfiniteQuery(options) {\n\t\treturn this.fetchInfiniteQuery(options).then(noop).catch(noop);\n\t}\n\t/**\n\t* @deprecated Use queryClient.infiniteQuery({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureInfiniteQueryData(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.ensureQueryData(options);\n\t}\n\tresumePausedMutations() {\n\t\tif (onlineManager.isOnline()) return this.#mutationCache.resumePausedMutations();\n\t\treturn Promise.resolve();\n\t}\n\tgetQueryCache() {\n\t\treturn this.#queryCache;\n\t}\n\tgetMutationCache() {\n\t\treturn this.#mutationCache;\n\t}\n\tgetDefaultOptions() {\n\t\treturn this.#defaultOptions;\n\t}\n\tsetDefaultOptions(options) {\n\t\tthis.#defaultOptions = options;\n\t}\n\tsetQueryDefaults(queryKey, options) {\n\t\tthis.#queryDefaults.set(hashKey(queryKey), {\n\t\t\tqueryKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\tgetQueryDefaults(queryKey) {\n\t\tconst defaults = [...this.#queryDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(queryKey, queryDefault.queryKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\tsetMutationDefaults(mutationKey, options) {\n\t\tthis.#mutationDefaults.set(hashKey(mutationKey), {\n\t\t\tmutationKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\tgetMutationDefaults(mutationKey) {\n\t\tconst defaults = [...this.#mutationDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(mutationKey, queryDefault.mutationKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\tdefaultQueryOptions(options) {\n\t\tif (options._defaulted) return options;\n\t\tconst defaultedOptions = {\n\t\t\t...this.#defaultOptions.queries,\n\t\t\t...this.getQueryDefaults(options.queryKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t\tif (!defaultedOptions.queryHash) defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n\t\tif (defaultedOptions.refetchOnReconnect === void 0) defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n\t\tif (defaultedOptions.throwOnError === void 0) defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n\t\tif (!defaultedOptions.networkMode && defaultedOptions.persister) defaultedOptions.networkMode = \"offlineFirst\";\n\t\tif (defaultedOptions.queryFn === skipToken) defaultedOptions.enabled = false;\n\t\treturn defaultedOptions;\n\t}\n\tdefaultMutationOptions(options) {\n\t\tif (options?._defaulted) return options;\n\t\treturn {\n\t\t\t...this.#defaultOptions.mutations,\n\t\t\t...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t}\n\tclear() {\n\t\tthis.#queryCache.clear();\n\t\tthis.#mutationCache.clear();\n\t}\n};\n//#endregion\nexport { QueryClient };\n\n//# sourceMappingURL=queryClient.js.map","\"use client\";\nimport * as React from \"react\";\n//#region src/IsRestoringProvider.ts\nconst IsRestoringContext = React.createContext(false);\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\nconst IsRestoringProvider = IsRestoringContext.Provider;\n//#endregion\nexport { IsRestoringProvider, useIsRestoring };\n\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryErrorResetBoundary.tsx\nfunction createValue() {\n\tlet isReset = false;\n\treturn {\n\t\tclearReset: () => {\n\t\t\tisReset = false;\n\t\t},\n\t\treset: () => {\n\t\t\tisReset = true;\n\t\t},\n\t\tisReset: () => {\n\t\t\treturn isReset;\n\t\t}\n\t};\n}\nconst QueryErrorResetBoundaryContext = React.createContext(createValue());\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nconst QueryErrorResetBoundary = ({ children }) => {\n\tconst [value] = React.useState(() => createValue());\n\treturn /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, {\n\t\tvalue,\n\t\tchildren: typeof children === \"function\" ? children(value) : children\n\t});\n};\n//#endregion\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary };\n\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\n//#region src/errorBoundaryUtils.ts\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n\tconst throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n\tif (options.suspense || throwOnError) {\n\t\tif (!errorResetBoundary.isReset()) options.retryOnMount = false;\n\t}\n};\nconst useClearResetErrorBoundary = (errorResetBoundary) => {\n\tReact.useEffect(() => {\n\t\terrorResetBoundary.clearReset();\n\t}, [errorResetBoundary]);\n};\nconst getHasError = ({ result, errorResetBoundary, throwOnError, query, suspense }) => {\n\treturn result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\n//#endregion\nexport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary };\n\n//# sourceMappingURL=errorBoundaryUtils.js.map","//#region src/suspense.ts\nconst defaultThrowOnError = (_error, query) => query.state.data === void 0;\nconst ensureSuspenseTimers = (defaultedOptions) => {\n\tif (defaultedOptions.suspense) {\n\t\tconst MIN_SUSPENSE_TIME_MS = 1e3;\n\t\tconst clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n\t\tconst originalStaleTime = defaultedOptions.staleTime;\n\t\tdefaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n\t\tif (typeof defaultedOptions.gcTime === \"number\") defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, MIN_SUSPENSE_TIME_MS);\n\t}\n};\nconst shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n\terrorResetBoundary.clearReset();\n});\n//#endregion\nexport { defaultThrowOnError, ensureSuspenseTimers, fetchOptimistic, shouldSuspend };\n\n//# sourceMappingURL=suspense.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary } from \"./errorBoundaryUtils.js\";\nimport { ensureSuspenseTimers, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nimport * as React from \"react\";\nimport { noop, notifyManager } from \"@tanstack/query-core\";\n//#region src/useBaseQuery.ts\nfunction useBaseQuery(options, Observer, queryClient) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (typeof options !== \"object\" || Array.isArray(options)) throw new Error(\"Bad argument type. Starting with v5, only the \\\"Object\\\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object\");\n\t}\n\tconst isRestoring = useIsRestoring();\n\tconst errorResetBoundary = useQueryErrorResetBoundary();\n\tconst client = useQueryClient(queryClient);\n\tconst defaultedOptions = client.defaultQueryOptions(options);\n\tconst query = client.getQueryCache().get(defaultedOptions.queryHash);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!defaultedOptions.queryFn) console.error(`[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`);\n\t}\n\tconst subscribed = options.subscribed !== false;\n\tdefaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n\tensureSuspenseTimers(defaultedOptions);\n\tensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n\tuseClearResetErrorBoundary(errorResetBoundary);\n\tconst [observer] = React.useState(() => new Observer(client, defaultedOptions));\n\tconst result = observer.getOptimisticResult(defaultedOptions);\n\tconst shouldSubscribe = !isRestoring && subscribed;\n\tReact.useSyncExternalStore(React.useCallback((onStoreChange) => {\n\t\tconst unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n\t\tobserver.updateResult();\n\t\treturn unsubscribe;\n\t}, [observer, shouldSubscribe]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tReact.useEffect(() => {\n\t\tobserver.setOptions(defaultedOptions);\n\t}, [defaultedOptions, observer]);\n\tif (shouldSuspend(defaultedOptions, result)) throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n\tif (getHasError({\n\t\tresult,\n\t\terrorResetBoundary,\n\t\tthrowOnError: defaultedOptions.throwOnError,\n\t\tquery,\n\t\tsuspense: defaultedOptions.suspense\n\t})) throw result.error;\n\treturn !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n//#endregion\nexport { useBaseQuery };\n\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nimport { QueryObserver } from \"@tanstack/query-core\";\n//#region src/useQuery.ts\nfunction useQuery(options, queryClient) {\n\treturn useBaseQuery(options, QueryObserver, queryClient);\n}\n//#endregion\nexport { useQuery };\n\n//# sourceMappingURL=useQuery.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport * as React from \"react\";\nimport { MutationObserver, noop, notifyManager, shouldThrowError } from \"@tanstack/query-core\";\n//#region src/useMutation.ts\nfunction useMutation(options, queryClient) {\n\tconst client = useQueryClient(queryClient);\n\tconst [observer] = React.useState(() => new MutationObserver(client, options));\n\tReact.useEffect(() => {\n\t\tobserver.setOptions(options);\n\t}, [observer, options]);\n\tconst result = React.useSyncExternalStore(React.useCallback((onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tconst mutate = React.useCallback((...args) => {\n\t\tobserver.mutate(args[0], args[1]).catch(noop);\n\t}, [observer]);\n\tif (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) throw result.error;\n\treturn {\n\t\t...result,\n\t\tmutate,\n\t\tmutateAsync: result.mutate\n\t};\n}\n//#endregion\nexport { useMutation };\n\n//# sourceMappingURL=useMutation.js.map","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  needsPaint = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_requestPaint = function () {\n  needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.2.8\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n  if (31 === fiber.tag) {\n    var activityState = fiber.memoizedState;\n    null === activityState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (activityState = fiber.memoizedState));\n    if (null !== activityState) return activityState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar assign = Object.assign,\n  REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return type.displayName || \"Context\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$1) {\n                control = x$1;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$2) {\n              control = x$2;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return fiber.child !== childFiber && null !== childFiber\n        ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n        : describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\",\n      previous = null;\n    do\n      (info += describeFiber(workInProgress, previous)),\n        (previous = workInProgress),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n  nextTransitionDeferredLane = 262144,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n      return lanes & 261888;\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 3932160;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$7 = 31 - clz32(remainingLanes),\n      lane = 1 << index$7;\n    entanglements[index$7] = 0;\n    expirationTimes[index$7] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$7];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$7] = null, index$7 = 0;\n        index$7 < hiddenUpdatesForLane.length;\n        index$7++\n      ) {\n        var update = hiddenUpdatesForLane[index$7];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$8 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$8;\n    (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n      (root[index$8] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = renderLanes & -renderLanes;\n  renderLane =\n    0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n  return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n    ? 0\n    : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n  switch (lane) {\n    case 2:\n      lane = 1;\n      break;\n    case 8:\n      lane = 4;\n      break;\n    case 32:\n      lane = 16;\n      break;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      lane = 128;\n      break;\n    case 268435456:\n      lane = 134217728;\n      break;\n    default:\n      lane = 0;\n  }\n  return lane;\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentHydrationBoundary(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentHydrationBoundary(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      31 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[: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]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$10 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n  var descriptor = Object.getOwnPropertyDescriptor(\n    node.constructor.prototype,\n    valueField\n  );\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  if (!node._valueTracker) {\n    var valueField = isCheckable(node) ? \"checked\" : \"value\";\n    node._valueTracker = trackValueOnNode(\n      node,\n      valueField,\n      \"\" + node[valueField]\n    );\n  }\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    ) {\n      track(element);\n      return;\n    }\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n  track(element);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n  track(element);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$286;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_427 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_427) {\n      var element$jscomp$inline_428 = document.createElement(\"div\");\n      element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_427 =\n        \"function\" === typeof element$jscomp$inline_428.oninput;\n    }\n    JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n  } else JSCompiler_inline_result$jscomp$286 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$286 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle 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(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n    \"function\" === typeof reportError\n      ? reportError\n      : function (error) {\n          if (\n            \"object\" === typeof window &&\n            \"function\" === typeof window.ErrorEvent\n          ) {\n            var event = new window.ErrorEvent(\"error\", {\n              bubbles: !0,\n              cancelable: !0,\n              message:\n                \"object\" === typeof error &&\n                null !== error &&\n                \"string\" === typeof error.message\n                  ? String(error.message)\n                  : String(error),\n              error: error\n            });\n            if (!window.dispatchEvent(event)) return;\n          } else if (\n            \"object\" === typeof process &&\n            \"function\" === typeof process.emit\n          ) {\n            process.emit(\"uncaughtException\", error);\n            return;\n          }\n          console.error(error);\n        },\n  concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 65011712;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 65011714;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiberImplClass(18, null, null, 0);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(\n    formatProdErrorMessage(\n      418,\n      1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n        ? \"text\"\n        : \"HTML\",\n      \"\"\n    )\n  );\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 31:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else if (31 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\n      : (nextHydratableInstance = hydrationParentFiber\n          ? getNextHydratable(fiber.stateNode.nextSibling)\n          : null);\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n  var queuedErrors = hydrationErrors;\n  null !== queuedErrors &&\n    (null === workInProgressRootRecoverableErrors\n      ? (workInProgressRootRecoverableErrors = queuedErrors)\n      : workInProgressRootRecoverableErrors.push.apply(\n          workInProgressRootRecoverableErrors,\n          queuedErrors\n        ),\n    (hydrationErrors = null));\n  return queuedErrors;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber$1 = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  globalMostRecentTransitionTime = now();\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  SuspenseActionException = Error(formatProdErrorMessage(542)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw (\n        ((thenableState = thenable.reason),\n        checkIfUseWrappedInAsyncCatch(thenableState),\n        thenableState)\n      );\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nfunction resolveLazy(lazyType) {\n  try {\n    var init = lazyType._init;\n    return init(lazyType._payload);\n  } catch (x) {\n    if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n      throw ((suspendedThenable = x), SuspenseException);\n    throw x;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n  if (\n    rejectedReason === SuspenseException ||\n    rejectedReason === SuspenseActionException\n  )\n    throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n  thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            createChild(returnFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            updateFromMap(\n              existingChildren,\n              returnFiber,\n              newIdx,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter$1 = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState$1 = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException || x === SuspenseActionException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, fiber);\n  null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  22 === fiber.tag\n    ? (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary && (shellBoundary = fiber))\n    : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state ||\n          isSuspenseInstancePending(state) ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (\n      19 === node.tag &&\n      (\"forwards\" === node.memoizedProps.revealOrder ||\n        \"backwards\" === node.memoizedProps.revealOrder ||\n        \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n        \"together\" === node.memoizedProps.revealOrder)\n    ) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter = 0,\n  thenableState = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter = 0;\n  thenableState = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n    thenableIndexCounter = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter = localIdCounter = 0;\n  thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  thenable = trackUsedThenable(thenableState, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$60 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                gesture: null,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$60 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$60 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            gesture: null,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          gesture: update.gesture,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$60 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n    subscribe\n  ]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      { destroy: void 0 },\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 127) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n        (ReactSharedInternals.T = prevTransition);\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$66) {\n      onActionError(actionQueue, node, error$66);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      { destroy: void 0 },\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n  tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((deps = create.next),\n      (create.next = tag),\n      (tag.next = deps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    { destroy: void 0 },\n    create,\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, deps) {\n  mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n  updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n  currentlyRenderingFiber.flags |= 4;\n  var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n  if (null === componentUpdateQueue)\n    (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n      (componentUpdateQueue.events = [payload]);\n  else {\n    var events = componentUpdateQueue.events;\n    null === events\n      ? (componentUpdateQueue.events = [payload])\n      : events.push(payload);\n  }\n}\nfunction updateEvent(callback) {\n  var ref = updateWorkInProgressHook().memoizedState;\n  useEffectEventImpl({ ref: ref, nextImpl: callback });\n  return function () {\n    if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n    return ref.impl.apply(void 0, arguments);\n  };\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (\n    void 0 === initialValue ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (\n    0 === (renderLanes & 42) ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var stateHook = ensureFormComponentIsStateful(formFiber);\n  null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n  dispatchSetStateInternal(\n    formFiber,\n    stateHook.next.queue,\n    {},\n    requestUpdateLane()\n  );\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$69 = enqueueUpdate(provider, fiber, lane);\n        null !== root$69 &&\n          (scheduleUpdateOnFiber(root$69, provider, lane),\n          entangleTransitions(root$69, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  use: use,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError,\n  useHostTransitionStatus: throwInvalidHookError,\n  useFormState: throwInvalidHookError,\n  useActionState: throwInvalidHookError,\n  useOptimistic: throwInvalidHookError,\n  useMemoCache: throwInvalidHookError,\n  useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      if (isHydrating) {\n        if (void 0 === getServerSnapshot)\n          throw Error(formatProdErrorMessage(407));\n        getServerSnapshot = getServerSnapshot();\n      } else {\n        getServerSnapshot = getSnapshot();\n        if (null === workInProgressRoot)\n          throw Error(formatProdErrorMessage(349));\n        0 !== (workInProgressRootRenderLanes & 127) ||\n          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n      }\n      hook.memoizedState = getServerSnapshot;\n      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        { destroy: void 0 },\n        updateStoreInstance.bind(\n          null,\n          fiber,\n          inst,\n          getServerSnapshot,\n          getSnapshot\n        ),\n        null\n      );\n      return getServerSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix;\n      if (isHydrating) {\n        var JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"_\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"_\" +\n            identifierPrefix +\n            \"r_\" +\n            JSCompiler_inline_result.toString(32) +\n            \"_\");\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    },\n    useEffectEvent: function (callback) {\n      var hook = mountWorkInProgressHook(),\n        ref = { impl: callback };\n      hook.memoizedState = ref;\n      return function () {\n        if (0 !== (executionContext & 2))\n          throw Error(formatProdErrorMessage(440));\n        return ref.impl.apply(void 0, arguments);\n      };\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n  readContext: readContext,\n  use: use,\n  useCallback: updateCallback,\n  useContext: readContext,\n  useEffect: updateEffect,\n  useImperativeHandle: updateImperativeHandle,\n  useInsertionEffect: updateInsertionEffect,\n  useLayoutEffect: updateLayoutEffect,\n  useMemo: updateMemo,\n  useReducer: rerenderReducer,\n  useRef: updateRef,\n  useState: function () {\n    return rerenderReducer(basicStateReducer);\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = updateWorkInProgressHook();\n    return null === currentHook\n      ? mountDeferredValueImpl(hook, value, initialValue)\n      : updateDeferredValueImpl(\n          hook,\n          currentHook.memoizedState,\n          value,\n          initialValue\n        );\n  },\n  useTransition: function () {\n    var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n      start = updateWorkInProgressHook().memoizedState;\n    return [\n      \"boolean\" === typeof booleanOrThenable\n        ? booleanOrThenable\n        : useThenable(booleanOrThenable),\n      start\n    ];\n  },\n  useSyncExternalStore: updateSyncExternalStore,\n  useId: updateId,\n  useHostTransitionStatus: useHostTransitionStatus,\n  useFormState: rerenderActionState,\n  useActionState: rerenderActionState,\n  useOptimistic: function (passthrough, reducer) {\n    var hook = updateWorkInProgressHook();\n    if (null !== currentHook)\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    hook.baseState = passthrough;\n    return [passthrough, hook.queue.dispatch];\n  },\n  useMemoCache: useMemoCache,\n  useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$73 in Component)\n      void 0 === newProps[propName$73] &&\n        (newProps[propName$73] = Component[propName$73]);\n  }\n  return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$74) {\n    setTimeout(function () {\n      throw e$74;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$75) {\n    setTimeout(function () {\n      throw e$75;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 31:\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(\n  current,\n  workInProgress,\n  renderLanes,\n  nextProps\n) {\n  var nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  null === current &&\n    null === workInProgress.stateNode &&\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      prevState =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextProps = workInProgress.child = current.child;\n        for (nextChildren = 0; null !== nextProps; )\n          (nextChildren =\n            nextChildren | nextProps.lanes | nextProps.childLanes),\n            (nextProps = nextProps.sibling);\n        nextProps = nextChildren & ~prevState;\n      } else (nextProps = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        prevState,\n        renderLanes,\n        nextProps\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (nextProps = workInProgress.lanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes,\n          nextProps\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n  (null !== current && 22 === current.tag) ||\n    null !== workInProgress.stateNode ||\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes,\n  remainingChildLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  workInProgress.childLanes = remainingChildLanes;\n  return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n  nextProps = mountWorkInProgressOffscreenFiber(\n    { mode: nextProps.mode, children: nextProps.children },\n    workInProgress.mode\n  );\n  nextProps.ref = workInProgress.ref;\n  workInProgress.child = nextProps;\n  nextProps.return = workInProgress;\n  return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n  current.flags |= 2;\n  popSuspenseHandler(workInProgress);\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    didSuspend = 0 !== (workInProgress.flags & 128);\n  workInProgress.flags &= -129;\n  if (null === current) {\n    if (isHydrating) {\n      if (\"hidden\" === nextProps.mode)\n        return (\n          (current = mountActivityChildren(workInProgress, nextProps)),\n          (workInProgress.lanes = 536870912),\n          bailoutOffscreenComponent(null, current)\n        );\n      pushDehydratedActivitySuspenseHandler(workInProgress);\n      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" === current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      workInProgress.lanes = 536870912;\n      return null;\n    }\n    return mountActivityChildren(workInProgress, nextProps);\n  }\n  var prevState = current.memoizedState;\n  if (null !== prevState) {\n    var dehydrated = prevState.dehydrated;\n    pushDehydratedActivitySuspenseHandler(workInProgress);\n    if (didSuspend)\n      if (workInProgress.flags & 256)\n        (workInProgress.flags &= -257),\n          (workInProgress = retryActivityComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          ));\n      else if (null !== workInProgress.memoizedState)\n        (workInProgress.child = current.child),\n          (workInProgress.flags |= 128),\n          (workInProgress = null);\n      else throw Error(formatProdErrorMessage(558));\n    else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (didSuspend = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || didSuspend)\n    ) {\n      nextProps = workInProgressRoot;\n      if (\n        null !== nextProps &&\n        ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n        0 !== dehydrated && dehydrated !== prevState.retryLane)\n      )\n        throw (\n          ((prevState.retryLane = dehydrated),\n          enqueueConcurrentRenderForLane(current, dehydrated),\n          scheduleUpdateOnFiber(nextProps, current, dehydrated),\n          SelectiveHydrationException)\n        );\n      renderDidSuspendDelayIfPossible();\n      workInProgress = retryActivityComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      (current = prevState.treeContext),\n        (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n        (hydrationParentFiber = workInProgress),\n        (isHydrating = !0),\n        (hydrationErrors = null),\n        (rootOrSingletonContext = !1),\n        null !== current &&\n          restoreSuspendedTreeContext(workInProgress, current),\n        (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n        (workInProgress.flags |= 4096);\n    return workInProgress;\n  }\n  current = createWorkInProgress(current.child, {\n    mode: nextProps.mode,\n    children: nextProps.children\n  });\n  current.ref = workInProgress.ref;\n  workInProgress.child = current;\n  current.return = workInProgress;\n  return current;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 4194816;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: 0,\n  hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" !== current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      isSuspenseInstanceFallback(current)\n        ? (workInProgress.lanes = 32)\n        : (workInProgress.lanes = 536870912);\n      return null;\n    }\n    var nextPrimaryChildren = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextPrimaryChildren },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextPrimaryChildren.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextPrimaryChildren.sibling = nextProps),\n        (workInProgress.child = nextPrimaryChildren),\n        (nextProps = workInProgress.child),\n        (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        bailoutOffscreenComponent(null, nextProps)\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n  }\n  var prevState = current.memoizedState;\n  if (\n    null !== prevState &&\n    ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (nextPrimaryChildren = nextProps.fallback),\n            (showFallback = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              showFallback\n            )),\n            (nextPrimaryChildren = createFiberFromFragment(\n              nextPrimaryChildren,\n              showFallback,\n              renderLanes,\n              null\n            )),\n            (nextPrimaryChildren.flags |= 2),\n            (nextProps.return = workInProgress),\n            (nextPrimaryChildren.return = workInProgress),\n            (nextProps.sibling = nextPrimaryChildren),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      isSuspenseInstanceFallback(nextPrimaryChildren))\n    ) {\n      JSCompiler_temp =\n        nextPrimaryChildren.nextSibling &&\n        nextPrimaryChildren.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (\n        null !== JSCompiler_temp &&\n        ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n        0 !== nextProps && nextProps !== prevState.retryLane)\n      )\n        throw (\n          ((prevState.retryLane = nextProps),\n          enqueueConcurrentRenderForLane(current, nextProps),\n          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n          SelectiveHydrationException)\n        );\n      isSuspenseInstancePending(nextPrimaryChildren) ||\n        renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      isSuspenseInstancePending(nextPrimaryChildren)\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((current = prevState.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextPrimaryChildren.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            restoreSuspendedTreeContext(workInProgress, current),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (nextPrimaryChildren = nextProps.fallback),\n      (showFallback = workInProgress.mode),\n      (prevState = current.child),\n      (digest = prevState.sibling),\n      (nextProps = createWorkInProgress(prevState, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n      null !== digest\n        ? (nextPrimaryChildren = createWorkInProgress(\n            digest,\n            nextPrimaryChildren\n          ))\n        : ((nextPrimaryChildren = createFiberFromFragment(\n            nextPrimaryChildren,\n            showFallback,\n            renderLanes,\n            null\n          )),\n          (nextPrimaryChildren.flags |= 2)),\n      (nextPrimaryChildren.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = nextPrimaryChildren),\n      (workInProgress.child = nextProps),\n      bailoutOffscreenComponent(null, nextProps),\n      (nextProps = workInProgress.child),\n      (nextPrimaryChildren = current.child.memoizedState),\n      null === nextPrimaryChildren\n        ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n        : ((showFallback = nextPrimaryChildren.cachePool),\n          null !== showFallback\n            ? ((prevState = CacheContext._currentValue),\n              (showFallback =\n                showFallback.parent !== prevState\n                  ? { parent: prevState, pool: prevState }\n                  : showFallback))\n            : (showFallback = getSuspendedCache()),\n          (nextPrimaryChildren = {\n            baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n            cachePool: showFallback\n          })),\n      (nextProps.memoizedState = nextPrimaryChildren),\n      (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      bailoutOffscreenComponent(current.child, nextProps)\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode,\n  treeForkCount\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode,\n        treeForkCount: treeForkCount\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode),\n      (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  nextProps = nextProps.children;\n  var suspenseContext = suspenseStackCursor.current,\n    shouldForceFallback = 0 !== (suspenseContext & 2);\n  shouldForceFallback\n    ? ((suspenseContext = (suspenseContext & 1) | 2),\n      (workInProgress.flags |= 128))\n    : (suspenseContext &= 1);\n  push(suspenseStackCursor, suspenseContext);\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  nextProps = isHydrating ? treeForkCount : 0;\n  if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n    a: for (current = workInProgress.child; null !== current; ) {\n      if (13 === current.tag)\n        null !== current.memoizedState &&\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n      else if (19 === current.tag)\n        scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n      else if (null !== current.child) {\n        current.child.return = current;\n        current = current.child;\n        continue;\n      }\n      if (current === workInProgress) break a;\n      for (; null === current.sibling; ) {\n        if (null === current.return || current.return === workInProgress)\n          break a;\n        current = current.return;\n      }\n      current.sibling.return = current.return;\n      current = current.sibling;\n    }\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode,\n        nextProps\n      );\n      break;\n    case \"backwards\":\n    case \"unstable_legacy-backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode,\n        nextProps\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        null,\n        null,\n        void 0,\n        nextProps\n      );\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 31:\n      if (null !== workInProgress.memoizedState)\n        return (\n          (workInProgress.flags |= 128),\n          pushDehydratedActivitySuspenseHandler(workInProgress),\n          null\n        );\n      break;\n    case 13:\n      var state$102 = workInProgress.memoizedState;\n      if (null !== state$102) {\n        if (null !== state$102.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n      state$102 ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state$102)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state$102) break;\n      else return null;\n    case 22:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(\n          current,\n          workInProgress,\n          renderLanes,\n          workInProgress.pendingProps\n        )\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        var props = workInProgress.pendingProps;\n        current = resolveLazy(workInProgress.elementType);\n        workInProgress.type = current;\n        if (\"function\" === typeof current)\n          shouldConstruct(current)\n            ? ((props = resolveClassComponentProps(current, props)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== current && null !== current) {\n            var $$typeof = current.$$typeof;\n            if ($$typeof === REACT_FORWARD_REF_TYPE) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            } else if ($$typeof === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            }\n          }\n          workInProgress = getComponentNameFromType(current) || current;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (props = workInProgress.type),\n        ($$typeof = resolveClassComponentProps(\n          props,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          props,\n          $$typeof,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        props = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        $$typeof = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, props, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        props = nextState.cache;\n        pushProvider(workInProgress, CacheContext, props);\n        props !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        props = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: props,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else if (props !== $$typeof) {\n            $$typeof = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError($$typeof);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (props === $$typeof) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(current, workInProgress, props, renderLanes);\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (props = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (props[internalInstanceKey] = workInProgress),\n              (props[internalPropsKey] = current),\n              setInitialProperties(props, renderLanes, current),\n              markNodeAsHoistable(props),\n              (workInProgress.stateNode = props))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((props = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          ($$typeof = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n              (nextHydratableInstance = getNextHydratable(props.firstChild)))\n            : (nextHydratableInstance = $$typeof)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if (($$typeof = props = nextHydratableInstance))\n          (props = canHydrateInstance(\n            props,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== props\n              ? ((workInProgress.stateNode = props),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(props.firstChild)),\n                (rootOrSingletonContext = !1),\n                ($$typeof = !0))\n              : ($$typeof = !1);\n        $$typeof || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      $$typeof = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      props = prevState.children;\n      shouldSetTextContent($$typeof, prevState)\n        ? (props = null)\n        : null !== nextState &&\n          shouldSetTextContent($$typeof, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        (($$typeof = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = $$typeof));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, props, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (props = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            ))\n          : reconcileChildren(current, workInProgress, props, renderLanes),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (props = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, props.value),\n        reconcileChildren(current, workInProgress, props.children, renderLanes),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        ($$typeof = workInProgress.type._context),\n        (props = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        ($$typeof = readContext($$typeof)),\n        (props = props($$typeof)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, props, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return updateActivityComponent(current, workInProgress, renderLanes);\n    case 22:\n      return updateOffscreenComponent(\n        current,\n        workInProgress,\n        renderLanes,\n        workInProgress.pendingProps\n      );\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (props = readContext(CacheContext)),\n        null === current\n          ? (($$typeof = peekCacheFromPool()),\n            null === $$typeof &&\n              (($$typeof = workInProgressRoot),\n              (prevState = createCache()),\n              ($$typeof.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n              ($$typeof = prevState)),\n            (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, $$typeof))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            ($$typeof = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            $$typeof.parent !== props\n              ? (($$typeof = { parent: props, cache: props }),\n                (workInProgress.memoizedState = $$typeof),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      $$typeof),\n                pushProvider(workInProgress, CacheContext, props))\n              : ((props = prevState.cache),\n                pushProvider(workInProgress, CacheContext, props),\n                props !== $$typeof.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n  workInProgress,\n  type,\n  oldProps,\n  newProps,\n  renderLanes\n) {\n  if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n  if (type) {\n    if (\n      ((workInProgress.flags |= 16777216),\n      (renderLanes & 335544128) === renderLanes)\n    )\n      if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n      else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n      else\n        throw (\n          ((suspendedThenable = noopSuspenseyCommitThenable),\n          SuspenseyCommitException)\n        );\n  } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n    if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n    else\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$106 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$106\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$106.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$107 = completedWork.child; null !== child$107; )\n      (newChildLanes |= child$107.lanes | child$107.childLanes),\n        (subtreeFlags |= child$107.subtreeFlags & 65011712),\n        (subtreeFlags |= child$107.flags & 65011712),\n        (child$107.return = completedWork),\n        (child$107 = child$107.sibling);\n  else\n    for (child$107 = completedWork.child; null !== child$107; )\n      (newChildLanes |= child$107.lanes | child$107.childLanes),\n        (subtreeFlags |= child$107.subtreeFlags),\n        (subtreeFlags |= child$107.flags),\n        (child$107.return = completedWork),\n        (child$107 = child$107.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            upgradeHydrationErrorsToRecoverable());\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      var type = workInProgress.type,\n        nextResource = workInProgress.memoizedState;\n      null === current\n        ? (markUpdate(workInProgress),\n          null !== nextResource\n            ? (bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              preloadInstanceAndSuspendIfNeeded(\n                workInProgress,\n                type,\n                null,\n                newProps,\n                renderLanes\n              )))\n        : nextResource\n          ? nextResource !== current.memoizedState\n            ? (markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217))\n          : ((current = current.memoizedProps),\n            current !== newProps && markUpdate(workInProgress),\n            bubbleProperties(workInProgress),\n            preloadInstanceAndSuspendIfNeeded(\n              workInProgress,\n              type,\n              current,\n              newProps,\n              renderLanes\n            ));\n      return null;\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        nextResource = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, nextResource);\n        else {\n          var ownerDocument = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (nextResource) {\n            case 1:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                type\n              );\n              break;\n            case 2:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                type\n              );\n              break;\n            default:\n              switch (type) {\n                case \"svg\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    type\n                  );\n                  break;\n                case \"math\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    type\n                  );\n                  break;\n                case \"script\":\n                  nextResource = ownerDocument.createElement(\"div\");\n                  nextResource.innerHTML = \"<script>\\x3c/script>\";\n                  nextResource = nextResource.removeChild(\n                    nextResource.firstChild\n                  );\n                  break;\n                case \"select\":\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(\"select\", {\n                          is: newProps.is\n                        })\n                      : ownerDocument.createElement(\"select\");\n                  newProps.multiple\n                    ? (nextResource.multiple = !0)\n                    : newProps.size && (nextResource.size = newProps.size);\n                  break;\n                default:\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(type, { is: newProps.is })\n                      : ownerDocument.createElement(type);\n              }\n          }\n          nextResource[internalInstanceKey] = workInProgress;\n          nextResource[internalPropsKey] = newProps;\n          a: for (\n            ownerDocument = workInProgress.child;\n            null !== ownerDocument;\n\n          ) {\n            if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n              nextResource.appendChild(ownerDocument.stateNode);\n            else if (\n              4 !== ownerDocument.tag &&\n              27 !== ownerDocument.tag &&\n              null !== ownerDocument.child\n            ) {\n              ownerDocument.child.return = ownerDocument;\n              ownerDocument = ownerDocument.child;\n              continue;\n            }\n            if (ownerDocument === workInProgress) break a;\n            for (; null === ownerDocument.sibling; ) {\n              if (\n                null === ownerDocument.return ||\n                ownerDocument.return === workInProgress\n              )\n                break a;\n              ownerDocument = ownerDocument.return;\n            }\n            ownerDocument.sibling.return = ownerDocument.return;\n            ownerDocument = ownerDocument.sibling;\n          }\n          workInProgress.stateNode = nextResource;\n          a: switch (\n            (setInitialProperties(nextResource, type, newProps), type)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              newProps = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              newProps = !0;\n              break a;\n            default:\n              newProps = !1;\n          }\n          newProps && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      preloadInstanceAndSuspendIfNeeded(\n        workInProgress,\n        workInProgress.type,\n        null === current ? null : current.memoizedProps,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress, !0);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 31:\n      renderLanes = workInProgress.memoizedState;\n      if (null === current || null !== current.memoizedState) {\n        newProps = popHydrationState(workInProgress);\n        if (null !== renderLanes) {\n          if (null === current) {\n            if (!newProps) throw Error(formatProdErrorMessage(318));\n            current = workInProgress.memoizedState;\n            current = null !== current ? current.dehydrated : null;\n            if (!current) throw Error(formatProdErrorMessage(557));\n            current[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          current = !1;\n        } else\n          (renderLanes = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = renderLanes),\n            (current = !0);\n        if (!current) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n        if (0 !== (workInProgress.flags & 128))\n          throw Error(formatProdErrorMessage(558));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          (type = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = type),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      renderLanes &&\n        ((newProps = workInProgress.child),\n        (type = null),\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool),\n        (nextResource = null),\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (nextResource = newProps.memoizedState.cachePool.pool),\n        nextResource !== type && (newProps.flags |= 2048));\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      newProps = workInProgress.memoizedState;\n      if (null === newProps) return bubbleProperties(workInProgress), null;\n      type = 0 !== (workInProgress.flags & 128);\n      nextResource = newProps.rendering;\n      if (null === nextResource)\n        if (type) cutOffTailIfNeeded(newProps, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              nextResource = findFirstSuspended(current);\n              if (null !== nextResource) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(newProps, !1);\n                current = nextResource.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                isHydrating &&\n                  pushTreeFork(workInProgress, newProps.treeForkCount);\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== newProps.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (type = !0),\n            cutOffTailIfNeeded(newProps, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!type)\n          if (\n            ((current = findFirstSuspended(nextResource)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(newProps, !0),\n              null === newProps.tail &&\n                \"hidden\" === newProps.tailMode &&\n                !nextResource.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - newProps.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              cutOffTailIfNeeded(newProps, !1),\n              (workInProgress.lanes = 4194304));\n        newProps.isBackwards\n          ? ((nextResource.sibling = workInProgress.child),\n            (workInProgress.child = nextResource))\n          : ((current = newProps.last),\n            null !== current\n              ? (current.sibling = nextResource)\n              : (workInProgress.child = nextResource),\n            (newProps.last = nextResource));\n      }\n      if (null !== newProps.tail)\n        return (\n          (current = newProps.tail),\n          (newProps.rendering = current),\n          (newProps.tail = current.sibling),\n          (newProps.renderingStartTime = now()),\n          (current.sibling = null),\n          (renderLanes = suspenseStackCursor.current),\n          push(\n            suspenseStackCursor,\n            type ? (renderLanes & 1) | 2 : renderLanes & 1\n          ),\n          isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n          current\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n    case 30:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 31:\n      if (null !== workInProgress.memoizedState) {\n        popSuspenseHandler(workInProgress);\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 31:\n      null !== interruptedWork.memoizedState &&\n        popSuspenseHandler(interruptedWork);\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n              destroy_ = destroy;\n            try {\n              destroy_();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = current.stateNode;\n          break;\n        case 30:\n          instanceToUse = current.stateNode;\n          break;\n        default:\n          instanceToUse = current.stateNode;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$140) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(node, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(node),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      isSingletonScope(node.type) &&\n      ((parent = node.stateNode), (before = null)),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (\n    4 !== tag &&\n    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            if (\n              0 !== (root & 4) &&\n              ((root = firstChild.updateQueue),\n              (root = null !== root ? root.events : null),\n              null !== root)\n            )\n              for (\n                JSCompiler_temp = 0;\n                JSCompiler_temp < root.length;\n                JSCompiler_temp++\n              )\n                (anchorOffset = root[JSCompiler_temp]),\n                  (anchorOffset.ref.impl = anchorOffset.nextImpl);\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$139) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$139\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 31:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        prevProps = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevProps;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      break;\n    case 30:\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(deletedFiber.stateNode);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearHydrationBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n  ) {\n    finishedRoot = finishedRoot.dehydrated;\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 31:\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    if (!retryCache.has(wakeable)) {\n      retryCache.add(wakeable);\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n      wakeable.then(retry, retry);\n    }\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13886)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href || \"\" === current.href\n                              ? null\n                              : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 31:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      hoistableRoot = null !== finishedWork.memoizedState;\n      var wasHidden = null !== current && null !== current.memoizedState,\n        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = hoistableRoot\n              ? root._visibility & -2\n              : root._visibility | 1,\n            hoistableRoot &&\n              (null === current ||\n                wasHidden ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag || 26 === root.tag) {\n            if (null === current) {\n              wasHidden = current = root;\n              try {\n                if (((currentResource = wasHidden.stateNode), hoistableRoot))\n                  (maybeNodes = currentResource.style),\n                    \"function\" === typeof maybeNodes.setProperty\n                      ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n                      : (maybeNodes.display = \"none\");\n                else {\n                  i = wasHidden.stateNode;\n                  var styleProp = wasHidden.memoizedProps.style,\n                    display =\n                      void 0 !== styleProp &&\n                      null !== styleProp &&\n                      styleProp.hasOwnProperty(\"display\")\n                        ? styleProp.display\n                        : null;\n                  i.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                wasHidden.stateNode.nodeValue = hoistableRoot\n                  ? \"\"\n                  : wasHidden.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (18 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                var instance = wasHidden.stateNode;\n                hoistableRoot\n                  ? hideOrUnhideDehydratedBoundary(instance, !0)\n                  : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 30:\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 5:\n          var parent$141 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n          var before$142 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n          break;\n        case 3:\n        case 4:\n          var parent$143 = hostParentFiber.stateNode.containerInfo,\n            before$144 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$144,\n            parent$143\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 27:\n        releaseSingletonInstance(finishedWork.stateNode);\n      case 26:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 30:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n        commitHostSingletonAcquisition(finishedWork);\n      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 31:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 31:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256) || !1\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects &&\n    (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n  parentFiber,\n  committedLanes,\n  suspendedState\n) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(\n        parentFiber,\n        committedLanes,\n        suspendedState\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n  fiber,\n  committedLanes,\n  suspendedState\n) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          suspendedState,\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(\n              fiber,\n              committedLanes,\n              suspendedState\n            ),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(\n              fiber,\n              committedLanes,\n              suspendedState\n            ));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    },\n    cacheSignal: function () {\n      return readContext(CacheContext).controller.signal;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  globalMostRecentTransitionTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n    ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n    : null !== ReactSharedInternals.T\n      ? requestTransitionLane()\n      : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  if (0 === workInProgressDeferredLane)\n    if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n      var lane = nextTransitionDeferredLane;\n      nextTransitionDeferredLane <<= 1;\n      0 === (nextTransitionDeferredLane & 3932160) &&\n        (nextTransitionDeferredLane = 262144);\n      workInProgressDeferredLane = lane;\n    } else workInProgressDeferredLane = 536870912;\n  lane = suspenseHandlerStackCursor.current;\n  null !== lane && (lane.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 127) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                (null === workInProgressRootRecoverableErrors\n                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n                  : workInProgressRootRecoverableErrors.push.apply(\n                      workInProgressRootRecoverableErrors,\n                      renderWasConcurrent\n                    ));\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        renderWasConcurrent = exitStatus;\n        switch (renderWasConcurrent) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194048) !== lanes) break;\n          case 6:\n            markRootSuspended(\n              shouldTimeSlice,\n              lanes,\n              workInProgressDeferredLane,\n              !workInProgressRootDidSkipSuspendedSiblings\n            );\n            break a;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          pendingEffectsLanes = lanes;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              \"Throttled\",\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          null,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  root.timeoutHandle = -1;\n  suspendedCommitReason = finishedWork.subtreeFlags;\n  if (\n    suspendedCommitReason & 8192 ||\n    16785408 === (suspendedCommitReason & 16785408)\n  ) {\n    suspendedCommitReason = {\n      stylesheets: null,\n      count: 0,\n      imgCount: 0,\n      imgBytes: 0,\n      suspenseyImages: [],\n      waitingForImages: !0,\n      waitingForViewTransition: !1,\n      unsuspend: noop$1\n    };\n    accumulateSuspenseyCommitOnFiber(\n      finishedWork,\n      lanes,\n      suspendedCommitReason\n    );\n    var timeoutOffset =\n      (lanes & 62914560) === lanes\n        ? globalMostRecentFallbackTime - now()\n        : (lanes & 4194048) === lanes\n          ? globalMostRecentTransitionTime - now()\n          : 0;\n    timeoutOffset = waitForCommitToBeReady(\n      suspendedCommitReason,\n      timeoutOffset\n    );\n    if (null !== timeoutOffset) {\n      pendingEffectsLanes = lanes;\n      root.cancelPendingCommit = timeoutOffset(\n        commitRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          exitStatus,\n          suspendedCommitReason,\n          null,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  }\n  commitRoot(\n    root,\n    finishedWork,\n    lanes,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$6 = 31 - clz32(lanes),\n      lane = 1 << index$6;\n    didAttemptEntireTree[index$6] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState$1 = null),\n        (thenableIndexCounter$1 = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  pendingEffectsLanes = 0;\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$4 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$4;\n      lanes |= root[index$4];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction shouldRemainOnPreviousScreen() {\n  var handler = suspenseHandlerStackCursor.current;\n  return null === handler\n    ? !0\n    : (workInProgressRootRenderLanes & 4194048) ===\n        workInProgressRootRenderLanes\n      ? null === shellBoundary\n        ? !0\n        : !1\n      : (workInProgressRootRenderLanes & 62914560) ===\n            workInProgressRootRenderLanes ||\n          0 !== (workInProgressRootRenderLanes & 536870912)\n        ? handler === shellBoundary\n        : !1;\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$165) {\n      handleThrow(root, thrownValue$165);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (\n                  resource\n                    ? preloadResource(resource)\n                    : hostFiber.stateNode.complete\n                ) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$167) {\n      handleThrow(root, thrownValue$167);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState$1 = null;\n  thenableIndexCounter$1 = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason ||\n        9 === suspendedReason ||\n        3 === suspendedReason ||\n        6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  finishedWork,\n  lanes,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  root.cancelPendingCommit = null;\n  do flushPendingEffects();\n  while (0 !== pendingEffectsStatus);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  if (null !== finishedWork) {\n    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n    didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n    didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n    markRootFinished(\n      root,\n      lanes,\n      didIncludeRenderPhaseUpdate,\n      spawnedLane,\n      updatedLanes,\n      suspendedRetryLanes\n    );\n    root === workInProgressRoot &&\n      ((workInProgress = workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0));\n    pendingFinishedWork = finishedWork;\n    pendingEffectsRoot = root;\n    pendingEffectsLanes = lanes;\n    pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n    pendingPassiveTransitions = transitions;\n    pendingRecoverableErrors = recoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? ((root.callbackNode = null),\n        (root.callbackPriority = 0),\n        scheduleCallback$1(NormalPriority$1, function () {\n          flushPassiveEffects();\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (ReactDOMSharedInternals.p = transitions),\n          (ReactSharedInternals.T = recoverableErrors);\n      }\n    }\n    pendingEffectsStatus = 1;\n    flushMutationEffects();\n    flushLayoutEffects();\n    flushSpawnedWork();\n  }\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n      rootMutationHasEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n        var priorSelectionInformation = selectionInformation,\n          curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = priorSelectionInformation.focusedElem,\n          priorSelectionRange = priorSelectionInformation.selectionRange;\n        if (\n          curFocusedElem !== priorFocusedElem &&\n          priorFocusedElem &&\n          priorFocusedElem.ownerDocument &&\n          containsNode(\n            priorFocusedElem.ownerDocument.documentElement,\n            priorFocusedElem\n          )\n        ) {\n          if (\n            null !== priorSelectionRange &&\n            hasSelectionCapabilities(priorFocusedElem)\n          ) {\n            var start = priorSelectionRange.start,\n              end = priorSelectionRange.end;\n            void 0 === end && (end = start);\n            if (\"selectionStart\" in priorFocusedElem)\n              (priorFocusedElem.selectionStart = start),\n                (priorFocusedElem.selectionEnd = Math.min(\n                  end,\n                  priorFocusedElem.value.length\n                ));\n            else {\n              var doc = priorFocusedElem.ownerDocument || document,\n                win = (doc && doc.defaultView) || window;\n              if (win.getSelection) {\n                var selection = win.getSelection(),\n                  length = priorFocusedElem.textContent.length,\n                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n                  end$jscomp$0 =\n                    void 0 === priorSelectionRange.end\n                      ? start$jscomp$0\n                      : Math.min(priorSelectionRange.end, length);\n                !selection.extend &&\n                  start$jscomp$0 > end$jscomp$0 &&\n                  ((curFocusedElem = end$jscomp$0),\n                  (end$jscomp$0 = start$jscomp$0),\n                  (start$jscomp$0 = curFocusedElem));\n                var startMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    start$jscomp$0\n                  ),\n                  endMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    end$jscomp$0\n                  );\n                if (\n                  startMarker &&\n                  endMarker &&\n                  (1 !== selection.rangeCount ||\n                    selection.anchorNode !== startMarker.node ||\n                    selection.anchorOffset !== startMarker.offset ||\n                    selection.focusNode !== endMarker.node ||\n                    selection.focusOffset !== endMarker.offset)\n                ) {\n                  var range = doc.createRange();\n                  range.setStart(startMarker.node, startMarker.offset);\n                  selection.removeAllRanges();\n                  start$jscomp$0 > end$jscomp$0\n                    ? (selection.addRange(range),\n                      selection.extend(endMarker.node, endMarker.offset))\n                    : (range.setEnd(endMarker.node, endMarker.offset),\n                      selection.addRange(range));\n                }\n              }\n            }\n          }\n          doc = [];\n          for (\n            selection = priorFocusedElem;\n            (selection = selection.parentNode);\n\n          )\n            1 === selection.nodeType &&\n              doc.push({\n                element: selection,\n                left: selection.scrollLeft,\n                top: selection.scrollTop\n              });\n          \"function\" === typeof priorFocusedElem.focus &&\n            priorFocusedElem.focus();\n          for (\n            priorFocusedElem = 0;\n            priorFocusedElem < doc.length;\n            priorFocusedElem++\n          ) {\n            var info = doc[priorFocusedElem];\n            info.element.scrollLeft = info.left;\n            info.element.scrollTop = info.top;\n          }\n        }\n        _enabled = !!eventsEnabled;\n        selectionInformation = eventsEnabled = null;\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootMutationHasEffect);\n      }\n    }\n    root.current = finishedWork;\n    pendingEffectsStatus = 2;\n  }\n}\nfunction flushLayoutEffects() {\n  if (2 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n      rootHasLayoutEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootHasLayoutEffect);\n      }\n    }\n    pendingEffectsStatus = 3;\n  }\n}\nfunction flushSpawnedWork() {\n  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    requestPaint();\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      recoverableErrors = pendingRecoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    var remainingLanes = root.pendingLanes;\n    0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n    lanesToEventPriority(lanes);\n    finishedWork = finishedWork.stateNode;\n    if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n      try {\n        injectedHook.onCommitFiberRoot(\n          rendererID,\n          finishedWork,\n          void 0,\n          128 === (finishedWork.current.flags & 128)\n        );\n      } catch (err) {}\n    if (null !== recoverableErrors) {\n      finishedWork = ReactSharedInternals.T;\n      remainingLanes = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      ReactSharedInternals.T = null;\n      try {\n        for (\n          var onRecoverableError = root.onRecoverableError, i = 0;\n          i < recoverableErrors.length;\n          i++\n        ) {\n          var recoverableError = recoverableErrors[i];\n          onRecoverableError(recoverableError.value, {\n            componentStack: recoverableError.stack\n          });\n        }\n      } finally {\n        (ReactSharedInternals.T = finishedWork),\n          (ReactDOMSharedInternals.p = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = ReactDOMSharedInternals.p;\n  try {\n    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n    ReactSharedInternals.T = null;\n    renderPriority = pendingPassiveTransitions;\n    pendingPassiveTransitions = null;\n    var root$jscomp$0 = pendingEffectsRoot,\n      lanes = pendingEffectsLanes;\n    pendingEffectsStatus = 0;\n    pendingFinishedWork = pendingEffectsRoot = null;\n    pendingEffectsLanes = 0;\n    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n    var prevExecutionContext = executionContext;\n    executionContext |= 4;\n    commitPassiveUnmountOnFiber(root$jscomp$0.current);\n    commitPassiveMountOnFiber(\n      root$jscomp$0,\n      root$jscomp$0.current,\n      lanes,\n      renderPriority\n    );\n    executionContext = prevExecutionContext;\n    flushSyncWorkAcrossRoots_impl(0, !1);\n    if (\n      injectedHook &&\n      \"function\" === typeof injectedHook.onPostCommitFiberRoot\n    )\n      try {\n        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n      } catch (err) {}\n    return !0;\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition),\n      releaseRootPooledCache(root, remainingLanes);\n  }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 31:\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$170.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$170.suspendedLanes,\n                pingedLanes = root$170.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$170,\n                root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$170.cancelPendingCommit ||\n                  -1 !== root$170.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n        root$170 = root$170.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    shouldAttemptEagerTransition() &&\n    (syncTransitionLanes = currentEventTransitionLane);\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n    flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n  0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(\n          ImmediatePriority,\n          processRootScheduleInImmediateTask\n        )\n      : processRootScheduleInMicrotask();\n  });\n}\nfunction requestTransitionLane() {\n  if (0 === currentEventTransitionLane) {\n    var actionScopeLane = currentEntangledLane;\n    0 === actionScopeLane &&\n      ((actionScopeLane = nextTransitionUpdateLane),\n      (nextTransitionUpdateLane <<= 1),\n      0 === (nextTransitionUpdateLane & 261888) &&\n        (nextTransitionUpdateLane = 256));\n    currentEventTransitionLane = actionScopeLane;\n  }\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1577 = 0;\n  i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1577++\n) {\n  var eventName$jscomp$inline_1578 =\n      simpleEventPluginEvents[i$jscomp$inline_1577],\n    domEventName$jscomp$inline_1579 =\n      eventName$jscomp$inline_1578.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1580 =\n      eventName$jscomp$inline_1578[0].toUpperCase() +\n      eventName$jscomp$inline_1578.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1579,\n    \"on\" + capitalizedEvent$jscomp$inline_1580\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"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(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === targetContainer\n            )\n              return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = getParent;\n                reactEventName = SyntheticEventCtor;\n                instance = reactEventType;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = inCapturePhase(_instance)\n                )\n                  lastHostComponent++;\n                _instance = 0;\n                for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n                  _instance++;\n                for (; 0 < lastHostComponent - _instance; )\n                  (reactEventName = inCapturePhase(reactEventName)),\n                    lastHostComponent--;\n                for (; 0 < _instance - lastHostComponent; )\n                  (instance = inCapturePhase(instance)), _instance--;\n                for (; lastHostComponent--; ) {\n                  if (\n                    reactEventName === instance ||\n                    (null !== instance && reactEventName === instance.alternate)\n                  ) {\n                    inCapturePhase = reactEventName;\n                    break b;\n                  }\n                  reactEventName = inCapturePhase(reactEventName);\n                  instance = inCapturePhase(instance);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$184 = props[hasSrc];\n          if (null != propValue$184)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$184;\n                break;\n              case \"type\":\n                propValue = propValue$184;\n                break;\n              case \"checked\":\n                checked = propValue$184;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$184;\n                break;\n              case \"value\":\n                propKey = propValue$184;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$184;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$184)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$184, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$184 in props)\n          props.hasOwnProperty(propValue$184) &&\n            ((hasSrc = props[propValue$184]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$184,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$201 in nextProps) {\n        var propKey = nextProps[propKey$201];\n        lastProp = lastProps[propKey$201];\n        if (\n          nextProps.hasOwnProperty(propKey$201) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$201) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$201,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$201 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$201 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$201\n        ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$201 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$201 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$201, propKey);\n      return;\n    case \"option\":\n      for (var propKey$217 in lastProps)\n        if (\n          ((propKey$201 = lastProps[propKey$217]),\n          lastProps.hasOwnProperty(propKey$217) &&\n            null != propKey$201 &&\n            !nextProps.hasOwnProperty(propKey$217))\n        )\n          switch (propKey$217) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$217,\n                null,\n                nextProps,\n                propKey$201\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$201 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$201 !== propKey &&\n            (null != propKey$201 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$201 &&\n                \"function\" !== typeof propKey$201 &&\n                \"symbol\" !== typeof propKey$201;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$201,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$222 in lastProps)\n        (propKey$201 = lastProps[propKey$222]),\n          lastProps.hasOwnProperty(propKey$222) &&\n            null != propKey$201 &&\n            !nextProps.hasOwnProperty(propKey$222) &&\n            setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n      for (checked in nextProps)\n        if (\n          ((propKey$201 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$201 !== propKey &&\n            (null != propKey$201 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$201)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$201,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$227 in lastProps)\n          (propKey$201 = lastProps[propKey$227]),\n            lastProps.hasOwnProperty(propKey$227) &&\n              void 0 !== propKey$201 &&\n              !nextProps.hasOwnProperty(propKey$227) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$227,\n                void 0,\n                nextProps,\n                propKey$201\n              );\n        for (defaultChecked in nextProps)\n          (propKey$201 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$201 === propKey ||\n              (void 0 === propKey$201 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$201,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$232 in lastProps)\n    (propKey$201 = lastProps[propKey$232]),\n      lastProps.hasOwnProperty(propKey$232) &&\n        null != propKey$201 &&\n        !nextProps.hasOwnProperty(propKey$232) &&\n        setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n  for (lastProp in nextProps)\n    (propKey$201 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$201 === propKey ||\n        (null == propKey$201 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n  switch (initiatorType) {\n    case \"css\":\n    case \"script\":\n    case \"font\":\n    case \"img\":\n    case \"image\":\n    case \"input\":\n    case \"link\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction estimateBandwidth() {\n  if (\"function\" === typeof performance.getEntriesByType) {\n    for (\n      var count = 0,\n        bits = 0,\n        resourceEntries = performance.getEntriesByType(\"resource\"),\n        i = 0;\n      i < resourceEntries.length;\n      i++\n    ) {\n      var entry = resourceEntries[i],\n        transferSize = entry.transferSize,\n        initiatorType = entry.initiatorType,\n        duration = entry.duration;\n      if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n        initiatorType = 0;\n        duration = entry.responseEnd;\n        for (i += 1; i < resourceEntries.length; i++) {\n          var overlapEntry = resourceEntries[i],\n            overlapStartTime = overlapEntry.startTime;\n          if (overlapStartTime > duration) break;\n          var overlapTransferSize = overlapEntry.transferSize,\n            overlapInitiatorType = overlapEntry.initiatorType;\n          overlapTransferSize &&\n            isLikelyStaticResource(overlapInitiatorType) &&\n            ((overlapEntry = overlapEntry.responseEnd),\n            (initiatorType +=\n              overlapTransferSize *\n              (overlapEntry < duration\n                ? 1\n                : (duration - overlapStartTime) /\n                  (overlapEntry - overlapStartTime))));\n        }\n        --i;\n        bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n        count++;\n        if (10 < count) break;\n      }\n    }\n    if (0 < count) return bits / count / 1e6;\n  }\n  return navigator.connection &&\n    ((count = navigator.connection.downlink), \"number\" === typeof count)\n    ? count\n    : 5;\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n  var node = hydrationInstance,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(hydrationInstance);\n          return;\n        }\n        depth--;\n      } else if (\n        \"$\" === node ||\n        \"$?\" === node ||\n        \"$~\" === node ||\n        \"$!\" === node ||\n        \"&\" === node\n      )\n        depth++;\n      else if (\"html\" === node)\n        releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n      else if (\"head\" === node) {\n        node = parentInstance.ownerDocument.head;\n        releaseSingletonInstance(node);\n        for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n          var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n            nodeName = node$jscomp$0.nodeName;\n          node$jscomp$0[internalHoistableMarker] ||\n            \"SCRIPT\" === nodeName ||\n            \"STYLE\" === nodeName ||\n            (\"LINK\" === nodeName &&\n              \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n            node.removeChild(node$jscomp$0);\n          node$jscomp$0 = nextNode$jscomp$0;\n        }\n      } else\n        \"body\" === node &&\n          releaseSingletonInstance(parentInstance.ownerDocument.body);\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n  var node = suspenseInstance;\n  suspenseInstance = 0;\n  do {\n    var nextNode = node.nextSibling;\n    1 === node.nodeType\n      ? isHidden\n        ? ((node._stashedDisplay = node.style.display),\n          (node.style.display = \"none\"))\n        : ((node.style.display = node._stashedDisplay || \"\"),\n          \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n      : 3 === node.nodeType &&\n        (isHidden\n          ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n          : (node.nodeValue = node._stashedText || \"\"));\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node))\n        if (0 === suspenseInstance) break;\n        else suspenseInstance--;\n      else\n        (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n          suspenseInstance++;\n    node = nextNode;\n  } while (node);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href || \"\" === anyProps.href\n                ? null\n                : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n  for (; 8 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n  return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$~\" === instance.data) instance._reactRetry = callback;\n  else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n    callback();\n  else {\n    var listener = function () {\n      callback();\n      ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n    };\n    ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n    instance._reactRetry = listener;\n  }\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"$~\" === nodeType ||\n        \"&\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n  hydrationInstance = hydrationInstance.nextSibling;\n  for (var depth = 0; hydrationInstance; ) {\n    if (8 === hydrationInstance.nodeType) {\n      var data = hydrationInstance.data;\n      if (\"/$\" === data || \"/&\" === data) {\n        if (0 === depth)\n          return getNextHydratable(hydrationInstance.nextSibling);\n        depth--;\n      } else\n        (\"$\" !== data &&\n          \"$!\" !== data &&\n          \"$?\" !== data &&\n          \"$~\" !== data &&\n          \"&\" !== data) ||\n          depth++;\n    }\n    hydrationInstance = hydrationInstance.nextSibling;\n  }\n  return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\n        \"$\" === data ||\n        \"$!\" === data ||\n        \"$?\" === data ||\n        \"$~\" === data ||\n        \"&\" === data\n      ) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nfunction releaseSingletonInstance(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : 9 === container.nodeType\n      ? container\n      : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$243 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$244 = styles$243.get(type);\n        resource$244 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$244 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$243.set(type, resource$244),\n          (styles$243 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$243._p &&\n            ((resource$244.instance = styles$243),\n            (resource$244.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$243 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$244.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$244;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$249 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$249)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$249),\n            markNodeAsHoistable(instance$249),\n            instance$249\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$249 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$249);\n        var linkInstance = instance$249;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$249, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$249, props.precedence, hoistableRoot);\n        return (resource.instance = instance$249);\n      case \"script\":\n        instance$249 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$249)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$249)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count || 0 < state.imgCount\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4 + timeoutOffset);\n        0 < state.imgBytes &&\n          0 === estimatedBytesWithinLimit &&\n          (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n        var imgTimer = setTimeout(\n          function () {\n            state.waitingForImages = !1;\n            if (\n              0 === state.count &&\n              (state.stylesheets &&\n                insertSuspendedStylesheets(state, state.stylesheets),\n              state.unsuspend)\n            ) {\n              var unsuspend = state.unsuspend;\n              state.unsuspend = null;\n              unsuspend();\n            }\n          },\n          (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n            timeoutOffset\n        );\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n          clearTimeout(imgTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  onDefaultTransitionIndicator,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  formState,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  onDefaultTransitionIndicator\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    onDefaultTransitionIndicator,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag || 31 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n  if (13 === fiber.tag || 31 === fiber.tag) {\n    var lane = requestUpdateLane();\n    lane = getBumpedLaneForHydrationByLane(lane);\n    var root = enqueueConcurrentRenderForLane(fiber, lane);\n    null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n    markRetryLaneIfNotHydrated(fiber, lane);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 31:\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (31 === tag) {\n        targetNode = getActivityInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"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\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (31 === targetInst) {\n        if (\n          ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n  function handleNavigate(event) {\n    event.canIntercept &&\n      \"react-transition\" === event.info &&\n      event.intercept({\n        handler: function () {\n          return new Promise(function (resolve) {\n            return (pendingResolve = resolve);\n          });\n        },\n        focusReset: \"manual\",\n        scroll: \"manual\"\n      });\n  }\n  function handleNavigateComplete() {\n    null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n    isCancelled || setTimeout(startFakeNavigation, 20);\n  }\n  function startFakeNavigation() {\n    if (!isCancelled && !navigation.transition) {\n      var currentEntry = navigation.currentEntry;\n      currentEntry &&\n        null != currentEntry.url &&\n        navigation.navigate(currentEntry.url, {\n          state: currentEntry.getState(),\n          info: \"react-transition\",\n          history: \"replace\"\n        });\n    }\n  }\n  if (\"object\" === typeof navigation) {\n    var isCancelled = !1,\n      pendingResolve = null;\n    navigation.addEventListener(\"navigate\", handleNavigate);\n    navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n    navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n    setTimeout(startFakeNavigation, 100);\n    return function () {\n      isCancelled = !0;\n      navigation.removeEventListener(\"navigate\", handleNavigate);\n      navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n      navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n      null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n    };\n  }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n  \"19.2.8\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1840\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1840,\n      \"19.2.8\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n  bundleType: 0,\n  version: \"19.2.8\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.2.8\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2348.isDisabled &&\n    hook$jscomp$inline_2348.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2348.inject(\n        internals$jscomp$inline_2347\n      )),\n        (injectedHook = hook$jscomp$inline_2348);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    null,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    formState,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  options = isStrictMode;\n  initialChildren.current.lanes = options;\n  markRootUpdated$1(initialChildren, options);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.8\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","import { QueryClient } from '@tanstack/react-query';\n\nexport const queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      staleTime: 5 * 60 * 1000,\n      refetchOnWindowFocus: false,\n      retry: false,\n    },\n  },\n});\n","import { MASKITO_DEFAULT_ELEMENT_PREDICATE, Maskito } from '@maskito/core';\nimport { useEffect, useLayoutEffect, useState, useCallback, useRef } from 'react';\n\n/**\n * React adds `_valueTracker` property to every textfield elements for its internal logic with controlled inputs.\n * Also, React monkey-patches `value`-setter of the native textfield elements to update state inside its `_valueTracker`.\n * @see https://github.com/facebook/react/blob/ee76351917106c6146745432a52e9a54a41ee181/packages/react-dom-bindings/src/client/inputValueTracking.js#L12-L19\n *\n * React depends on `_valueTracker` to know if the value was changed to decide:\n * - should it revert state for controlled input (if its state handler does not update value)\n * - should it dispatch its synthetic (not native!) `change` event\n *\n * When Maskito patches textfield with a valid value (using setter of `value` property),\n * it also updates `_valueTracker` state and React mistakenly decides that nothing has happened.\n * React should update `_valueTracker` state by itself!\n * ___\n * @see https://github.com/facebook/react/blob/ee76351917106c6146745432a52e9a54a41ee181/packages/react-dom-bindings/src/client/inputValueTracking.js#L173-L177\n */\nfunction adaptReactControlledElement(element) {\n    const valueSetter = Object.getOwnPropertyDescriptor(getPrototype(element), 'value')?.set;\n    if (!valueSetter) {\n        return element;\n    }\n    const adapter = {\n        set value(value) {\n            /**\n             * Mimics exactly what happens when a browser silently changes the value property.\n             * Bypass the React monkey-patching.\n             */\n            valueSetter.call(element, value);\n        },\n    };\n    return new Proxy(element, {\n        get(target, prop) {\n            const nativeProperty = target[prop];\n            return typeof nativeProperty === 'function' ? nativeProperty.bind(target) : nativeProperty;\n        },\n        set(target, prop, val, receiver) {\n            return Reflect.set(prop in adapter ? adapter : target, prop, val, receiver);\n        },\n    });\n}\nfunction getPrototype(element) {\n    switch (element.nodeName) {\n        case 'INPUT':\n            return globalThis.HTMLInputElement.prototype;\n        case 'TEXTAREA':\n            return globalThis.HTMLTextAreaElement.prototype;\n        default:\n            return null;\n    }\n}\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nfunction isThenable(x) {\n    return x && typeof x === 'object' && 'then' in x;\n}\n/**\n * Hook for convenient use of Maskito in React\n * @description For controlled inputs use `onInput` event\n * @param options options used for creating Maskito\n * @param elementPredicate function that can help find nested Input or TextArea\n * @returns ref callback to pass it in React Element\n * @example\n * // To avoid unnecessary hook runs with Maskito recreation pass named variables\n * // good example ✅\n * useMaskito({ options: maskitoOptions, elementPredicate: maskitoPredicate })\n *\n * // bad example ❌\n * useMaskito({ options: { mask: /^.*$/ }, elementPredicate: () => e.querySelector('input') })\n */\nconst useMaskito = ({ options = null, elementPredicate = MASKITO_DEFAULT_ELEMENT_PREDICATE, } = {}) => {\n    const [hostElement, setHostElement] = useState(null);\n    const [element, setElement] = useState(null);\n    const onRefChange = useCallback((node) => {\n        setHostElement(node);\n    }, []);\n    const latestPredicateRef = useRef(elementPredicate);\n    const latestOptionsRef = useRef(options);\n    latestPredicateRef.current = elementPredicate;\n    latestOptionsRef.current = options;\n    useIsomorphicLayoutEffect(() => {\n        if (!hostElement) {\n            return;\n        }\n        const elementOrPromise = elementPredicate(hostElement);\n        if (isThenable(elementOrPromise)) {\n            void elementOrPromise.then((el) => {\n                if (latestPredicateRef.current === elementPredicate && latestOptionsRef.current === options) {\n                    setElement(el);\n                }\n            });\n        }\n        else {\n            setElement(elementOrPromise);\n        }\n        return () => {\n            setElement(null);\n        };\n    }, [hostElement, elementPredicate, latestPredicateRef, options, latestOptionsRef]);\n    useIsomorphicLayoutEffect(() => {\n        if (!element || !options) {\n            return;\n        }\n        const maskedElement = new Maskito(adaptReactControlledElement(element), options);\n        return () => {\n            maskedElement.destroy();\n            setElement(null);\n        };\n    }, [options, element]);\n    return onRefChange;\n};\n\nexport { useMaskito };\n","/** Общее для клиентов нашего API (DRF): запрос JSON и разбор отказа. */\n\n/** Отказ нашего API. Сообщение написано для посетителя — его и показываем. */\nexport class ApiError extends Error {}\n\n/**\n * Запросить JSON.\n *\n * @throws {ApiError} Сеть недоступна или сервер отказал, и посетителю есть что сказать.\n * @throws {Error} Ответ сервера неожиданный: посетителю о нём сказать нечего.\n */\nexport async function getJson<T>(url: string, query: URLSearchParams, signal?: AbortSignal): Promise<T> {\n  return request<T>(`${url}?${query}`, { signal });\n}\n\n/**\n * Отправить JSON и получить JSON.\n *\n * @throws {ApiError} Сеть недоступна или сервер отказал, и посетителю есть что сказать.\n * @throws {Error} Ответ сервера неожиданный: посетителю о нём сказать нечего.\n */\nexport async function postJson<T>(url: string, body: object, signal?: AbortSignal): Promise<T> {\n  return request<T>(url, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify(body),\n    signal,\n  });\n}\n\nasync function request<T>(url: string, init: RequestInit): Promise<T> {\n  let response;\n  try {\n    response = await fetch(url, init);\n  } catch (failure) {\n    // Отмену отдаём как есть: запрос бросили мы сами, и посетителю о ней говорить нечего.\n    if ((failure as Error | null)?.name === 'AbortError') throw failure;\n    throw new ApiError('Не удалось связаться с сервером. Проверьте соединение с интернетом.');\n  }\n\n  if (!response.ok) throw await refusal(response);\n  return (await response.json()) as T;\n}\n\n// Отказ DRF: `detail` — у отказов вроде лимита запросов, `{\"поле\": [\"...\"]}` — у проверки данных.\n// Что не разобрали, посетителю показывать нечего: такую неудачу отдаём обычной ошибкой.\nasync function refusal(response: Response): Promise<Error> {\n  // Путь без параметров запроса: в них ни один из наших отказов не разбирается.\n  const unexpected = new Error(`${new URL(response.url).pathname}: ответ ${response.status}`);\n\n  let answer;\n  try {\n    answer = (await response.json()) as Record<string, unknown>;\n  } catch {\n    return unexpected;\n  }\n\n  if (typeof answer.detail === 'string') return new ApiError(answer.detail);\n\n  const messages = Object.values(answer).find(value => Array.isArray(value) && typeof value[0] === 'string');\n  const message = (messages as string[] | undefined)?.[0];\n  return message ? new ApiError(message) : unexpected;\n}\n","/** Клиент нашего API подтверждения номера телефона (apps/sms/api). Поля названы как в ответах сервера. */\n\nimport { postJson } from './api';\n\nconst SEND_CODE_URL = '/sms/api/phone-confirmation/send-code/';\nconst CONFIRM_CODE_URL = '/sms/api/phone-confirmation/confirm/';\n\n/** Сколько цифр в коде из СМС: столько же в `CODE_LENGTH` на сервере. */\nexport const CODE_LENGTH = 6;\n\n/** Ответ на запрос кода. */\nexport type SentCode = {\n  /** false — СМС отправляли недавно: прошлый код ещё действует, и новое СМС сервер не шлёт. */\n  did_send: boolean;\n  /** Момент, до которого новый код не отправят. */\n  can_resend_at: string;\n};\n\n/**\n * Отправить код подтверждения на номер.\n *\n * @throws {ApiError} Сеть недоступна, номер не подошёл серверу или код с этого адреса просят\n * слишком часто. Сообщение написано для посетителя — его и показываем.\n * @throws {Error} Ответ сервера неожиданный: посетителю о нём сказать нечего.\n */\nexport async function sendCode(phone: string): Promise<SentCode> {\n  return postJson<SentCode>(SEND_CODE_URL, { phone });\n}\n\n/**\n * Проверить код из СМС. Возвращает токен подтверждения — им номер и доказан.\n *\n * @throws {ApiError} Сеть недоступна, код не подошёл или устарел, а то и попыток было слишком\n * много. Сообщение написано для посетителя — его и показываем.\n * @throws {Error} Ответ сервера неожиданный: посетителю о нём сказать нечего.\n */\nexport async function confirmCode(phone: string, code: string): Promise<string> {\n  const { token } = await postJson<{ token: string }>(CONFIRM_CODE_URL, { phone, code });\n  return token;\n}\n","import { useLayoutEffect, useRef, type CSSProperties, type MouseEvent, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nconst OPEN_CLASS = 'modal-open';\n\ntype Props = {\n  /** Закрытое окно остаётся в DOM: его содержимое переживает закрытие вместе со своим состоянием. */\n  open: boolean;\n  title: ReactNode;\n  onClose: () => void;\n  /** Ширина окна в пикселях. В экран поменьше окно вписывается само. */\n  width?: number;\n  /** Высота окна в пикселях. Без неё окно высотой по содержимому: маленькому незачем тянуться. */\n  height?: number;\n  /** Разворачивать окно во весь экран телефона. Нужно тому, кому там тесно: карте, например. */\n  fullScreen?: boolean;\n  children: ReactNode;\n};\n\n/** Модальное окно на нативном <dialog>. Закрытие по крестику, Esc и клику по фону. */\nexport default function Modal({ open, title, onClose, width, height, fullScreen, children }: Props) {\n  const dialogRef = useRef<HTMLDialogElement>(null);\n\n  // Layout-эффект, а не обычный: содержимое должно увидеть уже видимый контейнер.\n  useLayoutEffect(() => {\n    const dialog = dialogRef.current;\n    if (!dialog || !open) return undefined;\n\n    // Именно showModal(), а не атрибут open: он поднимает окно в top layer и рисует фон.\n    dialog.showModal();\n    document.documentElement.classList.add(OPEN_CLASS);\n    return () => {\n      dialog.close();\n      document.documentElement.classList.remove(OPEN_CLASS);\n    };\n  }, [open]);\n\n  // Клик по фону приходит в сам <dialog>, клики по содержимому — в его детей.\n  const onBackdropClick = (event: MouseEvent<HTMLDialogElement>) => {\n    if (event.target === event.currentTarget) onClose();\n  };\n\n  // Размер отдаём в CSS переменными: как вписать его в экран, решает Modal.scss.\n  const size: Record<string, string> = {};\n  if (width !== undefined) size['--modal-width'] = `${width}px`;\n  if (height !== undefined) size['--modal-height'] = `${height}px`;\n\n  // Портал в body: окно вызывают из формы заказа, а поля внутри формы уходят в её отправку.\n  return createPortal(\n    <dialog\n      ref={dialogRef}\n      className={`modal${fullScreen ? ' modal--full-screen' : ''}`}\n      style={size as CSSProperties}\n      // Esc закрывает окно сам: в Chrome он даёт только cancel, close после него не приходит.\n      onCancel={onClose}\n      onClose={onClose}\n      onClick={onBackdropClick}\n    >\n      <div className=\"modal__window\">\n        <div className=\"modal__header\">\n          <h2 className=\"modal__title\">{title}</h2>\n          <button type=\"button\" className=\"modal__close\" aria-label=\"Закрыть\" onClick={onClose}>\n            <svg className=\"ico ico-mono-close\">\n              <use href=\"#ico-mono-close\" />\n            </svg>\n          </button>\n        </div>\n        <div className=\"modal__body\">{children}</div>\n      </div>\n    </dialog>,\n    document.body\n  );\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { useEffect, useState, type FormEvent } from 'react';\n\nimport { ApiError } from '#common/core/api';\nimport { CODE_LENGTH, confirmCode, sendCode, type SentCode } from '#common/core/phone-confirmation-api';\nimport Modal from '#common/blocks/modal/Modal';\nimport type { OzonTheme } from './theme';\n\n/** Что показать посетителю по неудаче. Неожиданную ошибку не пересказываем: она не для него. */\nfunction userMessage(error: unknown): string {\n  return error instanceof ApiError ? error.message : 'Что-то пошло не так. Попробуйте ещё раз.';\n}\n\ntype Props = {\n  /** Оформление окна: см. `theme.ts`. */\n  theme: OzonTheme;\n  open: boolean;\n  /** Номер, на который отправлен код: показываем его, чтобы посетитель сверил. */\n  phone: string;\n  sent: SentCode;\n  /** Код отправлен заново: момент следующей отправки переживает окно, поэтому уходит наружу. */\n  onSend: (sent: SentCode) => void;\n  onConfirm: (token: string) => void;\n  onClose: () => void;\n};\n\n/** Окно ввода кода из СМС. */\nexport default function PhoneCodeModal({\n  theme,\n  open,\n  phone,\n  sent,\n  onSend,\n  onConfirm,\n  onClose,\n}: Props) {\n  return (\n    <Modal open={open} title=\"Подтверждение номера\" onClose={onClose} width={480}>\n      {/* Содержимое живёт, только пока окно открыто: закрывают его, чтобы начать заново. */}\n      {open && (\n        <CodeForm theme={theme} phone={phone} sent={sent} onSend={onSend} onConfirm={onConfirm} />\n      )}\n    </Modal>\n  );\n}\n\nfunction CodeForm({ theme, phone, sent, onSend, onConfirm }: Omit<Props, 'open' | 'onClose'>) {\n  const [code, setCode] = useState('');\n  const wait = useWait(sent.can_resend_at);\n\n  const confirm = useMutation({\n    mutationFn: () => confirmCode(phone, code),\n    onSuccess: onConfirm,\n  });\n  const resend = useMutation({\n    mutationFn: () => sendCode(phone),\n    onSuccess: onSend,\n  });\n  // Неудача у кнопок одна на двоих, поэтому чужую перед запросом убираем: свою `mutate` уберёт сам.\n  const failure = confirm.error ?? resend.error;\n  // Запрос запирает обе кнопки, а надпись меняет только своя.\n  const busy = confirm.isPending || resend.isPending;\n\n  const submit = (event: FormEvent) => {\n    event.preventDefault();\n    resend.reset();\n    confirm.mutate();\n  };\n\n  const askAgain = () => {\n    confirm.reset();\n    resend.mutate();\n  };\n\n  return (\n    <form className=\"ozon-phone-code\" onSubmit={submit}>\n      <p className=\"ozon-phone-code__sent\">\n        {sent.did_send ? (\n          <>\n            Отправили код на <strong>{phone}</strong>.\n          </>\n        ) : (\n          <>\n            Код на номер <strong>{phone}</strong> мы уже отправляли ранее. Введите его из последнего СМС.\n          </>\n        )}\n      </p>\n      <div className=\"ozon-phone-code__field\">\n        <input\n          type=\"text\"\n          className={`ui-input__input${failure ? ' has-error' : ''}`}\n          placeholder=\"Код из СМС\"\n          inputMode=\"numeric\"\n          autoComplete=\"one-time-code\"\n          maxLength={CODE_LENGTH}\n          // Поле — единственное в окне, и открывают окно ради него.\n          autoFocus\n          value={code}\n          onChange={event => setCode(event.target.value.replace(/\\D/g, ''))}\n        />\n        {failure && <div className=\"ui-input__validation\">{userMessage(failure)}</div>}\n      </div>\n      <button type=\"submit\" className={theme.buttonClass} disabled={code.length < CODE_LENGTH || busy}>\n        {confirm.isPending ? 'Проверяем код…' : 'Подтвердить'}\n      </button>\n      {wait === 0 ? (\n        <button type=\"button\" className=\"ozon-phone-code__resend\" disabled={busy} onClick={askAgain}>\n          {resend.isPending ? 'Отправляем код…' : 'Отправить код повторно'}\n        </button>\n      ) : (\n        <p className=\"ozon-phone-code__note\">Новый код можно запросить через {countdown(wait)}.</p>\n      )}\n    </form>\n  );\n}\n\n// Повторную отправку сервер разрешает не сразу: пока интервал не вышел, нового СМС не будет.\n// Сколько ждать — в миллисекундах, 0 — уже можно.\nfunction useWait(canResendAt: string): number {\n  const [wait, setWait] = useState(() => remaining(canResendAt));\n\n  useEffect(() => {\n    setWait(remaining(canResendAt));\n    const timer = window.setInterval(() => {\n      const left = remaining(canResendAt);\n      setWait(left);\n      if (left === 0) clearInterval(timer);\n    }, 1000);\n    return () => clearInterval(timer);\n  }, [canResendAt]);\n\n  return wait;\n}\n\nfunction remaining(canResendAt: string): number {\n  return Math.max(0, Date.parse(canResendAt) - Date.now());\n}\n\n// «04:59», а от часа — «01:04:59»: часы показываем, только когда они есть.\nfunction countdown(wait: number): string {\n  const left = Math.ceil(wait / 1000);\n  const parts = [Math.floor(left / 3600), Math.floor(left / 60) % 60, left % 60];\n  if (parts[0] === 0) parts.shift();\n  return parts.map(part => String(part).padStart(2, '0')).join(':');\n}\n","import { useMaskito } from '@maskito/react';\nimport { useMutation } from '@tanstack/react-query';\nimport { useState } from 'react';\n\nimport { ApiError } from '#common/core/api';\nimport { sendCode, type SentCode } from '#common/core/phone-confirmation-api';\nimport { PHONE_MASK } from '#common/core/phone-mask';\nimport PhoneCodeModal from './PhoneCodeModal';\nimport type { OzonTheme } from './theme';\n\n/** Сколько цифр в номере вместе с кодом страны: больше маска и не пропустит. */\nconst PHONE_LENGTH = 11;\n\n/** Что показать посетителю по неудаче. Неожиданную ошибку не пересказываем: она не для него. */\nfunction userMessage(error: unknown): string {\n  return error instanceof ApiError ? error.message : 'Что-то пошло не так. Попробуйте ещё раз.';\n}\n\n/** Номер набран целиком: по неполному номеру код запрашивать незачем. */\nfunction isPhoneComplete(phone: string): boolean {\n  return phone.replace(/\\D/g, '').length === PHONE_LENGTH;\n}\n\n/** Скрытое поле формы заказа: по токену сервер сам находит подтверждённый номер. */\nexport const TOKEN_FIELD = 'ozon_confirmation_token';\n\ntype Props = {\n  /** Оформление секции: см. `theme.ts`. */\n  theme: OzonTheme;\n  /** Токен подтверждения или пустая строка, пока номер не подтверждён. */\n  token: string;\n  /** Ошибка формы про номер: подписать скрытое поле ей нечем, показываем её сами. */\n  error: string;\n  /** Подтверждение номера изменилось: токен и номер, которому он выдан. Пустой токен — номер меняют. */\n  onToken: (token: string, phone: string) => void;\n};\n\n/** Секция формы с телефоном аккаунта Ozon: его подтверждают кодом из СМС.\n * Наружу секция отдаёт токен подтверждения скрытым полем формы.\n */\nexport default function OzonPhoneSection({ theme, token, error, onToken }: Props) {\n  const [phone, setPhone] = useState('');\n  // Код, отправленный на этот номер. Его же сервер считает отправленным, когда СМС не послал:\n  // прошлый код ещё действует.\n  const [sent, setSent] = useState<SentCode | null>(null);\n  const [codeOpen, setCodeOpen] = useState(false);\n  const masked = useMaskito({ options: PHONE_MASK });\n  const Title = theme.titleTag;\n\n  const request = useMutation({\n    mutationFn: () => sendCode(phone),\n    onSuccess: code => {\n      setSent(code);\n      setCodeOpen(true);\n    },\n  });\n  // Неудачу показываем у поля: окно ещё не открыто, и открывать его с одной ошибкой незачем.\n  // Свежая неудача важнее ошибки формы: та про прошлый сабмит.\n  const message = request.error ? userMessage(request.error) : error;\n\n  const change = (value: string) => {\n    setPhone(value);\n    // Отправленный код принадлежит прежнему номеру, на новый его не перенести.\n    setSent(null);\n    request.reset();\n  };\n\n  return (\n    <div className=\"form__section\">\n      <Title className={`${theme.titleTag}-title form__section-title`}>\n        Телефон аккаунта Ozon\n      </Title>\n      <div className=\"ozon-phone\">\n        <p className=\"ozon-phone__hint\">\n          Заказ придёт в приложение Ozon на этот номер — он может отличаться\n          от контактного телефона заказа. Для получения нужны аккаунт и приложение Ozon:\n          в пункте выдачи покажите штрихкод заказа.\n        </p>\n        <div className=\"ozon-phone__field\">\n          <input\n            ref={masked}\n            type=\"tel\"\n            className={`ui-input__input${message ? ' has-error' : ''}`}\n            placeholder=\"Телефон\"\n            value={phone}\n            // Подтверждение принадлежит номеру: пока оно в силе, номер не меняют.\n            readOnly={Boolean(token)}\n            // Именно onInput: значение поля правит маска, и до onChange её правка не доходит.\n            onInput={event => change(event.currentTarget.value)}\n          />\n          {message && <div className=\"ui-input__validation\">{message}</div>}\n        </div>\n        {token ? (\n          <p className=\"ozon-phone__confirmed\">\n            <CheckIcon />\n            Номер подтверждён.{' '}\n            <button type=\"button\" className=\"ozon-phone__change\" onClick={() => onToken('', phone)}>\n              Изменить номер\n            </button>\n          </p>\n        ) : (\n          <button\n            type=\"button\"\n            className={theme.buttonClass}\n            disabled={!isPhoneComplete(phone) || request.isPending}\n            onClick={() => request.mutate()}\n          >\n            {request.isPending ? 'Отправляем код…' : 'Получить код'}\n          </button>\n        )}\n        <input type=\"hidden\" name={TOKEN_FIELD} value={token} />\n        {sent && (\n          <PhoneCodeModal\n            theme={theme}\n            open={codeOpen}\n            phone={phone}\n            sent={sent}\n            onSend={setSent}\n            onConfirm={confirmed => {\n              onToken(confirmed, phone);\n              setCodeOpen(false);\n            }}\n            onClose={() => setCodeOpen(false)}\n          />\n        )}\n      </div>\n    </div>\n  );\n}\n\n// Галочку рисуем сами: в спрайте домена своей нет.\nfunction CheckIcon() {\n  return (\n    <svg\n      className=\"ozon-phone__check\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"m5 13 4 4L19 7\" />\n    </svg>\n  );\n}\n","/** Клиент нашего API доставки Ozon (apps/ozon/api). Поля названы как в ответах сервера. */\n\nimport { getJson, postJson } from './api';\n\nconst MAP_URL = '/ozon/api/map/';\nconst POINTS_URL = '/ozon/api/points/';\nconst DELIVERY_URL = '/ozon/api/delivery/';\n\n/** Прямоугольник на карте. */\nexport type OzonMapArea = {\n  min_lat: number;\n  min_lon: number;\n  max_lat: number;\n  max_lon: number;\n};\n\n/** Что видно на карте: прямоугольник и масштаб. По масштабу Ozon выбирает крупность кластеров. */\nexport type OzonMapView = OzonMapArea & {\n  zoom: number;\n};\n\n/** Пин на карте. Одиночный пункт выдачи Ozon тоже отдаёт кластером. */\nexport type OzonMapCluster = {\n  lat: number;\n  lon: number;\n  points_count: number;\n  point_ids: number[];\n  /** У одиночного пункта области нет. */\n  area: OzonMapArea | null;\n};\n\nexport async function getMapClusters(view: OzonMapView, signal: AbortSignal): Promise<OzonMapCluster[]> {\n  const query = new URLSearchParams({\n    min_lat: String(view.min_lat),\n    min_lon: String(view.min_lon),\n    max_lat: String(view.max_lat),\n    max_lon: String(view.max_lon),\n    zoom: String(view.zoom),\n  });\n  const { clusters } = await getJson<{ clusters: OzonMapCluster[] }>(MAP_URL, query, signal);\n  return clusters;\n}\n\n/** Промежуток работы пункта выдачи внутри дня. */\nexport type OzonWorkingPeriod = {\n  opens_at: string;\n  closes_at: string;\n};\n\n/** Часы работы пункта выдачи на один день. */\nexport type OzonWorkingDay = {\n  /** `null`, если дату Ozon записал незнакомо. */\n  date: string | null;\n  periods: OzonWorkingPeriod[];\n};\n\n/** Карточка пункта выдачи. */\nexport type OzonPoint = {\n  id: number;\n  name: string;\n  /** Адрес целиком, с городом: по нему сверяют город в форме заказа. */\n  address: string;\n  /** Улица с домом: город на карте и так виден. */\n  street_address: string;\n  description: string;\n  lat: number;\n  lon: number;\n  storage_period_days: number;\n  working_hours: OzonWorkingDay[];\n};\n\n/** Карточки пунктов выдачи. Закрытые сервер не отдаёт, поэтому список бывает короче запроса. */\nexport async function getPoints(ids: number[], signal: AbortSignal): Promise<OzonPoint[]> {\n  const query = new URLSearchParams(ids.map(id => ['ids', String(id)]));\n  const { points } = await getJson<{ points: OzonPoint[] }>(POINTS_URL, query, signal);\n  return points;\n}\n\n/** Что известно о доставке в выбранный пункт. */\nexport type OzonDeliveryOptions = {\n  is_available: boolean;\n  /** Крайний день доставки. `null`, когда доставки нет или Ozon о сроках умолчал. */\n  delivery_date: string | null;\n  /** Цена доставки, как её пишет сервер: «350.00». */\n  price: string;\n  /** Почему доставку не оформить. Пусто, когда она доступна. */\n  message: string;\n};\n\n/**\n * Проверить доставку тарифа в пункт выдачи: товар, остатки которого проверяет Ozon, у каждого\n * тарифа свой. Номера телефона сервер не спрашивает: он берёт его из подтверждения по токену.\n *\n * @throws {ApiError} Сеть недоступна, подтверждение устарело или Ozon не ответил. Сообщение\n * написано для посетителя — его и показываем.\n * @throws {Error} Ответ сервера неожиданный: посетителю о нём сказать нечего.\n */\nexport async function getDeliveryOptions(\n  pointId: number,\n  tariffId: string,\n  confirmationToken: string,\n  signal: AbortSignal\n): Promise<OzonDeliveryOptions> {\n  return postJson<OzonDeliveryOptions>(\n    DELIVERY_URL,\n    { point_id: pointId, tariff_id: tariffId, confirmation_token: confirmationToken },\n    signal\n  );\n}\n","/** Настройки сайта, которые шаблон кладёт в `window.SITE_CONFIG` перед бандлами (apps/core/templates/core/site_config_script.html). */\nexport type SiteConfig = {\n  yandexMapsApiKey: string;\n  yandexSuggestApiKey: string;\n  yandexGeocoderApiKey: string;\n  dadataApiKey: string;\n};\n\nconst EMPTY_CONFIG: SiteConfig = {\n  yandexMapsApiKey: '',\n  yandexSuggestApiKey: '',\n  yandexGeocoderApiKey: '',\n  dadataApiKey: '',\n};\n\ndeclare global {\n  interface Window {\n    SITE_CONFIG?: SiteConfig;\n  }\n}\n\nexport function getSiteConfig(): SiteConfig {\n  return window.SITE_CONFIG ?? EMPTY_CONFIG;\n}\n","/** Поля пункта выдачи и доставки в него, которые в тексте выглядят иначе, чем в ответе. */\n\nimport type { OzonWorkingDay } from './ozon-api';\n\n/** Строка расписания: день и часы работы в нём — в карточке они стоят отдельными столбцами. */\nexport type ScheduleLine = { day: string; hours: string };\n\nconst WEEKDAYS = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];\n// Ozon присылает расписание на три недели вперёд, карточке хватает ближайшей.\nconst WEEK = 7;\n\n// Часы работы: одинаковые дни сворачиваем в одну строку, разные перечисляем по дням недели.\nexport function workingHours(days: OzonWorkingDay[]): ScheduleLine[] {\n  const week = days.slice(0, WEEK);\n  const hours = week.map(\n    day => day.periods.map(period => `${period.opens_at}–${period.closes_at}`).join(', ') || 'выходной'\n  );\n  if (hours.length === 0) return [];\n  if (hours.every(line => line === hours[0])) return [{ day: 'Ежедневно', hours: hours[0] }];\n  return week.map((day, index) => ({ day: weekday(day.date), hours: hours[index] }));\n}\n\nfunction weekday(date: string | null): string {\n  if (!date) return '';\n  // Дата приходит без времени, поэтому разбирается как полночь UTC — в UTC берём и день недели.\n  return WEEKDAYS[new Date(date).getUTCDay()] ?? '';\n}\n\nconst PLURAL = new Intl.PluralRules('ru');\nconst DAY_WORDS: Partial<Record<Intl.LDMLPluralRule, string>> = { one: 'день', few: 'дня' };\n\n/** «1 день», «2 дня», «14 дней». */\nexport function storagePeriod(days: number): string {\n  return `${days} ${DAY_WORDS[PLURAL.select(days)] ?? 'дней'}`;\n}\n\nconst DAY_AND_MONTH = new Intl.DateTimeFormat('ru', { day: 'numeric', month: 'long', timeZone: 'UTC' });\n\n/** «15 сентября». Год не показываем: доставку ждут днями, а не месяцами. */\nexport function deliveryDate(date: string): string {\n  // Дата приходит без времени, поэтому разбирается как полночь UTC — в UTC её и показываем.\n  return DAY_AND_MONTH.format(new Date(date));\n}\n\n/** «350 ₽», «350,50 ₽» — копейки показываем, только когда они есть. */\nexport function deliveryPrice(price: string): string {\n  const amount = Number(price);\n  return amount.toLocaleString('ru', {\n    style: 'currency',\n    currency: 'RUB',\n    minimumFractionDigits: Number.isInteger(amount) ? 0 : 2,\n  });\n}\n\n/** «350 м», «2,4 км», «18 км». Ближе километра — с точностью до десяти метров. */\nexport function distance(meters: number): string {\n  const rounded = Math.round(meters / 10) * 10;\n  if (rounded < 1000) return `${rounded} м`;\n  const km = (meters / 1000).toLocaleString('ru', { maximumFractionDigits: meters < 10_000 ? 1 : 0 });\n  return `${km} км`;\n}\n","import { createContext, useCallback, useContext, useEffect, useRef, useState, type ReactNode } from 'react';\n\n// Сколько сообщение висит: хватает прочитать, и оно не остаётся висеть до конца сеанса.\nconst LIFETIME = 5000;\n// Столько же длится анимация ухода в Toast.scss: после неё сообщение убираем из разметки.\nconst FADE_OUT = 200;\n\nconst ToastContext = createContext<((message: string) => void) | undefined>(undefined);\n\ntype Shown = {\n  text: string;\n  /** Сообщение доживает свой срок и уходит: этим и отличается анимация ухода от появления. */\n  leaving: boolean;\n};\n\n/**\n * Сообщения о неудачах для того, что лежит внутри. Показывает их внизу по центру ближайшего\n * позиционированного предка, поэтому провайдер кладут в контейнер карты, а не на всю страницу.\n */\nexport default function ToastProvider({ children }: { children: ReactNode }) {\n  const [toast, setToast] = useState<Shown | null>(null);\n  const timers = useRef<number[]>([]);\n\n  const stopTimers = useCallback(() => {\n    timers.current.forEach(clearTimeout);\n    timers.current = [];\n  }, []);\n\n  // Сообщение всегда одно: новое заменяет прежнее. Здесь их шлют о том, что прямо сейчас\n  // не получилось, и очередь показывала бы уже неактуальное.\n  const show = useCallback(\n    (text: string) => {\n      stopTimers();\n      setToast({ text, leaving: false });\n      timers.current = [\n        window.setTimeout(() => setToast(current => current && { ...current, leaving: true }), LIFETIME),\n        window.setTimeout(() => setToast(null), LIFETIME + FADE_OUT),\n      ];\n    },\n    [stopTimers]\n  );\n\n  useEffect(() => stopTimers, [stopTimers]);\n\n  return (\n    <ToastContext.Provider value={show}>\n      {children}\n      {toast && (\n        // key: со сменой сообщения узел пересоздаётся, иначе новое просто подменит текст без появления.\n        <div key={toast.text} className={`toast${toast.leaving ? ' toast--leaving' : ''}`} role=\"alert\">\n          {toast.text}\n        </div>\n      )}\n    </ToastContext.Provider>\n  );\n}\n\n/** Показать сообщение. Функция постоянная: её можно держать в зависимостях эффектов. */\nexport function useToast(): (message: string) => void {\n  const show = useContext(ToastContext);\n  if (!show) throw new Error('Сообщения доступны только внутри ToastProvider');\n  return show;\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\n// JS API 3.0: скрипт кладёт всё в глобальный `ymaps3`, компоненты доступны после `ymaps3.ready`.\n// https://yandex.com/maps-api/docs/js-api/dg/concepts/load.html\nconst API_URL = 'https://api-maps.yandex.ru/v3/';\n// Зависший скрипт не даёт ни onload, ни onerror: без срока спиннер крутился бы вечно.\nconst LOAD_TIMEOUT_MS = 15_000;\n\nfunction injectScript(apiKey: string): Promise<void> {\n  return new Promise((resolve, reject) => {\n    const script = document.createElement('script');\n    script.src = `${API_URL}?apikey=${encodeURIComponent(apiKey)}&lang=ru_RU`;\n    script.async = true;\n    // Ключ Яндекса привязан к домену, а SECURE_REFERRER_POLICY Django (same-origin) срезает\n    // Referer на чужие домены — без него API отвечает 403 «Invalid api key».\n    script.referrerPolicy = 'strict-origin';\n    script.onload = () => resolve();\n    script.onerror = () => {\n      script.remove();\n      reject(new Error('Не удалось загрузить Яндекс Карты'));\n    };\n    document.head.append(script);\n  });\n}\n\nasync function load(apiKey: string) {\n  await injectScript(apiKey);\n  await ymaps3.ready;\n  // https://yandex.com/maps-api/docs/js-api/dg/concepts/integrations/reactify.html\n  const { reactify: genericReactify } = await ymaps3.import('@yandex/ymaps3-reactify');\n\n  const reactify = genericReactify.bindTo(React, ReactDOM);\n  const { YMap, YMapDefaultSchemeLayer, YMapDefaultFeaturesLayer, YMapListener, YMapMarker } =\n    reactify.module(ymaps3);\n  return { reactify, YMap, YMapDefaultSchemeLayer, YMapDefaultFeaturesLayer, YMapListener, YMapMarker };\n}\n\nexport type YandexMaps = Awaited<ReturnType<typeof load>>;\n\nlet loading: Promise<YandexMaps> | undefined;\n\n/** Грузит API один раз на страницу, когда карта впервые понадобилась. Неудача не запоминается: следующий вызов пробует снова. */\nexport function loadYandexMaps(apiKey: string): Promise<YandexMaps> {\n  if (!loading) {\n    loading = Promise.race([load(apiKey), timeout()]).catch(error => {\n      loading = undefined;\n      throw error;\n    });\n  }\n  return loading;\n}\n\nfunction timeout(): Promise<never> {\n  return new Promise((_, reject) => {\n    setTimeout(() => reject(new Error('Яндекс Карты не загрузились вовремя')), LOAD_TIMEOUT_MS);\n  });\n}\n","import { createContext, useContext, useEffect, useEffectEvent, useState, type ReactNode } from 'react';\n\nimport { getSiteConfig } from '../../core/site-config';\nimport { loadYandexMaps, type YandexMaps } from '../../core/yandex-maps-react';\n\n/** Пока API грузится, `maps` пуст; после неудачи стоит `failed`. */\ntype Loading = {\n  maps?: YandexMaps;\n  failed: boolean;\n};\n\nconst YandexMapsContext = createContext<Loading | undefined>(undefined);\n\n/**\n * Грузит JS API карт и раздаёт его вниз по дереву. Загрузка начинается на монтировании,\n * поэтому провайдер ставят там, где карта уже нужна, а не на всю страницу.\n */\nexport default function YandexMapsProvider({\n  onFailed,\n  children,\n}: {\n  /** API не загрузился: тому, кто ставит провайдер, есть что предложить вместо карты. */\n  onFailed?: () => void;\n  children: ReactNode;\n}) {\n  const [loading, setLoading] = useState<Loading>({ failed: false });\n  const apiKey = getSiteConfig().yandexMapsApiKey;\n  // Вне зависимостей эффекта: новая функция с каждым рендером владельца загружала бы API заново.\n  const reportFailure = useEffectEvent(() => onFailed?.());\n\n  useEffect(() => {\n    let cancelled = false;\n    loadYandexMaps(apiKey).then(\n      maps => {\n        if (!cancelled) setLoading({ maps, failed: false });\n      },\n      () => {\n        if (cancelled) return;\n        setLoading({ failed: true });\n        reportFailure();\n      }\n    );\n    return () => {\n      cancelled = true;\n    };\n  }, [apiKey]);\n\n  return <YandexMapsContext.Provider value={loading}>{children}</YandexMapsContext.Provider>;\n}\n\n/** Как идёт загрузка API. Нужно тому, кто рисует заглушку вместо карты. */\nexport function useYandexMapsLoading(): Loading {\n  const loading = useContext(YandexMapsContext);\n  if (!loading) throw new Error('Карты доступны только внутри YandexMapsProvider');\n  return loading;\n}\n\n/** Загруженный API. Зовут из содержимого карты: там он уже готов. */\nexport function useYandexMaps(): YandexMaps {\n  const { maps } = useYandexMapsLoading();\n  if (!maps) throw new Error('API карт ещё не загружен');\n  return maps;\n}\n","/** Клиент подсказок адресов DaData: запасной поиск адреса, когда Яндекс не отвечает. */\nimport type { LngLat } from 'ymaps3';\n\nimport type { AddressSuggestion } from './address-service';\nimport { getSiteConfig } from './site-config';\n\n// https://dadata.ru/api/suggest/address/\nconst SUGGEST_URL = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address';\n\nexport async function suggestDadata(\n  query: string,\n  signal?: AbortSignal\n): Promise<AddressSuggestion[]> {\n  const suggestions = await request({ query }, signal);\n  return suggestions.map(item => ({\n    ...splitValue(item),\n    address: item.unrestricted_value,\n    coordinates: coordinatesOf(item),\n  }));\n}\n\n/** Координаты первой находки по адресу. Ничего не нашлось или у DaData нет координат — `null`. */\nexport async function locateDadata(address: string, signal?: AbortSignal): Promise<LngLat | null> {\n  const [found] = await request({ query: address, count: 1 }, signal);\n  return (found && coordinatesOf(found)) ?? null;\n}\n\nasync function request(\n  body: { query: string; count?: number },\n  signal?: AbortSignal\n): Promise<DadataSuggestion[]> {\n  const response = await fetch(SUGGEST_URL, {\n    method: 'POST',\n    signal,\n    // Ключ ограничен адресом сайта, а SECURE_REFERRER_POLICY Django (same-origin) срезает Referer на чужие домены.\n    referrerPolicy: 'strict-origin',\n    headers: {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      Authorization: `Token ${getSiteConfig().dadataApiKey}`,\n    },\n    body: JSON.stringify(body),\n  });\n  if (!response.ok) throw new Error(`DaData: ответ ${response.status}`);\n\n  const { suggestions = [] } = (await response.json()) as { suggestions?: DadataSuggestion[] };\n  return suggestions;\n}\n\n/** Как у Яндекса: улица с домом — первой строкой, город и регион — второй. */\nfunction splitValue({\n  value,\n  data,\n}: DadataSuggestion): Pick<AddressSuggestion, 'title' | 'subtitle'> {\n  // Части адреса DaData пишет в `value` теми же словами; без улицы строка начинается с населённого пункта.\n  const start = data.street_with_type ?? data.settlement_with_type ?? data.city_with_type;\n  const cut = start ? value.lastIndexOf(start) : -1;\n  if (cut <= 0) return { title: value };\n  return { title: value.slice(cut), subtitle: value.slice(0, cut).replace(/,\\s*$/, '') };\n}\n\nfunction coordinatesOf({ data }: DadataSuggestion): LngLat | undefined {\n  // Координаты приходят строками, а где их у DaData нет — null.\n  if (!data.geo_lat || !data.geo_lon) return undefined;\n  return [Number(data.geo_lon), Number(data.geo_lat)];\n}\n\ntype DadataSuggestion = {\n  value: string;\n  unrestricted_value: string;\n  data: {\n    street_with_type: string | null;\n    settlement_with_type: string | null;\n    city_with_type: string | null;\n    geo_lat: string | null;\n    geo_lon: string | null;\n  };\n};\n","/** Клиент HTTP Геокодера Яндекса: он знает координаты адреса, выбранного в подсказках. */\nimport type { LngLat } from 'ymaps3';\n\nimport { getSiteConfig } from './site-config';\n\n// https://yandex.ru/maps-api/docs/geocoder-api/request.html\nconst GEOCODER_URL = 'https://geocode-maps.yandex.ru/v1/';\n\n/** Что ищем. `uri` из подсказки указывает на конкретный объект, `text` — запасной вариант. */\nexport type GeocodeQuery = {\n  text: string;\n  uri?: string;\n};\n\n/** Координаты найденного места. Ничего не нашлось — `null`. */\nexport async function geocode(query: GeocodeQuery, signal?: AbortSignal): Promise<LngLat | null> {\n  const params = new URLSearchParams({\n    apikey: getSiteConfig().yandexGeocoderApiKey,\n    // Геокодер требует geocode даже вместе с uri, поэтому отправляем оба.\n    geocode: query.text,\n    format: 'json',\n    lang: 'ru_RU',\n    // Карта переезжает к первой находке, остальные показывать негде.\n    results: '1',\n  });\n  if (query.uri) params.set('uri', query.uri);\n\n  // Ключ привязан к домену, а SECURE_REFERRER_POLICY Django (same-origin) срезает Referer\n  // на чужие домены — без него геокодер отвечает 403.\n  const response = await fetch(`${GEOCODER_URL}?${params}`, { signal, referrerPolicy: 'strict-origin' });\n  if (!response.ok) throw new Error(`Геокодер: ответ ${response.status}`);\n\n  const body = (await response.json()) as GeocoderResponse;\n  const found = body.response?.GeoObjectCollection?.featureMember?.[0]?.GeoObject;\n  if (!found) return null;\n\n  // Координаты геокодер отдаёт строкой «долгота широта».\n  const [lon, lat] = found.Point.pos.split(' ').map(Number);\n  return [lon, lat];\n}\n\ntype GeocoderResponse = {\n  response?: {\n    GeoObjectCollection?: {\n      featureMember?: { GeoObject: { Point: { pos: string } } }[];\n    };\n  };\n};\n","/** Клиент HTTP Геосаджеста Яндекса: он подсказывает адреса в поиске на карте. */\nimport type { AddressSuggestion, SuggestArea } from './address-service';\nimport { getSiteConfig } from './site-config';\n\n// https://yandex.ru/maps-api/docs/suggest-api/request.html\nconst SUGGEST_URL = 'https://suggest-maps.yandex.ru/v1/suggest';\nconst RESULTS = 12;\n\nexport async function suggestAddresses(\n  text: string,\n  area?: SuggestArea,\n  signal?: AbortSignal\n): Promise<AddressSuggestion[]> {\n  const params = new URLSearchParams({\n    apikey: getSiteConfig().yandexSuggestApiKey,\n    text,\n    lang: 'ru_RU',\n    results: String(RESULTS),\n    // Только адреса: организацию из подсказок геокодер по её uri уже не найдёт.\n    types: 'geo',\n    // uri указывает на выбранный объект, полный адрес приходит с print_address.\n    attrs: 'uri',\n    print_address: '1',\n  });\n  if (area) {\n    params.set('ll', area.center.join(','));\n    params.set('spn', area.span.join(','));\n  }\n\n  // Ключ привязан к домену, а SECURE_REFERRER_POLICY Django (same-origin) срезает Referer\n  // на чужие домены — без него саджест отвечает 403.\n  const response = await fetch(`${SUGGEST_URL}?${params}`, { signal, referrerPolicy: 'strict-origin' });\n  if (!response.ok) throw new Error(`Геосаджест: ответ ${response.status}`);\n\n  const { results = [] } = (await response.json()) as SuggestApiResponse;\n  return results.map(item => ({\n    title: item.title.text,\n    subtitle: item.subtitle?.text,\n    address: item.address?.formatted_address ?? item.title.text,\n    uri: item.uri,\n  }));\n}\n\ntype SuggestApiResponse = {\n  results?: {\n    title: { text: string };\n    subtitle?: { text: string };\n    uri?: string;\n    address?: { formatted_address?: string };\n  }[];\n};\n","/**\n * Поиск адреса: подсказки и координаты выбранной. Ищет Яндекс (Геосаджест и Геокодер), а DaData\n * подменяет его, когда у сайта нет ключей Яндекса или Яндекс отказал.\n */\nimport * as Sentry from '@sentry/browser';\nimport type { LngLat } from 'ymaps3';\n\nimport { locateDadata, suggestDadata } from './dadata-suggest';\nimport { getSiteConfig } from './site-config';\nimport { geocode } from './yandex-geocoder';\nimport { suggestAddresses } from './yandex-suggest';\n\n// Обычно Яндекс отвечает за доли секунды: дольше ждать — значит держать посетителя без подсказок.\nconst YANDEX_TIMEOUT = 4000;\n\n/** Где смотрит карта. Подсказки этим не ограничены: то, что рядом, просто идёт первым. */\nexport type SuggestArea = {\n  center: LngLat;\n  span: LngLat;\n};\n\n/** Подсказка адреса: две строки для списка и то, по чему потом ищут координаты. */\nexport type AddressSuggestion = {\n  title: string;\n  subtitle?: string;\n  /** Полный адрес одной строкой: по нему ищут координаты, когда подсказку выбрали. */\n  address: string;\n  /** Ссылка на объект в базе Яндекса: с ней геокодер найдёт именно его. */\n  uri?: string;\n  /** Координаты, если сервис отдал их прямо в подсказке. */\n  coordinates?: LngLat;\n};\n\nexport type AddressService = {\n  suggest(\n    query: string,\n    near: SuggestArea | undefined,\n    signal: AbortSignal\n  ): Promise<AddressSuggestion[]>;\n  /** Координаты выбранной подсказки. Ничего не нашлось — `null`. */\n  locate(suggestion: AddressSuggestion, signal: AbortSignal): Promise<LngLat | null>;\n};\n\nconst yandex: AddressService = {\n  suggest: suggestAddresses,\n  locate: (suggestion, signal) =>\n    geocode({ text: suggestion.address, uri: suggestion.uri }, signal),\n};\n\nconst dadata: AddressService = {\n  suggest: (query, _near, signal) => suggestDadata(query, signal),\n  // Подсказку Яндекса DaData находит по полному адресу: так выбор переживает отказ геокодера.\n  locate: async (suggestion, signal) =>\n    suggestion.coordinates ?? locateDadata(suggestion.address, signal),\n};\n\n// Отказавший раз Яндекс скорее всего откажет и на следующей букве: до перезагрузки ищем в DaData.\nlet yandexDown = false;\n\n/** Яндекс — основной сервис, DaData — запасной. На отказе Яндекса тот же запрос сразу уходит в DaData. */\nexport const addressService: AddressService = {\n  suggest: (query, near, signal) =>\n    withFallback('Геосаджест', signal, (service, serviceSignal) =>\n      service.suggest(query, near, serviceSignal)\n    ),\n  locate: (suggestion, signal) =>\n    withFallback('Геокодер', signal, (service, serviceSignal) =>\n      service.locate(suggestion, serviceSignal)\n    ),\n};\n\n/** Есть чем искать: Яндексу нужны оба ключа, DaData — свой. */\nexport function hasAddressSearch(): boolean {\n  return hasYandex() || hasDadata();\n}\n\nfunction hasYandex(): boolean {\n  const { yandexSuggestApiKey, yandexGeocoderApiKey } = getSiteConfig();\n  return Boolean(yandexSuggestApiKey && yandexGeocoderApiKey);\n}\n\nfunction hasDadata(): boolean {\n  return Boolean(getSiteConfig().dadataApiKey);\n}\n\nasync function withFallback<T>(\n  api: string,\n  signal: AbortSignal,\n  call: (service: AddressService, signal: AbortSignal) => Promise<T>\n): Promise<T> {\n  if (yandexDown || !hasYandex()) return call(dadata, signal);\n\n  const yandexCall = new AbortController();\n  const stop = () => yandexCall.abort();\n  if (signal.aborted) stop();\n  signal.addEventListener('abort', stop);\n  const timer = setTimeout(stop, YANDEX_TIMEOUT);\n  try {\n    return await call(yandex, yandexCall.signal);\n  } catch (failure) {\n    // Отмену просил посетитель (набрал дальше, закрыл окно): это не отказ Яндекса.\n    if (signal.aborted) throw failure;\n    const reason = yandexCall.signal.aborted\n      ? `нет ответа за ${YANDEX_TIMEOUT / 1000} с`\n      : String(failure);\n    // Тайм-аут — не отмена: AbortError вызывающий молча проглотил бы.\n    if (!hasDadata()) throw yandexCall.signal.aborted ? new Error(`${api}: ${reason}`) : failure;\n    const found = await call(dadata, signal);\n    // Только когда DaData ответила: если не ответила и она, пропала сеть посетителя, а не Яндекс.\n    switchToDadata(api, reason);\n    return found;\n  } finally {\n    clearTimeout(timer);\n    signal.removeEventListener('abort', stop);\n  }\n}\n\nfunction switchToDadata(api: string, reason: string) {\n  // Отказать могут сразу несколько запросов, а переход на DaData один.\n  if (yandexDown) return;\n  yandexDown = true;\n  Sentry.withScope(scope => {\n    // В крошках адреса запросов к Геосаджесту, а в них набранный посетителем адрес.\n    scope.clearBreadcrumbs();\n    scope.setTags({ address_api: api, reason });\n    Sentry.captureMessage('Поиск адреса перешёл с Яндекса на DaData', Sentry.Severity.Warning);\n  });\n}\n","/** Положение посетителя на земле. */\nexport type UserGeolocation = {\n  longitude: number;\n  latitude: number;\n};\n\n/**\n * Спрашивает у браузера, где посетитель, — разрешение браузер запрашивает сам.\n * Отказ, ошибку и отсутствие геолокации отдаёт как undefined: показывать в этих случаях нечего.\n */\nexport function getUserGeolocation(): Promise<UserGeolocation | undefined> {\n  const { geolocation } = navigator;\n  if (!geolocation) return Promise.resolve(undefined);\n\n  return new Promise(resolve => {\n    geolocation.getCurrentPosition(\n      ({ coords }) => resolve({ longitude: coords.longitude, latitude: coords.latitude }),\n      () => resolve(undefined)\n    );\n  });\n}\n","import { useEffect, useState } from 'react';\n\n/** Значение, которое догоняет исходное не раньше, чем через `delay` мс после последнего изменения. */\nexport function useDebounce<T>(value: T, delay: number): T {\n  const [settled, setSettled] = useState(value);\n\n  useEffect(() => {\n    const timer = window.setTimeout(() => setSettled(value), delay);\n    return () => clearTimeout(timer);\n  }, [value, delay]);\n\n  return settled;\n}\n","import { skipToken, useMutation, useQuery } from '@tanstack/react-query';\nimport { useEffect, useRef, useState, type KeyboardEvent } from 'react';\nimport type { LngLat } from 'ymaps3';\n\nimport { addressService, type AddressSuggestion, type SuggestArea } from '../../core/address-service';\nimport { useDebounce } from '../../core/use-debounce';\nimport { useToast } from '../toast/ToastProvider';\n\n// Саджест отвечает на каждый запрос, а тариф считает их поштучно: спрашиваем, когда набор затих.\nconst SUGGEST_DELAY = 1000;\nconst MIN_QUERY_LENGTH = 3;\n\ntype Props = {\n  /** Посетитель выбрал подсказку, и у неё нашлись координаты. */\n  onPlaceSelected: (place: LngLat, suggestion: AddressSuggestion) => void;\n  /** Посетитель выбрал подсказку, а её координаты ещё ищутся. */\n  onSuggestionPicked?: () => void;\n  /** Где искать в первую очередь: подсказки рядом идут первыми. */\n  near?: () => SuggestArea;\n};\n\n/** Поле поиска адреса с подсказками: подсказки и координаты выбранной даёт `addressService`. */\nexport default function AddressSearch({ onPlaceSelected, onSuggestionPicked, near }: Props) {\n  const input = useRef<HTMLInputElement>(null);\n  const [text, setText] = useState('');\n  // Что ищем. Выбор подсказки меняет только текст в поле: искать по нему заново незачем.\n  const [query, setQuery] = useState('');\n  // Список прячем, а не очищаем: с возвратом фокуса он появляется сразу, без нового запроса.\n  const [listShown, setListShown] = useState(false);\n  const geocoding = useRef<AbortController | null>(null);\n  const toast = useToast();\n\n  const settledQuery = useDebounce(query, SUGGEST_DELAY);\n  const { data: found, error: searchFailure, isFetching } = useQuery({\n    // Область карты в ключ не берём: подсказки она только упорядочивает, и спрашивать их\n    // заново на каждый сдвиг карты незачем — сервисы считают запросы поштучно. Но подсказки\n    // без области (у списка) — другие, их храним отдельно.\n    queryKey: ['address-suggestions', settledQuery, Boolean(near)],\n    queryFn:\n      settledQuery.length >= MIN_QUERY_LENGTH\n        ? ({ signal }) => addressService.suggest(settledQuery, near?.(), signal)\n        : skipToken,\n  });\n\n  // Набранное ещё не дошло до сервиса или дошло, но ответа нет: и то и другое — ожидание подсказок.\n  const searching = query.length >= MIN_QUERY_LENGTH && (query !== settledQuery || isFetching);\n  // Подсказки принадлежат набранному: поле очистили — показывать нечего, даже если ответ ещё придёт.\n  const suggestions = query.length >= MIN_QUERY_LENGTH ? (found ?? []) : [];\n\n  useEffect(() => {\n    // Без сообщения пустой список читается как «ничего не нашлось».\n    if (searchFailure) toast('Не удалось поискать адреса. Проверьте соединение с интернетом или попробуйте еще раз позже.');\n  }, [searchFailure, toast]);\n\n  // Незаконченный поиск координат отменяем: его ответ увёл бы уже не туда, куда ждут.\n  useEffect(() => () => geocoding.current?.abort(), []);\n\n  const teleport = useMutation({\n    mutationFn: (suggestion: AddressSuggestion) => {\n      geocoding.current?.abort();\n      geocoding.current = new AbortController();\n      return addressService.locate(suggestion, geocoding.current.signal);\n    },\n    onSuccess: (place, suggestion) => {\n      // Координат не нашлось: всё остаётся на месте, видно это только по сообщению.\n      if (place) onPlaceSelected(place, suggestion);\n      else toast('Не удалось найти этот адрес. Попробуйте выбрать другую подсказку.');\n    },\n    onError: failure => {\n      // Отменённый запрос — не неудача: подсказку выбрали другую или окно закрыли.\n      if (failure.name !== 'AbortError') {\n        toast('Не удалось найти адрес. Проверьте соединение с интернетом или попробуйте еще раз позже.');\n      }\n    },\n  });\n\n  const type = (value: string) => {\n    setText(value);\n    setQuery(value.trim());\n    setListShown(true);\n  };\n\n  const clear = () => {\n    setText('');\n    setQuery('');\n    setListShown(false);\n    input.current?.blur();\n  };\n\n  const pick = (suggestion: AddressSuggestion) => {\n    // Поле очищаем и уводим из него фокус: адрес нашли, дальше о нём говорят карта или список.\n    clear();\n    onSuggestionPicked?.();\n    teleport.mutate(suggestion);\n  };\n\n  // Esc убирает подсказки, а не всё окно: этого ждут от поля с выпадающим списком.\n  const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Escape' && listShown && suggestions.length > 0) {\n      event.preventDefault();\n      setListShown(false);\n    }\n  };\n\n  return (\n    <div className=\"address-search\">\n      <div className=\"address-search__field\">\n        <SearchIcon />\n        <input\n          ref={input}\n          className=\"address-search__input\"\n          type=\"text\"\n          placeholder=\"Город, улица, метро\"\n          aria-label=\"Поиск по адресу\"\n          autoComplete=\"off\"\n          value={text}\n          onChange={event => type(event.target.value)}\n          onFocus={() => setListShown(true)}\n          onBlur={() => setListShown(false)}\n          onKeyDown={onKeyDown}\n        />\n        {text.length > 0 && (\n          // Кнопка та же и во время поиска: крестик в ней меняется на спиннер, но нажатие всё так же чистит поле.\n          <button type=\"button\" className=\"address-search__clear\" aria-label=\"Очистить\" onClick={clear}>\n            {searching ? <span className=\"address-search__spinner\" aria-hidden=\"true\" /> : <ClearIcon />}\n          </button>\n        )}\n      </div>\n      {listShown && suggestions.length > 0 && (\n        // Нажатие по подсказке не должно уводить фокус из поля: иначе onBlur скроет список до клика.\n        <ul className=\"address-search__results\" onMouseDown={event => event.preventDefault()}>\n          {suggestions.map((suggestion, index) => (\n            <li key={suggestion.uri ?? index}>\n              <button type=\"button\" className=\"address-search__result\" onClick={() => pick(suggestion)}>\n                <span className=\"address-search__title\">{suggestion.title}</span>\n                {suggestion.subtitle && (\n                  <span className=\"address-search__subtitle\">{suggestion.subtitle}</span>\n                )}\n              </button>\n            </li>\n          ))}\n        </ul>\n      )}\n    </div>\n  );\n}\n\n// Лупы и крестика нужного вида в спрайтах доменов нет, рисуем сами — как значок ошибки карты.\nfunction SearchIcon() {\n  return (\n    <svg\n      className=\"address-search__icon\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n      aria-hidden=\"true\"\n    >\n      <circle cx=\"11\" cy=\"11\" r=\"6\" />\n      <path d=\"m15.5 15.5 3.5 3.5\" />\n    </svg>\n  );\n}\n\nfunction ClearIcon() {\n  return (\n    <svg\n      className=\"address-search__cross\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"m5 5 14 14M19 5 5 19\" />\n    </svg>\n  );\n}\n","// Метка с крестиком: значка ошибки нет ни в одном из спрайтов доменов, рисуем сами.\n// Линиями, а не заливкой с вырезом: так обводка, крестик и кольцо спиннера выходят одной толщины.\nexport default function MapErrorIcon({ className }: { className?: string }) {\n  return (\n    <svg\n      className={className}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M12 20.5 6.6 13.95A7 7 0 1 1 17.4 13.95Z\" />\n      <path d=\"m10 7.5 4 4M14 7.5l-4 4\" />\n    </svg>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { Fragment, useEffect, useRef, useState } from 'react';\n\nimport { getPoints, type OzonPoint } from '../../core/ozon-api';\nimport { distance as formatDistance, storagePeriod, workingHours } from '../../core/ozon-point-format';\nimport MapErrorIcon from '../yandex-map/MapErrorIcon';\n\ntype Props = {\n  /** Пункты, карточки которых показываем: они лежат под нажатым пином. */\n  pointIds: number[];\n  onSelect: (point: OzonPoint) => void;\n  onBack: () => void;\n};\n\n/** Карточки пунктов выдачи под нажатым пином. */\nexport default function OzonPointsPanel({ pointIds, onSelect, onBack }: Props) {\n  const { data: points, isPending, isFetching, refetch } = useQuery({\n    queryKey: ['ozon-points', pointIds],\n    queryFn: ({ signal }) => getPoints(pointIds, signal),\n  });\n\n  let body;\n  // Ждём и первый запрос, и повтор по кнопке: пункты в обоих случаях показывать ещё нечего.\n  if (isPending || isFetching) {\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <span className=\"ozon-points-panel__spinner\" role=\"status\" aria-label=\"Загружаем пункты выдачи\" />\n      </div>\n    );\n  } else if (!points) {\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <MapErrorIcon className=\"ozon-points-panel__error-icon\" />\n        <p className=\"ozon-points-panel__message\">\n          Не удалось загрузить пункты выдачи. Проверьте соединение с интернетом.\n        </p>\n        <button type=\"button\" className=\"ozon-points-panel__button\" onClick={() => refetch()}>\n          Попробовать ещё раз\n        </button>\n      </div>\n    );\n  } else if (points.length === 0) {\n    // Закрытые пункты сервер не отдаёт, поэтому список бывает и пустым.\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <p className=\"ozon-points-panel__message\">Эти пункты выдачи сейчас не принимают заказы.</p>\n      </div>\n    );\n  } else {\n    body = (\n      <ul className=\"ozon-points-panel__list\">\n        {points.map(point => (\n          <li key={point.id} className=\"ozon-points-panel__item\">\n            <PointCard point={point} onSelect={() => onSelect(point)} />\n          </li>\n        ))}\n      </ul>\n    );\n  }\n\n  return (\n    <div className=\"ozon-points-panel\">\n      <div className=\"ozon-points-panel__header\">\n        <button type=\"button\" className=\"ozon-points-panel__back\" aria-label=\"Назад\" onClick={onBack}>\n          <BackIcon />\n        </button>\n        <span className=\"ozon-points-panel__caption\">\n          {pointIds.length > 1 ? 'Пункты выдачи' : 'Пункт выдачи'}\n        </span>\n      </div>\n      {body}\n    </div>\n  );\n}\n\ntype CardProps = {\n  point: OzonPoint;\n  /** До пункта от точки поиска, в метрах: так пункт показывает список без карты. */\n  distance?: number;\n  onSelect: () => void;\n};\n\n/**\n * Содержимое карточки пункта. Её место задаёт контейнер: `.ozon-points-panel__item` на карте,\n * `.ozon-points-list__card` в списке.\n */\nexport function PointCard({ point, distance, onSelect }: CardProps) {\n  const hours = workingHours(point.working_hours);\n  return (\n    <>\n      <span className=\"ozon-points-panel__name\">\n        {point.name}\n        {distance !== undefined && (\n          <span className=\"ozon-points-panel__distance\">{formatDistance(distance)}</span>\n        )}\n      </span>\n      {/* Без карты город не виден, его даёт только полный адрес. */}\n      <span className=\"ozon-points-panel__address\">\n        {distance === undefined ? point.street_address : point.address}\n      </span>\n      {point.description && <Description text={point.description} />}\n      {hours.length > 0 && (\n        <div className=\"ozon-points-panel__hours\">\n          {hours.map(line => (\n            <Fragment key={line.day}>\n              <span className=\"ozon-points-panel__day\">{line.day}</span>\n              <span>{line.hours}</span>\n            </Fragment>\n          ))}\n        </div>\n      )}\n      <span className=\"ozon-points-panel__note\">Срок хранения: {storagePeriod(point.storage_period_days)}</span>\n      <button type=\"button\" className=\"ozon-points-panel__button\" onClick={onSelect}>\n        Выбрать\n      </button>\n    </>\n  );\n}\n\n// Описание бывает и в строку, и в абзац с дорогой от метро. Длинное сворачиваем: иначе одна\n// карточка занимает всю панель и соседних в списке не видно.\nfunction Description({ text }: { text: string }) {\n  const textRef = useRef<HTMLSpanElement>(null);\n  const [expanded, setExpanded] = useState(false);\n  const [clipped, setClipped] = useState(false);\n\n  useEffect(() => {\n    // Ссылку показываем, только когда текст правда не поместился в две строки.\n    const node = textRef.current;\n    setClipped(node !== null && node.scrollHeight > node.clientHeight);\n  }, [text]);\n\n  return (\n    <span className={`ozon-points-panel__description${expanded ? ' ozon-points-panel__description--full' : ''}`}>\n      <span ref={textRef} className=\"ozon-points-panel__description-text\">\n        {text}\n      </span>\n      {clipped && (\n        <button\n          type=\"button\"\n          className=\"ozon-points-panel__more\"\n          onClick={() => setExpanded(shown => !shown)}\n        >\n          {expanded ? 'Скрыть' : 'Показать'}\n        </button>\n      )}\n    </span>\n  );\n}\n\n// Стрелку рисуем сами: в спрайтах доменов она есть, но своего вида в каждом.\nfunction BackIcon() {\n  return (\n    <svg\n      className=\"ozon-points-panel__arrow\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M19 12H5m6-6-6 6 6 6\" />\n    </svg>\n  );\n}\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport type { LngLat } from 'ymaps3';\n\nimport { getMapClusters, getPoints, type OzonMapCluster, type OzonPoint } from '../../core/ozon-api';\n\n// Сколько пунктов показываем: дальше двадцатого по списку не идут.\nconst MAX_NEARBY_POINTS = 20;\n// Поиска по адресу у Ozon нет, только кластеры в прямоугольнике. Начинаем с квартала вокруг точки\n// и расширяем, пока пунктов мало. Масштаб — чтобы кластеры были не крупнее ступени.\nconst STEPS = [\n  { km: 1, zoom: 15 },\n  { km: 5, zoom: 13 },\n  { km: 25, zoom: 11 },\n];\nconst EARTH_RADIUS_KM = 6371;\n\nexport type NearbyPoint = {\n  point: OzonPoint;\n  /** От точки поиска, в метрах. */\n  distance: number;\n};\n\n/** Ближайшие к точке пункты выдачи, по возрастанию расстояния. Без точки ничего не спрашивает. */\nexport function useNearbyOzonPoints(place: LngLat | null) {\n  return useQuery({\n    queryKey: ['ozon-nearby-points', place],\n    queryFn: place ? ({ signal }) => nearbyPoints(place, signal) : skipToken,\n  });\n}\n\nasync function nearbyPoints(place: LngLat, signal: AbortSignal): Promise<NearbyPoint[]> {\n  let clusters: OzonMapCluster[] = [];\n  for (const { km, zoom } of STEPS) {\n    clusters = await getMapClusters({ ...around(place, km), zoom }, signal);\n    if (clusters.flatMap(cluster => cluster.point_ids).length >= MAX_NEARBY_POINTS) break;\n  }\n\n  const ids = clusters\n    .sort((a, b) => distance(place, [a.lon, a.lat]) - distance(place, [b.lon, b.lat]))\n    .flatMap(cluster => cluster.point_ids)\n    .slice(0, MAX_NEARBY_POINTS);\n  if (ids.length === 0) return [];\n\n  const points = await getPoints(ids, signal);\n  return points\n    .map(point => ({ point, distance: distance(place, [point.lon, point.lat]) }))\n    .sort((a, b) => a.distance - b.distance);\n}\n\nfunction around([lon, lat]: LngLat, km: number) {\n  const dLat = km / 111.32;\n  const dLon = dLat / Math.cos((lat * Math.PI) / 180);\n  return { min_lat: lat - dLat, min_lon: lon - dLon, max_lat: lat + dLat, max_lon: lon + dLon };\n}\n\n/** По дуге большого круга, в метрах. */\nfunction distance([lon1, lat1]: LngLat, [lon2, lat2]: LngLat): number {\n  const rad = Math.PI / 180;\n  const a =\n    Math.sin(((lat2 - lat1) * rad) / 2) ** 2 +\n    Math.cos(lat1 * rad) * Math.cos(lat2 * rad) * Math.sin(((lon2 - lon1) * rad) / 2) ** 2;\n  return 2 * EARTH_RADIUS_KM * 1000 * Math.asin(Math.sqrt(a));\n}\n","import { useRef, useState } from 'react';\nimport type { LngLat } from 'ymaps3';\n\nimport { hasAddressSearch, type AddressSuggestion } from '../../core/address-service';\nimport type { OzonPoint } from '../../core/ozon-api';\nimport { getUserGeolocation } from '../../core/user-geolocation';\nimport AddressSearch from '../yandex-map/AddressSearch';\nimport MapErrorIcon from '../yandex-map/MapErrorIcon';\nimport { PointCard } from './OzonPointsPanel';\nimport { useNearbyOzonPoints } from './useNearbyOzonPoints';\n\ntype Place = {\n  coordinates: LngLat;\n  /** Выбранный адрес. Без него ищем рядом с посетителем. */\n  address?: string;\n};\n\n/** Пункты выдачи рядом с адресом или с посетителем — без карты. */\nexport default function OzonPointsList({ onSelect }: { onSelect: (point: OzonPoint) => void }) {\n  const [place, setPlace] = useState<Place | null>(null);\n  const [locating, setLocating] = useState<'idle' | 'asking' | 'failed'>('idle');\n  // Ответы приходят не сразу: геолокация ждёт разрешения, координаты адреса — сервиса. Ответ на\n  // выбор, после которого посетитель выбрал что-то ещё, опоздал.\n  const lastChoice = useRef(0);\n  const addressChoice = useRef(0);\n  const { data: points, isFetching, refetch } = useNearbyOzonPoints(place?.coordinates ?? null);\n  const searchable = hasAddressSearch();\n\n  const startAddress = () => {\n    addressChoice.current = ++lastChoice.current;\n    setLocating('idle');\n  };\n\n  const pickAddress = (coordinates: LngLat, suggestion: AddressSuggestion) => {\n    if (addressChoice.current !== lastChoice.current) return;\n    const address = [suggestion.title, suggestion.subtitle].filter(Boolean).join(', ');\n    setPlace({ coordinates, address });\n  };\n\n  const nearMe = async () => {\n    const choice = ++lastChoice.current;\n    setPlace(null);\n    setLocating('asking');\n    const coords = await getUserGeolocation();\n    if (choice !== lastChoice.current) return;\n    setLocating(coords ? 'idle' : 'failed');\n    if (coords) setPlace({ coordinates: [coords.longitude, coords.latitude] });\n  };\n\n  let body;\n  if (locating === 'asking') {\n    // Ответа может не быть долго: браузер ждёт разрешения посетителя.\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <span className=\"ozon-points-panel__spinner\" aria-hidden=\"true\" />\n        <p className=\"ozon-points-panel__message\" role=\"status\">\n          Определяем, где вы. Если браузер спросит разрешение, разрешите.\n        </p>\n      </div>\n    );\n  } else if (place && isFetching) {\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <span className=\"ozon-points-panel__spinner\" role=\"status\" aria-label=\"Ищем пункты выдачи\" />\n      </div>\n    );\n  } else if (locating === 'failed') {\n    body = (\n      <Failure>\n        {searchable\n          ? 'Не удалось определить, где вы. Введите адрес.'\n          : 'Не удалось определить, где вы. Проверьте, что браузер разрешает сайту узнать ваше местоположение.'}\n      </Failure>\n    );\n  } else if (!place) {\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <LookingGlassIcon />\n        <p className=\"ozon-points-panel__message\">\n          {searchable ? 'Введите адрес или нажмите «Рядом со мной» —' : 'Нажмите «Рядом со мной» —'}\n          <br />\n          покажем пункты выдачи рядом.\n        </p>\n      </div>\n    );\n  } else if (!points) {\n    body = (\n      <div className=\"ozon-points-panel__status\">\n        <MapErrorIcon className=\"ozon-points-panel__error-icon\" />\n        <p className=\"ozon-points-panel__message\">\n          Не удалось загрузить пункты выдачи. Проверьте соединение с интернетом.\n        </p>\n        <button type=\"button\" className=\"ozon-points-panel__button\" onClick={() => refetch()}>\n          Попробовать ещё раз\n        </button>\n      </div>\n    );\n  } else if (points.length === 0) {\n    body = <Failure>Рядом пунктов выдачи нет.</Failure>;\n  } else {\n    body = (\n      <ul className=\"ozon-points-list__grid\">\n        {points.map(({ point, distance }) => (\n          <li key={point.id} className=\"ozon-points-list__card\">\n            <PointCard point={point} distance={distance} onSelect={() => onSelect(point)} />\n          </li>\n        ))}\n      </ul>\n    );\n  }\n\n  return (\n    <div className=\"ozon-points-list\">\n      <div className=\"ozon-points-list__search\">\n        {searchable && (\n          <AddressSearch onPlaceSelected={pickAddress} onSuggestionPicked={startAddress} />\n        )}\n        {/* На телефоне подпись спрятана, имя кнопке даёт aria-label. */}\n        <button\n          type=\"button\"\n          className=\"ozon-points-list__near-me\"\n          aria-label=\"Рядом со мной\"\n          onClick={nearMe}\n        >\n          <LocationIcon />\n          <span className=\"ozon-points-list__near-me-label\">Рядом со мной</span>\n        </button>\n      </div>\n      <div className=\"ozon-points-list__body\">\n        {place && (\n          <p className=\"ozon-points-list__caption\">\n            <PinIcon />\n            {place.address ? (\n              <span>\n                Пункты выдачи рядом с адресом: <strong>{place.address}</strong>\n              </span>\n            ) : (\n              'Пункты выдачи рядом с вами'\n            )}\n          </p>\n        )}\n        {body}\n      </div>\n    </div>\n  );\n}\n\n// Найти пункты не вышло — со значком, как у неудачной загрузки.\nfunction Failure({ children }: { children: string }) {\n  return (\n    <div className=\"ozon-points-panel__status\">\n      <MapErrorIcon className=\"ozon-points-panel__error-icon\" />\n      <p className=\"ozon-points-panel__message\">{children}</p>\n    </div>\n  );\n}\n\n// Лупа, пока искать не начали: линиями той же толщины, что значок ошибки карты, и того же размера.\n// Одним контуром: цвет полупрозрачный, и стык двух фигур вышел бы темнее.\nfunction LookingGlassIcon() {\n  return (\n    <svg\n      className=\"ozon-points-list__start-icon\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1\"\n      strokeLinecap=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M17 10.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 1 1 13 0ZM15.2 15.2 20 20\" />\n    </svg>\n  );\n}\n\n// Метка на карте: точка, вокруг которой показаны пункты.\nfunction PinIcon() {\n  return (\n    <svg\n      className=\"ozon-points-list__caption-icon\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinejoin=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M12 21s-6.5-5.8-6.5-11a6.5 6.5 0 0 1 13 0c0 5.2-6.5 11-6.5 11Z\" />\n      <circle cx=\"12\" cy=\"10\" r=\"2.25\" />\n    </svg>\n  );\n}\n\n// Стрелка геолокации, в тон лупе поля поиска рядом.\nfunction LocationIcon() {\n  return (\n    <svg\n      className=\"ozon-points-list__location-icon\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinejoin=\"round\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M20 4 4 11l7 2 2 7 7-16Z\" />\n    </svg>\n  );\n}\n","import { useCallback, useRef, type MouseEvent, type ReactNode } from 'react';\nimport type { YMap as YMapEntity, YMapLocationRequest } from 'ymaps3';\n\nimport MapErrorIcon from './MapErrorIcon';\nimport { useYandexMaps, useYandexMapsLoading } from './YandexMapsProvider';\n\ntype Props = {\n  /** Где карта открывается. Дальше её двигают через саму карту, проп больше не читается. */\n  initialLocation: YMapLocationRequest;\n  /**\n   * Отдаёт карту владельцу: ею он и двигает её через `setLocation`. Карта создаётся не сразу,\n   * поэтому сначала приходит `null`. Функция должна быть постоянной, иначе карта будет\n   * отцепляться и цепляться заново на каждый рендер.\n   */\n  mapRef?: (map: YMapEntity | null) => void;\n  /**\n   * Карта сдвинулась: границы и масштаб читают у неё самой. Приходит на каждом кадре\n   * перетаскивания. Карту передаём в вызов: первый раз он случается в том же коммите,\n   * что и `mapRef`, когда состояние владельца её ещё не видит.\n   */\n  onViewChange?: (map: YMapEntity) => void;\n  /**\n   * По области карты нажали. Событие DOM, а не карты: свой клик карта собирает из\n   * pointer-событий и о том, попал ли он по чему-то поверх неё, не знает.\n   */\n  onClick?: (event: MouseEvent<HTMLDivElement>) => void;\n  /** Что предложить под сообщением, что карта не загрузилась. */\n  errorAction?: ReactNode;\n  /** Содержимое карты: компоненты API оно берёт из `useYandexMaps`. */\n  children?: ReactNode;\n};\n\nexport default function YandexMap({\n  initialLocation,\n  mapRef,\n  onViewChange,\n  onClick,\n  errorAction,\n  children,\n}: Props) {\n  const { maps, failed } = useYandexMapsLoading();\n\n  let content;\n  if (failed) {\n    content = (\n      <div className=\"yandex-map__placeholder\">\n        <MapErrorIcon className=\"yandex-map__error-icon\" />\n        <p className=\"yandex-map__message\">\n          Не удалось загрузить карту.\n          <br />\n          Попробуйте ещё раз позже.\n        </p>\n        {errorAction}\n      </div>\n    );\n  } else if (maps) {\n    content = (\n      <LoadedMap initialLocation={initialLocation} mapRef={mapRef} onViewChange={onViewChange}>\n        {children}\n      </LoadedMap>\n    );\n  } else {\n    content = (\n      <div className=\"yandex-map__placeholder\">\n        <span className=\"yandex-map__spinner\" role=\"status\" aria-label=\"Загружаем карту\" />\n      </div>\n    );\n  }\n  return (\n    <div className=\"yandex-map\" onClick={onClick}>\n      {content}\n    </div>\n  );\n}\n\ntype ActionProps = { onClick: () => void; children: ReactNode };\n\n/** Кнопка для `errorAction`: стиль подходит заглушке, на которой она стоит. */\nYandexMap.Action = function YandexMapAction({ onClick, children }: ActionProps) {\n  return (\n    <button type=\"button\" className=\"yandex-map__action\" onClick={onClick}>\n      {children}\n    </button>\n  );\n};\n\n// Компоненты карты появляются только после загрузки API, поэтому карта живёт в отдельном компоненте.\nfunction LoadedMap({ initialLocation, mapRef, onViewChange, children }: Props) {\n  const { reactify, YMap, YMapDefaultSchemeLayer, YMapDefaultFeaturesLayer, YMapListener } = useYandexMaps();\n  const mapEntity = useRef<YMapEntity | null>(null);\n  // useDefault отдаёт положение только на первом рендере: пропом карта управляется целиком,\n  // и любой следующий рендер возвращал бы её на исходное место.\n  const createAt = reactify.useDefault(initialLocation, []);\n\n  const reportView = useCallback(() => {\n    const map = mapEntity.current;\n    if (map) onViewChange?.(map);\n  }, [onViewChange]);\n\n  // Карта появляется позже эффектов этого компонента, поэтому и владельцу её отдаём,\n  // и о первой области сообщаем здесь, а не на монтировании.\n  const attachMap = useCallback(\n    (map: YMapEntity | null) => {\n      mapEntity.current = map;\n      mapRef?.(map);\n      if (map) reportView();\n    },\n    [mapRef, reportView]\n  );\n\n  return (\n    <YMap ref={attachMap} className=\"yandex-map__map\" location={createAt}>\n      <YMapDefaultSchemeLayer />\n      <YMapDefaultFeaturesLayer />\n      {/* Сдвиг, переезд и изменение размера — события карты; о них она сообщает сама. */}\n      {onViewChange && <YMapListener onUpdate={reportView} onResize={reportView} />}\n      {children}\n    </YMap>\n  );\n}\n","import type { OzonMapCluster } from '../../core/ozon-api';\nimport { useYandexMaps } from '../yandex-map/YandexMapsProvider';\n\ntype Props = {\n  clusters: OzonMapCluster[];\n  /** Пункты открытого пина: его и выделяем. Сравниваем по набору, кластеры приходят новыми. */\n  selected: number[] | null;\n  /** По пину нажали: под ним либо один пункт выдачи, либо несколько. */\n  onPick: (cluster: OzonMapCluster) => void;\n};\n\n/** Пины пунктов выдачи. Одиночный пункт Ozon тоже отдаёт кластером, поэтому пинов два вида. */\nexport default function OzonPointPins({ clusters, selected, onPick }: Props) {\n  const { YMapMarker } = useYandexMaps();\n  const selectedKey = selected?.join();\n  return (\n    <>\n      {clusters.map(cluster => {\n        const many = cluster.points_count > 1;\n        const key = cluster.point_ids.join();\n        const classes = ['ozon-point-pin'];\n        if (many) classes.push('ozon-point-pin--cluster');\n        if (key === selectedKey) classes.push('ozon-point-pin--selected');\n        return (\n          <YMapMarker key={key} coordinates={[cluster.lon, cluster.lat]}>\n            <button\n              type=\"button\"\n              className={classes.join(' ')}\n              aria-label={many ? `Пункты выдачи: ${cluster.points_count}` : 'Пункт выдачи'}\n              onClick={() => onPick(cluster)}\n            >\n              {many ? cluster.points_count : <PointShape />}\n            </button>\n          </YMapMarker>\n        );\n      })}\n    </>\n  );\n}\n\n/** Нажатие пришлось по пину. Нужно тем, кто отличает нажатия по карте от нажатий по её содержимому. */\nexport function isPinClick(target: EventTarget | null): boolean {\n  return target instanceof Element && Boolean(target.closest('.ozon-point-pin'));\n}\n\nconst POINT_OUTLINE = 'M12 33 4.2 21.4A11.4 11.4 0 1 1 19.8 21.4Z';\n\nfunction PointShape() {\n  return (\n    <svg className=\"ozon-point-pin__shape\" viewBox=\"0 0 24 34\" aria-hidden=\"true\">\n      <path className=\"ozon-point-pin__shadow\" d={POINT_OUTLINE} transform=\"translate(0 1.5)\" />\n      <path className=\"ozon-point-pin__body\" d={POINT_OUTLINE} />\n      <circle className=\"ozon-point-pin__dot\" cx=\"12\" cy=\"12\" r=\"4\" />\n    </svg>\n  );\n}\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { YMap } from 'ymaps3';\n\nimport { getMapClusters, type OzonMapCluster, type OzonMapView } from '../../core/ozon-api';\nimport { useDebounce } from '../../core/use-debounce';\nimport { useToast } from '../toast/ToastProvider';\n\n// Карта сообщает о сдвиге на каждом кадре, а за каждым промахом мимо нашего кэша стоит вызов Ozon:\n// спрашиваем пункты, когда карту отпустили.\nconst REQUEST_DELAY = 400;\n// Пункты на целую область не нужны: пусть посетитель приблизит карту к своему городу. Кластеры просим\n// на ступень крупнее карты, то есть не мельче 10: мельче Ozon не отдаёт номера пунктов под пинами.\nconst MIN_ZOOM = 11;\n// Масштаб больше 19 Ozon не принимает: отвечает 400.\nconst OZON_MAX_ZOOM = 19;\n\n/** Пункты выдачи для видимой области карты: `onViewChange` отдаём карте, пункты — тем, кто рисует. */\nexport function useOzonMapClusters(): {\n  clusters: OzonMapCluster[];\n  /** Карта отдалена так, что пунктов не спрашиваем: её нужно приблизить. */\n  zoomedOut: boolean;\n  onViewChange: (map: YMap) => void;\n} {\n  // null — карта отдалена, undefined — её ещё нет.\n  const [view, setView] = useState<OzonMapView | null>();\n  const settled = useDebounce(view, REQUEST_DELAY);\n  const toast = useToast();\n\n  const { data, error } = useQuery({\n    queryKey: ['ozon-map-clusters', settled],\n    queryFn: settled ? ({ signal }) => getMapClusters(settled, signal) : skipToken,\n  });\n\n  useEffect(() => {\n    // Пины прошлой области остаются на месте, поэтому о неудаче и говорим: иначе она\n    // выглядит как область без пунктов.\n    if (error) toast('Не удалось загрузить пункты выдачи. Проверьте соединение с интернетом или попробуйте еще раз позже.');\n  }, [error, toast]);\n\n  // Пока новые пункты не пришли, держим прошлые: иначе карта пустеет на каждом сдвиге.\n  const shown = useRef<OzonMapCluster[]>([]);\n  if (data) shown.current = data;\n\n  return {\n    clusters: view === null ? [] : (data ?? shown.current),\n    zoomedOut: view === null,\n    onViewChange: useCallback((map: YMap) => setView(toView(map)), []),\n  };\n}\n\n/** Что спросить у Ozon для этой карты. null — карта отдалена, спрашивать нечего. */\nexport function toView(map: YMap): OzonMapView | null {\n  // Масштаб у карты дробный, а Ozon собирает кластеры по целому.\n  const zoom = Math.round(map.zoom);\n  if (zoom < MIN_ZOOM) return null;\n  const [[lon1, lat1], [lon2, lat2]] = map.bounds;\n  return {\n    // Углы приходят в порядке, который карта не обещает, а на мелком масштабе вылезают за полюса.\n    min_lat: clamp(Math.min(lat1, lat2), 90),\n    min_lon: clamp(Math.min(lon1, lon2), 180),\n    max_lat: clamp(Math.max(lat1, lat2), 90),\n    max_lon: clamp(Math.max(lon1, lon2), 180),\n    // Кластеры берём на ступень крупнее: на масштабе карты Ozon отдаёт столько, что пины налезают\n    // друг на друга.\n    zoom: Math.min(zoom - 1, OZON_MAX_ZOOM),\n  };\n}\n\nfunction clamp(value: number, limit: number): number {\n  return Math.min(Math.max(value, -limit), limit);\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport type { LngLat, YMap, YMapLocationRequest } from 'ymaps3';\n\nimport { hasAddressSearch, type SuggestArea } from '../../core/address-service';\nimport type { OzonMapCluster, OzonPoint } from '../../core/ozon-api';\nimport { getUserGeolocation } from '../../core/user-geolocation';\nimport AddressSearch from '../yandex-map/AddressSearch';\nimport YandexMap from '../yandex-map/YandexMap';\nimport OzonPointPins, { isPinClick } from './OzonPointPins';\nimport OzonPointsPanel from './OzonPointsPanel';\nimport { useOzonMapClusters } from './useOzonMapClusters';\n\n// Пока показывать нечего, открываемся на Москве.\nconst DEFAULT_LOCATION: YMapLocationRequest = { center: [37.618423, 55.751244], zoom: 11 };\n// Посетитель показал, где он: подходящий масштаб — его город.\nconst USER_LOCATION_ZOOM = 13;\n// Насколько близко карта подъезжает к найденному адресу: рядом с ним и выбирают пункт выдачи.\nconst PLACE_ZOOM = 14;\n// Сколько карточек показываем в панели: список длиннее не листают, в нём ищут приближением.\nconst MAX_PANEL_POINTS = 20;\n\n/** Пункты выдачи на карте: пины, поиск адреса и карточки пунктов под нажатым пином. */\nexport default function OzonPointsMap({\n  onSelect,\n  onShowList,\n}: {\n  onSelect: (point: OzonPoint) => void;\n  /** Карта не загрузилась, и посетитель просит пункты списком. */\n  onShowList: () => void;\n}) {\n  const [map, setMap] = useState<YMap | null>(null);\n  const { clusters, zoomedOut, onViewChange } = useOzonMapClusters();\n  // Пункты нажатого пина: пока их нет, нет и панели с карточками.\n  const [shownPoints, setShownPoints] = useState<number[] | null>(null);\n  // Панель уезжает за край карты: до конца анимации она ещё на месте.\n  const [hiding, setHiding] = useState(false);\n\n  // Разрешение спрашиваем, когда карта уже создана: ответа не ждём, карта видна сразу.\n  useEffect(() => {\n    if (!map) return undefined;\n\n    let cancelled = false;\n    getUserGeolocation().then(coords => {\n      // Отказ и ошибку не показываем: карта просто остаётся там, где открылась.\n      if (!coords || cancelled) return;\n      map.setLocation({ center: [coords.longitude, coords.latitude], zoom: USER_LOCATION_ZOOM });\n    });\n    return () => {\n      cancelled = true;\n    };\n  }, [map]);\n\n  // Выделение снимаем отъездом панели: пин под ней тускнеет вместе с её уходом.\n  const deselect = useCallback(() => setHiding(true), []);\n\n  // Карту подвинули или приблизили: пины пересобираются под новую область, и панель под\n  // прежним пином уезжает вместе с ними.\n  const viewChanged = useCallback(\n    (map: YMap) => {\n      onViewChange(map);\n      deselect();\n    },\n    [onViewChange, deselect]\n  );\n\n  const pick = (cluster: OzonMapCluster) => {\n    // Карточек в кластере больше, чем показываем. Вместо них приближаемся к нему:\n    // на большем масштабе Ozon разложит его на кластеры поменьше.\n    if (cluster.points_count > MAX_PANEL_POINTS && cluster.area) {\n      const { min_lat, min_lon, max_lat, max_lon } = cluster.area;\n      map?.setLocation({ bounds: [[min_lon, max_lat], [max_lon, min_lat]] });\n    } else {\n      setShownPoints(cluster.point_ids);\n      setHiding(false);\n    }\n  };\n\n  const select = (point: OzonPoint) => {\n    // Панель убираем сразу, без отъезда: окно закрывается вместе с выбором, и её отъезд\n    // остался бы за кадром. Карта остаётся, где была, так что тот же пин под рукой.\n    setShownPoints(null);\n    setHiding(false);\n    onSelect(point);\n  };\n\n  return (\n    <>\n      <YandexMap\n        initialLocation={DEFAULT_LOCATION}\n        mapRef={setMap}\n        onViewChange={viewChanged}\n        // Нажали мимо пинов: по самим пинам отвечает OzonPointPins.\n        onClick={event => {\n          if (!isPinClick(event.target)) deselect();\n        }}\n        errorAction={<YandexMap.Action onClick={onShowList}>Выбрать списком</YandexMap.Action>}\n      >\n        <OzonPointPins clusters={clusters} selected={hiding ? null : shownPoints} onPick={pick} />\n      </YandexMap>\n      {zoomedOut && (\n        <p className=\"ozon-map-modal__zoom-hint\" role=\"status\">\n          <ZoomInIcon />\n          Приблизьте карту, чтобы увидеть пункты выдачи\n        </p>\n      )}\n      {/* Поиск появляется вместе с картой: над её заглушкой — со спиннером или с ошибкой — ему нечего делать. */}\n      {map && hasAddressSearch() && (\n        <div\n          className={`ozon-map-modal__search-overlay${\n            shownPoints && !hiding ? ' ozon-map-modal__search-overlay--behind' : ''\n          }`}\n        >\n          <AddressSearch\n            onPlaceSelected={place => map.setLocation({ center: place, zoom: PLACE_ZOOM })}\n            near={() => viewOf(map)}\n          />\n        </div>\n      )}\n      {shownPoints && (\n        <div\n          className={`ozon-map-modal__points-overlay${hiding ? ' ozon-map-modal__points-overlay--hiding' : ''}`}\n          // Панель снимаем, когда она уехала. Своя анимация, не детская: у содержимого свои.\n          onAnimationEnd={event => {\n            if (!hiding || event.target !== event.currentTarget) return;\n            setShownPoints(null);\n            setHiding(false);\n          }}\n        >\n          <OzonPointsPanel pointIds={shownPoints} onSelect={select} onBack={() => setHiding(true)} />\n        </div>\n      )}\n    </>\n  );\n}\n\nfunction viewOf(map: YMap): SuggestArea {\n  // Углы карта отдаёт в порядке, который не обещает, поэтому размеры берём по модулю.\n  const [[lon1, lat1], [lon2, lat2]] = map.bounds;\n  return {\n    center: [...map.center] as LngLat,\n    span: [Math.abs(lon2 - lon1), Math.abs(lat2 - lat1)],\n  };\n}\n\n// Лупа с плюсом: простая лупа на той же карте уже значит поиск адреса. Рисуем в тон ей.\nfunction ZoomInIcon() {\n  return (\n    <svg\n      className=\"ozon-map-modal__zoom-icon\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n      aria-hidden=\"true\"\n    >\n      <circle cx=\"11\" cy=\"11\" r=\"6\" />\n      <path d=\"m15.5 15.5 3.5 3.5M11 8.5v5M8.5 11h5\" />\n    </svg>\n  );\n}\n","import { useEffect, useId, useState, type KeyboardEvent, type ReactNode } from 'react';\n\nimport type { OzonPoint } from '../../core/ozon-api';\nimport { getSiteConfig } from '../../core/site-config';\nimport Modal from '../modal/Modal';\nimport ToastProvider from '../toast/ToastProvider';\nimport YandexMapsProvider from '../yandex-map/YandexMapsProvider';\nimport OzonPointsList from './OzonPointsList';\nimport OzonPointsMap from './OzonPointsMap';\n\ntype Props = {\n  open: boolean;\n  onClose: () => void;\n  /** Посетитель выбрал пункт выдачи. Окно после этого закрывает владелец. */\n  onSelect: (point: OzonPoint) => void;\n};\n\nconst TABS = [\n  { name: 'map', label: 'На карте' },\n  { name: 'list', label: 'Списком' },\n] as const;\n\ntype Tab = (typeof TABS)[number]['name'];\n\n/** Пункты выдачи Ozon в модальном окне: на карте или списком рядом с адресом. */\nexport default function OzonMapModal({ open, onClose, onSelect }: Props) {\n  // Карту создаём при первом открытии: в закрытом окне контейнер нулевого размера.\n  // Дальше она живёт вместе с окном и переживает закрытие со своим положением.\n  const [everOpened, setEverOpened] = useState(open);\n  useEffect(() => {\n    if (open) setEverOpened(true);\n  }, [open]);\n  const [tab, setTab] = useState<Tab>('map');\n  const id = useId();\n  // Без ключа JS API карты не будет: вкладок нет, окно сразу открывается списком.\n  const hasMap = Boolean(getSiteConfig().yandexMapsApiKey);\n  const showList = () => setTab('list');\n\n  // Стрелки, Home и End — как у вкладок по WAI-ARIA: в порядке Tab только открытая вкладка.\n  const moveTab = (event: KeyboardEvent) => {\n    const index = TABS.findIndex(({ name }) => name === tab);\n    const keys: Record<string, number> = {\n      ArrowLeft: index - 1,\n      ArrowRight: index + 1,\n      Home: 0,\n      End: TABS.length - 1,\n    };\n    if (!(event.key in keys)) return;\n    event.preventDefault();\n    const { name } = TABS[(keys[event.key] + TABS.length) % TABS.length];\n    setTab(name);\n    document.getElementById(`${id}-${name}-tab`)?.focus();\n  };\n\n  return (\n    <Modal open={open} title=\"Пункт выдачи Ozon\" onClose={onClose} width={1100} height={760} fullScreen>\n      {everOpened && (\n        <div className=\"ozon-map-modal\">\n          {hasMap && (\n            <div className=\"ozon-map-modal__tabs\" role=\"tablist\" onKeyDown={moveTab}>\n              {TABS.map(({ name, label }) => (\n                <button\n                  key={name}\n                  type=\"button\"\n                  role=\"tab\"\n                  id={`${id}-${name}-tab`}\n                  aria-controls={`${id}-${name}`}\n                  aria-selected={tab === name}\n                  tabIndex={tab === name ? 0 : -1}\n                  className=\"ozon-map-modal__tab\"\n                  onClick={() => setTab(name)}\n                >\n                  {label}\n                </button>\n              ))}\n            </div>\n          )}\n          {/* Провайдер сообщений — снаружи вкладок: о неудачах говорят и карта, и всё, что на ней, и список. */}\n          <ToastProvider>\n            {/* Вкладки лежат друг на друге, скрытая только невидима: карта не теряет размер и не перерисовывается. */}\n            <div className=\"ozon-map-modal__content\">\n              {hasMap ? (\n                <>\n                  <TabPanel id={`${id}-map`} shown={tab === 'map'}>\n                    {/* Карта не загрузилась — список открываем сами, не дожидаясь посетителя. */}\n                    <YandexMapsProvider onFailed={showList}>\n                      <OzonPointsMap onSelect={onSelect} onShowList={showList} />\n                    </YandexMapsProvider>\n                  </TabPanel>\n                  <TabPanel id={`${id}-list`} shown={tab === 'list'}>\n                    <OzonPointsList onSelect={onSelect} />\n                  </TabPanel>\n                </>\n              ) : (\n                <div className=\"ozon-map-modal__panel\">\n                  <OzonPointsList onSelect={onSelect} />\n                </div>\n              )}\n            </div>\n          </ToastProvider>\n        </div>\n      )}\n    </Modal>\n  );\n}\n\nfunction TabPanel({ id, shown, children }: { id: string; shown: boolean; children: ReactNode }) {\n  return (\n    <div\n      id={id}\n      role=\"tabpanel\"\n      aria-labelledby={`${id}-tab`}\n      className={`ozon-map-modal__panel${shown ? '' : ' ozon-map-modal__panel--hidden'}`}\n    >\n      {children}\n    </div>\n  );\n}\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { Fragment, useState } from 'react';\n\nimport { ApiError } from '#common/core/api';\nimport { getDeliveryOptions, type OzonPoint } from '#common/core/ozon-api';\nimport { getSiteConfig } from '#common/core/site-config';\nimport { deliveryDate, deliveryPrice, storagePeriod, workingHours } from '#common/core/ozon-point-format';\nimport OzonMapModal from '#common/blocks/ozon-map-modal/OzonMapModal';\nimport type { OzonTheme } from './theme';\n\n/** Что показать посетителю по неудаче. Неожиданную ошибку не пересказываем: она не для него. */\nfunction userMessage(error: unknown): string {\n  return error instanceof ApiError ? error.message : 'Что-то пошло не так. Попробуйте ещё раз.';\n}\n\n/** Скрытое поле формы заказа: по нему сервер находит выбранный пункт выдачи. */\nexport const POINT_FIELD = 'ozon_map_point_id';\n\ntype Props = {\n  /** Выбранный пункт выдачи или null, пока посетитель его не выбрал. */\n  point: OzonPoint | null;\n  /** Оформление секции: см. `theme.ts`. */\n  theme: OzonTheme;\n  /** pk выбранного тарифа или пустая строка: доставку проверяют для товара тарифа. */\n  tariffId: string;\n  /** Токен подтверждения номера: без него сроки доставки сервер не назовёт. */\n  token: string;\n  /** Ошибка формы про пункт: подписать скрытое поле ей нечем, показываем её сами. */\n  error: string;\n  onSelect: (point: OzonPoint) => void;\n};\n\n/** Секция формы с пунктом выдачи Ozon: его выбирают на карте, и здесь же видно сроки доставки. */\nexport default function OzonPointSection({\n  theme,\n  point,\n  tariffId,\n  token,\n  error,\n  onSelect,\n}: Props) {\n  const [mapOpen, setMapOpen] = useState(false);\n  const Title = theme.titleTag;\n\n  return (\n    <div className=\"form__section\">\n      <Title className={`${theme.titleTag}-title form__section-title`}>Пункт выдачи Ozon</Title>\n      {point ? (\n        <>\n          <PointCard point={point} />\n          {/* Кнопка, а не ссылка: открывает карту здесь же и никуда не ведёт. */}\n          <button type=\"button\" className=\"ozon-point-change\" onClick={() => setMapOpen(true)}>\n            Выбрать другой пункт\n          </button>\n        </>\n      ) : (\n        <button type=\"button\" className={theme.buttonClass} onClick={() => setMapOpen(true)}>\n          {/* Без ключа JS API окно открывается списком. */}\n          {getSiteConfig().yandexMapsApiKey\n            ? 'Выбрать пункт выдачи на карте'\n            : 'Выбрать пункт выдачи'}\n        </button>\n      )}\n      {error && <p className=\"ozon-point-error\">{error}</p>}\n      <input type=\"hidden\" name={POINT_FIELD} value={point?.id ?? ''} />\n      {point && <Delivery point={point} tariffId={tariffId} token={token} />}\n      <OzonMapModal\n        open={mapOpen}\n        onClose={() => setMapOpen(false)}\n        onSelect={picked => {\n          onSelect(picked);\n          setMapOpen(false);\n        }}\n      />\n    </div>\n  );\n}\n\n/** То же о пункте, что и в его карточке на карте, — чтобы выбранное не пришлось искать заново. */\nfunction PointCard({ point }: { point: OzonPoint }) {\n  const hours = workingHours(point.working_hours);\n  return (\n    <div className=\"ozon-point\">\n      <span className=\"ozon-point__name\">{point.name}</span>\n      {/* Адрес целиком, с городом: карты рядом нет, и город по нему не угадать. */}\n      <span className=\"ozon-point__address\">{point.address}</span>\n      {point.description && <span className=\"ozon-point__description\">{point.description}</span>}\n      {hours.length > 0 && (\n        <div className=\"ozon-point__hours\">\n          {hours.map(line => (\n            <Fragment key={line.day}>\n              <span className=\"ozon-point__day\">{line.day}</span>\n              <span>{line.hours}</span>\n            </Fragment>\n          ))}\n        </div>\n      )}\n      <span className=\"ozon-point__note\">Срок хранения: {storagePeriod(point.storage_period_days)}</span>\n    </div>\n  );\n}\n\nfunction Delivery({\n  point,\n  tariffId,\n  token,\n}: {\n  point: OzonPoint;\n  tariffId: string;\n  token: string;\n}) {\n  // Тариф в ключе: сменили тариф — доставку проверяем заново, остатки у товаров разные.\n  const { data: options, isPending, error, refetch } = useQuery({\n    queryKey: ['ozon-delivery', point.id, tariffId, token],\n    queryFn:\n      token && tariffId\n        ? ({ signal }) => getDeliveryOptions(point.id, tariffId, token, signal)\n        : skipToken,\n  });\n\n  let body;\n  // Номер телефона нужен и самой проверке, и Ozon: без него сроки не у кого спросить.\n  if (!token) {\n    body = (\n      <p className=\"ozon-delivery__note ozon-delivery__note--muted\">\n        Подтвердите телефон аккаунта Ozon, и мы покажем срок доставки.\n      </p>\n    );\n  } else if (!tariffId) {\n    body = (\n      <p className=\"ozon-delivery__note ozon-delivery__note--muted\">\n        Выберите тариф, и мы проверим доставку в этот пункт.\n      </p>\n    );\n  } else if (isPending) {\n    body = <p className=\"ozon-delivery__note ozon-delivery__note--muted\">Проверяем доставку в этот пункт…</p>;\n  } else if (error) {\n    body = (\n      <p className=\"ozon-delivery__note ozon-delivery__note--refused\">\n        {userMessage(error)}{' '}\n        <button type=\"button\" className=\"ozon-delivery__retry\" onClick={() => refetch()}>\n          Проверить ещё раз\n        </button>\n      </p>\n    );\n  } else if (!options.is_available) {\n    // Отказ написан для покупателя и сам говорит, что делать дальше: пересказывать его нечем.\n    body = <p className=\"ozon-delivery__note ozon-delivery__note--refused\">{options.message}</p>;\n  } else {\n    body = (\n      <>\n        {/* Сроков у Ozon может и не быть — доставка от этого не пропадает. */}\n        <p className=\"ozon-delivery__note\">\n          Срок:{' '}\n          {options.delivery_date ? `до ${deliveryDate(options.delivery_date)}` : 'уточним при оформлении'}\n        </p>\n        <p className=\"ozon-delivery__note\">Стоимость: {deliveryPrice(options.price)}</p>\n      </>\n    );\n  }\n\n  return (\n    <div className=\"ozon-delivery\">\n      <span className=\"ozon-delivery__title\">Условия доставки</span>\n      {body}\n    </div>\n  );\n}\n","import type { OzonTheme } from './theme';\n\n/** Галочка формы заказа: без неё сервер доставку Ozon не примет. */\nexport const REGION_FIELD = 'ozon_region_confirmed';\n\ntype Props = {\n  /** Оформление секции: см. `theme.ts`. */\n  theme: OzonTheme;\n  /** Регион страницы: под него склад и подберёт SIM-карту. */\n  regionName: string;\n  /** Пояснение над регионом: HTML из настроек сайта, его правят в админке. */\n  hint: string;\n  /** Подтвердил ли посетитель регион. */\n  confirmed: boolean;\n  /** Ошибка формы про регион. */\n  error: string;\n  /** Посетитель поставил или снял галочку. */\n  onConfirm: (confirmed: boolean) => void;\n};\n\n/** Секция формы с регионом SIM-карты: при доставке Ozon его подтверждает сам покупатель. */\nexport default function OzonRegionSection({\n  theme,\n  regionName,\n  hint,\n  confirmed,\n  error,\n  onConfirm,\n}: Props) {\n  const Title = theme.titleTag;\n\n  return (\n    <div className=\"form__section\">\n      <Title className={`${theme.titleTag}-title form__section-title`}>Регион SIM-карты</Title>\n      <div className=\"ozon-region\">\n        {/* Rich text Wagtail: кроме разрешённого полю форматирования, Draftail ничего не сохраняет. */}\n        <div className=\"ozon-region__hint\" dangerouslySetInnerHTML={{ __html: hint }} />\n        <p className=\"ozon-region__current\">\n          <span className=\"ozon-region__name\">{regionName}</span>{' '}\n          {/* Окно выбора региона из шапки: оно перезагружает страницу, и цены тарифов\n              пересчитываются под новый регион. */}\n          <a className=\"ozon-region__change js-popup\" href=\"#REGION\">\n            Изменить\n          </a>\n        </p>\n        <div className=\"form__checkbox\">\n          <div className=\"ui-checkbox\">\n            <input\n              type=\"checkbox\"\n              id={REGION_FIELD}\n              name={REGION_FIELD}\n              checked={confirmed}\n              onChange={event => onConfirm(event.currentTarget.checked)}\n            />\n            <label htmlFor={REGION_FIELD}>\n              <span>Регион верный</span>\n            </label>\n          </div>\n        </div>\n        {error && <div className=\"ui-input__validation\">{error}</div>}\n      </div>\n    </div>\n  );\n}\n","import { useEffect, useState } from 'react';\n\nimport type { OzonPoint } from '#common/core/ozon-api';\nimport OzonPhoneSection, { TOKEN_FIELD } from './OzonPhoneSection';\nimport OzonPointSection, { POINT_FIELD } from './OzonPointSection';\nimport OzonRegionSection, { REGION_FIELD } from './OzonRegionSection';\nimport type { OzonTheme } from './theme';\n\nconst DELIVERY_TYPE_FIELD = 'delivery_type';\nconst TARIFF_FIELD = 'tariff';\nconst CONTACT_PHONE_FIELD = 'phone';\n\n// Чем с островом говорит остальная форма, см. `core/ozon-delivery.js`.\nconst ERRORS_EVENT = 'ozon-delivery:errors';\nconst RESET_EVENT = 'ozon-delivery:reset';\n\n/** Ошибки скрытых полей острова: имя поля — сообщение для посетителя. */\ntype FieldErrors = Record<string, string>;\n\ntype Props = {\n  /** Место острова в форме: в нём он и рисует свои секции. */\n  mount: HTMLElement;\n  /** Оформление секций: см. `theme.ts`. */\n  theme: OzonTheme;\n  /** pk типа доставки Ozon: с ним сверяем выбранную радиокнопку. */\n  deliveryTypeId: string;\n  /** pk тарифов с товаром Ozon у продавца сайта: другим доставку Ozon не предлагаем. */\n  tariffIds: string[];\n  /** Регион страницы: его покупатель подтверждает для SIM-карты. */\n  regionName: string;\n  /** Пояснение к региону: HTML из настроек сайта. */\n  regionHint: string;\n};\n\n/** Подставляет подтверждённый номер в контактный телефон заказа, пока тот пуст: обычно это\n * один и тот же номер, и набирать его второй раз незачем.\n */\nfunction fillContactPhone(mount: HTMLElement, phone: string): void {\n  const field = mount.closest('form')?.querySelector<HTMLInputElement>(`input[name=\"${CONTACT_PHONE_FIELD}\"]`);\n  if (!field || field.value) return;\n\n  field.value = phone;\n  // Значение поставили мимо клавиатуры: о нём узна́ют только из событий. `input` слышит маска,\n  // `change` — подпись поля, которая иначе так и лежит поверх подставленного номера.\n  field.dispatchEvent(new Event('input', { bubbles: true }));\n  field.dispatchEvent(new Event('change', { bubbles: true }));\n}\n\nfunction isOzonSelected(mount: HTMLElement, deliveryTypeId: string): boolean {\n  const form = mount.closest('form');\n  const checked = form?.querySelector<HTMLInputElement>(\n    `input[name=\"${DELIVERY_TYPE_FIELD}\"]:checked`\n  );\n  return checked?.value === deliveryTypeId;\n}\n\n/** pk выбранного тарифа или пустая строка. Поле бывает радиокнопками, списком и скрытым полем. */\nfunction selectedTariffId(mount: HTMLElement): string {\n  const form = mount.closest('form');\n  const value = form ? new FormData(form).get(TARIFF_FIELD) : null;\n  return typeof value === 'string' ? value : '';\n}\n\n/** Секции формы заказа, которые нужны доставке Ozon: регион SIM-карты, телефон аккаунта и пункт выдачи. */\nexport default function OzonDelivery({\n  mount,\n  deliveryTypeId,\n  tariffIds,\n  regionName,\n  regionHint,\n  theme,\n}: Props) {\n  const [selected, setSelected] = useState(() => isOzonSelected(mount, deliveryTypeId));\n  const [tariffId, setTariffId] = useState(() => selectedTariffId(mount));\n  const [point, setPoint] = useState<OzonPoint | null>(null);\n  const [regionConfirmed, setRegionConfirmed] = useState(false);\n  // Токен подтверждения держим здесь: он нужен обеим секциям — телефон его добывает,\n  // а пункт выдачи по нему спрашивает сроки доставки.\n  const [token, setToken] = useState('');\n  // Ошибки скрытых полей: их присылает форма, подписать их своими средствами ей нечем.\n  const [errors, setErrors] = useState<FieldErrors>({});\n  // Номер и отправленный код живут в самой секции телефона, и сбросить их можно только\n  // вместе с ней: ключ меняется — секция начинается заново.\n  const [attempt, setAttempt] = useState(0);\n\n  useEffect(() => {\n    const form = mount.closest('form');\n    if (!form) return undefined;\n\n    const sync = () => {\n      setSelected(isOzonSelected(mount, deliveryTypeId));\n      setTariffId(selectedTariffId(mount));\n    };\n    form.addEventListener('change', sync);\n    return () => form.removeEventListener('change', sync);\n  }, [mount, deliveryTypeId]);\n\n  useEffect(() => {\n    const show = (event: Event) => setErrors((event as CustomEvent<FieldErrors>).detail ?? {});\n    // Заказ ушёл: следующий набирают с чистых секций. Способ доставки форма к этому моменту\n    // вернула к исходному своим `reset()`, а событий он не даёт — выбор пересчитываем сами.\n    const reset = () => {\n      setSelected(isOzonSelected(mount, deliveryTypeId));\n      setTariffId(selectedTariffId(mount));\n      setPoint(null);\n      setRegionConfirmed(false);\n      setToken('');\n      setErrors({});\n      setAttempt(value => value + 1);\n    };\n\n    mount.addEventListener(ERRORS_EVENT, show);\n    mount.addEventListener(RESET_EVENT, reset);\n    return () => {\n      mount.removeEventListener(ERRORS_EVENT, show);\n      mount.removeEventListener(RESET_EVENT, reset);\n    };\n  }, [mount, deliveryTypeId]);\n\n  // Секции нужны только доставке Ozon: с другим способом прячем их место целиком, иначе\n  // отбивки и разделители пустых секций выглядят как пропущенный блок формы.\n  useEffect(() => {\n    mount.hidden = !selected;\n  }, [mount, selected]);\n\n  // Ошибку снимаем, как только её причину устранили: она об ответе на прошлый сабмит.\n  const clearError = (field: string) =>\n    setErrors(current => {\n      if (!current[field]) return current;\n      const rest = { ...current };\n      delete rest[field];\n      return rest;\n    });\n\n  // Ошибка пункта — ответ про прошлый тариф: у нового товар и остатки свои.\n  useEffect(() => clearError(POINT_FIELD), [tariffId]);\n\n  // Пока тариф не выбран, секции показываем: сроки доставки подождут выбора.\n  const offered = !tariffId || tariffIds.includes(tariffId);\n\n  // Секции только прячем, а не размонтируем: посетитель уходит на другой способ доставки или\n  // тариф и возвращается, и выбранный пункт с подтверждённым номером ждут его на месте.\n  return (\n    <>\n      {!offered && (\n        <div className=\"form__section\">\n          <p className=\"ozon-delivery__note ozon-delivery__note--refused\">\n            Для этого тарифа доставки Ozon нет. Выберите другой тариф или способ доставки.\n          </p>\n        </div>\n      )}\n      <div hidden={!offered}>\n        <OzonRegionSection\n          theme={theme}\n          regionName={regionName}\n          hint={regionHint}\n          confirmed={regionConfirmed}\n          error={errors[REGION_FIELD] ?? ''}\n          onConfirm={confirmed => {\n            setRegionConfirmed(confirmed);\n            clearError(REGION_FIELD);\n          }}\n        />\n        <OzonPhoneSection\n          key={attempt}\n          theme={theme}\n          token={token}\n          error={errors[TOKEN_FIELD] ?? ''}\n          onToken={(value, phone) => {\n            setToken(value);\n            clearError(TOKEN_FIELD);\n            if (value) fillContactPhone(mount, phone);\n          }}\n        />\n        <OzonPointSection\n          theme={theme}\n          point={point}\n          tariffId={tariffId}\n          token={token}\n          error={errors[POINT_FIELD] ?? ''}\n          onSelect={picked => {\n            setPoint(picked);\n            clearError(POINT_FIELD);\n          }}\n        />\n      </div>\n    </>\n  );\n}\n","import { QueryClientProvider } from '@tanstack/react-query';\nimport { createRoot } from 'react-dom/client';\n\nimport { queryClient } from '#common/core/query-client';\nimport OzonDelivery from './OzonDelivery';\nimport type { OzonTheme } from './theme';\n\nconst MOUNT_SELECTOR = '[data-ozon-delivery]';\n\n/** Монтирует остров во все его точки на странице. Домен зовёт это из своего index.tsx. */\nexport function mountOzonDelivery(theme: OzonTheme): void {\n  const mountAll = () =>\n    document.querySelectorAll<HTMLElement>(MOUNT_SELECTOR).forEach(mount => {\n      const deliveryTypeId = mount.dataset.deliveryTypeId;\n      if (!deliveryTypeId) return;\n      const tariffIds = (mount.dataset.tariffIds ?? '').split(',').filter(Boolean);\n      const regionName = mount.dataset.regionName ?? '';\n      const regionHint = mount.dataset.regionHint ?? '';\n\n      createRoot(mount).render(\n        <QueryClientProvider client={queryClient}>\n          <OzonDelivery\n            mount={mount}\n            deliveryTypeId={deliveryTypeId}\n            tariffIds={tariffIds}\n            regionName={regionName}\n            regionHint={regionHint}\n            theme={theme}\n          />\n        </QueryClientProvider>\n      );\n    });\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', mountAll);\n  else mountAll();\n}\n","import { mountOzonDelivery } from '#common/blocks/ozon-delivery';\n\nmountOzonDelivery({ titleTag: 'h3', buttonClass: 'btn btn-primary' });\n","// Точка входа: импорты ниже перечисляют всё, что попадает в бандл сайта, и по префиксу видно,\n// что домен взял из #common, а что у него своё. Он же задаёт порядок запуска модулей.\n\nimport '#common/core/sentry.js';\nimport '#common/blocks/cookie-consent/cookie-consent.js';\n\nimport { initFAQ } from '#common/blocks/faq/faq.js';\nimport { initFilterList } from '#common/blocks/filter-list/filter-list.js';\nimport { initLightbox } from '#common/blocks/lightbox/lightbox.js';\nimport { initMasks } from '#common/core/masks.js';\nimport { Modals } from '#common/blocks/modals/modals.js';\nimport { initTextareaAutoExpand } from '#common/blocks/textarea-auto-expand/textarea-auto-expand.js';\nimport { Header } from '#common/blocks/header/header.js';\n\nimport { initClicks } from './clicks.js';\nimport { initInputFocuses } from './blocks/inputs/inputs.js';\nimport { initInputReader } from './blocks/inputreader/inputreader.js';\nimport { initSliders } from './blocks/sliders/sliders.js';\nimport { initValidations } from './blocks/form/validations.js';\n\n// React-остров формы Ozon монтируется сам, когда находит свою точку в разметке.\nimport './blocks/ozon-delivery';\n\n// Стили входят в ту же сборку: cssCodeSplit выключен, на выходе один css/app.css.\nimport './app.sass';\n\n// Страница всегда открывается сверху, даже если браузер восстановил прокрутку.\nwindow.onbeforeunload = function() {\n  window.scrollTo(0, 0);\n};\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  // Один раз на страницу.\n  initClicks();\n\n  // Зависят от разметки страницы.\n  initSliders();\n  Modals.init();\n  initLightbox();\n  initMasks();\n  initInputFocuses();\n  initInputReader();\n  initFilterList();\n  initTextareaAutoExpand();\n  initValidations();\n  initFAQ();\n\n  // Компоненты.\n  Header.init();\n});\n"],"names":["extendStatics","d","b","p","__extends","__","__assign","t","s","i","n","__rest","e","__values","o","m","__read","r","ar","error","__spread","SessionStatus","RequestSessionStatus","Severity","fromString","level","Status","fromHttpCode","code","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","isElement","isRegExp","isThenable","isSyntheticEvent","base","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","len","separator","sepLength","nextStr","_htmlElementAsString","el","className","classes","key","attr","allowedAttrs","setPrototypeOf","setProtoOf","mixinProperties","obj","proto","prop","SentryError","_super","message","_newTarget","_this","DSN_REGEX","ERROR_MESSAGE","Dsn","from","withPassword","_a","host","path","pass","port","projectId","protocol","publicKey","str","match","_b","_c","lastPath","split","projectMatch","components","component","isNodeEnv","dynamicRequire","mod","request","truncate","max","safeJoin","input","delimiter","output","value","isMatchingPattern","pattern","fallbackGlobalObject","getGlobalObject","uuid4","global","crypto","arr","pad","num","v","c","parseUrl","url","query","fragment","getEventDescription","event","exception","consoleSandbox","callback","levels","originalConsole","wrappedLevels","result","addExceptionTypeValue","type","addExceptionMechanism","mechanism","getLocationHref","defaultRetryAfter","parseRetryAfterHeader","now","header","headerDelay","headerDate","PREFIX","Logger","args","_i","logger","Memo","defaultFunctionName","getFunctionName","fn","fill","source","name","replacementFactory","original","wrapped","urlEncode","object","getWalkSource","err","event_1","utf8Length","jsonSize","normalizeToSize","depth","maxSize","serialized","normalize","serializeValue","normalized","normalizeValue","walk","memo","acc","innerKey","extractExceptionKeysForMessage","maxLength","keys","includedKeys","dropUndefinedKeys","val","e_1","rv","e_1_1","supportsFetch","isNativeFetch","func","supportsNativeFetch","doc","sandbox","supportsReferrerPolicy","supportsHistory","chrome","isChromePackagedApp","hasHistoryApi","handlers","instrumented","instrument","instrumentConsole","instrumentDOM","instrumentXHR","instrumentFetch","instrumentHistory","instrumentError","instrumentUnhandledRejection","addInstrumentationHandler","handler","triggerHandlers","data","originalConsoleLevel","originalFetch","handlerData","getFetchMethod","getFetchUrl","response","fetchArgs","requestKeys","requestValues","xhrproto","originalOpen","xhr","onreadystatechangeHandler","requestPos","args_1","readyStateArgs","originalSend","lastHref","oldOnPopState","to","historyReplacementFunction","originalHistoryFunction","debounceDuration","debounceTimerID","lastCapturedEvent","shouldShortcircuitPreviousDebounce","previous","current","shouldSkipDOMEvent","target","makeDOMEventHandler","globalListener","triggerDOMHandler","globalDOMEventHandler","originalAddEventListener","listener","options","handlers_1","handlerForType","originalRemoveEventListener","handlers_2","_oldOnErrorHandler","msg","line","column","_oldOnUnhandledRejectionHandler","States","SyncPromise","executor","reason","state","cachedHandlers","resolve","_","reject","collection","counter","resolvedCollection","item","index","onfulfilled","onrejected","onfinally","isRejected","PromiseBuffer","_limit","task","removedTask","timeout","capturedSetTimeout","dateTimestampSource","getBrowserPerformance","performance","timeOrigin","getNodePerformance","perfHooks","platformPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","hasNavigationStart","navigationStartDelta","navigationStartIsReliable","Scope","scope","newScope","user","requestSession","tags","extras","extra","fingerprint","context","span","_d","session","captureContext","updatedScope","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","hint","transactionName","getGlobalEventProcessors","processors","processor","final","addGlobalEventProcessor","API_VERSION","DEFAULT_BREADCRUMBS","MAX_BREADCRUMBS","Hub","client","_version","version","top","eventId","finalHint","syntheticException","beforeBreadcrumb","timestamp","finalBreadcrumb","oldHub","makeMain","integration","customSamplingContext","endSession","_e","release","environment","Session","currentSession","method","carrier","getMainCarrier","sentry","hub","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","getHubFromActiveDomain","activeDomain","registryHubTopStack","startingTime","duration","status","callOnHub","captureException","captureMessage","withScope","SENTRY_API_VERSION","API","dsn","metadata","clientName","clientVersion","dialogOptions","endpoint","encodedOptions","auth","installedIntegrations","filterDuplicates","integrations","accIntegration","getIntegrationsToSetup","defaultIntegrations","userIntegrations","userIntegration","integrationsNames","alwaysLastToRun","setupIntegration","setupIntegrations","BaseClient","backendClass","promisedEvent","ready","transportFlushed","crashed","errored","userAgent","exceptions","exceptions_1","exceptions_1_1","ex","headers","ticked","tick","interval","normalizeDepth","prepared","finalScope","evt","dist","maxValueLength","integrationsArray","finalEvent","beforeSend","sampleRate","isTransaction","isInternalException","beforeSendResult","processedEvent","promise","NoopTransport","BaseBackend","_exception","_hint","_message","_level","getSdkMetadataForEnvelopeHeader","api","enhanceEventWithSdkInfo","sdkInfo","sessionToSentryRequest","envelopeHeaders","itemHeaders","eventToSentryRequest","eventType","useEnvelope","transactionSampling","samplingMethod","req","envelope","initAndBind","clientClass","SDK_VERSION","originalFunctionToString","FunctionToString","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","self","clientOptions","frames_1","frames_2","UNKNOWN_FUNCTION","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","stack","popSize","computeStackTraceFromStacktraceProp","popFrames","computeStackTraceFromStackProp","extractMessage","lines","isEval","submatch","parts","element","isNative","isSafariExtension","isSafariWebExtension","stacktrace","opera10Regex","opera11Regex","STACKTRACE_LIMIT","exceptionFromStacktrace","frames","prepareFramesForEvent","eventFromPlainObject","rejection","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","eventFromException","eventFromUnknownInput","eventFromMessage","eventFromString","errorEvent","domException","name_1","objectException","CATEGORY_MAPPING","BaseTransport","requestType","limited","category","e_2","rlHeader","raHeader","limit","parameters","delay","_f","e_2_1","getNativeFetchImplementation","document","fetchImpl","FetchTransport","sentryRequest","originalPayload","XHRTransport","BrowserBackend","transportOptions","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","wrap","before","sentryWrapped","wrappedArguments","arg","property","descriptor","injectReportDialog","script","GlobalHandlers","currentHub","hasIntegration","isFailedOwnDelivery","ERROR_TYPES_RE","groups","colno","lineno","filename","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","originalCallback","eventName","wrappedEventHandler","originalEventHandler","xmlHttpRequestProps","wrapOptions","Breadcrumbs","status_code","body","parsedLoc","parsedFrom","parsedTo","DEFAULT_KEY","DEFAULT_LIMIT","LinkedErrors","linkedErrors","UserAgent","referrer","BrowserClient","CoreIntegrations.InboundFilters","CoreIntegrations.FunctionToString","init","window_1","startSessionTracking","window","Sentry.init","testJSError","ev","assign","defaultConverter","converter","defaultAttributes","set","attributes","stringifiedAttributes","attributeName","get","cookies","jar","found","COOKIE_NAME","COOKIE_EXPIRY_DAYS","HIDE_ANIMATION_MS","consent","Cookies","hide","blocked","modal","DURATION","SLIDE_STYLES","FADE_STYLES","values","names","NATURAL","COLLAPSED","timers","isHidden","applyStyles","apply","styles","measure","computed","show","stop","play","finish","slideDown","slideUp","running","fadeIn","fadeOut","initFAQ","toggle","answer","isObject","isObject_1","freeGlobal","_freeGlobal","require$$0","freeSelf","root","_root","now_1","Symbol","_Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","_getRawTag","objectToString","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObjectLike","isObjectLike_1","symbolTag","isSymbol","isSymbol_1","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","toNumber_1","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","debounce_1","TYPING_DELAY","FADE_DURATION","REGROUP_DELAY","isShown","hideEmptyGroups","list","group","items","filterList","initFilterList","GALLERY_SELECTOR","LINK_SELECTOR","SCROLL_LOCK_CLASS","MARKUP","dialog","image","links","position","link","title","close","build","initLightbox","gallery","getContentEditableSelection","anchorOffset","focusOffset","setContentEditableSelection","range","selection","ContentEditableAdapter","maskitoAdaptContentEditable","adapter","nativeProperty","receiver","MASKITO_DEFAULT_ELEMENT_PREDICATE","MASKITO_DEFAULT_OPTIONS","MaskHistory","isValueChanged","isSelectionChanged","inputType","areElementValuesEqual","sampleState","states","areElementStatesEqual","applyOverwriteMode","newCharacters","mode","computedMode","isFixedCharacter","char","getLeadingFixedCharacters","mask","validatedValuePart","newCharacter","initialElementState","leadingFixedCharacters","charConstraint","isInitiallyExisted","validateValueWithMask","maskExpression","guessValidValueByPattern","elementState","maskedFrom","maskedTo","maskedValue","validatedCharacters","charIndex","leadingCharacters","newValidatedChars","trailingFixedCharacters","guessValidValueByRegExp","maskRegExp","newFrom","newTo","validatedValue","newPossibleValue","calibrateValueByMask","removeFixedMaskCharacters","unmaskedValue","rawValue","MaskModel","maskOptions","expression","unmaskedFrom","unmaskedTo","newUnmaskedLeadingValuePart","newCaretIndex","maskedElementState","prevLeadingPart","newLeadingPartState","newUnmaskedValue","EventListener","untypedFn","stopListen","HotkeyModifier","HotkeyCode","isHotkey","modifiers","hotkeyCode","isRedo","isUndo","getLineSelection","isForward","nearestBreak","getNotEmptySelection","x","TRAILING_SPACES_REG","LEADING_SPACES_REG","SPACE_REG","getWordSelection","valueAfterSelectionStart","leadingSpaces","nearestWordEndIndex","valueBeforeSelectionEnd","trailingSpaces","selectedWordLength","maskitoPipe","initialData","maskitoTransform","valueOrState","maskitoOptions","preprocessor","postprocessor","maskModel","createBrokenDefaultPlugin","eventListener","isVirtualAndroidKeyboard","beforeinputEvent","SPACE","createDoubleSpacePlugin","prevValue","prevCaretIndex","prevEvent","prevRejectedSpace","selectionStart","selectionEnd","rejectedSpace","BUILT_IN_PLUGINS","Maskito","plugin","teardown","initialState","newElementState","insertedText","eventInit","initialValue","maskitoPrefixPostprocessorGenerator","prefix","prefixedValue","modifiedValue","addedCharsCount","DIGIT","COUNTRY_CODE","dropCountryCode","actionType","typed","PHONE_MASK","PHONE_SELECTOR","initMasks","REGION_MODAL_SELECTOR","VISIBLE_CLASS","REGION_MODAL_DELAY","regionModals","Header","hamburger","CLOSE_ANIMATION_MS","openDialog","prepare","Modals","selector","LINE_HEIGHT","baseHeights","baseHeight","textarea","initTextareaAutoExpand","minRows","OZON_DELIVERY_FIELDS","isFilled","ozonDeliveryMount","form","isOzonDeliveryField","fieldName","field","showOzonDeliveryErrors","errors","mount","resetOzonDelivery","showOzonDeliveryGaps","REGION_COOKIE_DAYS","setRegion","id","TARIFF_BUTTON_DEFAULT_TEXT","TARIFF_BUTTON_SELECTED_TEXT","normalizeTariffId","setTariffSelectionState","tariffId","normalizedId","button","isSelected","card","toggleTariffWarnings","isVisible","warning","syncTariffSelectionState","scrollToForm","blockOrderWithoutTariff","hiddenTariff","onClick","toggler","content","defaultRegion","tariffButton","select","regionLink","text","region","submitButton","initClicks","FOCUSED_CLASS","focuses","container","inputs","filled","initInputFocuses","MAX_FILES","nextUploaderId","last","readURL","addUploader","parent","upload","file","size","nextId","createInputReader","remove","uploader","initInputReader","files","win","Dom7","$","els","tempParent","html","toCreate","unique","uniqueArray","addClass","j","removeClass","hasClass","toggleClass","attrs","attrName","removeAttr","dataKey","transform","elStyle","transition","on","targetSelector","capture","handleLiveEvent","eventData","parents","k","handleEvent","events","off","trigger","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","outerHeight","offset","box","clientTop","clientLeft","scrollTop","scrollLeft","css","props","each","is","compareWith","child","eq","length","returnIndex","append","newChild","tempDiv","prepend","next","nextAll","nextEls","prev","prevAll","prevEls","closest","find","foundElements","children","childNodes","add","toAdd","Methods","transition$1","transitionEnd$1","methodName","Utils","axis","matrix","curTransform","transformMatrix","curStyle","a","urlToParse","params","param","paramsPart","nextSource","keysArray","nextIndex","nextKey","desc","Support","testDiv","style","supportsPassive","opts","Browser","isSafari","ua","SwiperClass","priority","onceHandler","eventHandler","instanceParams","instance","moduleName","module","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","Class","updateSize","swiper","width","$el","updateSlides","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","slidesPerColumn","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","row","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","paddingTop","paddingBottom","marginTop","marginBottom","newSlidesGrid","slidesGridItem","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","updateAutoHeight","speed","activeSlides","newHeight","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideProgress","slideBefore","slideAfter","updateProgress","translatesDiff","progress","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeIndex","realIndex","activeSlide","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","updateClickedSlide","slideFound","update","getTranslate","currentTranslate","setTranslate","byController","y","z","newProgress","minTranslate","maxTranslate","setTransition","transitionStart","runCallbacks","direction","dir","slideTo","internal","slideIndex","slideToLoop","newIndex","slideNext","animating","slidePrev","rtlTranslate","normalizedTranslate","normalizedSnapGrid","prevSnap","prevIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToClickedSlide","slidesPerView","slideToIndex","loopCreate","blankSlidesNum","blankNode","prependSlides","appendSlides","loopFix","loopedSlides","allowSlidePrev","allowSlideNext","diff","loopDestroy","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","Device","device","windows","android","ipad","ipod","iphone","osVersionArr","metaViewport","onTouchStart","touches","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","shouldPreventDefault","onTouchMove","pageX","pageY","diffX","diffY","touchAngle","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","currentPos","lastMoveEvent","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","stopIndex","groupSize","ratio","onResize","newTranslate","attachEvents","touchEvents","wrapperEl","passiveListener","detachEvents","setBreakpoint","initialized","breakpoints","breakpoint","breakpointOnlyParams","paramValue","breakpointParams","directionChanged","needsReLoop","getBreakpoint","points","point","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","src","srcset","sizes","checkForComplete","onReady","preloadImages","images","checkOverflow","wasLocked","checkOverflow$1","defaults","prototypes","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","swipers","containerEl","newParams","touch","desktop","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","Browser$1","Resize","Observer","ObserverFunc","observer","mutations","observerUpdate","containerParents","Observer$1","Virtual","force","slidesPerGroup","centeredSlides","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","cache","newCache","cachedIndex","Virtual$1","overwriteParams","Keyboard","kc","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","Keyboard$1","isEventSupported","isSupported","Mousewheel","sX","sY","pX","pY","delta","rtlFactor","Mousewheel$1","Navigation","$nextEl","$prevEl","Navigation$1","Pagination","total","bullets","firstIndex","lastIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","paginationHTML","numberOfBullets","Pagination$1","number","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","divider","moveDivider","pointerPosition","positionRatio","touchEventsTouch","touchEventsDesktop","activeListener","$swiperEl","Scrollbar$1","Parallax","opacity","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","x1","y1","x2","y2","zoom","gesture","velocity","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","Zoom$1","Lazy","loadInDuplicate","$images","imageIndex","$imageEl","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","elIndex","amount","maxIndex","minIndex","Lazy$1","Controller","binarySearch","guess","array","i1","i3","controlled","multiplier","controlledTranslate","setControlledTranslate","setControlledTransition","Controller$1","a11y","role","label","$targetEl","notification","bulletEl","$bulletEl","A11y","History","history","pathArray","part","currentState","History$1","HashNavigation","newHash","activeSlideHash","hash","HashNavigation$1","Autoplay","$activeSlideEl","Autoplay$1","Fade","tx","ty","slideOpacity","eventTriggered","triggerEvents","EffectFade","Cube","swiperWidth","swiperHeight","isHorizontal","wrapperRotate","$cubeShadowEl","slideAngle","round","tz","shadowBefore","shadowAfter","shadowAngle","scale1","scale2","zFactor","EffectCube","Flip","rotateY","rotateX","EffectFlip","Coverflow","center","rotate","slideOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","ws","EffectCoverflow","Thumbs","thumbsParams","thumbsSwiper","clickedIndex","clickedSlide","currentIndex","initial","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","Thumbs$1","thumbs","initSliders","tarifSwiper","gallerySwiper","FORM_SELECTOR","ATTACHED_CLASS","SENDING_CLASS","INVALID_CLASS","ERROR_CLASS","FIELD_ERROR_CLASS","COMMON_ERRORS_CLASS","PHONE_DIGITS","PHONE_MESSAGE","SEND_FAILED_MESSAGE","VALIDITY_MESSAGES","FIELD_MESSAGES","FILE_INPUT_NAME","FILE_MAX_SIZE","FILES_MAX_COUNT","FILE_EXTENSIONS","FILE_SIZE_MESSAGE","FILE_TYPE_MESSAGE","FILES_COUNT_MESSAGE","submitted","digits","leader","errorLabel","messageFor","flag","own","fieldError","extension","dot","filesError","showFieldError","placeError","clearFieldError","clearFieldErrors","clearCommonErrors","showCommonErrors","texts","place","common","validate","seen","firstInvalid","filesInput","filesText","recheck","orderData","parseErrors","showBackendErrors","ozonErrors","raw","accept","uploaded","send","attach","checkable","createValidations","settings","initValidations","block","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","config","maybeKey","propName","reactJsxRuntime_production","jsxRuntimeModule","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","emptyObject","Component","updater","partialState","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","noop","ReactSharedInternals","ReactElement","refProp","cloneAndReplaceKey","oldElement","newKey","isValidElement","escape","escaperLookup","userProvidedKeyEscapeRegex","getElementKey","resolveThenable","thenable","fulfilledValue","mapIntoArray","escapedPrefix","nameSoFar","invokeCallback","nextNamePrefix","mapChildren","count","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","Children","forEachFunc","forEachContext","react_production","childArray","defaultValue","childrenLength","render","compare","prevTransition","currentTransition","returnValue","onStartTransitionFinish","usable","action","permalink","deps","Context","create","ref","passthrough","reducer","initialArg","subscribe","getSnapshot","getServerSnapshot","reactModule","QueryClientContext","React.createContext","useQueryClient","queryClient","React.useContext","QueryClientProvider","React.useEffect","jsx","defaultTimeoutProvider","timeoutId","intervalId","TimeoutManager","#provider","#providerCalled","provider","timeoutManager","systemSetTimeoutZero","isServer","functionalUpdate","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveQueryValue","matchQuery","filters","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","mutationKey","hashKey","bKeys","hasOwn","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","copy","equalItems","aItem","bItem","shallowEqualObjects","hasObjectPrototype","prot","sleep","replaceData","prevData","addToEnd","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","shouldThrowError","throwOnError","addConsumeAwareSignal","getSignal","onCancelled","consumed","signal","isServerFn","isServer$1","Subscribable","FocusManager","#focused","#cleanup","#setup","onFocus","setup","focused","isFocused","focusManager","defaultScheduler","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","originalQueue","notifyManager","OnlineManager","#online","onOnline","onlineListener","offlineListener","online","onlineManager","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","createRetryer","isRetryCancelled","continueFn","promiseResolve","promiseReject","isResolved","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","retry","retryDelay","shouldRetry","Removable","#gcTimeout","newGcTime","infiniteQueryBehavior","pages","oldPages","oldPageParams","currentPage","fetchFn","cancelled","addSignalProperty","queryFn","fetchPage","queryFnContext","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","Query","#queryType","#initialState","#revertState","#cache","#client","#retryer","#defaultOptions","#abortSignalConsumed","getDefaultState","defaultState","successState","newData","#dispatch","abortController","retryer","fetchState","newState","dataUpdatedAt","hasData","initialDataUpdatedAt","QueryObserver","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectError","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","#updateQuery","mounted","shouldFetchOptionally","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","onPropTracked","defaultedOptions","unsubscribe","resolveEarly","cachePromise","#shouldScheduleTimer","nextInterval","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","skipSelect","placeholderData","selectError","isFetching","isPending","isLoading","isStale","nextResult","notifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","shouldLoadOnMount","Mutation","#observers","#mutationCache","variables","onContinue","mutationFnContext","restored","isPaused","MutationCache","#mutations","#scopes","#mutationId","scopeFor","scopedMutations","firstPendingMutation","defaultedFilters","pausedMutations","MutationObserver","#currentMutation","#mutateOptions","#updateResult","#notify","onMutateResult","QueryCache","#queries","queryHash","queryInMap","queries","QueryClient","#queryCache","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","#unsubscribeOnline","cachedData","queryCache","matched","queriesToRefetch","defaultedCancelOptions","promises","queryData","queryDefault","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","shouldSuspend","fetchOptimistic","useBaseQuery","isRestoring","subscribed","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","useQuery","useMutation","mutate","push","heap","node","parentIndex","peek","pop","first","halfLength","leftIndex","left","rightIndex","right","exports","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","localSetImmediate","advanceTimers","currentTime","timer","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","startTime","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","channel","ms","fps","priorityLevel","parentPriorityLevel","schedulerModule","React","formatProdErrorMessage","Internals","createPortal$1","containerInfo","implementation","getCrossOriginStringAs","as","reactDom_production","previousTransition","previousUpdatePriority","href","crossOrigin","integrity","fetchPriority","checkDCE","reactDomModule","Scheduler","ReactDOM","isValidContainer","getNearestMountedFiber","fiber","nearestMounted","getSuspenseInstanceFromFiber","suspenseState","getActivityInstanceFromFiber","activityState","assertIsMounted","findCurrentFiberUsingSlowPath","alternate","parentA","parentB","didFindChild","child$0","findCurrentHostFiberImpl","REACT_LEGACY_ELEMENT_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_CLIENT_REFERENCE","getComponentNameFromType","innerType","ReactDOMSharedInternals","sharedNotPendingObject","valueStack","createCursor","cursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","getOwnHostContext","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","RunInRootFrame","Fake","control","x$1","x$2","sample","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","describeFiber","childFiber","getStackByFiberInDevAndProd","workInProgress","info","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","clz32","clz32Fallback","log","LN2","nextTransitionUpdateLane","nextTransitionDeferredLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","claimNextRetryLane","createLaneMap","laneMap","markRootUpdated$1","updateLane","markRootFinished","finishedLanes","remainingLanes","spawnedLane","updatedLanes","suspendedRetryLanes","previouslyPendingLanes","entanglements","expirationTimes","hiddenUpdates","index$7","hiddenUpdatesForLane","markSpawnedDeferredLane","entangledLanes","spawnedLaneIndex","markRootEntangled","rootEntangledLanes","index$8","getBumpedLaneForHydration","renderLane","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","runWithPriority","previousPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentHydrationBoundary","getInstanceFromNode","getNodeFromInstance","inst","getResourcesFromRoot","resources","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","setValueForAttribute","prefix$10","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","getToStringValue","isCheckable","trackValueOnNode","valueField","currentValue","track","updateValueIfChanged","tracker","lastValue","getActiveElement","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","updateInput","lastDefaultValue","checked","defaultChecked","setDefaultValue","initInput","isHydrating","updateOptions","multiple","propValue","setDefaultSelected","updateTextarea","initTextarea","setTextContent","firstChild","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","setValueForStyles","prevStyles","styleName$16","styleName$17","isCustomElement","tagName","aliases","isJavaScriptProtocol","sanitizeURL","noop$1","currentReplayingEvent","getEventTarget","nativeEvent","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","stateNode","canUseDOM","passiveBrowserEventsSupported","startText","fallbackText","getData","start","startValue","startLength","end","endValue","endLength","minEnd","getEventCharCode","keyCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","EventInterface","SyntheticEvent","UIEventInterface","SyntheticUIEvent","lastMovementX","lastMovementY","lastMouseEvent","MouseEventInterface","getEventModifierState","SyntheticMouseEvent","DragEventInterface","SyntheticDragEvent","FocusEventInterface","SyntheticFocusEvent","AnimationEventInterface","SyntheticAnimationEvent","ClipboardEventInterface","SyntheticClipboardEvent","CompositionEventInterface","SyntheticCompositionEvent","normalizeKey","translateToKey","modifierKeyToProp","modifierStateGetter","keyArg","KeyboardEventInterface","SyntheticKeyboardEvent","PointerEventInterface","SyntheticPointerEvent","TouchEventInterface","SyntheticTouchEvent","TransitionEventInterface","SyntheticTransitionEvent","WheelEventInterface","SyntheticWheelEvent","ToggleEventInterface","SyntheticToggleEvent","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","getNativeBeforeInputChars","getFallbackBeforeInputChars","supportedInputTypes","isTextInputElement","nodeName","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$286","isSupported$jscomp$inline_427","element$jscomp$inline_428","stopWatchingForValueChange","handlePropertyChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","nodeEnd","containsNode","outerNode","innerNode","getActiveElementDeep","hasSelectionCapabilities","skipSelectionChangeEvent","activeElement","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","prefixes","vendorPrefixes","prefixedEventNames","getVendorPrefixedEventName","prefixMap","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","pending","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","createFiberImplClass","shouldConstruct","createWorkInProgress","resetWorkInProgress","createFiberFromTypeAndProps","owner","fiberTag","isHostHoistableType","createFiberFromFragment","elements","createFiberFromText","createFiberFromDehydratedFragment","dehydratedNode","createFiberFromPortal","portal","CapturedStacks","createCapturedValueAtFiber","existing","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","restoreSuspendedTreeContext","suspendedContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","listenToNonDelegatedEvent","mediaEventTypes","checkForUnmatchedText","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratableInstanceAfterHydrationBoundary","isSingletonScope","previousHydratableOnEnteringScopedSingleton","getNextHydratable","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","listeners","scheduleCallback$2","NormalPriority","CacheContext","createCache","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","entangleAsyncAction","entangledListeners","requestTransitionLane","pingEngtangledActionScope","chainThenableValue","thenableWithOverride","prevOnStartTransitionFinish","globalMostRecentTransitionTime","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pushTransition","offscreenWorkInProgress","prevCachePool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","fulfilledThenable","rejectedThenable","suspendedThenable","resolveLazy","lazyType","getSuspendedThenable","rejectedReason","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","throwOnInvalidObjectTypeImpl","returnFiber","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","placeSingleChild","updateTextNode","textContent","updateElement","elementType","updateFragment","updatePortal","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenIterator","step","reconcileChildFibersImpl","firstChildFiber","reconcileChildFibers","mountChildFibers","hasForceUpdate","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","updateQueue","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","entangledActionThenable","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","firstBaseUpdate","lastBaseUpdate","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","callbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","suspenseStackCursor","pushDehydratedActivitySuspenseHandler","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","isSuspenseInstancePending","isSuspenseInstanceFallback","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","createFunctionComponentUpdateQueue","use","useMemoCache","memoCache","basicStateReducer","updateReducer","updateReducerImpl","baseQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$60","revertLane","rerenderReducer","dispatch","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","pushSimpleEffect","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$66","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","oldState","mountActionState","initialStateProp","ssrFormState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","stateHook","updateActionStateImpl","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","useEffectEventImpl","componentUpdateQueue","updateEvent","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","startTransition","pendingState","finishedState","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","root$69","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","eagerState","throwIfDuringRender","identifierPrefix","idWithLeadingBit","booleanOrThenable","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","checkShouldComponentUpdate","oldProps","newProps","nextContext","callComponentWillReceiveProps","resolveClassComponentProps","baseProps","propName$73","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","e$74","logCaughtError","boundary","onCaughtError","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","legacyErrorBoundariesThatAlreadyFailed","throwException","rootRenderLanes","renderDidSuspendDelayIfPossible","workInProgressRootExitStatus","attachPingListener","wrapperError","workInProgressRootConcurrentErrors","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","bailoutOffscreenComponent","nextBaseLanes","remainingChildLanes","mountActivityChildren","mountWorkInProgressOffscreenFiber","retryActivityComponentWithoutHydrating","updateActivityComponent","didSuspend","canHydrateHydrationBoundary","dehydrated","markRef","replayFunctionComponent","updateClassComponent","contextType","unresolvedOldProps","oldContext","contextType$jscomp$0","mountHostRootWithoutHydrating","SUSPENDED_MARKER","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","nextPrimaryChildren","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","digest","primaryChildren","offscreenProps","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","updateSuspenseListComponent","revealOrder","suspenseContext","shouldForceFallback","attemptEarlyBailoutIfNoScheduledUpdate","state$102","didSuspendBefore","beginWork","$$typeof","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","canHydrateInstance","canHydrateTextInstance","markUpdate","preloadInstanceAndSuspendIfNeeded","shouldRemainOnPreviousScreen","preloadResourceAndSuspendIfNeeded","resource","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$106","bubbleProperties","completedWork","didBailout","newChildLanes","subtreeFlags","child$107","completeWork","nextResource","ownerDocument","listenToAllSupportedEvents","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","flags","finishedWork","lastEffect","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","destroy","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$140","commitHostMount","commitHostUpdate","domElement","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","nextEffect","commitBeforeMutationEffects","eventsEnabled","_enabled","focusNode","indexWithinAnchor","indexWithinFocus","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$139","commitActivityHydrationCallbacks","commitSuspenseHydrationCallbacks","retryDehydratedSuspenseBoundary","registerSuspenseInstanceRetry","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearHydrationBoundary","retryIfBlockedOn","getRetryCache","retryCache","attachSuspenseRetryListeners","wakeables","wakeable","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","maybeNodes","getHydratableHoistableCache","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","display","hideOrUnhideDehydratedBoundary","hostParentFiber","parent$141","before$142","parent$143","before$144","finishedRoot$jscomp$0","includeWorkInProgressEffects","hiddenCallbacks","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","suspendedState","accumulateSuspenseyCommitOnFiber","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","sibling","DefaultAsyncDispatcher","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","exitStatus","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","wasRootDehydrated","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","timeoutOffset","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","index$6","flushSyncWorkAcrossRoots_impl","resetWorkInProgressStack","timeoutHandle","cancelTimeout","allEntangledLanes","index$4","handleThrow","thrownValue","pushDispatcher","prevDispatcher","pushAsyncDispatcher","prevAsyncDispatcher","shouldYieldForPrerendering","prevExecutionContext","unitOfWork","throwAndUnwindWorkLoop","workLoopSync","thrownValue$165","performUnitOfWork","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","workLoopConcurrentByScheduler","thrownValue$167","suspendedReason","unwindUnitOfWork","skipSiblings","flushPendingEffects","scheduleCallback$1","flushPassiveEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","start$jscomp$0","end$jscomp$0","startMarker","endMarker","rootHasLayoutEffect","releaseRootPooledCache","onRecoverableError","recoverableError","renderPriority","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","retryLane","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleImmediateRootScheduleTask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$170","performSyncWorkOnRoot","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$5","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","scheduleMicrotask","actionScopeLane","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","extractEvents$1","maybeTargetInst","i$jscomp$inline_1577","eventName$jscomp$inline_1578","domEventName$jscomp$inline_1579","capitalizedEvent$jscomp$inline_1580","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","currentTarget","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","dispatchEvent","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","getParent","tempB","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","targetFiber","captureName","_instance2","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","setProp","setPropOnCustomElement","hasSrc","hasSrcSet","propKey","propValue$184","lastProps","lastProp","propKey$201","propKey$217","propKey$222","propKey$227","propKey$232","isLikelyStaticResource","initiatorType","estimateBandwidth","bits","resourceEntries","entry","transferSize","overlapEntry","overlapStartTime","overlapTransferSize","overlapInitiatorType","namespaceURI","parentNamespace","currentPopstateTransitionEvent","localPromise","handleErrorInNextTick","parentInstance","hydrationInstance","nextNode","node$jscomp$0","nextNode$jscomp$0","suspenseInstance","anyProps","nodeType","targetInstance","rootContainerInstance","preloadPropsMap","preconnectsSet","previousDispatcher","flushSyncWork","requestFormReset","prefetchDNS","preconnect","preload","preloadModule","preinitScript","preinitStyle","preinitModuleScript","previousWasRendering","wasRendering","formInst","globalDocument","preconnectAs","rel","limitedEscapedHref","preloadSelector","getStyleKey","getScriptKey","getStylesheetSelectorFromKey","getScriptSelectorFromKey","precedence","adoptPreloadPropsForStylesheet","insertStylesheet","scripts","adoptPreloadPropsForScript","currentProps","styles$243","resource$244","preloadStylesheet","stylesheetPropsFromRawProps","rawProps","preloadProps","styleProps","instance$249","linkInstance","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","hostContext","onUnsuspend","estimatedBytesWithinLimit","insertSuspendedStylesheets","commit","stylesheetTimer","unsuspend","imgTimer","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","onDefaultTransitionIndicator","formState","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","attemptHydrationAtCurrentPriority","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedFocus","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queuedExplicitHydrationTargets","accumulateOrCreateContinuousQueuedReplayableEvent","existingQueuedEvent","pointerId","attemptExplicitHydrationTarget","queuedTarget","attemptReplayContinuousQueuedEvent","queuedEvent","targetContainers","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","map","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","formProps","defaultOnDefaultTransitionIndicator","handleNavigate","pendingResolve","handleNavigateComplete","isCancelled","startFakeNavigation","currentEntry","ReactDOMRoot","internalRoot","ReactDOMHydrationRoot","isomorphicReactPackageVersion$jscomp$inline_1840","componentOrElement","internals$jscomp$inline_2347","hook$jscomp$inline_2348","reactDomClient_production","clientModule","adaptReactControlledElement","valueSetter","getPrototype","useIsomorphicLayoutEffect","useEffect","useLayoutEffect","useMaskito","elementPredicate","hostElement","setHostElement","useState","setElement","onRefChange","useCallback","latestPredicateRef","useRef","latestOptionsRef","elementOrPromise","maskedElement","ApiError","getJson","postJson","failure","refusal","unexpected","SEND_CODE_URL","CONFIRM_CODE_URL","CODE_LENGTH","sendCode","phone","confirmCode","token","OPEN_CLASS","Modal","open","onClose","fullScreen","dialogRef","onBackdropClick","createPortal","jsxs","userMessage","PhoneCodeModal","theme","sent","onSend","onConfirm","CodeForm","setCode","useWait","confirm","resend","busy","submit","askAgain","Fragment","countdown","canResendAt","setWait","remaining","PHONE_LENGTH","isPhoneComplete","TOKEN_FIELD","OzonPhoneSection","onToken","setPhone","setSent","codeOpen","setCodeOpen","masked","Title","change","CheckIcon","confirmed","MAP_URL","POINTS_URL","DELIVERY_URL","getMapClusters","view","clusters","getPoints","ids","getDeliveryOptions","pointId","confirmationToken","EMPTY_CONFIG","getSiteConfig","WEEKDAYS","WEEK","workingHours","days","week","hours","day","period","weekday","date","PLURAL","DAY_WORDS","storagePeriod","DAY_AND_MONTH","deliveryDate","deliveryPrice","price","meters","rounded","LIFETIME","FADE_OUT","ToastContext","createContext","ToastProvider","toast","setToast","stopTimers","useToast","useContext","API_URL","LOAD_TIMEOUT_MS","injectScript","apiKey","load","genericReactify","reactify","YMap","YMapDefaultSchemeLayer","YMapDefaultFeaturesLayer","YMapListener","YMapMarker","loading","loadYandexMaps","YandexMapsContext","YandexMapsProvider","onFailed","setLoading","reportFailure","useEffectEvent","maps","useYandexMapsLoading","useYandexMaps","SUGGEST_URL","suggestDadata","splitValue","coordinatesOf","locateDadata","address","suggestions","cut","GEOCODER_URL","geocode","lon","lat","RESULTS","suggestAddresses","area","results","YANDEX_TIMEOUT","yandex","suggestion","dadata","_near","yandexDown","addressService","near","withFallback","service","serviceSignal","hasAddressSearch","hasYandex","hasDadata","yandexSuggestApiKey","yandexGeocoderApiKey","call","yandexCall","switchToDadata","Sentry.withScope","Sentry.captureMessage","Sentry.Severity","getUserGeolocation","geolocation","coords","useDebounce","settled","setSettled","SUGGEST_DELAY","MIN_QUERY_LENGTH","AddressSearch","onPlaceSelected","onSuggestionPicked","setText","setQuery","listShown","setListShown","geocoding","settledQuery","searchFailure","searching","teleport","clear","pick","onKeyDown","SearchIcon","ClearIcon","MapErrorIcon","OzonPointsPanel","pointIds","onSelect","onBack","refetch","PointCard","BackIcon","formatDistance","Description","textRef","expanded","setExpanded","clipped","setClipped","shown","MAX_NEARBY_POINTS","STEPS","EARTH_RADIUS_KM","useNearbyOzonPoints","nearbyPoints","km","around","cluster","dLat","dLon","lon1","lat1","lon2","lat2","rad","OzonPointsList","setPlace","locating","setLocating","lastChoice","addressChoice","searchable","startAddress","pickAddress","coordinates","nearMe","choice","Failure","LookingGlassIcon","LocationIcon","PinIcon","YandexMap","initialLocation","mapRef","onViewChange","errorAction","failed","LoadedMap","mapEntity","createAt","reportView","attachMap","OzonPointPins","selected","onPick","selectedKey","many","PointShape","isPinClick","POINT_OUTLINE","REQUEST_DELAY","MIN_ZOOM","OZON_MAX_ZOOM","useOzonMapClusters","setView","toView","DEFAULT_LOCATION","USER_LOCATION_ZOOM","PLACE_ZOOM","MAX_PANEL_POINTS","OzonPointsMap","onShowList","setMap","zoomedOut","shownPoints","setShownPoints","hiding","setHiding","deselect","viewChanged","min_lat","min_lon","max_lat","max_lon","ZoomInIcon","viewOf","TABS","OzonMapModal","everOpened","setEverOpened","tab","setTab","useId","hasMap","showList","moveTab","TabPanel","POINT_FIELD","OzonPointSection","mapOpen","setMapOpen","Delivery","picked","REGION_FIELD","OzonRegionSection","regionName","DELIVERY_TYPE_FIELD","TARIFF_FIELD","CONTACT_PHONE_FIELD","ERRORS_EVENT","RESET_EVENT","fillContactPhone","isOzonSelected","deliveryTypeId","selectedTariffId","OzonDelivery","tariffIds","regionHint","setSelected","setTariffId","setPoint","regionConfirmed","setRegionConfirmed","setToken","setErrors","attempt","setAttempt","sync","reset","clearError","rest","offered","MOUNT_SELECTOR","mountOzonDelivery","mountAll","createRoot"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,55,56,57,58,59,60,61,62,63,64,65,66,69,70,81,82,83,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123]}