{"version":3,"file":"@babel.main.842216d9.js","mappings":"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","sources":["webpack://my-vehicles/./node_modules/file-selector/node_modules/tslib/tslib.es6.js","webpack://my-vehicles/./node_modules/file-selector/dist/es5/file.js","webpack://my-vehicles/./node_modules/file-selector/dist/es5/file-selector.js","webpack://my-vehicles/./node_modules/moment/locale/fi.js","webpack://my-vehicles/./node_modules/moment/moment.js","webpack://my-vehicles/./node_modules/rc-util/es/Children/toArray.js","webpack://my-vehicles/./node_modules/rc-util/es/Dom/canUseDom.js","webpack://my-vehicles/./node_modules/rc-util/es/Dom/findDOMNode.js","webpack://my-vehicles/./node_modules/rc-util/es/KeyCode.js","webpack://my-vehicles/./node_modules/rc-util/es/hooks/useEvent.js","webpack://my-vehicles/./node_modules/rc-util/es/hooks/useLayoutEffect.js","webpack://my-vehicles/./node_modules/rc-util/es/hooks/useMergedState.js","webpack://my-vehicles/./node_modules/rc-util/es/hooks/useState.js","webpack://my-vehicles/./node_modules/rc-util/es/pickAttrs.js","webpack://my-vehicles/./node_modules/rc-util/es/raf.js","webpack://my-vehicles/./node_modules/rc-util/es/ref.js","webpack://my-vehicles/./node_modules/rc-util/es/warning.js","webpack://my-vehicles/./node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack://my-vehicles/./node_modules/rc-util/node_modules/react-is/index.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/typeof.js","webpack://my-vehicles/./node_modules/@babel/runtime/regenerator/index.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://my-vehicles/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://my-vehicles/./node_modules/i18next/dist/esm/i18next.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/utils.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/unescape.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/defaults.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/TransWithoutContext.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/context.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/Trans.js","webpack://my-vehicles/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://my-vehicles/./node_modules/swiper/modules/keyboard.mjs","webpack://my-vehicles/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://my-vehicles/./node_modules/swiper/modules/navigation.mjs","webpack://my-vehicles/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://my-vehicles/./node_modules/swiper/modules/pagination.mjs","webpack://my-vehicles/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://my-vehicles/./node_modules/swiper/shared/utils.mjs","webpack://my-vehicles/./node_modules/swiper/shared/swiper-core.mjs","webpack://my-vehicles/./node_modules/swiper/shared/update-swiper.mjs","webpack://my-vehicles/./node_modules/swiper/swiper-react.mjs","webpack://my-vehicles/./node_modules/swiper/shared/update-on-virtual-data.mjs"],"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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 (g && (g = 0, op[0] && (_ = 0)), _) 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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(\"\".concat(item, \" is not a File\"));\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","import React from 'react';\nimport { isFragment } from 'react-is';\nexport default function toArray(children) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var ret = [];\n React.Children.forEach(children, function (child) {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n return ret;\n}","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element\n // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n if (isDOM(node)) {\n return node;\n }\n if (node instanceof React.Component) {\n return ReactDOM.findDOMNode(node);\n }\n return null;\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","var raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n\n // Trigger\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n });\n\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n};\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(id);\n return caf(realId);\n};\nif (process.env.NODE_ENV !== 'production') {\n wrapperRaf.ids = function () {\n return rafIds;\n };\n}\nexport default wrapperRaf;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\n\nimport { isValidElement } from 'react';\nimport { isFragment, isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nexport function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n}\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n var refList = refs.filter(function (ref) {\n return ref;\n });\n if (refList.length <= 1) {\n return refList[0];\n }\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n}\nexport function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length !== next.length || prev.every(function (ref, i) {\n return ref !== next[i];\n });\n });\n}\nexport function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n // Function component node\n if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render)) {\n return false;\n }\n\n // Class component\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render)) {\n return false;\n }\n return true;\n}\nexport function supportNodeRef(node) {\n if (! /*#__PURE__*/isValidElement(node)) {\n return false;\n }\n if (isFragment(node)) {\n return false;\n }\n return supportRef(node);\n}\n/* eslint-enable */","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","function _objectDestructuringEmpty(t) {\n if (null == t) throw new TypeError(\"Cannot destructure \" + t);\n}\nexport { _objectDestructuringEmpty as default };","import defineProperty from \"./defineProperty.js\";\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? Object(arguments[r]) : {},\n o = Object.keys(t);\n \"function\" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), o.forEach(function (r) {\n defineProperty(e, r, t[r]);\n });\n }\n return e;\n}\nexport { _objectSpread as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && Array.isArray(res))) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(res);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export const warn = (...args) => {\n if (console?.warn) {\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (...args) => {\n if (isString(args[0]) && alreadyWarned[args[0]]) return;\n if (isString(args[0])) alreadyWarned[args[0]] = new Date();\n warn(...args);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n?.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { isObject, isString, warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nconst hasChildren = (node, checkLength) => {\n if (!node) return false;\n const base = node.props?.children ?? node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n};\nconst getChildren = node => {\n if (!node) return [];\n const children = node.props?.children ?? node.children;\n return node.props?.i18nIsDynamicList ? getAsArray(children) : children;\n};\nconst hasValidReactChildren = children => Array.isArray(children) && children.every(isValidElement);\nconst getAsArray = data => Array.isArray(data) ? data : [data];\nconst mergeProps = (source, target) => {\n const newTarget = {\n ...target\n };\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n};\nexport const nodesToString = (children, i18nOptions) => {\n if (!children) return '';\n let stringNode = '';\n const childrenArray = getAsArray(children);\n const keepArray = i18nOptions?.transSupportBasicHtmlNodes ? i18nOptions.transKeepBasicHtmlNodesFor ?? [] : [];\n childrenArray.forEach((child, childIndex) => {\n if (isString(child)) {\n stringNode += `${child}`;\n } else if (isValidElement(child)) {\n const {\n props,\n type\n } = child;\n const childPropsCount = Object.keys(props).length;\n const shouldKeepChild = keepArray.indexOf(type) > -1;\n const childChildren = props.children;\n if (!childChildren && shouldKeepChild && !childPropsCount) {\n stringNode += `<${type}/>`;\n } else if (!childChildren && (!shouldKeepChild || childPropsCount) || props.i18nIsDynamicList) {\n stringNode += `<${childIndex}>${childIndex}>`;\n } else if (shouldKeepChild && childPropsCount === 1 && isString(childChildren)) {\n stringNode += `<${type}>${childChildren}${type}>`;\n } else {\n const content = nodesToString(childChildren, i18nOptions);\n stringNode += `<${childIndex}>${content}${childIndex}>`;\n }\n } else if (child === null) {\n warn(`Trans: the passed in value is invalid - seems you passed in a null child.`);\n } else if (isObject(child)) {\n const {\n format,\n ...clone\n } = child;\n const keys = Object.keys(clone);\n if (keys.length === 1) {\n const value = format ? `${keys[0]}, ${format}` : keys[0];\n stringNode += `{{${value}}}`;\n } else {\n warn(`react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.`, child);\n }\n } else {\n warn(`Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.`, child);\n }\n });\n return stringNode;\n};\nconst renderNodes = (children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {\n if (targetString === '') return [];\n const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n const data = {};\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(data, child);\n });\n };\n getData(children);\n const ast = HTML.parse(`<0>${targetString}0>`);\n const opts = {\n ...data,\n ...combinedTOpts\n };\n const renderInner = (child, node, rootReactNode) => {\n const childs = getChildren(child);\n const mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props?.i18nIsDynamicList ? childs : mappedChildren;\n };\n const pushTranslatedJSX = (child, inner, mem, i, isVoid) => {\n if (child.dummy) {\n child.children = inner;\n mem.push(cloneElement(child, {\n key: i\n }, isVoid ? undefined : inner));\n } else {\n mem.push(...Children.map([child], c => {\n const props = {\n ...c.props\n };\n delete props.i18nIsDynamicList;\n return createElement(c.type, {\n ...props,\n key: i,\n ref: c.ref\n }, isVoid ? null : inner);\n }));\n }\n };\n const mapAST = (reactNode, astNode, rootReactNode) => {\n const reactNodes = getAsArray(reactNode);\n const astNodes = getAsArray(astNode);\n return astNodes.reduce((mem, node, i) => {\n const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n if (node.type === 'tag') {\n let tmp = reactNodes[parseInt(node.name, 10)];\n if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n const child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n const isElement = isValidElement(child);\n const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;\n const isKnownComponent = isObject(children) && Object.hasOwnProperty.call(children, node.name);\n if (isString(child)) {\n const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }));\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }, inner));\n }\n } else if (node.voidElement) {\n mem.push(`<${node.name} />`);\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(`<${node.name}>${inner}${node.name}>`);\n }\n } else if (isObject(child) && !isElement) {\n const content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else {\n pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n }\n } else if (node.type === 'text') {\n const wrapTextNodes = i18nOptions.transWrapTextNodes;\n const content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: `${node.name}-${i}`\n }, content));\n } else {\n mem.push(content);\n }\n }\n return mem;\n }, []);\n };\n const result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n};\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n const reactI18nextOptions = {\n ...getDefaults(),\n ...i18n.options?.react\n };\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n const nodeAsString = nodesToString(children, reactI18nextOptions);\n const defaultValue = defaults || nodeAsString || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n const {\n hashTransKey\n } = reactI18nextOptions;\n const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n if (i18n.options?.interpolation?.defaultVariables) {\n values = values && Object.keys(values).length > 0 ? {\n ...values,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n }\n const interpolationOverride = values || count !== undefined || !children ? tOptions.interpolation : {\n interpolation: {\n ...tOptions.interpolation,\n prefix: '#$?',\n suffix: '?$#'\n }\n };\n const combinedTOpts = {\n ...tOptions,\n context: context || tOptions.context,\n count,\n ...values,\n ...interpolationOverride,\n defaultValue,\n ns: namespaces\n };\n const translation = key ? t(key, combinedTOpts) : defaultValue;\n if (components) {\n Object.keys(components).forEach(c => {\n const comp = components[c];\n if (typeof comp.type === 'function' || !comp.props || !comp.props.children || translation.indexOf(`${c}/>`) < 0 && translation.indexOf(`${c} />`) < 0) return;\n function Componentized() {\n return createElement(Fragment, null, comp);\n }\n components[c] = createElement(Componentized);\n });\n }\n const content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n this.usedNamespaces[ns] ??= true;\n });\n }\n getUsedNamespaces = () => Object.keys(this.usedNamespaces);\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return TransWithoutContext({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions,\n values,\n defaults,\n components,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n i18n,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n });\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\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 && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\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',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\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 bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\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 subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\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 // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction 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}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\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 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}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\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 (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n 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 = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\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}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\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}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let 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 const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\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 if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\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 (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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 once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\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]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\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 data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\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' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n 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 = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\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 } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.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 if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\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 - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const 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 (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\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 if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\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 const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\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 || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = 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 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\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 swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\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 return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\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 getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\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 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\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : 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) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\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 if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\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 (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else 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.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.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 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n 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 = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n 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(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = 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 cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\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 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 || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\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 let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\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 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\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 if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\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\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 = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\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 let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\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(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\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 onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\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: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\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 focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(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 // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\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 (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(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 changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\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 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\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 // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\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 if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\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 if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","/**\n * Swiper React 11.1.9\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: July 31, 2024\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","__spreadArray","to","from","pack","arguments","l","Array","prototype","slice","concat","Object","create","COMMON_MIME_TYPES","Map","toFileWithPath","file","path","name","lastIndexOf","type","ext","split","toLowerCase","get","defineProperty","writable","configurable","enumerable","withMimeType","webkitRelativePath","FILES_TO_IGNORE","fromEvent","evt","_a","isObject","dataTransfer","getDataTransferFiles","target","getInputFiles","isArray","every","item","getFile","getFsHandleFiles","fromList","files","map","handles","all","h","dt","items","filter","kind","toFilePromises","noIgnoredFiles","flatten","indexOf","webkitGetAsEntry","fromDataTransferItem","entry","isDirectory","fromDirEntry","reduce","acc","getAsFile","fwp","fromEntry","fromFileEntry","reader","createReader","entries","readEntries","_this","batch","err_1","err","fullPath","moment","numbersPast","numbersFuture","translate","number","withoutSuffix","key","isFuture","verbalNumber","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","ll","lll","llll","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","hh","d","dd","M","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","factory","exports","hookCallback","some","hooks","input","toString","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","len","momentProperties","updateInProgress","copyConfig","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","join","Error","stack","keys","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","lastIndex","test","aliases","D","dates","date","days","day","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","unit","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","x","modMonth","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","min","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","UTC","firstWeekOffset","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","ww","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","module","isLocaleNameSane","_abbr","getSetGlobalLocale","values","data","getLocale","abbr","_config","parentLocale","forEach","names","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","string","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","currentDateArray","temp","weekdayOverflow","curWeek","createLocal","_week","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","configFromObject","configFromInput","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","unitHasDecimal","orderLen","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","property","objectTest","propertyTest","properties","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","priority","getPrioritizedUnits","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","children","option","child","keepEmpty","isFragment","props","canUseDom","window","document","createElement","findDOMNode","node","HTMLElement","SVGElement","isDOM","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","F","G","H","I","J","K","N","O","R","S","T","U","V","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","keyCode","altKey","ctrlKey","metaKey","isCharacterKey","navigator","userAgent","useEvent","fnRef","current","memoFn","_fnRef$current","_len","_key","useInternalLayoutEffect","useLayoutUpdateEffect","deps","firstMountRef","useLayoutEffect","firstMount","hasValue","useMergedState","defaultStateValue","_ref","defaultValue","onChange","postState","_useState","useState","_useState2","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","_useState3","_useState4","prevValue","setPrevValue","prev","updater","ignoreDestroy","useSafeState","destroyRef","_React$useState","_React$useState2","setValue","propList","ariaPrefix","dataPrefix","pickAttrs","mergedConfig","ariaOnly","aria","attr","attrs","includes","raf","setTimeout","caf","num","clearTimeout","requestAnimationFrame","handle","cancelAnimationFrame","rafUUID","rafIds","cleanup","id","delete","wrapperRaf","callRef","leftTimes","realId","cancel","fillRef","ref","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","isMemo","render","warned","preWarningFns","warning","valid","message","note","method","warningOnce","preMessage","resetWarned","noteOnce","p","q","$$typeof","_typeof","_regeneratorRuntime","__esModule","asyncIterator","toStringTag","define","wrap","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","reverse","stop","rval","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","_arrayLikeToArray","_arrayWithHoles","_assertThisInitialized","ReferenceError","asyncGeneratorStep","_asyncToGenerator","_next","_throw","_classCallCheck","_defineProperties","_createClass","_isNativeReflectConstruct","Boolean","Reflect","construct","_createSuper","possibleConstructorReturn","_defineProperty","_extends","bind","_getPrototypeOf","_inherits","_inheritsLoose","_iterableToArray","_nonIterableRest","_objectDestructuringEmpty","_objectSpread","getOwnPropertySymbols","getOwnPropertyDescriptor","ownKeys","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","propertyIsEnumerable","_objectWithoutPropertiesLoose","_possibleConstructorReturn","_setPrototypeOf","_slicedToArray","arrayWithHoles","unsupportedIterableToArray","nonIterableRest","_taggedTemplateLiteral","freeze","raw","_toArray","_toConsumableArray","arrayLikeToArray","iterableToArray","toPropertyKey","toPrimitive","_unsupportedIterableToArray","consoleLogger","log","Logger","concreteLogger","options","init","logger","debug","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","on","events","listener","event","numListeners","off","emit","observer","numTimesAdded","_ref2","defer","rej","promise","makeString","object","lastOfPathSeparatorRegExp","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stackIndex","setPath","newValue","last","getPath","deepExtend","overwrite","str","_entityMap","escape","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","pattern","regExpFromCache","regExpNew","deepFind","keySeparator","nextPath","getCleanedCode","code","ResourceStore","ns","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","splice","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","deep","skipCopy","JSON","parse","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","find","postProcessor","processors","addPostProcessor","translator","processor","process","checkedLoadedFor","Translator","services","changeLanguage","language","exists","interpolation","resolved","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","ki","substring","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","context","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","capitalize","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","Number","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","many","PluralResolver","compatibilityJSON","Intl","PluralRules","rules","numbers","plurals","createRules","addRule","getRule","needsPlural","rule","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","idx","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","regexp","regexpUnescape","replaces","regexSafe","handleFormat","interpolationkey","trim","missingInterpolationHandler","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","createCachedFormatter","cache","formatter","Formatter","opt","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","iOpts","addCached","mem","formatName","formatOptions","formatStr","optStr","rest","trimmedKey","parseFormatStr","formatted","valOptions","formatParams","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","state","queue","queueLoad","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","pushPath","removePending","loadedKeys","read","fcName","tried","wait","resolver","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","noop","I18n","inst","modules","external","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","li","lngInLngs","_this2","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","detect","getFixedT","keyPrefix","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","createInstance","cloneInstance","forkResourceStore","mergedOptions","instance","alreadyWarned","warnOnce","loadedClb","i18n","cb","initialized","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","text","getDefaults","i18nInstance","hasChildren","checkLength","getChildren","i18nIsDynamicList","getAsArray","nodesToString","i18nOptions","stringNode","childrenArray","keepArray","childIndex","isValidElement","childPropsCount","shouldKeepChild","childChildren","content","renderNodes","targetString","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","keep","getData","childs","ast","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","inner","isVoid","dummy","cloneElement","Children","reactNode","astNode","reactNodes","translationContent","newTarget","mergeProps","isElement","isValidTranslationWithChildren","voidElement","isEmptyTransWithHTML","isKnownComponent","wrapTextNodes","initReactI18next","setDefaults","react","setI18n","createContext","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","parent","i18nKey","tOptions","components","i18nFromProps","tFromProps","additionalProps","i18nFromContext","defaultNSFromContext","useContext","reactI18nextOptions","nodeAsString","hashTransKey","interpolationOverride","translation","comp","Fragment","useAsParent","defaultTransParent","Trans","alwaysNewT","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","memoGetT","useCallback","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","ignore","useRef","useEffect","usePrevious","isMounted","boundReset","Keyboard","swiper","extendParams","enabled","rtlTranslate","rtl","originalEvent","kc","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","activeElement","nodeName","onlyInViewport","inView","el","slideClass","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","originalParams","checkProps","createElements","auto","element","className","Navigation","getEl","querySelector","querySelectorAll","uniqueNavElements","toggleEl","disabled","navigation","subEl","classList","disabledClass","tagName","watchOverflow","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","onNextClick","initButton","destroy","destroyButton","remove","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","targetIsButton","composedPath","pathEl","pagination","clickable","contains","isHidden","toggle","classes","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","closest","slidesPerGroup","realIndex","slideToLoop","slideTo","previousIndex","slidesLength","virtual","slides","snapGrid","previousRealIndex","snapIndex","previousSnapIndex","activeIndex","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","setAttribute","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","grid","rows","paginationHTML","numberOfBullets","freeMode","src","ssrDocument","blur","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","matchMedia","getWindow","win","deleteProps","nextTick","delay","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","nodeType","keysArray","nextIndex","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","startTime","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","animate","progress","easeProgress","cos","PI","currentPosition","scrollTo","elementChildren","selector","HTMLSlotElement","assignedElements","elementIsChildOf","isChild","showWarning","tag","classesToTokens","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollX","elementPrevAll","prevEls","previousElementSibling","elementNextAll","nextEls","nextElementSibling","elementStyle","elementIndex","previousSibling","elementParents","parents","parentElement","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","eventsEmitter","handler","self","eventsListeners","destroyed","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","unshift","toggleSlideClasses$1","slideEl","condition","toggleSlideClasses","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeColumn","preloadColumns","column","slideIndexLastInView","updateSize","updateSlides","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","addToSnapGrid","addToSlidesGrid","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","setTranslate","transitionStart","transitionEnd","isH","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","currentSlideTranslate","touchEventsData","startTranslate","currentTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","swiperElementNodeName","resizeObserver","eventsPrefix","url","virtualTranslate","breakpointsBase","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDelay","moving","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","minRatio","wasLocked","lastSlideRightEdge","addClasses","classNames","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","needPerspectiveFix","major","minor","isSafariBrowser","need3dFix","calcBrowser","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","paramsList","needsNavigation","needsPagination","needsScrollbar","scrollbar","uniqueClasses","unique","isChildSwiperSlide","processChildren","slots","slot","foundSlides","useIsomorphicLayoutEffect","SwiperSlideContext","SwiperContext","forwardRef","externalElRef","Tag","wrapperTag","WrapperTag","onSwiper","eventsAssigned","containerClasses","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","allowedParams","plainObj","getParams","onBeforeBreakpoint","_containerClasses","initSwiper","passParams","extendWith","renderExternal","renderExternalUpdate","paginationEl","scrollbarEl","mountSwiper","changedParams","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","appendChild","nextButtonSvg","prevButtonSvg","updateSwiper","parallax","Provider","loopFrom","loopTo","slidesToRender","virtualIndex","renderVirtual","SwiperSlide","externalRef","zoom","lazy","slideElRef","slideClasses","setSlideClasses","lazyLoaded","setLazyLoaded","updateClasses","slideData","isActive","renderChildren"],"sourceRoot":""}